Quiz About [Your topic]

Quiz About [Your topic]

Using Objects Chapter 2 (part 2 of 2) Spring 2007 CS 101 Aaron Bloomfield 1 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) 2 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 3 Using Rectangle objects Lets 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); 4

Using String objects Lets create some String objects String creation: String s = new String (Hello world); Objects have attributes (or properties): But we cant access them Objects have behaviors (or methods):

s.substring(0,6); s.indexOf (world); s.toLowerCase(); 5 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

6 So why bother with objects? Lets 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. 7

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); Its just a shortcut that Java allows

The two lines are almost the same There is a minor difference between the two Which well get to later 8 Visualizing objects Rectangle - width = 10 - height = 20 - ... + grow (int, int) : void + isEmpty ( ) : void + setLocation ( int, int ) : void + resize ( int, int ) : void + ...

Class (type) name Attributes (properties) Methods (behaviors) 9 For Valentines Day 10 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 11 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? 12 Review Variables of primitive types int, double, char, boolean, etc. Can assign a value to it Can read a value from it Cant 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. 14 String methods length(): returns the Strings 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 15 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. 16 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 17 String program examples 18 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 + " has length " + wordLength + "."); }

} 19 Program demo WordLength.java 20 The 2004 Ig Nobel Prizes Medicine

Physics Public Health Chemistry Engineering Literature Psychology Economics Peace Biology "The Effect of Country Music on Suicide. For explaining the dynamics of hula-hooping Investigating the scientific validity of the FiveSecond Rule

The Coca-Cola Company of Great Britain For the patent of the combover The American Nudist Research Library Its easy to overlook things even a man in a gorilla suit. The Vatican, for outsourcing prayers to India The invention of karaoke, thereby providing an entirely new way for people to learn to tolerate each other For showing that herrings apparently communicate by farting 21 More String methods trim() Returns the String without leading and trailing whitespace Whitespace is a space, tab, or return

22 DateTranslation.java Goal: to translate the date from American format to standard format // 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) 23 } } Program demo DateTranslation.java 24 Todays demotivators 25 Classes vs. Objects 27 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 Its 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 of each type! Like the difference between a recipe and a bunch of cookies 28 Classes vs. Objects A class is a user-defined thing Examples: String, Scanner, Rectangle, etc.

Well start defining our own classes later this semester Classes are more complex than the primitive types A class is analogous to a type Its 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

A class is a template used for creating objects 29 More on classes vs. objects 30 Lots of piercings This may be a bit disturbing 31 References 32 Java and variables

Consider: int x = 7; double d; char c = x; int x double d char c 7 - x The variable name is the actual spot in memory where the

value is stored Note that d does not have a value 33 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 34 References 1 Consider: int j = 5; String s = Hello world; Java translates that last line into: String s = new String (Hello world); Note that there is no new here (Not really, but close enough for now)

35 References 2 Whats happening in memory int j = 5; String s = Hello world; String s 0x0d4fe1a8 Takes up 32 bits (4 bytes) of memory Takes up 32 bits (4 bytes) of memory int j 5

At memory location 0x0d4fe1a8 Takes up 12 bytes of memory Hello world Primitive types are never references; only objects 36 Representation Statements int peasPerPod = 8; String message = "Don't look behind the door! message peasPerPod

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 + ... 37 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);

s String A period means follow the reference - 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 + ... 38 Shorthand represntation

Consider: String s = Hello world; Takes up a lot of space on my slides So well use a shorthand representation: s 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 + ... Hello world" 39 Examples Consider String a = "excellence; String b = a; What is the representation? a

"excellence" b 40 References 3 Consider: String s1 = first string; String s2 = second string; s2 = s1; System.out.println (s2); What happens to this? String s1

first string second string String s2 41 Javas 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 42

An optical illusion 43 The null reference 44 Uninitialized versus null Consider String dayOfWeek; Scanner inStream; What is the representation? dayOfWeek

