1.04k likes | 1.05k Views
This chapter introduces the concept of objects in Java, their attributes (properties) and behaviors (methods). Examples are provided using different object types such as Rectangle and String.
E N D
Using Objects Chapter 3 Fall 2006 CS 101 Aaron Bloomfield
Getting classy • Purpose of this chapter • Gain experience creating and manipulating objects from the standard Java types • Why • Prepares you for defining your own classes and creating and manipulating the objects of those classes
Values versus objects • Numbers • Have values but they do not have behaviors • In particular, each has only ONE value (or attribute) • Objects • Have attributes and behaviors • An object can have multiple values (or attributes)
Using objects • First, we create an object: • Scanner stdin = new Scanner (System.in); • Most object creation lines look like this • Then we use the object • stdin.nextInt(); • stdin.nextDouble(); • Note that we could have called the object foo, bar, or anything • stdin is just what we chose to call it
Using Rectangle objects • Let’s create some Rectangle objects • Rectangle creation: • Rectangle r = new Rectangle (10, 20); • Objects have attributes (or properties): • System.out.println (r.width); • System.out.println (r.height); • Objects have behaviors (or methods): • r.grow (10, 20); • r.isEmpty(); • r.setLocation (5,4);
Using String objects • Let’s create some String objects • String creation: • String s = new String (“Hello world”); • Objects have attributes (or properties): • But we can’t access them… • Objects have behaviors (or methods): • s.substring(0,6); • s.indexOf (“world”); • s.toLowerCase();
The lowdown on objects • Objects are “things” that have properties (attributes) and behaviors (methods) • We first create one or more objects • We then manipulate their properties and call their methods
So why bother with objects? • Let’s say you want to do a lot of String manipulation • Once you create a String object, all the manipulation methods are contained therein • Sun already wrote the methods for us • So we can use String objects instead of writing our own code to get the substring, indexOf, etc.
More on Strings • Strings are used very often • As a shortcut, you can use: • String s = “Hello world”; instead of: • String s = new String (“Hello world”); • It’s just a shortcut that Java allows • The two lines are almostthe same • There is a minor difference between the two • Which we’ll get to later
Class (type) name Attributes (properties) Methods (behaviors) Rectangle - width = 10 - height = 20 - ... + grow (int, int) : void + isEmpty ( ) : void + setLocation ( int, int ) : void + resize ( int, int ) : void + ... Visualizing objects
Bittersweets: Dejected sayings • I MISS MY EX • PEAKED AT 17 • MAIL ORDER • TABLE FOR 1 • I CRY ON Q • U C MY BLOG? • REJECT PILE • PILLOW HUGGIN • ASYLUM BOUND • DIGNITY FREE • PROG FAN • STATIC CLING • WE HAD PLANS • XANADU 2NITE • SETTLE 4LESS • NOT AGAIN
Bittersweets: Dysfunctional sayings • RUMORS TRUE • PRENUP OKAY? • HE CAN LISTEN • GAME ON TV • CALL A 900# • P.S. I LUV ME • DO MY DISHES • UWATCH CMT • PAROLE IS UP! • BE MY YOKO • U+ME=GRIEF • I WANT HALF • RETURN 2 PIT • NOT MY MOMMY • BE MY PRISON • C THAT DOOR?
Review • Variables of primitive types • int, double, char, boolean, etc. • Can assign a value to it • Can read a value from it • Can’t do much else! • Objects • String, Rectangle, etc. • Have many parts • Rectangle has width, length, etc. • Like a complex type • Have methods • String has length(), substring(), etc.
String methods • length(): returns the String’s length (duh!) String s = “hello world”; String t = “goodbye”; System.out.println (s.length()); System.out.println (t.length()); • Prints 11 and 7 • Note that calling s.length() is different than calling t.length()! • Both return the length • But of different Strings
More String methods • Consider String weddingDate = "August 21, 1976"; String month = weddingDate.substring(0, 6); System.out.println("Month is " + month + "."); • What is the output? Month is August.
More String methods • Consider String fruit = "banana"; String searchString = "an"; int n1 = fruit.indexOf(searchString, 0); int n2 = fruit.indexOf(searchString, n1 + 1); int n3 = fruit.indexOf(searchString, n2 + 1); System.out.println("First search: " + n1); System.out.println("Second search: " + n2); System.out.println("Third search: " + n3); • What is the output? First search: 1 Second search: 3 Third search: -1
Program WordLength.java public class WordLength { public static void main(String[] args) { Scanner stdin = new Scanner(System.in); System.out.print("Enter a word: "); String word = stdin.next(); int wordLength = word.length(); System.out.println("Word" + word + "haslength" + wordLength + "."); } }
Program demo • WordLength.java
More String methods • trim() • Returns the String without leading and trailing whitespace • Whitespace is a space, tab, or return
Date translation • Goal: to translate the date from American format to standard format
DateTranslation.java // Convert user-specified date from American to standard format import java.util.*; class DateTranslation { // main(): application entry point static public void main(String args[]) { // produce a legend (Step 1) // prompt the user for a date in American format (Step 2) // acquire the input entered by the user (Step 3) // echo the input back (Step 4) // get month entered by the user (Step 5) // get day entered by the user (Step 6) // get year entered by the user (Step 7) // create standard format version of input (Step 8) // display the translation (Step 9) } }
Program demo • DateTranslation.java
Variables vs. Types • The type is the recipe or template for how to create a variable • Examples: int, double, char, boolean, etc. • There are only 8 primitive types • There are only a few things you can do with a type: • Declare a variable • int x; • Use it as a cast • x = (int) 3.5; • There is only one of each type • The variable is the actual instance of a type in memory • It’s a spot in memory where you store a value • You choose the name: width, x, thatThemThereValue, etc. • You can have as may variables as you want – but only one type! • Like the difference between a recipe and a bunch of cookies
Classes vs. Objects • A class is a user-defined “thing” • Examples: String, Scanner, Rectangle, etc. • We’ll start defining our own classes later this semester • Classes are more complex than the primitive types • A class is analogous to a type • It’s just more complex and user-defined • There can be only one class of each name • An object is an instance of a class • There is only one String class, but you can have 100 String objects • A object is analogous to a variable • It just is a reference instead • A class is a “template” used for creating objects
Lots of piercings… This may be a bit disturbing…
int x double d char c 7 - ‘x’ Java and variables • Consider: int x = 7; double d; char c = ‘x’; • The variable name is the actual spot in memory where the value is stored • Note that d does not have a value
What is a reference • A reference is a memory address • References are like pointers in C/C++ • But they are not the exact same thing! • C++ has references also (in addition to pointers) • You may hear me call them pointers instead of references • All objects in Java are declared as references
References 1 • Consider: int j = 5; String s = “Hello world”; • Java translates that last line into: String s = new String (“Hello world”); (Not really, but close enough for now) Note that there is no “new” here
0x0d4fe1a8 int j Hello world 5 References 2 int j = 5; String s = “Hello world”; • What’s happening in memory int j = 5; String s = “Hello world”; • Primitive types are never references; only objects String s Takes up 32 bits (4 bytes) of memory Takes up 32 bits (4 bytes) of memory At memory location 0x0d4fe1a8 Takes up 12 bytes of memory
peasPerPod message 8 String - text = "Don't look behind the door!" - length = 27 - ... + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int + ... Representation • Statements int peasPerPod = 8; String message = "Don't look behind the door!“
s String - text = “I love CS 101" - length = 13 - ... + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int + ... Representation String s = “I love CS 101”; int l = s.length(); char c = s.charAt (3); String t = s.subString(1,2); int t = s.indexOf (t, 0); A period means “follow the reference”
s String - text = “Hello world" - length = 11 - ... s “Hello world" + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int + ... Shorthand represntation • Consider:String s = “Hello world”; • Takes up a lot of space on my slides… • So we’ll use a shorthand representation:
Examples • Consider String a = "excellence“; String b = a; • What is the representation?
String s1 “first string” “second string” String s2 References 3 String s1 = “first string”; String s2 = “second string”; s2 = s1; System.out.println (s2); • Consider: String s1 = “first string”; String s2 = “second string”; s2 = s1; System.out.println (s2); What happens to this?
Java’s garbage collection • If an object in memory does not have a reference pointing to it, Java will automagically delete the object • This is really cool! • In C/C++, you had to do this by yourself
Uninitialized versus null • Consider String dayOfWeek; Scanner inStream; • What is the representation?
fontName fontName null null fileStream fileStream Uninitialized versus null • Consider String fontName = null; Scanner fileStream = null; • What is the representation? OR
The null reference • Sometimes you want a reference to point to nothing • Use the null reference: String s = null; • The null reference is equivalent to a memory address of zero (0x00000000) • No user program can exist there
s String - text = “Hello world" - length = 11 - ... + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int + ... The null reference • Consider: String s = “Hello world”; System.out.println (s.length()); • What happens? • Java prints out 11