Skillnad mellan versioner av "5.9 Arv"
Från Mathonline
Taifun (Diskussion | bidrag) m |
Taifun (Diskussion | bidrag) m |
||
| (18 mellanliggande versioner av samma användare visas inte) | |||
| Rad 13: | Rad 13: | ||
= <b><span style="color:#931136">5.9 Arv</span></b> = | = <b><span style="color:#931136">5.9 Arv</span></b> = | ||
<div class="ovnE"> | <div class="ovnE"> | ||
| − | === <span style="color:#931136">Arvrelationens modell</span> === | + | === <span style="color:#931136">Arvrelationens modell som klassdiagram</span> === |
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Arv.jpg]]</div> | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Arv.jpg]]</div> | ||
<big> | <big> | ||
| − | Superklassen kallas även för <b><span style="color:red">basklassen</span></b>. | + | Superklassen kallas även för <b><span style="color:red">basklassen</span></b>. <!-- Och basklassens konstruktor kallas för <b><span style="color:red">base()</span></b>. --> |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
</big> | </big> | ||
</div> | </div> | ||
| − | = <b><span style="color:#931136"> | + | = <b><span style="color:#931136">Modellens implementering</span></b> = |
<div class="ovnA"> | <div class="ovnA"> | ||
=== <span style="color:#931136">Klassen Date</span> === | === <span style="color:#931136">Klassen Date</span> === | ||
| Rad 42: | Rad 35: | ||
På så sätt är projektet ett exempel på både komposition och arv. | På så sätt är projektet ett exempel på både komposition och arv. | ||
</big> | </big> | ||
| − | |||
=== <span style="color:#931136">Super- eller basklassen Person</span> === | === <span style="color:#931136">Super- eller basklassen Person</span> === | ||
| − | [[Image: | + | [[Image: Person_h.jpg]] |
| + | <big> | ||
| + | <b><span style="color:red">Problem:</span></b> | ||
| + | |||
| + | Subklassen <b>Employee</b> ärver superklassen <b>Person</b>:s alla datamedlemmar och metoder. | ||
| + | |||
| + | Men hur ska konstruktorn ärvas? Den kan inte ärvas direkt, eftersom: | ||
| + | |||
| + | Konstruktorns namn = Klassnamn. Sub- och superklassen har olika namn. | ||
| + | |||
| + | <b><span style="color:red">Lösningen:</span></b> | ||
| + | |||
| + | <b>Även subklassens konstruktor måste explicit ärva superklassens konstruktor.</b> | ||
| + | |||
| + | Se konstruktorns kod i subklassen <b>Employee</b> nedan: | ||
| + | |||
| + | </big> | ||
=== <span style="color:#931136">Subklassen Employee</span> === | === <span style="color:#931136">Subklassen Employee</span> === | ||
| − | [[Image: | + | [[Image: Employee_h.jpg]] |
=== <span style="color:#931136">Programmet Inheritance</span> === | === <span style="color:#931136">Programmet Inheritance</span> === | ||
| − | [[Image: | + | [[Image: Inheritance_h.jpg]] |
| − | + | ||
| + | <!-- | ||
=== <span style="color:#931136">Körexempel</span> === | === <span style="color:#931136">Körexempel</span> === | ||
<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> | </div> | ||
Nuvarande version från 13 februari 2026 kl. 07.30
| Agenda | Genomgång | Övningar 27 | Nästa lektion >> |
5.9 Arv
Modellens 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
Problem:
Subklassen Employee ärver superklassen Person:s alla datamedlemmar och metoder.
Men hur ska konstruktorn ärvas? Den kan inte ärvas direkt, eftersom:
Konstruktorns namn = Klassnamn. Sub- och superklassen har olika namn.
Lösningen:
Även subklassens konstruktor måste explicit ärva superklassens konstruktor.
Se konstruktorns kod i subklassen Employee nedan:
Subklassen Employee
Programmet Inheritance
Copyright © 2026 Lieta AB. All Rights Reserved.



