Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdPetrus ter Laatst gewijzigd meer dan 10 jaar geleden
1
Algoritmiek Class Hierarchies, Inheritance. Hoorcollege 12 - Ma. 20 nov. 2006 L.M. Bosveld-de Smet
2
Kerneigenschappen van O-O design Abstraction: abstractie Encapsulation: inkapseling Inheritance: overerving Polymorphism: veelvormigheid Interface
3
Hergebruik van code Packages: bibliotheken van klassen Geleverd bij programmeertaal Geleverd door programmeurs Hergebruik van bestaande klassen in nieuwe klassen
4
Hierarchische structuur vervoer wegvervoer personenvervoer goederenvervoer vierwielerstweewielers autobusambulancefietsscootermotor vrachtwagentractorcontainerwagen
5
Hierarchie van personen
6
Hierarchie van klassen in Java superclass subclasses Class data fields & methods
7
“is een” versus “heeft (een)” verband Auto Is een vierwieler Is een vervoersmiddel voor personen Is een vervoersmiddel voor de weg Heeft een motor Heeft een ruitenwisser Heeft wielen
8
Java’s implementatie public class Car extends MotorVehicle { Wheels[] w = new Wheels[4]; … }
9
Inheritance: overerving vadermoeder jij
10
Class hierarchie en Inheritance shape ellipse circle rectangle polygon square triangle
11
Inheritance Tree superclass/ancestor Subclasses/descendants parent children
12
Terminologie Inheritance, derivation, extension Single inheritance Multiple inheritance Superclass: base class Subclass: derived class Parent/Child class Ancestor/Descendant class
13
Inheritance: impliciete overdracht van data fields en methods van superclass naar subclass
14
Nut van class hierarchie (1)
15
Nut van class hierarchie (2)
16
Hierarchie van Employee classes NewEmployee Object HourlyEmployeeSalaryEmployee
17
Data fields and Methods name, socSecNum, jobTitle, address, phoneNumber, age, startYear, totalPay setName(), setSocial(), setJob, setAddress(), setPHone(), setAge(), setStartYear(), setTotalPay(), getName(), getSocial(), getJob, getAddress(), getPhone(), getAge(), getStartYear(), getTotalPay(), calcYearsService(), calcYearsToRetire(), equals(), updateTotalPay(), toString() NewEmployee (Subclass of Object) name, etc. annualSalary setName(), etc. setSalary(), getSalary(), calcWeeklyPay(), toString() name, etc. hours, rate setName(), etc. setHours(), setRate(), getHours(), getRate(), calcWeeklyPay(), toString() HourlyEmployee (Subclass of NewEmployee) SalaryEmployee(Subclass of NewEmployee)
18
Sample run class TestEmployeeClasses
19
Operaties in een class hierarchie “Method Overloading” “Method Overriding” Zichtbaarheid van afgeschermde data fields Protected data fields Prefix this Prefix super Assignments in een class hierarchie “Casting” in een class hierarchie Objecten als argumenten doorgeven instanceof operator
20
Assignments in een class hierarchie: Object en NewEmployee objecten Object obj; NewEmployee anEmp = new NewEmployee(“Sam”, “1111”) Sam 1111 ……………… null anEmp obj
21
Assignment in een class hierarchie: HourlyEmployee object HourlyEmployee hourEmp = new HourlyEmployee(“Sally”, “2222”) Sally 2222 ……………… hourEmp hours rate
22
Assignment in een class hierarchie: SalaryEmployee object SalaryEmployee salEmp = new SalaryEmployee(“Tony”, “2345”) Tony 2345 ……………… salEmp annualSalary
23
Assignments in een class hierarchie: superclass type en subclass type Sam 1111 ……………… null anEmp obj Object type NewEmployee type
24
Assignment in een class hierarchie: toekenning van NewEmployee type aan Object type obj = anEmp; System.out.println (obj.toString()); name:Sam, social security:1111, job:, address:, phone:, age:0, year started:0, total pay:$0.0 Sam 1111 ……………… anEmp obj
25
Assignment in een class hierarchie: toekenning van HourlyEmployee type aan type anEmp = hourEmp; System.out.println (anEmp.toString()); name:Sam, social security:1111, job:, address:, phone:, age:0, year started:0, total pay:$0.0, weekly hours:0.0, hourly rate: $0.0 Sally 2222 ……………… hourEmp hours rate anEmp
26
Assignments in een class hierarchie: Toekenning van type aan hoger type is toegstaan: assignment “up the tree”: YES Toekenning van type aan lager type is niet toegestaan: assignment “down the tree”: NO hourEmp = anEmp;//incompatible types salEmp = anEmp;//incompatible types Sam 1111 ……………… anEmp hourEmp salEmp NO
27
“Casting down” in een class hierarchy hourEmp = anEmp; //incompatible types hourEmp = (HourlyEmployee) anEmp; “Assignment down the tree” is toegestaan, als het toe te kennen object gecast wordt naar het goede type en naar het overeenkomstige type verwijst Sally 2222 ……………… hourEmp hours rate anEmp
28
Objecten aan argumenten doorgeven // postcondition: returns true if this object // has the same security number as the argument. public boolean equals (NewEmployee emp) { return this.socSecNum.equals(emp.socSecNum); } if (clerk.equals (supervisor)) System.out.println (clerk.getName() + " and " + supervisor.getName() + " are same eployee."); else System.out.println (clerk.getName() + " and " + supervisor.getName() + " are different employees.");
29
instanceof operator public boolean equals (Object emp) { if (emp instanceof NewEmployee) { NewEmployee temEmp = (NewEmployee) emp; return this.socSecNum.equals (temEmp.socSecNum); } else { return false; }
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.