1 / 99

Using Objects

Using Objects. Chapter 2 (part 2 of 2) Spring 2007 CS 101 Aaron Bloomfield. 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

wbrito
Download Presentation

Using Objects

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Using Objects Chapter 2 (part 2 of 2) Spring 2007 CS 101 Aaron Bloomfield

  2. 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)

  3. 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

  4. 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);

  5. 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();

  6. 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

  7. 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.

  8. 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

  9. 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

  10. For Valentine’s Day…

  11. 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

  12. 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?

  13. 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.

  14. 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

  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 + "haslength" + 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 Five-Second Rule The Coca-Cola Company of Great Britain For the patent of the combover The American Nudist Research Library It’s 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. Today’s demotivators

  25. Classes vs. Objects

  26. 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 of each type! • Like the difference between a recipe and a bunch of cookies

  27. 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 • A class is a “template” used for creating objects

  28. More on classes vs. objects

  29. Lots of piercings… This may be a bit disturbing…

  30. References

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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!“

  36. 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”

  37. 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:

  38. Examples • Consider String a = "excellence“; String b = a; • What is the representation?

  39. 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?

  40. 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

  41. An optical illusion

  42. The null reference

  43. Uninitialized versus null • Consider String dayOfWeek; Scanner inStream; • What is the representation?

  44. fontName fontName null null fileStream fileStream Uninitialized versus null • Consider String fontName = null; Scanner fileStream = null; • What is the representation? OR

  45. 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

  46. 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

  47. 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: …

  48. What happens in Windows…

  49. So what is a null reference good for? • Let’s say you had a method that returned a String when passed some parameters • Normally it returns a valid String • But what if it can’t? How to deal with that? • Return a null reference

  50. 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 • That’s 16 billion Gb!

More Related