- inStream - 45 Uninitialized versus null Consider String fontName = null; Scanner fileStream = null; What is the representation? fontName

null fileStream null OR fontName fileStream 46 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 47 The null reference Consider: String s = Hello world; System.out.println (s.length());

What happens? Java prints out 11 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 + ... 48 The null reference

Consider: String s = null; System.out.println (s.length()); This is called accessing (or following) a null pointer/reference What happens? Java: java.lang.NullPointerException C/C++: Segmentation fault (core dumped) Windows: 49

What happens in Windows 50 So what is a null reference good for? Lets say you had a method that returned a String when passed some parameters Normally it returns a valid String But what if it cant? How to deal with that? Return a null reference

51 References and memory Most modern computers are 32-bit computers This means that a reference takes up 32 bits 232 = 4 Gb This means that a 32-bit machine cannot access more than 4 Gb of memory! Well, without doing some tricks, at least Most machines come with 1 Gb memory these days Will come with 4 Gb in a year or so

64-bit machines will have a maximum of 16 exabytes of memory Giga, Tera, Peta, Exa Thats 16 billion Gb! 52 Beware!!! 53 Using object examples 55 Assignment

Consider String word1 = "luminous"; String word2 = "graceful"; word1 = word2; Garbage collection time! Initial representation word1 "luminous" word2 "graceful"

56 Using objects Consider Scanner stdin = new Scanner(System.in); System.out.print("Enter your account name: "); String response = stdin.next(); Suppose the user interaction is Enter your account name: artiste reponse stdin "artiste"

Scanner: 57 String representation Consider String alphabet = "abcdefghijklmnopqrstuvwxyz"; Standard shorthand representation alphabet "abcdefghijklmnopqrstuvwxyz"

Truer representation alphabet a b c d e f g h i

j k l m n o p q r s

t u v w y 58 z String representation Consider String alphabet = "abcdefghijklmnopqrstuvwxyz";

char c1 = alphabet.charAt(9); char c2 = alphabet.charAt(15); char c3 = alphabet.charAt(2); What are the values of c1, c2, and c3? Why? alphabet "abcdefghijklmnopqrstuvwxyz" c1 'j' c2 'p'

c3 'c' 59 More String methods Consider int v1 = -12; double v2 = 3.14; char v3 = 'a'; String s1 = String.valueOf(v1); String s2 = String.valueOf(v2); String s3 = String.valueOf(v3); v1 -12

v2 3.14 v3 a s1 "-12" s2 "3.14" s3 "a" 60

Final variables Consider final String POEM_TITLE = Appearance of Brown"; final String WARNING = Weather ball is black"; What is the representation? POEM_TITLE WARNING "Appearance of Brown" "Weather ball is black" The locks indicate the memory locations holds constants 61 Final variables

Consider final String LANGUAGE = "Java"; The reference cannot be modified once it is established LANGUAGE "Java" 62 Todays demotivators 63 Rectangle int x = 3; int y = 4;

The upper-left-hand int width = 5; corner of the new Rectangle int height = 2; Rectangle r =new Rectangle(x, y, width, height); x 3 y 4 width 5 height 2

r The dimensions of the new Rectangle Rectangle: (3, 4) 2 5 64 Rectangle Consider final Rectangle BLOCK = new Rectangle(6, 9, 4, 2);

BLOCK.setLocation(1, 4); BLOCK.resize(8, 3); BLOCK Rectangle: (6, 4) (1, 9) 2 3 4 8 65 String method usage

x 10 y 4 Consider: String s = "Halloween"; String t = "Groundhog Day"; v String u = "May Day"; String v = s.substring(0,6); Hallow" int x = t.indexOf ("Day", 0); int y = u.indexOf ("Day"); String s = t; -- text text = = Groundhog Halloween" May Day" Day" u = null;

s Halloween" t Groundhog Day" u May Day" - length = 13 9 7 - ... + length () : int + subString ( int m, int n ) : Strin + indexOf ( String s, int m ) : int

