1 / 27

Workshop for CS-AP Teachers

Workshop for CS-AP Teachers. Chapter 3 Advanced Object-Oriented Concepts. Learning Goals. Understand at a conceptual and practical level Objects Inheritance Polymorphism. Object-Oriented Principles. Objects with data (fields) and operations (methods) Usually classes too Inheritance

rholifield
Télécharger la présentation

Workshop for CS-AP Teachers

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Learning Goals • Understand at a conceptual and practical level • Objects • Inheritance • Polymorphism Georgia Institute of Technology

  3. 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 Georgia Institute of Technology

  4. 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 Georgia Institute of Technology

  5. 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 Georgia Institute of Technology

  6. 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 Parent Student Child Georgia Institute of Technology

  7. 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 Georgia Institute of Technology

  8. 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 until the method is found • The Java compiler makes sure that a method is available • based on the declared type of the object Georgia Institute of Technology

  9. 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 Georgia Institute of Technology

  10. 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 usually will override these Georgia Institute of Technology

  11. Inheritance Exercise • Look up Object in the 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? Georgia Institute of Technology

  12. 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 Georgia Institute of Technology

  13. 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! Georgia Institute of Technology

  14. 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 Georgia Institute of Technology

  15. 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 Georgia Institute of Technology

  16. 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) Georgia Institute of Technology

  17. 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 Georgia Institute of Technology

  18. Generalization - Exercise • Pull out common fields and methods in Student and Teacher and put them in a new class Person • Have student and teacher inherit from Person • Run the main methods in Student and Teacher Georgia Institute of Technology

  19. 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 Georgia Institute of Technology

  20. 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 Georgia Institute of Technology

  21. 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 Georgia Institute of Technology

  22. 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 Georgia Institute of Technology

  23. 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 • It starts looking for a corresponding method in the parent class Georgia Institute of Technology

  24. Overriding Exercise • Override the method toString in Student to print the name and grade point average • You can use super.toString to print the person information Georgia Institute of Technology

  25. 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 Georgia Institute of Technology

  26. 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 Georgia Institute of Technology

  27. 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 Georgia Institute of Technology

More Related