Kurt Nørmark ©
Institut for Datalogi
Aalborg Universitet
Sammendrag Stikord Referencer Indhold | Ekstra materiale til det tredie seminar i OOI (Ideer i Objekt-orienteret analyse, design og programmering) i forhold til kurset i objekt-orienteret programmering på det første år af datalogiuddannelsen. |
INTRODUKTION TIL IDEER I OBJEKT-ORIENTERET PROGRAMMERING |
OOA, OOD og OOP Slide Note Indhold Stikord Referencer |
|
|
OOP Historie Slide Note Indhold Stikord Referencer | Her giver vi kort vores bud på OO programmeringssproglige milepæle, samt omtrentlige årstal. |
|
Litteratur i denne kursusdel Slide Note Indhold Stikord Referencer | Vi giver her en kort oversigt over litteratur og materiale til 'Ideer i OOP' som hold på grundlagssemestret, åben uddannelse i datalogi |
|
|
OOP Fjernundervisning Slide Note Indhold Stikord Referencer |
|
OBJEKT-ORIENTERET PROGRAMMERING I JAVA |
Synopsis Slide Note Indhold Stikord Referencer | Et sammendrag af de væsentligste ideer i objekt-orienteret programmering |
|
Synopsis Slide Note Indhold Stikord Referencer | En synopsis om Java |
|
Synopsis Slide Note Indhold Stikord Referencer | Et sammendrag af de vigtigste observationer om nedarvning |
|
Synopsis Slide Note Indhold Stikord Referencer | Et sammendrag af de vigtigste forhold omkring polymorfi og dynamisk binding |
|
Polymorfi reglerne siger, som bekendt, at en instans af en specialiseret type T kan assignes til en variabel af en mere generel type S. (T er altså en subtype/subklasse af S). Dette er typesikkert idet et T objekt har alle S's egenskaber, og måske flere |
TEMA 1: BASAL OBJEKT-ORIENTERET PROGRAMMERING |
TEMA 2: OBJEKT-ORIENTERET PROGRAMMERING I JAVA |
TEMA 3: SPECIALISERING, UDVIDELSE OG NEDARVNING |
TEMA 4: POLYMORFI OG DYNAMISK BINDING |
Nedlæggelse af objekter i Java Slide Note Indhold Stikord Referencer | Man skulle måske tro, at objektnedlæggelse er af mindre betydning end objektoprettelse. Men dette er ikke tilfældet. Det er ofte meget vigtigt at skaffe sig af med unyttige objekter, idet vi ellers på et eller andet tidspunkt løber tør for lager (uanset hvor mange Mbyte vi end har). Det er endvidere helt afgørende for et program, at objekter ikke nedlægges for tidligt. |
|
I forbindelse med eksplicit sletning af et objekt er faren, at vi sletter objektet 'for tidligt'. Hvis vi efter sletningen forsøger at tilgå objektet via en reference til det, opstår der en 'grim' fejl (køretidsfejl) Implicit og automatisk sletning af objekter kaldes ofte for garbage collection. Når et programmeringssprog understøtter garbage collection fritages programmøren for en væsentlig byrde, idet han eller hun ikke skal bekymre sig om, hvornår 'der skal siges farvel' til objekterne |
|
Objekter og referencer Slide Note Indhold Stikord Referencer | Ethvert objekt i Java tilgås via en reference. Vi vil her se nærmere på objekter i forhold til referencer, og vi vil også diskutere 'objekt navne' og 'objekt variable' |
|
Figur. To objekter: en bankkonto og en streng. Bankkontoen refereres af to forskellige variable. Streng objektet refereres ikke fra en variabel, men fra bankkontoen | ![]() |
Konstruktorer i Java Slide Note Indhold Stikord Referencer | Initialisering af et nyskabt Java objekt sker gennem en såkaldt konstruktor |
Begrebet konstruktor: En konstruktor er en procedure som har til opgave at initialisere instansvariablene af et nyskabt objekt |
|
|
|
Organisering af klasser i pakker i Java Slide Note Indhold Stikord Referencer | Hvis man har mange klasser er det en praktisk nødvendighed at kunne gruppere disse på en hierarkisk måde. Det er netop det man kan med Java's pakkebegreb. |
Begrebet pakke: En pakke i Java er en mængde af logisk sammenhørende klasser | Pakkebegrebet tillader os at gruppere klasserne i logisk sammenhørende delmængder |
|
|
|
Problemstillinger Slide Note Indhold Stikord Referencer | Vi starter med at se på de overordnede problemstillinger omkring polymorfi og dynamisk binding |
|
Polymorfi, dynamisk binding og interfaces Slide Note Indhold Stikord Referencer | Vi vil her studere vekselvirkningen mellem polymorfi, dynamisk binding og anvendelsen af interfaces |
|
Program: Klassen Bygning. |
|
Program: Klassen Køretøj. |
|
Program: Interfacet SkatteMål. |
|
Program: Klassen SkatteBygning. |
|
Program: Klassen SkatteKøretøj. |
|
Program: En flexibel applikation. |
|
Program: Alt i ét. |
|
Specialisering Slide Note Indhold Stikord Referencer | Specialisering er en form for abstraktion hvormed vi danner et nyt begreb fra et eksisterende begreb. Vi vil nu gå over til også at tale om specialisering af klasser. Specialisering benyttes i en objekt-orienteret modelleringsproces |
|
Begrebet specialisering: En specialisering af en klasse A betegner en ny klasse B hvor
| Når vi specialiserer en klasse A danner vi en ny klasse som vi her vil kalde B. Mængden af B-objekter er en delmængde af A-objekterne. Ligeledes gælder at de operationer, som virker på objekter af typen A, også virker på objekter af typen B. Klassen B kan indeholde nye redefinerede operationer af A operationerne. Endvidere er det muligt og typisk, at klassen B definerer helt nye operationer i forhold til klassen A. De nye operationer i B relaterer sig til de specielle egenskaber, som B delmængden af A besidder. |
|
Udvidelse Slide Note Indhold Stikord Referencer | Udvidelse af en klasse A med nye egenskaber er centralt fra et genbrugsperspektiv. Vi ønsker at holde klassen A intakt. I en ny klasse B ønsker vi at have alle egenskaber i A plus et antal nye egenskaber, som kun eksisterer i B. |
|
Begrebet udvidelse: En udvidelse af en klasse A betegner en ny klasse B som
| Når vi udvider en klasse A tilføjer vi nye instansvariable og metoder. Lad os kalde den nye udvidede klasse B. B har således alle A's egenskaber plus de nye 'udvidede egenskaber'. |
Samlede referencer Indhold Stikord |
|
Kildefiler i denne lektion Indhold Stikord Referencer | /user/normark/courses/prog1/prog1-01/sources/java/noteEksempler/nedarvning/Flex.java |
Objekt-orienteret programmering: Ekstra materiale
Kurset's hjemmeside Forfatteren's hjemmeside Om frembringelsen af disse sider Forrige lektion (top) Næste lektion (top) Forrige lektion (bund) Næste lektion (bund)
Genereret: 7. Oktober 2002, 10:32:15