66 + indexOf ( String s ) : int + ... String method usage x Consider: String s = "Halloween"; String t = "Groundhog Day"; final String u = "May Day"; String v = s.substring(0,6); int x = t.indexOf ("Day", 0); int y = u.indexOf ("Day"); s = t; u = null; s Halloween"

t Groundhog Day" u May Day" 10 y 4 v Hallow" Java error: cannot assign a

value to final variable u 67 Rectangle method usage Consider: Rectangle - width = 7 1 - height = 2 Rectangle r = new Rectangle(); final Rectangle s = new Rectangle (3, 4, 1, 2); s r.setWidth(5); r.setHeight(6); r

s.setWidth (7); r = new Rectangle (10,11,8,9); s = new Rectangle (12,13,14,15); Rectangle - width = 8 - height = 9 - x = 10 - y = 11 -x=3 -y=4 + setWidth ( int w ) + setHeight ( int wh ) + setX ( int x ) + setY ( int y ) + ... Rectangle - width = 5 0

- height = 6 0 -x=0 -y=0 + setWidth ( int w ) + setHeight ( int wh ) + setX ( int x ) + setY ( int y ) 68 + ... Scanner review To initialize a Scanner object: Scanner stdin = new Scanner (System.in); Scanner stdin = Scanner.create (System.in);

This one will not work! To read an int from the keyboard: stdin.nextInt(); To read a double from the keyboard: stdin.nextDouble(); To read a String from the keyboard: stdin.next(); 69

Scanner usage examples Consider: Scanner stdin = new Scanner (System.in); int x = stdin.nextInt(); double d = stdin.nextDouble(); String s = stdin.next(); stdin x s Scanner: 5 d

3.5 hello world 70 The 2002 Ig Nobel Prizes

Courtship behavior of ostriches towards humans under farming conditions in Britain Demonstration of the exponential decay law using beer Physics froth Interdisciplinary A comprehensive study of human belly button lint Creating a four-legged periodic table Chemistry Estimation of the surface area of African elephants Mathematics The effects of pre-existing inappropriate highlighting on Literature reading comprehension For creating Bow-lingual, a computerized dog-to-human Peace translation device For creating a washing machine for cats and dogs Hygiene Enron et. al. for applying imaginary numbers to the Economics

business world (male) asymmetry in man in ancient sculpture Medicine 71 Biology 71 Overloading 72 Overloading Consider the + operator It can mean integer addition: 3+5 = 8 It can mean floating-point addition: 3.0+5.0 = 8.0

It can mean string concatenation: foo + bar = foobar The + operator has multiple things it can do a.k.a. the + operator is overloaded 73 More on overloading Weve seen a number of methods In the String class: substring(), charAt(), indexOf(), etc. In the Rectangle class: setLocation(), translate()

Consider the substring() method in the String class One version: s.substring(3) This will return a string from the 4th character on Another version: s.substring (3,6) This version will return a string from the character at index 3 up to (but not including!) the character at index 6 There are multiple versions of the same method Differentiated by their parameter list The substring method can take one OR two parameters 74

This is called overloading More on more on overloading Consider the valueOf() method in the String class String.valueOf (3) The parameter is an int String.valueOf (3.5) The parameter is a double String.valueOf (3) The parameter is a char

There are multiple versions of this method Differentiated by their parameter list Thus, the valueOf() method is overloaded 75 More on methods 77 Accessors Some methods allow us to find out information about an object In the Rectangle class: getWidth(), getHeight() These methods are called accessors

They allow us to access attributes of the object An accessor is a method that allows us to find out attributes of object Usually start with get in the method name I wont use this terminology much, but the book uses it 78 Mutators Some methods allow us to set information about the object In the Rectangle class: setLocation(), setBounds() These methods are called mutators They allow us to change (or mutate) the attributes of an object

