Presentation is loading. Please wait.

Presentation is loading. Please wait.

OBJECT ORIENTED PROGRAMMING II LECTURE 2_1 GEORGE KOUTSOGIANNAKIS

Similar presentations


Presentation on theme: "OBJECT ORIENTED PROGRAMMING II LECTURE 2_1 GEORGE KOUTSOGIANNAKIS"— Presentation transcript:

1 OBJECT ORIENTED PROGRAMMING II LECTURE 2_1 GEORGE KOUTSOGIANNAKIS
CS 116 OBJECT ORIENTED PROGRAMMING II LECTURE 2_1 GEORGE KOUTSOGIANNAKIS Copyright: SPRING Illinois Institute of Technology/George Koutsogiannakis

2 OOP Review Note: You must bring your text to the lectures
In previous lecture we discussed: User defined template classes Default constructor/ non default constructor(s). Accessor mutator methods. toString method. Other methods as required by the specification. Client classes How to use a static instance variable. Java packages Note: You must bring your text to the lectures

3 Java Packages User defined packaging.
Suppose that we created a package for our user defined template class Auto : package name1.name2.name3; import java.util.Scanner; import java.io.File; public class Auto { ……………………………… }

4 Java Packages We compile Command Line using the special command:
>javac –d . Auto.java Notice that there is space between javac and –d and also between –d and the dot. There is also space between the dot and the name of the file. This command tells the compiler to create the folders first name1 then name 2 (inside name1 folder) and then name 3 (inside name 2 folder) with respect to the current directory and place Auto.class inside folder name3.

5 Source code files Auto.java AutoClient.java are in Current Directory
Java Packages Current Directory (folder) name1(folder) name2 (folder) name3 (folder) Auto.class Source code files Auto.java AutoClient.java are in Current Directory

6 Java Packages Therefore right now our service class Auto.class file is in folder name3 in our example. Suppose that we want to use the class Auto in the class AutoClient and also place AutoClient in the folder name2 (not the same folder as the Auto class): We must import the class Auto in the class AutoClient by using an import statement in class AutoClient because the two classes are going to be in different folders i.e. package name1.name2 //Notice that AutoClient resides in folder name2 import name1.name2.name3.Auto; public class AutoClient { //now we can instantiate objects of //class Auto and invoke its methods inside //the main method of this class } File AutoClient.class will be found in path name1.name2 with respect to the current directory. Note: If both classes reside in the same folder then there is no need to import the Auto class

7 Java Packages Auto.java , AutoClient.java name1(folder)
Current Directory (folder) Auto.java , AutoClient.java name1(folder) name2 (folder) AutoClient.class name3 (folder) Auto.class

8 Java Packages How do we call the interpreter for class AutoClient from the current directory (folder)? We need to list the path to the AutoClass when we use the interpreter command: i.e >java name1.name2.AutoClient Notice that the reason we call the AutoClient class is because this class has the main method. The Auto class will be called automatically.

9 Java Packages package java.lang
Pre defined library classes are grouped into packages according to their functionality: i.e. package java.lang Provides classes that are fundamental to the design of the Java programming language. Every java program automatically imports all the classes of this package without the need for an import statement. Includes such classes as : String, Math , System, Integer, Float and others.

10 Java Packages package java.util java.text
Must explicitly be imported with an import statement. Provides such classes as: Scanner, StringTokenizer, Vector, Calendar, Date and others. java.text Must imported explicitly. Provides numeric formatting classes such as: Format, NumberFormat and others

11 Java Packages Import statements can include the entire package or a selective class out of the package i.e. import java.util.*; imports all classes in package util or import java.util.Scanner; imports only the Scanner class (saves memory usage)

12 Java Packages There are over 200 packages in the java library
Number of classes varies in each package with some having over 20 classes. Remember that a package can include something called “interfaces”. For now let us think of an interface as a class whose methods have no code (no implementation). We will come back to the subject of interfaces later.

13 Default Initial Values
If the constructor does not assign values to the instance variables, they receive default values depending on the instance variable data type. Data Type Default Value byte, short, int, long float, double 0.0 char space boolean false Any object reference (for example, a String) null

14 main Method A client program must contain a method called main()
Execution always begins with the first statement in method main and ends with the last statement in method main. Between the first and last statement of method main other methods are called for execution as needed.

