Presentation is loading. Please wait.

Presentation is loading. Please wait.

Georgia Institute of Technology Workshop for CS-AP Teachers Chapter 3 Advanced Object-Oriented Concepts.

Similar presentations


Presentation on theme: "Georgia Institute of Technology Workshop for CS-AP Teachers Chapter 3 Advanced Object-Oriented Concepts."— Presentation transcript:

1 Georgia Institute of Technology Workshop for CS-AP Teachers Chapter 3 Advanced Object-Oriented Concepts

2 Georgia Institute of Technology Learning Goals Understand at a conceptual and practical level –Objects Object variables and methods –Classes Class variables and methods –Inheritance –Abstract Classes –Interfaces –Polymorphism

3 Georgia Institute of Technology Object-Oriented Principles Objects with data (fields) and operations (methods) –Usually classes too Inheritance –Hierarchy of types –Generalization / Specialization Polymorphism –Executing the right method based on the type of the object at run-time

4 Georgia Institute of Technology Advantages to Objects Data and related operations are combined –No passing data around –Data is protected Objects are responsible –If code needs to be fixed you can figure out what class needs to be changed –Methods can change as long as they still do the job Easier to maintain and extend –Objects don’t change as often as procedures –The program is a simulation of the domain Classes can be reused

5 Georgia Institute of Technology Class Definition Exercise Write the definition for a class Student. –We need to know about the student’s name (first and last), store the name of a file with his or her picture in it, and keep the grades for this student. We want to be able to add grades and compute the grade point average. Remember to define methods to get and set all fields Write the main method to create a Student

6 Georgia Institute of Technology Steps in a Class Definition Underline the nouns and verbs –Nouns may be attributes Sometimes other classes –Verbs may be methods Do a simple UML class –Class name, attributes (fields), methods –Specify the types of the attributes –Specify the return type and parameter types Code the class

7 Georgia Institute of Technology Class Definition A class definition in Java defines –Object Fields (Variables) Fields that all objects of the class will have –Class Fields (Variables) Fields that will only be on the class definition class –Constructors Used to initialize object fields –Object Methods Methods that have the current object passed implicitly (this) –Class Methods Methods that operate on class variables

8 Georgia Institute of Technology Adding a Student Id What if we want to add an id as an object field? –Each object should have a unique id –One way to assign a unique id is to have a counter that counts how many students we have Increment the current count each time a new student is created Use the current count as the id

9 Georgia Institute of Technology Adding Id Exercise Modify the Student class to add a unique id for each student –Add the field id –Add the field numStudents that starts out as 0 Each time a new student is created –Increment numStudents –Set the id to the numStudents –Modify the toString method to add the id –Create several students in the main method

10 Georgia Institute of Technology What went wrong? id and numStudents are object fields –A separate copy is in each object –So all objects have a count of 0 But we want there to only be only one copy of the number of students –That all Student objects have access to Sally :StudentJaKita :StudentThomas :Student numStudents

11 Georgia Institute of Technology Class Fields (Variables) Each object has a link to an object that describes the class –An object of the class “java.lang.Class” So if we create a class field –All objects will have access to the one field Create class fields –Using the keyword static Sally:Student Id firstName lastName pictureFile grades Student: Class numStudents addGrade(grade) getGradePointAverage() …

12 Georgia Institute of Technology An Object “knows” what Class it is You can check that an object is of a class instanceof ClassName You can get the Class object from an object getClass() The Class objects holds information from the class definition Sally:Student firstName lastName pictureFile grades Student: Class numStudents addGrade(grade) getGradePointAverage() …

13 Georgia Institute of Technology Class Exercise Loop up the class java.lang.Class –How do you get the parent class of a class? –How do you get the methods of a class? –How do you get the fields of a class? –How do you tell if it is an interface? Try the following in DrJava –Class stringClass = “Test”.getClass(); –System.out.println(stringClass); –System.out.println(stringClass.newInstance());

14 Georgia Institute of Technology Class Variable Exercise Make numStudents a class variable by adding the keyword static Now run the main method and check that the ids are unique and incrementing Create another student in the main and run it again –What id does the first student start with?

15 Georgia Institute of Technology Object Methods versus Class Methods Object methods are implicitly passed the current object –And work on the data in that object Class methods only have access to class fields –They are not passed an object of the class They can not work on object data –They are useful when you don’t have a current object –They are useful for working with class fields

