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

Slides:



Advertisements
Similar presentations
Lecture 9: More on objects, classes, strings discuss hw3 assign hw4 default values for variables scope of variables and shadowing null reference and NullPointerException.
Advertisements

Java Programming Strings Chapter 7.
Chapter 2: Using Objects Part 1. To learn about variables To understand the concepts of classes and objects To be able to call methods To learn about.
Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
©2004 Brooks/Cole Chapter 7 Strings and Characters.
 2005 Pearson Education, Inc. All rights reserved Introduction.
University of British Columbia CPSC 111, Intro to Computation Jan-Apr 2006 Tamara Munzner Objects, Methods, Parameters, Input Lecture 5, Thu Jan
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
ECE122 L4: Creating Objects February 8, 2007 ECE 122 Engineering Problem Solving with Java Lecture 4 Creating and Using Objects.
Introduction to Computer Programming Stringing Along – Using Character and String Data.
Primitive Data Types and Operations. Introducing Programming with an Example public class ComputeArea { /** Main method */ public static void main(String[]
Chapter 5 Part 1 COSI 11a Prepared by Ross Shaull.
03 Data types1June Data types CE : Fundamental Programming Techniques.
Mathematical Operators  2000 Prentice Hall, Inc. All rights reserved. Modified for use with this course. Introduction to Computers and Programming in.
Chapter 3 Using Classes and Objects. Creating Objects A variable holds either a primitive type or a reference to an object A class name can be used as.
Chapter 2 storing numbers and creating objects Pages in Horstmann.
Fundamental Programming Structures in Java: Strings.
Using Objects CS 101-E Aaron Bloomfield. Announcements Midterm 1 is a week from this Wednesday Midterm 1 is a week from this Wednesday TESTS ARE IN CHM.
References, Aliases, Garbage Collection and Packages Packages and Importing Classes Reading for this Lecture: L&L, Familiarize yourself with.
COMP 14: Primitive Data and Objects May 24, 2000 Nick Vallidis.
1 The First Step Learning objectives write Java programs that display text on the screen. distinguish between the eight built-in scalar types of Java;
1 Using Objects Chapter 3 Fall 2005 CS 101 Aaron Bloomfield.
Week 2 - Friday.  What did we talk about last time?  Data representation  Binary numbers  Types  int  boolean  double  char  String.
© The McGraw-Hill Companies, 2006 Chapter 1 The first step.
Characters The data type char represents a single character in Java. –Character values are written as a symbol: ‘a’, ‘)’, ‘%’, ‘A’, etc. –A char value.
Spring 2008 Mark Fontenot CSE 1341 Principles of Computer Science I Note Set 2.
Week 2 - Wednesday.  What did we talk about last time?  Data representation  Binary numbers  Types  int  boolean  double  char  String.
Netprog: Java Intro1 Crash Course in Java. Netprog: Java Intro2 Why Java? Network Programming in Java is very different than in C/C++ –much more language.
CS107 References and Arrays By Chris Pable Spring 2009.
Using Data Within a Program Chapter 2.  Classes  Methods  Statements  Modifiers  Identifiers.
Methods in Java. Program Modules in Java  Java programs are written by combining new methods and classes with predefined methods in the Java Application.
Can we talk?. In Hello World we already saw how to do Standard Output. You simply use the command line System.out.println(“text”); There are different.
1 Using Objects Chapter 3 Fall 2006 CS 101 Aaron Bloomfield.
1 Even even more on being classy Aaron Bloomfield CS 101-E Chapter 4+
Chapter 10 Defining Classes. The Internal Structure of Classes and Objects Object – collection of data and operations, in which the data can be accessed.
Objects. Getting classy Your current job –Gain experience creating and manipulating objects from the standard Java types Why –Prepares you for defining.
String Definition A String is a set of characters that behaves as a single unit. The characters in a String include upper-case and lower-case letters,
Chapter 3: Classes and Objects Java Programming FROM THE BEGINNING Copyright © 2000 W. W. Norton & Company. All rights reserved Java’s String Class.
Vladimir Misic: Characters and Strings1Tuesday, 9:39 AM Characters and Strings.
String Processing Word processing term papers, writing memoirs, sending messages, responding to surveys, placing online orders and registering products.
Using Classes and Objects Chapters 3 Creating Objects – Section 3.1 The String Class – Section 3.2 The Scanner Class – Section 2.6 Instructor: Scott Kristjanson.
CSE 1201 Object Oriented Programming Using Classes and Objects.
Department of Computer Engineering Using Objects Computer Programming for International Engineers.
Programming Fundamentals. Overview of Previous Lecture Phases of C++ Environment Program statement Vs Preprocessor directive Whitespaces Comments.
1 Using Objects Chapter 3 Spring 2006 CS 101 Aaron Bloomfield.
CS305j Introduction to Computing Classes II 1 Topic 24 Classes Part II "Object-oriented programming as it emerged in Simula 67 allows software structure.
CMSC 202 Advanced Section Classes and Objects: Object Creation and Constructors.
Java Software Solutions Foundations of Program Design Sixth Edition by Lewis & Loftus Chapter 3: Using Classes and Objects Coming up: Creating Objects.
1 Review for exam 1 CS 101 Aaron Bloomfield. 2 Today’s lecture An overview of the “review” sections of chapters 1-3 Stop me if you want me to go over.
Strings and I/O. Lotsa String Stuff… There are close to 50 methods defined in the String class. We will introduce several of them here: charAt, substring,
1 Review for exam 1 CS 101-E Aaron Bloomfield. 2 Announcements Exam this Wed Exam this Wed In CHM 402 (NOT in Clark G004) In CHM 402 (NOT in Clark G004)
Programming Fundamentals 2: Libraries/ F II Objectives – –utilize some useful Java libraries e.g. String, Scanner, HashMap, and Random.
Review for exam 1 CS 101 Aaron Bloomfield. 2 Today’s lecture An overview of the “review” sections of chapters 1- 3 and 5 Stop me if you want me to go.
© 2004 Pearson Addison-Wesley. All rights reserved September 5, 2007 Packages & Random and Math Classes ComS 207: Programming I (in Java) Iowa State University,
The Methods and What You Need to Know for the AP Exam
Chapter 3 Spring 2005 CS 101 Aaron Bloomfield
Objects.
Yanal Alahmad Java Workshop Yanal Alahmad
Review for Exam 1 Spring 2007 CS 101/CS 101-E.
Java Classes and Objects 3rd Lecture
Strings A string is a sequence of characters that is treated as a single value. Strings are objects. We have been using strings all along. Every time.
Chapter 3 Spring 2006 CS 101 Aaron Bloomfield
Outline Creating Objects The String Class The Random and Math Classes
Announcements & Review
Objects.
LCC 6310 Computation as an Expressive Medium
Visibilities and Static-ness
Classes and Objects Object Creation
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 almost the same There is a minor difference between the two  Which we’ll get to later

9 Visualizing objects  Class (type) name  Attributes (properties)  Methods (behaviors) + grow (int, int) : void + isEmpty ( ) : void + setLocation ( int, int ) : void + resize ( int, int ) : void +... Rectangle - width = 10 - height =

10 For Valentine’s Day…

11 Bittersweets: Dejected sayings I MISS MY EX I MISS MY EX PEAKED AT 17 PEAKED AT 17 MAIL ORDER MAIL ORDER TABLE FOR 1 TABLE FOR 1 I CRY ON Q I CRY ON Q U C MY BLOG? U C MY BLOG? REJECT PILE REJECT PILE PILLOW HUGGIN PILLOW HUGGIN ASYLUM BOUND ASYLUM BOUND DIGNITY FREE DIGNITY FREE PROG FAN PROG FAN STATIC CLING STATIC CLING WE HAD PLANS WE HAD PLANS XANADU 2NITE XANADU 2NITE SETTLE 4LESS SETTLE 4LESS NOT AGAIN NOT AGAIN

12 Bittersweets: Dysfunctional sayings RUMORS TRUE RUMORS TRUE PRENUP OKAY? PRENUP OKAY? HE CAN LISTEN HE CAN LISTEN GAME ON TV GAME ON TV CALL A 900# CALL A 900# P.S. I LUV ME P.S. I LUV ME DO MY DISHES DO MY DISHES UWATCH CMT UWATCH CMT PAROLE IS UP! PAROLE IS UP! BE MY YOKO BE MY YOKO U+ME=GRIEF U+ME=GRIEF I WANT HALF I WANT HALF RETURN 2 PIT RETURN 2 PIT NOT MY MOMMY NOT MY MOMMY BE MY PRISON BE MY PRISON C THAT DOOR? C THAT DOOR?

13 End of lecture on 29 January 2007

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

15 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

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

17 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

18 String program examples

19 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 + "."); }