15 Object Reference this How does a method know which object's data to use? this is an implicit parameter sent to methods. this is an object reference to the object for which the method was called. When a method refers to an instance variable name, this is implied. Thus, variableName is understood to be this.variableName Example in the Auto class: modelName is understood to be this.modelName

16 Using this in a Mutator Method
public void setInstanceVariable( dataType instanceVariableName ) { this.instanceVariableName = instanceVariableName; } Example: public void setModel( String model ) this.model = model; this.model refers to the instance variable whose value is being set. model refers to the parameter.

17 Using this Suppose in AutoClient class (which uses class Auto) we instantiate an object: Auto a1=new Auto(); (globally -outside any method) Suppose that we create a new method that it is responsible for setting the instance fields of a1 and getting their values by using also a globally declared parameter i.e int x; We can call the value of x using this.x

18 Using this package folder1.folder2; import folder1.folder2.folder3.Auto; public class AutoClient { Auto a1=new Auto("Ford", “Mario”, 100, 20); int x=300; public static void main(String[] args) //because we can NOT directly call a non static method from a static //we need to use an object of AutoClient AutoClient ac=new AutoClient(); ac.usingThis(); Auto a2=new Auto("Infinity", “Jim”, 150, 18); System.out.println(a2.toString()); a2.setCurrentID(15); System.out.println(“the value of x ia:”+ac.x); } public void usingThis() a1.setCurrentID(15); int x=a1.getCurrentID(); System.out.println("The current id for a1 is now"+" "+this.x); System.out.println("The value of the current id variable for object a1 is"+" "+x);

19 Using this The output of the previous program is:
C:\CS116\FALL2010\PracticeExercises\Lecture 2\ExampleUsingthis>javac -d . AutoClient.java C:\CS116\FALL2010\PracticeExercises\Lecture 2\ExampleUsingthis>java folder1.folder2.AutoClient The current id for a1 is now 300 The value of the current id variable for object a1 is15 The model is Infinity The owner is Jim The miles driven are The gas mileage is 18.0 The id is 2 The value of x is:300

20 Using this Practice Questions:
What object is the refers this refers to in the Program AutoClient.java? Explain the value of all attributes in the output!

21 The equals Method used for objects
Determines if the data encapsulated in another object is equal to the data encapsulated in this object. Example client code using Auto references auto1 and auto2: if ( auto1.equals( auto2 ) ) System.out.println( "auto1 equals auto2" ); Return value Method name and argument list boolean equals( Object obj ) returns true if the data in the Object obj is the same as in this object; false otherwise

22 The equals Method used for objects
All java objects regardless if the class is user defined or pre defined get to use (the term is “inherit”) methods of a library class called Object. All classes get to use (the term is “inherit”) the toString and equals methods of the Object class. However, quite often we create (as we know) our own toString method. We can also create our own equals method for objects of our user defined template class. When we create our version of a method that already exists in the library we call the technique “method overriding”.

23 The instanceof Operator
Because the equals method’s parameter is of type Object, we need to determine if the parameter is an Auto object. (Object is general- we need to narrow it down to the specific type of Object). We can use the instanceof operator to determine if an object reference refers to an object of a particular class. Syntax: objectReference instanceof ClassName evaluates to true if objectReference is of ClassName type; false otherwise.

24 Auto Class equals Method
Auto Class equals Method (method overriding of Object class’ equals method). public boolean equals(Object o ) { // if o is not an Auto object, return false if ( ! ( o instanceof Auto ) ) return false; else // type cast o to an Auto object Auto objAuto = ( Auto ) o; if ( this.modelName.equals( objAuto.modelName ) &&this.milesDriven== objAuto.milesDriven && Math.abs( this.mileage - objAuto.mileage ) < ) return true; } See text Examples 7.10 Auto.java and 7.11 AutoClient.java

25 Auto Class equals Method
Auto Class equals Method (method overriding of Object class’ equals method). When in the AutoClient class we compare two objects i.e. auto1 and auto2 of Auto class as in the statement if (auto1.equals(auto2)) this.modelName in the equals method refers to the value of instance variable modelName of auto1 object. The same applies to the other instance variables.

26 Class Scope Instance variables have class scope
Any constructor or method of a class can directly refer to instance variables. Methods also have class scope Any method or constructor of a class can call any other method of a class (without using an object reference).

27 Local Scope A method's parameters have local scope, meaning that:
a method can directly access its parameters. a method's parameters cannot be accessed by other methods. A method can define local variables which also have local scope, meaning that: a method can access its local variables. a method's local variables cannot be accessed by other methods.

28 Example of Class vs local scope
public class Person { String firstName; static int I d; int currentid; public Person() firstName="John"; id++; currentid=id; } public void method1() { int currentid; currentid = this.currentid*2; System.out.println("The local value of currentid is"+" "+currentid); System.out.println("The class scope of variable currentid is"+" "+this.currentid); currentid defined in method1() has local scope this.currentid refers to the currentid variable with global class scope as defined at the top of the class and outside any method.

29 Example of Class vs local scope
public class PersonClient { public static void main(String[] args) Person p1=new Person(); Person p2=new Person(); p1.method1(); p2.method1(); } What is the output ?

30 Example of Class vs Local scope
for object p The local value of currentid is 2 The class scope of variable currentid is 1 for object p The local value of currentid is 4 The class scope of variable currentid is 2

31 enum Types Used to define a set of constant objects.
Built into java.lang (no import statement needed) Syntax: enum EnumName { obj1, obj2,… objn }; Example: enum Days { Sun, Mon, Tue, Wed, Thurs, Fri, Sat }; A constant object is instantiated for each name in the list. Thus, each name is a reference to an object of type Days. enum is a keyword

32 enum Types Enumerated Types are classes with special properties.
They have a finite number of instances (as for example Days in previous slide).

33 Useful enum Methods Return value Method name and argument list int
compareTo( Enum eObj ) compares two enum objects and returns a negative number if this object is less than the argument, a positive number if this object is greater than the argument, and 0 if the two objects are equal. ordinal( ) returns the numeric value of the enum object. By default, the value of the first object in the list is 0, the value of the second object is 1, and so on. boolean equals( Object eObj ) returns true if this object is equal to the argument eObj; returns false otherwise String toString( ) returns the name of the enum constant

34 Example enum public class Persons { PersonType pt; String firstName;
enum PersonType { ADULT_MALE, CHILD_MALE, ADULT_FEMALE, CHILD_FEMALE }; public class Persons { PersonType pt; String firstName; static int id; int currentid; public Persons() firstName="John"; id++; currentid=id; } public void setPersonType(PersonType pertyp) this.pt=pertyp; public PersonType getPersonType() return pt;

35 Example enum public class PersonsClient { public static void main(String[] args) Persons p1=new Persons(); Persons p2=new Persons(); p1.setPersonType(PersonType.ADULT_FEMALE); p2.setPersonType(PersonType.CHILD_MALE); System.out.println("p1 is of person type:"+" "+p1.getPersonType()); System.out.println("p2 is of person type:"+" "+p2.getPersonType()); }

36 Example enum ---------- Output ----------
p1 is of person type: ADULT_FEMALE p2 is of person type: CHILD_MALE

37 Javadocs Automatic generation of documentation for your user defined classes in html format. It is another tool available in the jdk (see bin subfolder in the installation folder of the jdk). To generate documentation use the command javadoc and the nam eof your class followed by the .java extension: >javadoc Persons.java or >javadoc *.java (means all files in the folder that end with .java extansion).

38 Javadocs The tool reads all comments added (/** to */)
plus additional information that we add in the source code file (i.e. describe parameters using the i.e. @ param id denotes the id number of a person advancing for each new Person object instantiated.

39 Javadoc Example /** This class describes Persons */
public class Person { /** @param firstName provides the first name of a Person */ String firstName; static int id; int currentid; public Person() firstName="John"; id++; currentid=id; }

40 Output html File Package Class Tree Deprecated Index Help
PREV CLASS   NEXT CLASS FRAMES    NO FRAMES    All Classes All Classes SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD Class Person java.lang.Object Person public class Person extends java.lang.Object This class describes Persons Constructor Summary Person()  Method Summary  void method1() Methods inherited from class java.lang.Object clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait   Constructor Detail Person public Person() Method Detail method1 public void method1() Package   Class  Tree  Deprecated  Index  Help   PREV CLASS   NEXT CLASS FRAMES    NO FRAMES    All Classes All Classes SUMMARY: NESTED | FIELD | CONSTR | METHOD DETAIL: FIELD | CONSTR | METHOD


Download ppt "OBJECT ORIENTED PROGRAMMING II LECTURE 2_1 GEORGE KOUTSOGIANNAKIS"

Similar presentations


Ads by Google