16 Georgia Institute of Technology Class Method Exercise When should you use a class method and when an object method? –To read a file and create student objects from the information in the file –To get the grade point average for a student –To get the number of student objects created –To print the information in a student object

17 Georgia Institute of Technology Inheritance Did you get features or abilities from your parents? –People inherit physical characteristics –Some people inherit abilities: music Inheritance in OO means receiving data and methods from your parent –In Java you can only have one parent

18 Georgia Institute of Technology Inheritance in our Models One class can inherit from another –Gets all the fields and methods The class you inherit from is called –Parent, superclass, base class The class doing the inheriting is called –Child, subclass, derived class Person Student Parent Child

19 Georgia Institute of Technology Inheritance Exercise Open the Picture class (Picture.java) –See if you can find the show method Notice that the Picture class extends (inherits) from SimplePicture –See if you can find the show method in SimplePicture Since Picture inherits from SimplePicture you can ask a Picture object to show itself

20 Georgia Institute of Technology How Inheritance Works When an object gets a message it checks to see if it has a corresponding method –If it does it executes that method –If it doesn’t it checks the parent class And keeps looking at parents until the method is found or it reaches Object The Java compiler makes sure that a method is available –based on the declared type of the object

21 Georgia Institute of Technology Teaching Inheritance Point out inheritance in common objects –What is a book? –What is a dictionary? Talk about the things that are the same Talk about the things that are different