20 Program demo WordLength.java WordLength.java

21 Medicine Medicine Physics Physics Public Health Public Health Chemistry Chemistry Engineering Engineering Literature Literature Psychology Psychology Economics Economics Peace Peace Biology Biology The 2004 Ig Nobel Prizes "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

22 More String methods  trim() Returns the String without leading and trailing whitespace Whitespace is a space, tab, or return

23 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) } }

24 Program demo DateTranslation.java DateTranslation.java

25 Today’s demotivators

26 End of lecture on 31 January 2007

27 Classes vs. Objects

28 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

29 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

30 More on classes vs. objects

31 Lots of piercings… This may be a bit disturbing…

32 References

33 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 7 int x - double d ‘x’ char c

34 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

35 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

36 0x0d4fe1a8  What’s happening in memory int j = 5; String s = “Hello world”;  Primitive types are never references; only objects References 2 5 int j Hello world String s Takes up 32 bits (4 bytes) of memory Takes up 32 bits (4 bytes) of memory Takes up  12 bytes of memory At memory location 0x0d4fe1a8 int j = 5; String s = “Hello world”;

37 Representation message + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int +... String - text = "Don't look behind the door!" - length =  Statements int peasPerPod = 8; String message = "Don't look behind the door!“ peasPerPod 8

