Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSC240 Computer Science III

Similar presentations


Presentation on theme: "CSC240 Computer Science III"— Presentation transcript:

1 CSC240 Computer Science III
Zhen Jiang Dept. of Computer Science West Chester University West Chester, PA 19383 11/12/2018

2 Table of Contents Introduction to field (attribute)
Public and private modifiers Accessor and mutator methods Constructor Static method Instance method Overloading Static variables Packages and importing Summary 11/12/2018

3 Fields field: A variable inside an object that represents part of its internal state. Each object will have its own copy of the data fields we declare. Declaring a field, general syntax: public <type> <name>; or public <type> <name> = <value>; (with initialization)‏ Example: public class Dog { public String name; // each dog object has a public int age; // name and age data field } 11/12/2018

4 Public and private modifiers
Type specified as public Any other class can directly access that object by name Classes generally specified as public Instance variables usually not public Instead specify as private 11/12/2018

5 Dog.java DogDemo.java Change field to private
DogDemo.java 11/12/2018

6 Error! 11/12/2018

7 Demonstration of need for private variables
Statement such as balto.name = "Balto"; is illegal since name is private 11/12/2018

8 Accessor and Mutator Methods
P344 Must also provide methods to change the values of the private instance variable Typically named setSomeValue Referred to as a mutator method When instance variables are private must provide methods to access values stored there Typically named getSomeValue Referred to as an accessor method 11/12/2018

9 Consider the example class with accessor and mutator methods
Note the mutator method setName , setBreed , setAge Note accessor methods getName, getBreed, getAge 11/12/2018

10 Using the accessor and mutator methods
11/12/2018

11 1 public class DogDemo2 2 { public static void main(String[] args) { Dog2 balto = new Dog2(); balto.setName("Balto"); balto.setAge(8); balto.setBreed("Siberian Husky"); balto.writeOutput(); Dog2 scooby = new Dog2(); scooby.setName("Scooby"); scooby.setAge(42); scooby.setBreed("Great Dane"); System.out.println(scooby.getName()+" is a "+scooby.getBreed()+"."); System.out.print("He is " + scooby.getAge() + " years old, or "); int humanYears = scooby.getAgeInHumanYears(); System.out.println(humanYears + " in human years."); } 20 } 21 Tedious 11/12/2018

12 // better! We want something more like:
Dog3 balto = new Dog3(“Balto”, “Siberian Husky”, 8); 11/12/2018

13 Constructor constructor: A special method that initializes the state of new objects as they are created. Constructor syntax, p352: public <class name> (<parameter(s)>) { <statement(s)>; } How does this differ from previous methods? Method name No return! 11/12/2018

14 public class Dog3 { private String name; private String breed; private int age; public Dog3( String strName, String strBreed, int intAge) { name = strName; breed = strBreed; age = intAge; } 11/12/2018

15 11/12/2018

16 11/12/2018

17 Calling method from constructor: a constructor can call methods within its method body, in order to avoid unnecessarily repeating some code. To avoid the problem with inheritance, which we will cover later, we need to make such a method private! 11/12/2018

18 Static Methods Some methods may have no relation to any type of object, p One method each class Example Compute max of two integers Convert character from upper- to lower case Static method declared in a class Can be invoked without using an object Instead use the class name 11/12/2018

19 Adding Method main to a Class
Method main used so far in its own class Often useful to include method main within class definition To create objects of other classes To be run as a start of program For any ordinary class, method main is ignored 11/12/2018

20 Every object of type Point3D contains three integers.
public class Point3D { public int x; public int y; public int z; } Every object of type Point3D contains three integers. Point3D objects (so far) do not contain any behavior. Class declarations are saved in a file of the same name: Point3D.java 11/12/2018

21 How would we translate several points?
p1.x += 11; p1.y += 6; p1.z + 2; p2.x += 2; p2.y += 4; p2.z += -2; p3.x += 1; p3.y += 7; p3.z += 17; What is unsettling about this code? 11/12/2018

22 Write a static method in the client code to translate points.
// Shifts the location of the given point. public static void translate( Point p, int dx, int dy, int dz) { p.x += dx; p.y += dy; p.z += dz; } Example: // move p2 translate(p2, 2, 4, 6); Question: Why doesn't the method need to return the modified point? 11/12/2018

23 We want something more like: p2.translate(2, 4);
Every client code (application class) that declares Point3D and wants to translate points would have to write their own static translate method! Also, the call syntax doesn't match the way we're used to interacting with objects: translate(p2, 2, 4); We want something more like: p2.translate(2, 4); 11/12/2018

24 Instance methods instance method: A method inside an object that operates on that object. Declaring an object's method, general syntax: public <type> <name> (<parameter(s)>) { <statement(s)>; } How does this differ from previous methods? 11/12/2018

25 An object's instance methods can refer to its fields.
public void translate(int dx, int dy, int dz) { x += dx; y += dy; z += dz; } How does the translate method know which x, y, z to modify? 11/12/2018

26 Each instance method call happens on a particular object.
Example: p1.translate(11, 6, 2); The code for an instance method has an implied knowledge of what object it is operating on. implicit parameter: The object on which an instance method is called. 11/12/2018

27 Think of each Point3D object as having its own copy of the translate method, which operates on that object's state: Point3D p1 = new Point3D(7, 2, -2); Point3D p2 = new Point3D(4, 3, 2); public void translate(int dx, int dy, int dz){ ... } y: x: 7 2 z: -2 p1: public void translate(int dx, int dy, int dz){ ... } y: x: 4 3 z: 2 p2: 11/12/2018

28 What happens when the following calls are made?
p1.translate(11, 6, 3); p2.translate(1, 7, -10); public void translate(int dx, int dy, int dz){ ... } x: 18 7 y: 8 2 z: 1 -2 p1: public void translate(int dx, int dy, int dz){ ... } x: 5 4 y: 10 3 z: 2 -8 p2: 11/12/2018

29 public class Point3D { public int x; public int y; public Point3D( int initialX, int initialY, int initialZ) { x = initialX; y = initialY; z = initialZ; } // Changes the location of this Point3D object. public void translate(int dx, int dy, int dz){ x += dx; y += dy; z += dz; 11/12/2018

30 public class PointMain3 { public static void main(String[] args) {
// create two Point3D objects Point3D p1 = new Point3D(5, 2, -2); Point3D p2 = new Point3D(4, 3, 2); // print each point System.out.println("p1 is (" + p1.x + ", " + p1.y + ")"); System.out.println("p2 is (" + p2.x + ", " + p2.y + ")"); // move p2 and then print it again p2.translate(2, 4, -2); } Output: p1 is (5, 2, -2)‏ p2 is (4, 3, 2)‏ p2 is (6, 7, 0)‏ 11/12/2018

31 It would be nice to have something more like:
Instead of System.out.println("p1 is (" + p1.x + ", " + p1.y + ")"); It would be nice to have something more like: System.out.println("p1 is " + p1); What does this line currently do? Does it even compile? It will print: p1 is 11/12/2018

32 Note: Every class has a toString method.
When an object is printed or concatenated with a String, Java calls the object's toString method. System.out.println("p1 is " + p1); is equivalent to: System.out.println("p1 is " + p1.toString()); Note: Every class has a toString method. 11/12/2018

33 The default toString behavior is to return the class's name followed by gibberish (as far as you are concerned). You can replace the default behavior by defining a toString method in your class. 11/12/2018

34 The toString method, general syntax:
public String toString() { <statement(s) that return a String>; } NB: The method must have this exact name and signature (i.e., public String toString()). Example: // Returns a String representing this Point. return "(" + x + ", " + y + “, “ + z + ")"; 11/12/2018

35 Provides many standard mathematical methods
The Math Class Provides many standard mathematical methods See in examples 11/12/2018

36 11/12/2018

37 Java provides wrapper classes for each primitive type,
Recall that arguments of primitive type treated differently from those of a class type May need to treat primitive value as an object Java provides wrapper classes for each primitive type, Methods provided to act on values 11/12/2018

38 Contain useful predefined constants and methods, for instance:
Integer.MAX_VALUE Double.parseDouble(“199.88”) Double.toString(199.88) Have no default constructor Programmer must specify an initializing value when creating new object Have no set methods 11/12/2018

39 Overloading When two or more methods have same name within the same class Java distinguishes the methods by number and types of parameters If it cannot match a call with a definition, it attempts to do type conversions A method's name and number and type of parameters is called the signature 11/12/2018

40 Overloading and automatic type conversion can conflict
Remember the compiler attempts to overload before it does type conversion Use descriptive method names, avoid overloading 11/12/2018

41 P376 11/12/2018

42 You must not overload a method where the only difference is the type of value returned
11/12/2018

43 Static Variables Are shared by all objects of a class
Variables declared static final are considered constants – value cannot be changed e.g., public static final double FEET_PER_YARD = 3; Variables declared static (without final) can be changed Only one instance of the variable exists It can be accessed by all instances of the class e.g., public static int numberOfInvocations; 11/12/2018

44 Static variables also called class variables,
Contrast with instance variables Do not confuse class variables with variables of a class type Both static variables and instance variables are sometimes called fields or data members 11/12/2018

45 Packages and Importing
A package is a collection of classes grouped together into a folder, Name of folder is name of package Each class Placed in a separate file Has this line at the beginning of the file package Package_Name; Classes use packages by use of import statement 11/12/2018

46 Search for package begins in class path base directory
Package name tells compiler path name for directory containing classes of package Search for package begins in class path base directory Package name uses dots in place of / or \ Name of package uses relative path name starting from any directory in class path 11/12/2018

47 Figure 6.5 A package name 11/12/2018

48 Packages help in dealing with name clashes
When two classes have same name Different programmers may give same name to two classes Ambiguity resolved by using the package name 11/12/2018

49 Summary Public and private modifier, Accessor and mutator method,
Constructor, Calling private method from constructor, Static method, Adding method main to a class, Math class, Wrapper class, Overloading, Static Variables, Packages. 11/12/2018


Download ppt "CSC240 Computer Science III"

Similar presentations


Ads by Google