22 Georgia Institute of Technology The Object Class If you don’t specify a parent for a class using “extends” it will inherit from Object –public class Name { All objects in Java inherit from Object –Directly or indirectly Object is in the package java.lang All objects inherit –toString() and equals() but you will usually override these

23 Georgia Institute of Technology Inheritance Exercise Look up Object in the api –http://java.sun.com/j2se/1.4.2/docs/api/http://java.sun.com/j2se/1.4.2/docs/api/ –In package java.lang –What other public methods are in Object? Look up String in the api –In package java.lang –What class does it inherit from? Look up JButton in the api –In package javax.swing –What are all the classes it inherits from?

24 Georgia Institute of Technology Private Visibility and Inheritance When a class inherits from another class it gets all the fields and methods But, it can’t directly access fields or methods that are private –Use public methods to ask for changes to private fields –Call public methods that call private methods This is to allow an object to protect its data and keep private methods private

25 Georgia Institute of Technology Protected and Inheritance Some books use protected visibility with inheritance for fields –To give children objects direct access to fields This is a bad idea –Protected gives access to subclasses –Protected also gives access to all classes in the same package You can’t guarantee the data isn’t messed up by objects of other classes if you use protected fields!

26 Georgia Institute of Technology When to Use Inheritance Use inheritance when one class is really a sub-type of another You must be able to substitute an object of the child class for an object of the parent class and still have it make sense Don’t use it just to have access to some fields and methods of the parent class –Use an association (has a) link instead

27 Georgia Institute of Technology Correct Use of Inheritance Students and Teachers are people –You could use a student or teacher when you need a person A course period is not a course –You wouldn’t include a course period in a list of available courses –Instead a course period would have a course associated with it Have a field that is a Course object

28 Georgia Institute of Technology Substitution Is a dictionary a book? –If you need a book will a dictionary work? You can use a child object when a variable refers to a parent object –SimplePicture p = new Picture(fileName); You can’t substitute a parent for a child –Picture p = new SimplePicture(fileName)

29 Georgia Institute of Technology Generalization Generalization means that classes have things in common If they are several classes that all have the same or similar fields and methods –pull out the common items and put them in a parent class

30 Georgia Institute of Technology Generalization - Exercise Pull out common fields and methods in Student and Teacher and put them in a new class Person –Modify constructors as needed Have student and teacher inherit from Person Run the main methods in Student and Teacher after the changes –To make sure they still work

31 Georgia Institute of Technology Specialization A class differs from the parent class in some way –It add fields –It adds methods –It does something different when given the same message as the parent Person firstName lastName pictureFile Student id nickname grades numGrades numStudents getGradePointAverage()

32 Georgia Institute of Technology Overriding Methods One way a child class can specialize is to handle the same message in a different way than the parent If you inherit parent methods how can you do this? The child can redefine a method with the same name and parameters as the parent method –The new method is called instead of the parent method –This is called overriding

33 Georgia Institute of Technology How Does Overriding Work? When a message is sent to an object The object checks with its class to see if the corresponding method exists in the class If it doesn’t exist in the class then it checks in the parent class It keeps looking up the inheritance tree till it finds a corresponding method

34 Georgia Institute of Technology Using Super What if the method in the child class wants to call the method in the parent class? –I want to do the same operation as my parent but also add something to it –But my method overrides the parent method Use the keyword super to invoke an overridden parent method –super.method() –It starts looking for a corresponding method in the parent class

35 Georgia Institute of Technology Overriding equals and hashCode All classes inherit from Object the method –public boolean equals(Object o) –the default result is true if they are the same object else false You will often want to override this method –And check if some field or fields are equal If you override equals you must also override hashCode –public int hashCode()

36 Georgia Institute of Technology What is a hash code? An integer used to index into –hashing based collection classes such as Hashtable, HashMap, HashSet What should you return as a hash code? –Best if each object has a unique hash code –Okay if most objects have a unique hash code But some have duplicates –Bad if most objects result in duplicate hash codes

37 Georgia Institute of Technology What is a Hashing Collection? Map of key to value –You put a value (object) into a collection for a key (object) –You can get back the value for that key Similar to a safety deposit box The hashCode() method is used on the key to find the memory location holding the value –The address of it

38 Georgia Institute of Technology Overriding Exercise Edit Student.java to override equals() –public booelan equals(Object object) Return true if the passed object isn’t null and is of the class Student –And the id of the current object and passed student object are equal Override hashCode() –You can return the id since each object will have a unique id Test equals in the main method

39 Georgia Institute of Technology Advantages to Inheritance Handles commonality –Common attributes and operations are factored out and put as high as possible in a hierarchy –Not copied to several locations Handles differences –Children can inherit the parts that are common from the parent –They can add attributes and operations to handle how they differ from the parent –They can override operations (methods) to do something different from the parent

40 Georgia Institute of Technology Constants The final keyword means that the item will not change. By using the final keyword along with public and static you can create class fields that are constant. –public static final int MALE = 0; These can be accessed by using the Class name.attribute name. –this.gender = Person.MALE;

41 Georgia Institute of Technology Constant Exercise Add constants for unknown, male, and female gender to Person.java –public static final int UNKNOWN = 0; –public static final int FEMALE = 1; –public static final int MALE = 2; Add a gender field to Person.java –private int gender = UNKNOWN; // default Add get and set gender methods Add gender to the result of toString()

42 Georgia Institute of Technology Abstract Classes Abstract classes are classes that can’t be instantiated. Abstract classes can only be subclassed. Create an abstract class by using the keyword abstract in the class declaration. –public abstract class Food HamburgerCoke Food price calories

43 Georgia Institute of Technology Why use an Abstract Class? Represents an abstract idea (like Shape) Holds methods common to several related classes Holds attributes common to several related classes Enforce naming convention by abstract methods that must be overridden by children Allows for general algorithms based on abstract methods with customization by children

44 Georgia Institute of Technology Interfaces Interfaces are a description of behavior. –They are a special kind of abstract class that has only abstract methods and constants. public interface ShapeInterface { public void setShape(int shape); public void setShapeColor(Color shapeColor); } –You don’t have to declare the methods as abstract They automatically are

45 Georgia Institute of Technology Classes Implement Interfaces Classes that implement interfaces must provide the implementations for the methods specified in the interface. public class ShapeCanvas implements ShapeInterface { public void setShape(int shape) { code to handle set shape } public void setShapeColor(Color shapeColor) { code to handle set shape color } }

46 Georgia Institute of Technology Why use an Interface? Separates what from who –I don’t care who you are I just need a way to talk to you –Choose from several implementers A class can implement many interfaces but inherit from only one class –like multiple inheritance but easier to use –thinner than inheritance

47 Georgia Institute of Technology Interfaces Versus Inheritance When a class inherits from a parent class it inherits all the attributes and methods. –With inheritance it inherits the structure and behavior of the parent class. –With an interface it inherits only the method names and parameter lists. A class can inherit from only one parent class –public class Person extends Object A class can implement more than one interface. –public class ShapeCanvas implements Interface1,Interface2,…

48 Georgia Institute of Technology Compare Interface How would you compare any two objects? –And decide if one is less than, equal too, or greater than the other It would depend on the Class of the objects being compared –For String objects compare the letters in the string Implement the Comparable interface –public int compareTo(Object object)

49 Georgia Institute of Technology Comparable Exercise How would you compare two Person objects? –Implement the Comparable interface public int compareTo(Object object) –Compare the last names first If they are equal compare the first names –The String class implements Comparable so you can use the results of comparing the last name and first name

50 Georgia Institute of Technology Collections - java.util Used to hold objects –Use wrapper classes to hold primitive values int numItems = 3; Integer numItemsInt = new Integer(numItems); Three basic types –List - ordered list of objects Can have duplicate objects –Set - group of objects without an order No duplicate objects allowed –Map - map of keys to objects

51 Georgia Institute of Technology List and Set Interfaces and Classes > Collection > List > Set > SortedSet ArrayList Vector LinkedList TreeSet HashSet

52 Georgia Institute of Technology Collection Methods Add an object to a collection boolean add(Object object); // optional Remove an object from a collection boolean remove(Object object); //optional See if the collection has the object in it boolean contains(Object object); Add all objects in another collection boolean addAll(Collection collection); // optional Get the intersection of two collections boolean retainAll(Collection collection); // optional Empty a collection Void clear();

53 Georgia Institute of Technology Use Interface Name as Type Declare the type of the collection variable to be one of the main interface types –List –Set SortedSet –Map SortedMap This allows you to change the implementation without changing much code Map addressMap = new HashMap(); Map addressMap = new Hashtable();

54 Georgia Institute of Technology Polymorphism Literally: many forms In Object-Oriented development it means that what happens when a message is sent to an object depends on the type (class) of the object at runtime

55 Georgia Institute of Technology How Does Polymorphism Work? If a class is declared to be final –then the compiler can figure out the location of a method that matches the message If a class can be subclassed –then a variable declared to be of the parent type can point to an object of the parent class or any subclass at run-time –the compiler can’t determine the method to invoke –the method to invoke is figured out at run-time

56 Georgia Institute of Technology Shape Panel Exercise Execute the main method of ShapePanel Click the Rectangle button and then click and drag to position the rectangle Click the Oval button and click and drag to position the oval

57 Georgia Institute of Technology Class Diagram for ShapePanel Shape draw() Oval draw() Rectangle draw() ShapeCanvas paint() ShapePanel ButtonPanel 1 1 * ShapeInterface 1 1 1

58 Georgia Institute of Technology Interface Exercise –Add a method to the ShapeInterface public void clearShapes(); –Modify the ShapeCanvas class to implement the method and clear the vector of shapes and then call repaint(); –Modify the ButtonPanel class to add the clear button and have it call clearShapes() when pressed.

59 Georgia Institute of Technology Polymorphism - Many Forms Polymorphism is overloading that is resolved at execution time, and is also called dynamic or run-time binding. Say you have an array of Shapes that actually holds objects that are subclasses of shape. –When you ask a shape to draw itself what gets drawn depends on the run-time type. Shape draw() Oval draw() Rectangle draw()

60 Georgia Institute of Technology Add Abstract Class Subclass Exercise –Create a new class Line which is a subclass of Shape. –Add a constant for Line to the Shape class. –Add a Line Button to the Button Panel and when the line button is clicked on notify the handler to set the shape to line.

61 Georgia Institute of Technology Advantages to Polymorphism Used to create general algorithms that work on objects of different types –Collections that hold Objects List, Set, Stack, Queue, Map Makes it easy to add new types –Just create the new class and implement the required operations –Don’t change existing code

62 Georgia Institute of Technology Summary Class fields are on an object of the class Class –Not on objects of the class Class methods can only work on class fields –Not object fields Objects inherit fields and methods from a parent class –But need to use public methods to access private inherited fields Polymorphism allows you to write general methods based on a common parent or interface


Download ppt "Georgia Institute of Technology Workshop for CS-AP Teachers Chapter 3 Advanced Object-Oriented Concepts."

Similar presentations


Ads by Google