38 Representation s + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int +... String - text = “I love CS 101" - length = 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”

39 Shorthand represntation  Consider: String s = “Hello world”;  Takes up a lot of space on my slides…  So we’ll use a shorthand representation: s + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int +... String - text = “Hello world" - length = “Hello world" s

40 Examples  Consider String a = "excellence“; String b = a;  What is the representation?

41  Consider: String s1 = “first string”; String s2 = “second string”; s2 = s1; System.out.println (s2); “first string” References 3 String s1 String s2 “second string” What happens to this? String s1 = “first string”; String s2 = “second string”; s2 = s1; System.out.println (s2);

42 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

43 An optical illusion

44 The null reference

45 Uninitialized versus null  Consider String dayOfWeek; Scanner inStream;  What is the representation?

46 Uninitialized versus null  Consider String fontName = null; Scanner fileStream = null;  What is the representation? null fontName null fileStream fontName fileStream OR

47 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 (0x ) No user program can exist there

48 The null reference  Consider: String s = “Hello world”; System.out.println (s.length());  What happens? Java prints out 11 s + length () : int + charAt ( int i ) : char + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int +... String - text = “Hello world" - length =

49 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: …

50 What happens in Windows…

51 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

52 References and memory  Most modern computers are 32-bit computers This means that a reference takes up 32 bits 2 32 = 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!

53 Beware!!!

54 End of lecture on 2 February 2007

55 Using object examples

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

57 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 Scanner:stdin "artiste"reponse

58 String representation  Consider String alphabet = "abcdefghijklmnopqrstuvwxyz";  Standard shorthand representation  Truer representation

59 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?

60  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); 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); More String methods "-12"s1"3.14"s2 "a"s3 v1 -12 v v3 ‘a’

61 Final variables  Consider final String POEM_TITLE = “Appearance of Brown"; final String WARNING = “Weather ball is black";  What is the representation?

62 Final variables  Consider final String LANGUAGE = "Java"; The reference cannot be modified once it is established "Java" LANGUAGE

63 Today’s demotivators

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

65  Consider final Rectangle BLOCK = new Rectangle(6, 9, 4, 2); BLOCK.setLocation(1, 4); BLOCK.resize(8, 3); final Rectangle BLOCK = new Rectangle(6, 9, 4, 2); BLOCK.setLocation(1, 4); BLOCK.resize(8, 3); Rectangle