A mutator is a method that allows us to set attributes of object Usually start with set in the method name I wont use this terminology much, but the book uses it 79 Constructors A constructor is a special method called ONLY when you are creating (or constructing) and object The name of the constructor is ALWAYS the exact same name as the class

Scanner stdin = new Scanner (System.in); String foo = new String (hello world); There can be overloaded constructors Rectangle r = new Rectangle(); Rectangle s = new Rectangle (1, 2, 3, 4); 80 Calling the Circle constructor To create a Circle object: c1 Circle c1 = new Circle();

This does four things: Creates the c1 reference Creates the Circle object Makes the c1 reference point to the Circle object Calls the constructor with no parameters (the default constructor) Circle - radius = 0.0 - PI = 3.14159 -

+ Circle() + Circle (double r) + The constructor is always the first method called when creating (or constructing) an object 81 Calling the Circle constructor To create a Circle object: c1 Circle c1 = new Circle(2.0); This does four things:

Creates the c1 reference Creates the Circle object Makes the c1 reference point to the Circle object Calls the constructor with 1 double parameters (the specific constructor) Circle - radius = 2.0 0.0 - PI = 3.14159 - + Circle() + Circle (double r) +

The constructor is always the first method called when creating (or constructing) an object 82 Constructor varieties The default constructor usually sets the attributes of an object to default values But thats not why its called default (well get to that later) The default constructor ALWAYS takes in zero parameters Thus, there can be only one A specific constructor sets the attributes of the object to the

passed values Well get to why its called a specific constructor later The specific constructor takes in one or more parameters There can be more than one (via overloading) 83 Method types review With the exception of constructors, these names are purely for human categorization Accessor: allows one to access parts of the object Mutator: allows one to change (mutate) a part of an object Constructor: used to create a object

Default constructor: takes in no parameters Specific constructor: takes in one or more parameters Facilitator Any method that is not one of the above 84 Java documentation 85 Java documentation 86

Java packages Group similar classes together Packages we will use: java.lang: automatically imported by Java Contains the clases needed by the Java language java.util: contains Scanner, Vector, etc. Contains various utility classes java.text: we will use it later in the semester Contains classes used to manipulate text

Any package (other than java.lang) must be imported to use the classes within it 87 Todays demotivators 88 Example: last semesters HW J2 89 A previous semesters HW 2 Found online at http://www.cs.virginia.edu/~asb/teaching/cs101-fall05/hws/h wj2/index.html

The HW listed 10 steps to be performed Used the StringBuffer class Which can be found at http://java.sun.com/j2se/1.5.0/docs/ api/java/lang/StringBuffer.html Strings are immutable Meaning that once you create a String, you can never change it There are no mutator methods You can change what the String reference points to, but

