Presentation is loading. Please wait.

Presentation is loading. Please wait.

UNDERSTANDING CLASSES CMSC 150: Lecture 17. String Literals  "Wilco"  String literal: a sequence of characters flanked by "  Want to operate on the.

Similar presentations


Presentation on theme: "UNDERSTANDING CLASSES CMSC 150: Lecture 17. String Literals  "Wilco"  String literal: a sequence of characters flanked by "  Want to operate on the."— Presentation transcript:

1 UNDERSTANDING CLASSES CMSC 150: Lecture 17

2 String Literals  "Wilco"  String literal: a sequence of characters flanked by "  Want to operate on the sequence  E.g., pull out substrings, locate characters, etc.  No primitive data type directly handles such sequences

3 Primitives  Primitives are only for storing information int myInteger = 5; boolean myBoolean = true; char myCharacter = 'c';  No associated methods myInteger.getValue(); // NOT VALID!!  So a primitive type to hold strings wouldn't help

4 Let's Write Our Own Class! public class String { // instance variables private char[] data; // constructor public String(char[] value) { … } // some useful methods public char charAt(int index) { … } public int indexOf(char ch) { … } public String substring(int beginIndex) { … } … }

5 Our String Class  We now have a new class named String  Stores data  Provides useful methods  Create new objects of this class type: String myString = new String("Wilco"); String ourString = new String("Son Volt");  Use methods we wrote: int index = ourString.indexOf(' '); String firstWord = ourString.substring(0, index);

6 Use String Class in Other Classes public class FancyEmailReader { … public FancyEmailReader() { … String userHost = accountField.getText(); int index = userHost.indexOf('@'); String user = userHost.substring(0, index); String host = userHost.substring(index + 1); … }

7 In Memory  String myString;  Enough space to hold a memory address 127 128 129 130 131 132 "myString" 0

8 In Memory  String myString;  myString = new String("Wilco");  Enough space to hold an object of our class type 127 128 129 130 131 132 "myString" 130

9 In Memory  String myString;  myString = new String("Wilco"); 127 128 129 130 131 132 "myString" Data 130

10 In Memory  String myString;  myString = new String("Wilco"); 127 128 129 130 131 132 "myString" Methods 130

11 The String Class  Gives us a new data type  Allows us to meaningfully store info  And have methods to operate on that info  Use String whenever it is useful

12 Back to Last Lab… public class IMClient { … String lineFromServer = connection.in.nextLine() … }  linefromServer contains info like "IM_IN2:Lilly:T:T: …"

13 Back to Last Lab… public class IMClient { … String lineFromServer = connection.in.nextLine() … }  linefromServer contains info like "IM_IN2:Lilly:T:T: …"  Want methods to pull out buddy, status, msg  String class doesn't provide such methods

14 Let's Write Our Own! public class TOCServerPacket { String contents; public TOCServerPacket(String packetContents) { … } public boolean isError() { … } public boolean isBuddyUpdate() { … } public boolean isIncomingIM() { … } public String getBuddyName() { … } public String getBuddyStatus() { … } public String getErrorCode() { … } public String getMessage() { … } private String getPrefix(String uncutPacket) { … } private String getSuffix(String uncutPacket, int colonNumber) { … } }

15 Let's Write Our Own! public class TOCServerPacket { String contents; public TOCServerPacket(String packetContents) { … } public boolean isError() { … } public boolean isBuddyUpdate() { … } public boolean isIncomingIM() { … } public String getBuddyName() { … } public String getBuddyStatus() { … } public String getErrorCode() { … } public String getMessage() { … } private String getPrefix(String uncutPacket) { … } private String getSuffix(String uncutPacket, int colonNumber) { … } }

16 Similar to the String Class  TocServerPacket class gives us a new data type  Allows us to meaningfully store info  The String returned from the server  And have methods to operate on that info  isIncomingIM(), getBuddyName(), getBuddyStatus()  Use TocServerPacket whenever it is useful

17 Use TOCServerPacket in Other Classes public class IMControl { … public void dataAvailable() { … String lineFromServer = connection.in.nextPacket(); // get the buddy name int firstIndex = lineFromServer.indexOf(':'); int secondIndex = lineFromServer.indexOf(':', firstIndex + 1); String buddy = lineFromServer.substring(firstIndex + 1, secondIndex); // pull out message while ( … ) { … } }

18 Use TOCServerPacket in Other Classes public class IMControl { … public void dataAvailable() { … String lineFromServer = connection.in.nextPacket(); // get the buddy name int firstIndex = lineFromServer.indexOf(':'); int secondIndex = lineFromServer.indexOf(':', firstIndex + 1); String buddy = lineFromServer.substring(firstIndex + 1, secondIndex); // pull out message while ( … ) { … } } Use a TOCServerPacket !

19 Use TOCServerPacket in Other Classes public class IMControl { … public void dataAvailable() { … String lineFromServer = connection.in.nextPacket(); TOCServerPacket packet = new TOCServerPacket(lineFromServer); String buddy = packet.getBuddyName(); String message = packet.getMessage(); } Use a TOCServerPacket !

20 In Memory  String line = conn.in.nextPacket();  TOCServerPacket packet;  Enough space to hold a memory address 127 128 129 130 131 132 "packet" 0

21 In Memory 127 128 129 130 131 132 130  String line = conn.in.nextPacket();  TOCServerPacket packet;  packet = new TOCServerPacket(lineFromServer); "packet"

22 In Memory 127 128 129 130 131 132 130  String line = conn.in.nextPacket();  TOCServerPacket packet;  packet = new TOCServerPacket(lineFromServer); "packet" Data

23 In Memory 127 128 129 130 131 132 130  String line = conn.in.nextPacket();  TOCServerPacket packet;  packet = new TOCServerPacket(lineFromServer); "packet" Methods

24 Your tour guide will be…


Download ppt "UNDERSTANDING CLASSES CMSC 150: Lecture 17. String Literals  "Wilco"  String literal: a sequence of characters flanked by "  Want to operate on the."

Similar presentations


Ads by Google