66 stu  Consider: String s = "Halloween"; String t = "Groundhog Day"; 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; + length () : int + subString ( int m, int n ) : String + indexOf ( String s, int m ) : int + indexOf ( String s ) : int +... String -... String method usage String s = "Halloween"; String t = "Groundhog Day"; 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; “Groundhog Day"“May Day" - text = “Halloween" - length = 9 “Halloween" - text = “Groundhog Day" - length = 13 - text = “May Day" - length = 7 x10y4 “Hallow" v

67 stu  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; String method usage “Groundhog Day"“May Day"“Halloween"x10y4 “Hallow" v s = t; u = null; Java error: cannot assign a value to final variable u

68  Consider: Rectangle r = new Rectangle(); final Rectangle s = new Rectangle (3, 4, 1, 2); r.setWidth(5); r.setHeight(6); s.setWidth (7); r = new Rectangle (10,11,8,9); s = new Rectangle (12,13,14,15); Rectangle r = new Rectangle(); final Rectangle s = new Rectangle (3, 4, 1, 2); r.setWidth(5); r.setHeight(6); s.setWidth (7); r = new Rectangle (10,11,8,9); s = new Rectangle (12,13,14,15); s Rectangle method usage r + setWidth ( int w ) + setHeight ( int wh ) + setX ( int x ) + setY ( int y ) +... Rectangle + setWidth ( int w ) + setHeight ( int wh ) + setX ( int x ) + setY ( int y ) +... Rectangle - width = 7 - height = 2 - x = 3 - y = 4 + setWidth ( int w ) + setHeight ( int wh ) + setX ( int x ) + setY ( int y ) +... Rectangle - width = 8 - height = 9 - x = 10 - y = 11 - width = 1 - height = 2 - x = 3 - y = 4 - width = 0 - height = 0 - x = 0 - y = 0 - width = 5 - height = 0 - x = 0 - y = 0 - width = 5 - height = 6 - x = 0 - y = 0

69 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();

70 Scanner usage examples  Consider: Scanner stdin = new Scanner (System.in); int x = stdin.nextInt(); double d = stdin.nextDouble(); String s = stdin.next(); Scanner: stdin “hello world” sd3.5x5 Scanner stdin = new Scanner (System.in); int x = stdin.nextInt(); double d = stdin.nextDouble(); String s = stdin.next();

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

72 Overloading

73 Overloading  Consider the ‘+’ operator It can mean integer addition: 3+5 = 8 It can mean floating-point addition: = 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

74 More on overloading  We’ve 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 4 th 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  This is called overloading

75 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

76 End of lecture on 5 February 2007

77 More on methods

78 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 won’t use this terminology much, but the book uses it

79 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 won’t use this terminology much, but the book uses it

80 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);

81 Calling the Circle constructor  To create a Circle object: 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)  The constructor is always the first method called when creating (or ‘constructing’) an object c1 Circle - radius = PI = … - … + Circle() + Circle (double r) + …

82 Calling the Circle constructor  To create a Circle object: 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)  The constructor is always the first method called when creating (or ‘constructing’) an object c1 Circle - radius = PI = … - … + Circle() + Circle (double r) + … Circle - radius = PI = … - … + Circle() + Circle (double r) + …

83 Constructor varieties  The default constructor usually sets the attributes of an object to default values But that’s not why it’s called default (we’ll 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 We’ll get to why it’s called a specific constructor later The specific constructor takes in one or more parameters There can be more than one (via overloading)

84 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

85 Java documentation

86 Java documentation

87 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

88 Today’s demotivators

89 Example: last semester’s HW J2

90 A previous semester’s HW 2  Found online at fall05/hws/hwj2/index.html fall05/hws/hwj2/index.html The HW listed 10 steps to be performed  Used the StringBuffer class Which can be found at Buffer.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 not the String itself

91 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 }

92 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(); System.out.println ();

93 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);

94 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();

95 Step 4  Find the position of the small string within the StringBuffer, and save that position. // Step 4 int pos = buffer.indexOf(shortString);

96 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);

97 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);

98 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);

99 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);

100 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);

101 Step 10  Reverse the StringBuffer, and print out the result. // Step 10 buffer.reverse(); System.out.println (buffer);

102 Program demo StringBufferManipulator.java StringBufferManipulator.java

103 A bit of humor…

104 End of lecture on 7 February 2007