alice in action with java chapter 9 methods. alice in action with java2 non- void vs. void methods...
TRANSCRIPT
![Page 1: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/1.jpg)
Alice in Action with Java
Chapter 9Methods
![Page 2: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/2.jpg)
Alice in Action with Java 2
Non-void vs. void Methods
• Alice messages– Methods: messages sent where a statement occurs– Functions: messages sent where an expression occurs
• All messages in Java are called methods• void method in Java
– Corresponds to an Alice method– Example: printVerse()
• non-void method in Java– Corresponds to an Alice function– Must have a return type
![Page 3: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/3.jpg)
Alice in Action with Java 3
Non-void Methods
• How getVerse()revises the HokeyPokey program – Takes a String argument representing a bodyPart– Returns a verse that includes the bodyPart– Is called multiple times in one println()statement
• getVerse()method vs. printVerse()method– getVerse()is a value-returning method – getVerse()can be used for more than display
• Non-void methods use Java’s return statement• return statement pattern: return Expression
– Any Java type can be used as a return type
![Page 4: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/4.jpg)
Alice in Action with Java 4
Non-void Methods (continued)
![Page 5: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/5.jpg)
Alice in Action with Java 5
Non-void Methods (continued)
![Page 6: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/6.jpg)
Alice in Action with Java 6
Method Design
• Procedure for developing a method– Write a user story– Identify the nouns (objects)– Identify the verbs (operations)– Organize the objects and operations into an algorithm
• Designing the getVerse()method– User story: method returns verse including body part– Body part will be a String object passed by the sender– Verse modified by the argument is returned to sender
• Locals: variables and constants declared in a method
![Page 7: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/7.jpg)
Alice in Action with Java 7
Einstein’s Formula
• e = m x c2: energy = mass x speed of light2 – The formula itself serves as the user story– Method returns an expression for right side of formula
• Developing the massToEnergy()method
– Method’s return type is a double– Parameter list includes a double type called mass – Speed of light is declared as a constant outside method– Computation is performed within return statement
• Example of a call to massToEnergy()– double energy = massToEnergy(1.0);
![Page 8: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/8.jpg)
Alice in Action with Java 8
Einstein’s Formula (continued)
![Page 9: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/9.jpg)
Alice in Action with Java 9
Computing Initials
• Method for computing the first initial of a name– firstInitial()takes String value called name– First char value is accessed and returned to caller
• How to use firstInitial()– char initial1 = firstInitial("Homer Jay Simpson");
• Method for computing the last initial of a name– lastInitial()takes String value called name– The index of the last space is computed and stored– char value after index of last space is returned
![Page 10: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/10.jpg)
Alice in Action with Java 10
Computing Initials (continued)
![Page 11: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/11.jpg)
Alice in Action with Java 11
Computing Initials (continued)
![Page 12: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/12.jpg)
Alice in Action with Java 12
Computing Initials (continued)
• Method for computing first and last initials of a name– twoInitials()takes String value called name– String called result is used to build the two initials– name is passed to firstInitial()– Value returned by firstInitial()stored in result– name is passed to lastInitial()– Value returned by lastInitial()stored in result– result is returned to caller and stored in a String
• Concatenation operation: joins String values• result value is built using concatenation operation
![Page 13: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/13.jpg)
Alice in Action with Java 13
Computing Initials (continued)
![Page 14: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/14.jpg)
Alice in Action with Java 14
Sound Level Program Revisited
• Sound level program review– Task: compute loudness of a sound– Inputs: reference loudness and distance, new distance
• Revised program wraps formula in newSPL() – The parameter list corresponds to the three inputs– Sound pressure level is computed in the method body– The result is returned and stored in a long variable
• The revision makes the computation reusable– Example: newSPL()is also invoked in MethodTester
• In general, methods make a computation reusable
![Page 15: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/15.jpg)
Alice in Action with Java 15
Sound Level Program Revisited (continued)
![Page 16: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/16.jpg)
Alice in Action with Java 16
Method Libraries
• Repositories for related methods
• Example: Math class
• Section objective: build two method libraries
![Page 17: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/17.jpg)
Alice in Action with Java 17
Problem Description: Ballooning a Bedroom
• Problem context– Your friend who plays practical jokes is away– You want to play a practical joke on your friend– You plan to fill your friend’s room with balloons
• Question: how many balloons should you purchase
• The question will be answered by a program
![Page 18: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/18.jpg)
Alice in Action with Java 18
Program Design
• The problem is concerned with volumes– Find out how many balloon volumes fit in a room volume
• The balloon is approximated by a sphere – volumesphere = 4/3 x PI x radius3
• The room is approximated by a box – volumebox = length x width x height
• Another issue: whether to use large or small balloons – Large balloons take long to inflate, but fewer are needed– Small balloons inflate quickly, but more are needed
![Page 19: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/19.jpg)
Alice in Action with Java 19
Program Design (continued)
• Essentials of the user story– Query the user for the radius of the balloon– Read the radius from the keyboard– Compute the volume of one balloon– Compute the volume of the bedroom
• Note: dimensions of room are declared as constants
– Compute number of balloons needed to fill the bedroom– Display the required number of balloons, with labels
• Identify nouns and verbs to find objects and operations
• Organize objects and operations into an algorithm
![Page 20: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/20.jpg)
Alice in Action with Java 20
Program Design (continued)
![Page 21: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/21.jpg)
Alice in Action with Java 21
Program Design (continued)
![Page 22: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/22.jpg)
Alice in Action with Java 22
Program Design (continued)
![Page 23: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/23.jpg)
Alice in Action with Java 23
Program Implementation
• First decision: write methods to compute volumes– Rationale: methods allow computations to be reused
• Second decision: store methods in separate classes – Rationale: makes the program more modular
• Three classes will be used to implement the program– BalloonPrank: contains the main()driver method– Sphere: library containing sphere methods– Box: library containing box methods
• Sphere.volume(): takes one argument (radius)• Box.volume(): takes three arguments (l, w, h)
![Page 24: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/24.jpg)
Alice in Action with Java 24
Program Implementation (continued)
![Page 25: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/25.jpg)
Alice in Action with Java 25
Program Implementation (continued)
![Page 26: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/26.jpg)
Alice in Action with Java 26
Program Implementation (continued)
![Page 27: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/27.jpg)
Alice in Action with Java 27
Unit Testing
• The sole purpose of a test class – Ensure that methods in the program or library work
• How to implement unit testing– Build a test class with test methods
• One test method for each method in a program or library
– Run the test methods
• Illustration of unit testing: BoxTester.java– Test method is named testVolume()– testVolume()tests the volume()method of Box – Note: test methods use Java’s assert statement
![Page 28: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/28.jpg)
Alice in Action with Java 28
Unit Testing (continued)
![Page 29: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/29.jpg)
Alice in Action with Java 29
Test-Driven Development
• Reversing the normal testing process– Build the test (this is the starting point)– Use the test to drive subsequent method development
• Application to the development of methods– Method call indicates number of arguments needed– Number of arguments indicates number of parameters– Type of value expected indicates the return type
• Example: an initial test for Box.volume()– double vol = Box.volume(2.0, 3.0, 4.0); assert vol == 24.0;
![Page 30: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/30.jpg)
Alice in Action with Java 30
Instance Methods
• Method libraries do not use full capabilities of a class– Methods are used independently of objects
• Leveraging object-oriented programming features– Build objects with instance methods and variables– Send messages to objects
• Section objective– Learn how to define an instance method
![Page 31: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/31.jpg)
Alice in Action with Java 31
Box Objects
• Disadvantage of Box.volume() (a class method)– Box dimensions are passed with each method call
• Alternative: call method against a Box object– Box initialized once, so values are passed only once
• Enabling Box class to become an object blueprint– Create instance variables for length, width, height
• Names of doubles: myLength, myWidth, myHeight
– Define accessor methods for the instance variables– Create a constructor for a Box object– Add an instance method for computing the volume
![Page 32: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/32.jpg)
Alice in Action with Java 32
Box Objects (continued)
![Page 33: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/33.jpg)
Alice in Action with Java 33
Box Objects (continued)
![Page 34: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/34.jpg)
Alice in Action with Java 34
Box Objects (continued)
![Page 35: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/35.jpg)
Alice in Action with Java 35
Box Objects (continued)
• Characteristics of an instance variable– Defined within a class and outside of a method– Omits the keyword static– Each object has its own copy of the instance variables
• Characteristics of a class variable– Defined within a class and outside of a method– Includes the keyword static– All objects of a class share a class variable
• Access specifiers: private, protected, public– Guideline: use private access for instance variables
![Page 36: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/36.jpg)
Alice in Action with Java 36
Box Objects (continued)
• Purpose of a constructor – Initialize instance variables with user-supplied values
• Constructor features– The constructor name is always the name of its class– A constructor has no return type (not even void)
• The new operator precedes a call to a constructor– Ex 1: Box box1 = new Box(1.1, 2.2, 3.3);– Ex 2: Box box2 = new Box(9.9, 8.8, 7.7);
• box1 and box2 contain references to Box objects
![Page 37: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/37.jpg)
Alice in Action with Java 37
Box Objects (continued)
![Page 38: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/38.jpg)
Alice in Action with Java 38
Box Objects (continued)
• Instance method– A message sent to an instance of a class
– Not defined with the keyword static– Ex: public double volume()
{return myLength * myWidth * myHeight;}
• Invocation: double box1Vol = box1.volume();• Accessor method (getter)
– Instance method that returns value of instance variable
– Name usually concatenates “get” with an attribute
– Ex: public double getWidth() {return myWidth;}
![Page 39: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/39.jpg)
Alice in Action with Java 39
Sphere Objects
• Objective: enhance Sphere to support objects
• New members of Sphere– A single instance variable: double called myRadius – Instance method for calculating Sphere volume– An accessor to return the value of myRadius
• Sending messages to a Sphere object – System.out.println(sphere1.volume());– System.out.println(sphere2.volume());
![Page 40: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/40.jpg)
Alice in Action with Java 40
Sphere Objects (continued)
![Page 41: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/41.jpg)
Alice in Action with Java 41
Sphere Objects (continued)
![Page 42: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/42.jpg)
Alice in Action with Java 42
Sphere Objects (continued)
![Page 43: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/43.jpg)
Alice in Action with Java 43
The BalloonPrank Program Using Objects
• Program produces same results as the original
• Difference between original and enhanced versions– Sphere and Box objects model balloon and bedroom
• Chief benefit of the enhanced version– Sphere and Box classes can be used elsewhere– Ex: Sphere earth = new Sphere(6356.75);
![Page 44: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/44.jpg)
Alice in Action with Java 44
The BalloonPrank Program Using Objects (continued)
![Page 45: Alice in Action with Java Chapter 9 Methods. Alice in Action with Java2 Non- void vs. void Methods Alice messages –Methods: messages sent where a statement](https://reader036.vdocuments.us/reader036/viewer/2022062423/56649f3a5503460f94c58516/html5/thumbnails/45.jpg)
Alice in Action with Java 45
The BalloonPrank Program Using Objects (continued)