Skillnad mellan versioner av "5.9 Arv"

Från Mathonline
Hoppa till: navigering, sök
m
m
 
(9 mellanliggande versioner av samma användare visas inte)
Rad 13: Rad 13:
 
= <b><span style="color:#931136">5.9 &nbsp; Arv</span></b> =
 
= <b><span style="color:#931136">5.9 &nbsp; Arv</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
=== <span style="color:#931136">Arvrelationens klassdiagram som 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>. &nbsp; Och basklassens konstruktor kallas för <b><span style="color:red">base()</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>
Rad 35: 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: Person_h.jpg]]
 
[[Image: Person_h.jpg]]
 
  
 
<big>
 
<big>
 
<b><span style="color:red">Problem:</span></b>
 
<b><span style="color:red">Problem:</span></b>
  
Subklassen ärver basklassens datamedlemmar och metoder. Men hur ska konstruktorn ärvas?
+
Subklassen <b>Employee</b> ärver superklassen <b>Person</b>:s alla datamedlemmar och metoder.
  
<b><span style="color:red">Lösningen:</span></b> &nbsp; Se konstruktorns kod i klassen Employee.
+
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>
 
</big>
 
  
 
=== <span style="color:#931136">Subklassen Employee</span> ===
 
=== <span style="color:#931136">Subklassen Employee</span> ===

Nuvarande version från 13 februari 2026 kl. 07.30

       Agenda          Genomgång          Övningar 27          Nästa lektion  >>      


5.9   Arv

Arvrelationens modell som klassdiagram

Arv.jpg


Superklassen kallas även för basklassen.


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

Person h.jpg

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

Employee h.jpg


Programmet Inheritance

Inheritance h.jpg










Copyright © 2026 Lieta AB. All Rights Reserved.