90 not the String itself Preliminaries import java.util.*; public class StringBufferManipulator { public static void main (String args[]) { // Preliminaries System.out.println ("StringBuffer manipulator\n"); Scanner stdin = new Scanner (System.in); // Code for steps 1 to 10 will go here } } 91 Step 1 The user needs to enter two strings: one long string (say, 10 or so characters at a minimum) and a shorter string that is contained within the longer string.

This input should be obtained via the nextLine() method, as using the next() method will not read in a string that contains spaces. // Step 1 System.out.println ("Enter a long string"); String longString = stdin.nextLine(); System.out.print ("\nEnter a shorter string within ); System.out.println (the long string"); String shortString = stdin.nextLine(); 92 System.out.println (); Step 2 Create a StringBuffer object from the longer string -- this is the StringBuffer that you will manipulate for the rest of the homework. There are two ways to do this: create a default constructred StringBuffer, and append() the long string to

that, or use the StringBuffer with the appropriate specific constructor. // Step 2 StringBuffer buffer = new StringBuffer(longString); 93 Step 3 Include, as a comment in your program, the code for creating the StringBuffer in the other way from step 2. // Step 3 // StringBuffer buffer = new StringBuffer(); // buffer.append(longString(); 94 Step 4

Find the position of the small string within the StringBuffer, and save that position. // Step 4 int pos = buffer.indexOf(shortString); 95 Step 5 Delete the small string from the StringBuffer, and print out the result. // Step 5 int shortLength = shortString.length(); buffer.delete (pos, pos+shortLength); System.out.println (buffer);

96 Step 6 Insert "CS101" into the position of the StringBuffer where the small string was originally found (from step 3), and print out the result // Step 6 buffer.insert (pos, "CS101"); System.out.println (buffer); 97 Step 7 Remove the last word from the string. You can assume that everything from the last space (found via lastIndexOf()) to the end of the String is the last word. Print out the result.

// Step 7 pos = buffer.lastIndexOf(" "); int bufferLength = buffer.length(); buffer.delete(pos, bufferLength); System.out.println (buffer); 98 Step 8 Append " rocks" to the end of the StringBuffer, and print out the result. Note that there is a space before the work 'rocks'. // Step 8 buffer.append (" rocks"); System.out.println (buffer); 99

Step 9 Delete the character at position n/2, where n is the length of the StringBuffer. Print out the result. // Step 9 int n = buffer.length(); buffer.deleteCharAt (n/2); System.out.println (buffer); 100 Step 10 Reverse the StringBuffer, and print out the result. // Step 10 buffer.reverse(); System.out.println (buffer);

101 Program demo StringBufferManipulator.java 102 A bit of humor 103

Recently Viewed Presentations

  • Besame mucho - Cartantica

    Besame mucho - Cartantica

    Quando il nostro cuore è una terra buona che accoglie la Parola di Dio, quando "si suda la maglietta" [si sudano sette camicie NDR] cercando di vivere da cristiani, noi sperimentiamo qualcosa di grande: non siamo mai soli, siamo parte...
  • Chapter 13 Gravitation - Valencia

    Chapter 13 Gravitation - Valencia

    Chapter 13 Gravitation PhysicsI 2048 ... Two neutron stars are separated by a distance of 1.0 x 1010 m. They each have a mass of 1.0 x 1030 kg and a radius of 1.0 x 105 m. They are initially...
  • Vote for your favorite book!

    Vote for your favorite book!

    Vote for your favorite book! Cinder The Book Thief Here Lies Arthur Matched. Title: Vote for your favorite book! ... Calibri Arial Office Theme Microsoft Graph Chart Vote for your favorite book! ...
  • Genotypes to Phenotypes Heredity Group National Academies NorthStar

    Genotypes to Phenotypes Heredity Group National Academies NorthStar

    H gene product. A allele. v. O. A. B. AB. v. B allele. A & B alleles. Slide for mini-lecture: Biochemistry of ABO—Perhaps this could be animated or worked into an activity. Ruth, blood type A, has a child, Mark,...
  • Strategy: A View from the Top Chapter 8

    Strategy: A View from the Top Chapter 8

    Strategy: A View from the Top"Global Strategy Formulation"Chapter 8. Team 1. Jade Black. ... some countries or regions are more efficient than others in producing certain goods. ... cultural and linguistic differences, and geographical distance from the US ...
  • Workshop on Studying migration Routes Rome - 16 June 2016

    Workshop on Studying migration Routes Rome - 16 June 2016

    VESTANET è collegato anche all' Agenzia delle Entrate: per ogni richiedente è assegnato un codice fiscale provvisorio, che diventerà definitivo solo in caso di esito positivo della richiesta di protezione, altrimenti verrà cancellato.
  • Session 3: curriculum(s) and culture

    Session 3: curriculum(s) and culture

    (How) are these 'cultural universals' evident in the curriculum? Is a 'common culture' curriculum possible? Can curriculum really ever be free from class and culture? Lawton developed his framework in a largely monocultural society (1970s, UK); how applicable is it...
  • Week 1

    Week 1

    Week 1 LETHARGIC (leh-THAR-jik) adj -tired; sluggish; drowsy Sounds like: leather chick Picture: A young chicken is trying to run around the barn, but she's too tired.