Download presentation
Presentation is loading. Please wait.
Published byJanice Diane Pearson Modified over 9 years ago
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…
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.