1 Programming with methods and classes. 2 Methods  Instance (or member) method Operates on a object (i.e., and instance of the class) String s = new.

Slides:



Advertisements
Similar presentations
Core Java Lecture 4-5. What We Will Cover Today What Are Methods Scope and Life Time of Variables Command Line Arguments Use of static keyword in Java.
Advertisements

Chapter 7: User-Defined Functions II
Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
Methods. int month; int year class Month Defining Classes A class contains data declarations (static and instance variables) and method declarations (behaviors)
Access to Names Namespaces, Scopes, Access privileges.
1 Chapter 4 Language Fundamentals. 2 Identifiers Program parts such as packages, classes, and class members have names, which are formally known as identifiers.
1 Chapter 7 User-Defined Methods Java Programming from Thomson Course Tech, adopted by kcluk.
19-Jun-15 Access to Names Namespaces, Scopes, Access privileges.
COMP 110 Introduction to Programming Mr. Joshua Stough October 8, 2007.
1 Chapter 2 Introductory Programs. 2 Getting started To create and run a Java program –Create a text file with a.java extension for the source code. For.
Classes with multiple methods Part 1. Review of classes & objects Early on, we learned that objects are the basic working units in object-oriented programs.
28-Jun-15 Access to Names Namespaces, Scopes, Access privileges.
Java Programming: From Problem Analysis to Program Design, 4e Chapter 7 User-Defined Methods.
1 Review for Midterm 3 CS 101 Spring Topic Coverage  Loops Chapter 4  Methods Chapter 5  Classes Chapter 6, Designing and creating classes.
Chapter 7: User-Defined Methods
1 Topic 04 Methods Programming II/A CMC2522 / CIM2561 Bavy Li.
Java Methods By J. W. Rider. Java Methods Modularity Declaring methods –Header, signature, prototype Static Void Local variables –this Return Reentrancy.
Comp 248 Introduction to Programming Chapter 4 - Defining Classes Part A Dr. Aiman Hanna Department of Computer Science & Software Engineering Concordia.
1 Inheritance and Polymorphism Chapter 9. 2 Polymorphism, Dynamic Binding and Generic Programming public class Test { public static void main(String[]
Methods Chapter 6. 2 Program Modules in Java What we call "functions" in C++ are called "methods" in Java Purpose Reuse code Modularize the program This.
Writing Classes (Chapter 4)
Introduction to Object Oriented Programming. Object Oriented Programming Technique used to develop programs revolving around the real world entities In.
Programming in Java Unit 2. Class and variable declaration A class is best thought of as a template from which objects are created. You can create many.
Classes and Methods Computer Engineering Department Java Course Asst. Prof. Dr. Ahmet Sayar Kocaeli University - Fall 2014.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition, Fifth Edition Chapter 7: User-Defined Functions II.
APCS Java AB 2004 Review of CS1 and CS2 Review for AP test #1 Sources: 2003 Workshop notes from Chris Nevison (Colgate University) AP Study Guide to go.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
1 Programming with methods and classes. 2 Methods  Instance (or member) method Operates on a object (i.e., and instance of the class) String s = new.
Questions? Suggestions?. References References Revisited What happens when we say: int x; double y; char c; ???
1 Growth of Functions CS/APMA 202 Rosen section 2.2 Aaron Bloomfield.
Topic 1 Object Oriented Programming. 1-2 Objectives To review the concepts and terminology of object-oriented programming To discuss some features of.
Loops (cont.). Loop Statements  while statement  do statement  for statement while ( condition ) statement; do { statement list; } while ( condition.
Basic Java Syntax COMP 401, Spring 2014 Lecture 2 1/14/2014.
CSC 142 Computer Science II Zhen Jiang West Chester University
Chapter 5 Objects and Classes Inheritance. Solution Assignments 3 & 4 Review in class…..
Method Overloading  Methods of the same name can be declared in the same class for different sets of parameters  As the number, types and order of the.
Chapter 3 Introduction to Classes and Objects Definitions Examples.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 9 Inheritance and.
Programming with methods and classes. Methods  Instance method Operates on a object (i.e., and instance of the class) String s = new String("Help every.
Chapter 8 Class Inheritance and Interfaces F Superclasses and Subclasses  Keywords: super F Overriding methods  The Object Class  Modifiers: protected,
Application development with Java Lecture 21. Inheritance Subclasses Overriding Object class.
 In the java programming language, a keyword is one of 50 reserved words which have a predefined meaning in the language; because of this,
Interfaces and Inner Classes
Programming with methods and classes Copyright © The McGraw-Hill Companies, Inc. Permission required for reproduction or display.
1 Static Variable and Method Lecture 9 by Dr. Norazah Yusof.
1 Programming with methods and classes Chapter 7 Fall 2006 CS 101 Aaron Bloomfield.
 Static  Example for Static Field  Example for Static Method  Math class methods  Casting  Scope of Declaration  Method Overloading  Constructor.
Classes - Intermediate
Terms and Rules II Professor Evan Korth New York University (All rights reserved)
1 Programming with methods and classes Chapter 7 Fall 2005 CS 101 Aaron Bloomfield.
1 Programming with methods and classes Chapter 7 Spring 2006 CS 101 Aaron Bloomfield.
Chapter 7: Programming with methods and classes..
UMass Lowell Computer Science Java and Distributed Computing Prof. Karen Daniels Fall, 2000 Lecture 10 Java Fundamentals Objects/ClassesMethods.
CS100Lecture 61 Announcements Homework P1 due on Thursday Homework P2 handed out.
CompSci 230 S Programming Techniques
Topic: Classes and Objects
Chapter 7 User-Defined Methods.
Java Programming: From Problem Analysis to Program Design, 3e Chapter 7 User-Defined Methods.
Chapter 7: User-Defined Functions II
Methods Chapter 6.
Namespaces, Scopes, Access privileges
Programming with methods and classes
Chapter 9 Inheritance and Polymorphism
Programming with methods and classes
Group Status Project Status.
Java Classes and Objects 3rd Lecture
Review for Midterm 3.
Classes, Objects and Methods
Review for Midterm 3.
Presentation transcript:

1 Programming with methods and classes

2 Methods  Instance (or member) method Operates on a object (i.e., and instance of the class) String s = new String("Help every cow reach its " + "potential!"); int n = s.length();  Class (i.e. static) method Service provided by a class and it is not associated with a particular object String t = String.valueOf(n); Instance method Class method

3 Variables  Instance variable and instance constants Attribute of a particular object Usually a variable Point p = new Point(5, 5); int px = p.x;  Class variables and constants Collective information that is not specific to individual objects of the class Usually a constant Color favoriteColor = Color.MAGENTA; double favoriteNumber = Math.PI - Math.E; Instance variable Class constants

4 static and non- static rules  Member/instance (i.e. non-static) fields and methods can ONLY be accessed by the object name  Class (i.e. static) fields and methods can be accessed by Either the class name or the object name  Non-static methods can refer to BOTH class (i.e. static) variables and member/instance (i.e. non-static) variables  Class (i.e. static) methods can ONLY access class (i.e. static) variables

5 Task – Conversion.java  Support conversion between English and metric values d degrees Fahrenheit = (d – 32)/1.8 degrees Celsius 1 mile = kilometers 1 gallon = liters 1 ounce (avdp) = grams 1 acre = square miles = hectares

6 Conversion Implementation public class Conversion { // conversion equivalencies private static final double KILOMETERS_PER_MILE = ; private static final double LITERS_PER_GALLON = ; private static final double GRAMS_PER_OUNCE = ; private static final double HECTARES_PER_ACRE = ;

7 Conversion implementation public static double fahrenheitToCelsius (double f) { return (f - 32) / 1.8; } } Modifier public indicates other classes can use the method Modifier static indicates the method is a class method No use of member/instance variables!!!

8 Conversion Implementation // temperature conversions methods public static double fahrenheitToCelsius(double f) { return (f - 32) / 1.8; } public static double celsiusToFahrenheit(double c) { return 1.8 * c + 32; } // length conversions methods public static double kilometersToMiles(double km) { return km / KILOMETERS_PER_MILE; }

9 Conversion Implementation // mass conversions methods public static double litersToGallons(double liters) { return liters / LITERS_PER_GALLON; } public static double gallonsToLiters(double gallons) { return gallons * LITERS_PER_GALLON; } public static double gramsToOunces(double grams) { return grams / GRAMS_PER_OUNCE; } public static double ouncesToGrams(double ounces) { return ounces * GRAMS_PER_OUNCE; }

10 Conversion Implementation // area conversions methods public static double hectaresToAcres(double hectares) { return hectares / HECTARES_PER_ACRE; } public static double acresToHectares(double acres) { return acres * HECTARES_PER_ACRE; }

11 Conversion use Scanner stdin = new Scanner (System.in); System.out.print("Enter a length in kilometers: "); double kilometers = stdin.nextDouble(); double miles = Conversion.kilometersToMiles(kilometers); System.out.print("Enter a mass in liters: "); double liters = stdin.nextDouble(); double gallons = Conversion.litersToGallons(liters); System.out.print("Enter a mass in grams: "); double grams = stdin.nextDouble(); double ounces = Conversion.gramsToOunces(grams); System.out.print("Enter an area in hectares: "); double hectares = stdin.nextDouble(); double acres = Conversion.hectaresToAcres(hectares);

12 A Conversion use System.out.println(kilometers + " kilometers = " + miles + " miles "); System.out.println(liters + " liters = " + gallons + " gallons"); System.out.println(grams + " grams = " + ounces + " ounces"); System.out.println(hectares + " hectares = " + acres + " acres"); 2.0 kilometers = miles 3.0 liters = gallons 4.0 grams = ounces 5.0 hectares = acres

13 A preferred Conversion use NumberFormat style = NumberFormat.getNumberInstance(); style.setMaximumFractionDigits(2); style.setMinimumFractionDigits(2); System.out.println(kilometers + " kilometers = " + style.format(miles) + " miles "); System.out.println(liters + " liters = " + style.format(gallons) + " gallons"); System.out.println(grams + " grams = " + style.format(ounces) + " ounces"); System.out.println(hectares + " hectares = " + style.format(acres) + " acres"); 2.0 kilometers = 1.24 miles 3.0 liters = 0.79 gallons 4.0 grams = 0.14 ounces 5.0 hectares = acres Part of java.text

14 A solution to commenting your code The commentator: The commentator:

15 Method invocations  Actual parameters provide information that is otherwise unavailable to a method  When a method is invoked Java sets aside memory for that particular invocation  Called the activation record Activation record stores, among other things, the values of the formal parameters Formal parameters initialized with values of the actual parameters  After initialization, the actual parameters and formal parameters are independent of each other Flow of control is transferred temporarily to that method

16 Value parameter passing demonstration public class Demo { public static double add(double x, double y) { double result = x + y; return result; } public static double multiply(double x, double y) { x = x * y; return x; } public static void main(String[] args) { double a = 8, b = 11; double sum = add(a, b); System.out.println(a + " + " + b + " = " + sum); double product = multiply(a, b); System.out.println(a + " * " + b + " = " + product); } }

17 Value parameter passing demonstration multiply() does not change the actual parameter a

18 Demo.java walkthrough double sum = add(a, b); public static double add (double x, double y) { double result = x + y; return result; } Initial values of formal parameters come from the actual parameters

19 Demo.java walkthrough double multiply = multiply(a, b); public static double multiply (double x, double y) { x = x * y; return x; } Initial values of formal parameters come from the actual parameters

20 PassingReferences.java import java.awt.*; public class PassingReferences { public static void f(Point v) { v = new Point(0, 0); } public static void g(Point v) { v.setLocation(0, 0); } public static void main(String[] args) { Point p = new Point(10, 10); System.out.println(p); f(p); System.out.println(p); g(p); System.out.println(p); } }

21 PassingReferences.java run g() can change the attributes of the object to which p refers

22 PassingReferences.java public static void main(String[] args) { Point p = new Point(10, 10); System.out.println(p); f(p); java.awt.Point[x=10,y=10 ]

23 PassingReferences.java public static void f(Point v) { v = new Point(0, 0); }

24 PassingReferences.java public static void main(String[] args) { Point p = new Point(10, 10); System.out.println(p); f(p); System.out.println(p); g(p); java.awt.Point[x=10,y=10 ]

25 PassingReferences.java public static void g(Point v) { v.setLocation(0, 0); }

26 PassingReferences.java public static void main(String[] args) { Point p = new Point(10, 10); System.out.println(p); f(p); System.out.println(p); g(p); System.out.println(p); java.awt.Point[x=10,y=10 ] java.awt.Point[x=0,y=0]

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

28 End of lecture  Actually ended 4 slides forward, but I want to start here

29 Static vs. non-static  Consider the following code: public class Staticness { private int a = 0; private static int b = 0; public void increment() { a++; b++; } public String toString() { return "(a=" + a + ",b=" + b + ")"; }

30 Static vs. non-static  And the code to run it: public class StaticTest { public static void main (String[] args) { Staticness s = new Staticness(); Staticness t = new Staticness(); s.increment(); t.increment(); System.out.println (s); System.out.println (t); }

31 Static vs. non-static  Execution of the code…  Output is: (a=1,b=3) (a=2,b=3)

32 Staticness s = new Staticness(); Staticness t = new Staticness(); s.increment(); t.increment(); System.out.println (s); System.out.println (t); Staticness s = new Staticness(); Staticness t = new Staticness(); s.increment(); t.increment(); System.out.println (s); System.out.println (t); Static vs. non-static: memory diagram Staticness - a = 0 t Staticness - a = 0 s 0 b Staticness - a = 1 Staticness - a = 1 Staticness - a =

33 Task – Triple.java  Represent objects with three integer attributes  public Triple() Constructs a default Triple value representing three zeros  public Triple(int a, int b, int c) Constructs a representation of the values a, b, and c  public int getValue(int i) Returns the i-th element of the associated Triple  public void setValue(int i, int value) Sets the i-th element of the associated Triple to value

34 Task – Triple.java  Represent objects with three integer attributes  public String toString() Returns a textual representation of the associated Triple  public Object clone() Returns a new Triple whose representation is the same as the associated Triple  public boolean equals(Object v) Returns whether v is equivalent to the associated Triple

35 Triple.java implementation // Triple(): default constructor publicTriple() { this(0, 0, 0); } The new Triple object (the this object) is constructed by invoking the Triple constructor expecting three int values as actual parameters publicTriple() { inta=0; intb =0; intc = 0; this(a, b, c); } Illegal this() invocation. A this() invocation must begin its statement body

36 Triple.java implementation // Triple(): default constructor public Triple(int a, int b, int c) { this (0,0,0); } // Triple(): specific constructor public Triple(int a, int b, int c) { setValue(1, a); setValue(2, b); setValue(3, c); } // Triple(): specific constructor - alternative definition public Triple(int a, int b, int c) { this.setValue(1, a); this.setValue(2, b); this.setValue(3, c); }

37 Today’s demotivators

38 Triple.java implementation  Class Triple like every other Java class Automatically an extension of the standard class Object Class Object specifies some basic behaviors common to all objects  These behaviors are said to be inherited Three of the inherited Object methods  toString()  clone()  equals()

39 Recommendation  Classes should override (i.e., provide a class-specific implementation)  toString()  clone()  equals()  By doing so, the programmer-expected behavior can be provided System.out.println(p); // displays string version of // object referenced by p System.out.println(q); // displays string version of // object referenced by q

40 Triple.java toString() implementation public String toString() { int a = getValue(1); int b = getValue(2); int c = getValue(3); return "Triple[" + a + ", " + b + ", " + c+ "]"; }  Consider Triple t1 = new Triple(10, 20, 30); System.out.println(t1); Triple t2 = new Triple(8, 88, 888); System.out.println(t2);  Produces Triple[10, 20, 30] Triple[8, 88, 888]

41 Triple.java clone() implementation public Object clone() { int a = getValue(1); int b = getValue(2); int c = getValue(3); return new Triple(a, b, c); }  Consider Triple t1 = new Triple(9, 28, 29); Triple t2 = (Triple) t1.clone(); System.out.println("t1 = " + t1); System.out.println("t2 = " + t2);  Produces Triple[9, 28, 29] Must cast!

42 Triple.java equals() implementation public boolean equals(Object v) { if (v instanceof Triple) { int a1 = getValue(1); int b1 = getValue(2); int c1 = getValue(3); Triple t = (Triple) v; int a2 = t.getValue(1); int b2 = t.getValue(2); int c2 = t.getValue(3); return (a1 == a2) && (b1 == b2) && (c1 == c2); } else { return false; } } Can’t be equal unless it’s a Triple Compare corresponding attributes

43 Triple.java equals() Triple e = new Triple(4, 6, 10); Triple f = new Triple(4, 6, 11);, Triple g = new Triple(4, 6, 10); Triple h = new Triple(4, 5, 11); boolean flag1 = e.equals(f);

44 Triple.java equals() Triple e = new Triple(4, 6, 10); Triple f = new Triple(4, 6, 11);, Triple g = new Triple(4, 6, 10); Triple h = new Triple(4, 5, 11); boolean flag2 = e.equals(g);

45 Triple.java equals() Triple e = new Triple(4, 6, 10); Triple f = new Triple(4, 6, 11);, Triple g = new Triple(4, 6, 10); Triple h = new Triple(4, 5, 11); boolean flag3 = g.equals(h);

46 What’s wrong with this code? class Scope { public static void f(int a) { int b = 1; // local definition System.out.println(a); // print 10 a = b; // update a System.out.println(a); // print 1 } public static void main(String[] args) { int i = 10; // local definition f(i); // invoking f() with i as parameter System.out.println(a); System.out.println(b); } } Variables a and b do not exist in the scope of method main()

47 Blocks and scope rules  A block is a list of statements nested within braces A method body is a block A block can be placed anywhere a statement would be legal  A block contained within another block is a nested block  A formal parameter is considered to be defined at the beginning of the method body  A local variable can be used only in a statement or nested blocks that occurs after its definition  An identifier name can be reused as long as the blocks containing the duplicate declarations are not nested one within the other  Name reuse within a method is permitted as long as the reuse occurs in distinct blocks

48 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 “*** asymmetry in man in ancient sculpture”

49 Legal class Scope2 { public static void main(String[] args) { int a = 10; f(a); System.out.println(a); } public static void f(int a) { System.out.println(a); a = 1; System.out.println(a); } }

50 Legal but not recommended public void g() { { int j = 1; // define j System.out.println(j); // print 1 } { int j = 10; // define a different j System.out.println(j); // print 10 } { char j = // define a different j System.out.println(j); // print } }

51 What’s the output? for (int i = 0; i < 3; ++i) { int j = 0; ++j; System.out.println(j); }  The scope of variable j is the body of the for loop j is not in scope when ++i j is not in scope when i < 3 are evaluated j is redefined and re-initialized with each loop iteration

52 Overloading  Have seen it often before with operators int i = ; double x = ; String s = "April " + "June";  Java also supports method overloading Several methods can have the same name Useful when we need to write methods that perform similar tasks but different parameter lists Method name can be overloaded as long as its signature is different from the other methods of its class  Difference in the names, types, number, or order of the parameters

53 Legal public static int min(int a, int b, int c) { return Math.min(a, Math.min(b, c)); } public static int min(int a, int b, int c, int d) { return Math.min(a, min(b, c, d)); }

54 Legal public static int power(int x, int n) { int result = 1; for (int i = 1; i <= n; ++i) { result *= x; } return result; } public static double power(double x, int n) { double result = 1; for (int i = 1; i <= n; ++i) { result *= x; } return result; }

55 What’s the output? public static void f(int a, int b) { System.out.println(a + b); } public static void f(double a, double b) { System.out.println(a - b); } public static void main(String[] args) { int i = 19; double x = 54.0; f(i, x); }

56 Random numbers  To generate random numbers, use the Random class In java.util  Usage: Random random = new Random(); random.nextInt(7)  Generates a random number between 0 and 6 random.nextDouble()  Returns a number x where 0 ≤ x < 1  Technically, they are not true random numbers They are called ‘pseudo-random’ numbers But that’s close enough to random numbers for us

57 Using random number generators public class RandomTest { public static void main (String[] args) { int foo[] = new int[10]; double bar[] = new double[10]; Random random = new Random(); for ( int i = 0; i < 10; i++ ) { foo[i] = random.nextInt(100); bar[i] = random.nextDouble(); } for ( int i = 0; i < 10; i++ ) { System.out.println (i + ": " + foo[i] + ", " + bar[i]); }

58 Output 0: 5, : 15, : 67, : 42, : 55, : 72, : 32, : 85, : 1, : 54,  But it varies each time!

59 Summary of key points  The this keyword Can be used to call another constructor  Must be the FIRST thing called Can be used as a reference to the current object  Static vs. non-static A static variable means there is only one such variable regardless of how many objects have been declared A static method does not care about the “state” of the object  Various methods we may want to override: clone() toString() equals()  Using random numbers

60 End of lecture on 13 April 2005  Didn’t do the next three survey questions

61 Quick survey I felt I understood the material in this slide set… I felt I understood the material in this slide set… a) Very well b) With some review, I’ll be good c) Not really d) Not at all

62 Quick survey The pace of the lecture for this slide set was… The pace of the lecture for this slide set was… a) Fast b) About right c) A little slow d) Too slow

63 Quick survey How interesting was the material in this slide set? Be honest! How interesting was the material in this slide set? Be honest! a) Wow! That was SOOOOOOO cool! b) Somewhat interesting c) Rather boring d) Zzzzzzzzzzz