Skillnad mellan versioner av "Kap 1 Objektorienterad programmering (forts. 2)"
Taifun (Diskussion | bidrag) m |
Taifun (Diskussion | bidrag) m |
||
(3 mellanliggande versioner av samma användare visas inte) | |||
Rad 1: | Rad 1: | ||
− | + | __NOTOC__ | |
{| border="0" cellspacing="0" cellpadding="0" height="30" width="100%" | {| border="0" cellspacing="0" cellpadding="0" height="30" width="100%" | ||
| style="border-bottom:1px solid #797979" width="5px" | | | style="border-bottom:1px solid #797979" width="5px" | | ||
Rad 89: | Rad 89: | ||
=== <b><span style="color:#931136">Klassen Date</span></b> === | === <b><span style="color:#931136">Klassen Date</span></b> === | ||
<big> | <big> | ||
− | Både superklassen <b>Person</b> och subklassen <b>Employee</b> (nedan) behöver [[Kap_1_Objektorienterad_programmering_(forts._2)#Klassen_Date|<b><span style="color:#931136">klassen Date</span></b>]], | + | Både superklassen <b>Person</b> och subklassen <b>Employee</b> (nedan) behöver [[Kap_1_Objektorienterad_programmering_(forts._2)#Klassen_Date|<b><span style="color:#931136">klassen Date</span></b>]], för att |
− | + | deklarera datamedlemmar av typ <b>Date</b>. Det är samma klass som användes vid komposition. | |
Därför måste klassen <b>Date</b> inkluderas i detta projekt. | Därför måste klassen <b>Date</b> inkluderas i detta projekt. | ||
Rad 113: | Rad 113: | ||
=== <b><span style="color:#931136">Körexempel</span></b> === | === <b><span style="color:#931136">Körexempel</span></b> === | ||
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: InheritanceKorexa.jpg]]</div> | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: InheritanceKorexa.jpg]]</div> | ||
+ | </div> | ||
+ | |||
+ | |||
+ | = <b><span style="color:#931136">1.9 Polymorfism</span></b> = | ||
+ | <div class="ovnE"> | ||
+ | ==== <b><span style="color:#931136">Ex.: Två olika typer av konto i en bank:</span></b> ==== | ||
+ | |||
+ | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Polymorfism.jpg]]</div> | ||
+ | </div> | ||
+ | |||
+ | |||
+ | = <b><span style="color:#931136">Super- eller basklassen Account</span></b> = | ||
+ | <div class="ovnC"> | ||
+ | [[Image: AccountPolym.jpg]] | ||
+ | </div> | ||
+ | |||
+ | |||
+ | = <b><span style="color:#931136">Subklassen MinimalAccount</span></b> = | ||
+ | <div class="ovnC"> | ||
+ | [[Image: MinimalAccount.jpg]] | ||
+ | </div> | ||
+ | |||
+ | |||
+ | = <b><span style="color:#931136">Programmet PolymorphTest</span></b> = | ||
+ | <div class="ovnA"> | ||
+ | [[Image: PolymorphTest.jpg]] | ||
+ | </div> | ||
+ | |||
+ | |||
+ | = <b><span style="color:#931136">Körexempel</span></b> = | ||
+ | <div class="ovnA"> | ||
+ | [[Image: PolymorphKorex.jpg]] | ||
</div> | </div> | ||
Nuvarande version från 24 november 2022 kl. 23.48
<< Agenda | Innehåll & struktur | Genomgång | Dagens övningar | Nästa lektion >> |
1.6 Referensvariabler
1.7 Komposition
En bil har en motor. Båda är tekniskt komplexa objekt, byggda av experter.
Man sätter ihop bilen som ett objekt av klassen Bil genom att bygga in i den
en motor som i sin tur är ett objekt av en annan klass, klassen Motor.
Komposition är sammansättning av ett objekt med ett annat objekt (komponent).
För att kunna sammansätta objekt måste man först sammansätta klasser.
Komposition betyder sammansättning och är relaterad till modularisering.
Med hjälp av Lego-principen bygger man program med hjälp av redan skrivna
klasser som kan ingå som komponenter i andra klasser. Vi har:
- Komposition av klasser
- Komposition av objekt
Klassen Date
Komposition av klasser
Komposition av objekt
1.8 Arv
Arvrelationens modell
Superklassen kallas även för basklassen. T.ex. kallas basklassens konstruktor för base().
Problem:
Subklassen ärver basklassens datamedlemmar och metoder. Men hur ska konstruktorn ärvas?
Lösningen: Se konstruktorns kod i klassen Employee.
Arvrelationens implementering
Klassen Date
Både superklassen Person och subklassen Employee (nedan) behöver klassen Date, för att
deklarera datamedlemmar av typ Date. Det är samma klass som användes vid komposition.
Därför måste klassen Date inkluderas i detta projekt.
På så sätt är projektet ett exempel på både komposition och arv.
Super- eller basklassen Person
Subklassen Employee
Programmet Inheritance
Körexempel
1.9 Polymorfism
Super- eller basklassen Account
Subklassen MinimalAccount
Programmet PolymorphTest
Körexempel
Copyright © 2022 TechPages AB. All Rights Reserved.