Presentation is loading. Please wait.

Presentation is loading. Please wait.

ITEC324 Principle of CS III

Similar presentations


Presentation on theme: "ITEC324 Principle of CS III"— Presentation transcript:

1 ITEC324 Principle of CS III
Chapter 6 (Horstmann’s Book) Inheritance :Adapter Class, Abstract Class Hwajung Lee

2 Inheritance Hierarchies Modeling Specialization and Generalization
Real world: Hierarchies describe general/specific relationships General concept at root of tree More specific concepts are children Programming: Inheritance hierarchy General superclass at root of tree More specific subclasses are children When designing systems, look for instances of generalization and specialization

3 Example Hierarchy of Employee Classes

4 The Substitution Principle (1)
Formulated by Barbara Liskov You can use a subclass object whenever a superclass object is expected example: Employee e; e = new Manager(“Barnie Smith”); ... System.out.println("salary=" + e.getSalary()); Can set e to Manager reference Polymorphism: Correct getSalary method is invoked

5 The Substitution Principle (2)
In Java, the type rules always allow a subclass object to be used when a superclass object is expected. However, the question is whether the subclass object can replace the superclass one, conceptually! Don't use inheritance if substitution principle is violated

6 Invoking Superclass Constructors
Use super keyword in subclass constructor: public Manager(String aName) {    super(aName); // calls superclass constructor    bonus = 0; } Call to super must be first statement in subclass constructor If a subclass constructor does not call a superclass constructor, then the superclass constructor with no parameters is called automatically.

7 Hierarchy of Swing Components (1)
Base of hierarchy: Component Most important subclass: Container

8 Hierarchy of Swing Components (2)

9 Graphic Programming with Inheritance
Chapter 4: Create drawings by implementing Icon interface type Now: Form subclass of JComponent public class MyComponent extends JComponent {    public void paintComponent(Graphics g)    {       drawing instructions go here    }    ... } Advantage: Inherit behavior from JComponent Example: Can attach mouse listener to JComponent

10 Graphic Programming with Inheritance Overriding paintComponent (1)
Draw a car: public class CarComponent extends JComponent {    public void paintComponent(Graphics g)    {       Graphics2D g2 = (Graphics2D)g;       car.draw(g2);    }    private CarShape car; }

11 Mouse Listeners To Complete the car drawing program (1)
Attach mouse listener to component Can listen to mouse events (clicks) or mouse motion events public interface MouseListener { void mouseClicked(MouseEvent event); void mousePressed(MouseEvent event); void mouseReleased(MouseEvent event); void mouseEntered(MouseEvent event); void mouseExited(MouseEvent event); }

12 Mouse Listeners To Complete the car drawing program (2)
public interface MouseMotionListener { void mouseMoved(MouseEvent event); void mouseDragged(MouseEvent event); }

13 Mouse Adapter To Complete the car drawing program (3)
What if you just want to listen to mousePressed? Listener interface types with many methods have corresponding adapter classes with do-nothing methods. Extend the adapter rather than implementing the listener.

14 Mouse Adapter To Complete the car drawing program (4)
public class MouseAdapter implements MouseListener { public void mouseClicked(MouseEvent event) {} public void mousePressed(MouseEvent event) {} public void mouseReleased(MouseEvent event) {} public void mouseEntered(MouseEvent event) {} public void mouseExited(MouseEvent event) {} }

15 Mouse Adapter To Complete the car drawing program (5)
Extend MouseAdapter Component constructor adds listener: addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent event) { mouse action goes here } });

16 Car Drawing Program ch6/car/CarShape.java ch6/car/CarComponent.java
ch6/car/CarMover.java

17 Abstract Classes (1) An abstract method is undefined and must be defined in a subclass. A class with one or more abstract class methods must be declared as an abstract class. public abstract class SelectableShape implements SceneShape { … }

18 Abstract Classes (2) You can not construct an object of an abstract class. SelectableShape shape = new SelectableShape(); //Error SelectableShape shape = new HouseShape(); //OK

19 Abstract Classes (3) SceneShape.java SelectableShape.java
HouseShape.java CarShape.java ScenePanel.java SceneEditor.java


Download ppt "ITEC324 Principle of CS III"

Similar presentations


Ads by Google