Skillnad mellan versioner av "Kap 1 Objektorienterad programmering (forts. 2)"

Från Mathonline
Hoppa till: navigering, sök
m
m
 
(4 mellanliggande versioner av samma användare visas inte)
Rad 1: Rad 1:
__TOC__
+
__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 54: Rad 54:
 
= <b><span style="color:#931136">Komposition av klasser</span></b> =
 
= <b><span style="color:#931136">Komposition av klasser</span></b> =
 
<div class="ovnC">
 
<div class="ovnC">
=== <b><span style="color:#931136">Klassen Employ</span></b> ===
+
=== <span style="color:#931136">Klassen Employ</span> ===
 
[[Image: Employ.jpg]]
 
[[Image: Employ.jpg]]
 
</div>
 
</div>
Rad 61: Rad 61:
 
= <b><span style="color:#931136">Komposition av objekt</span></b> =
 
= <b><span style="color:#931136">Komposition av objekt</span></b> =
 
<div class="ovnC">
 
<div class="ovnC">
=== <b><span style="color:#931136">Programmet Composition</span></b> ===
+
=== <span style="color:#931136">Programmet Composition</span> ===
 
[[Image: Composition.jpg]]
 
[[Image: Composition.jpg]]
 
</div>
 
</div>
Rad 68: Rad 68:
 
= <b><span style="color:#931136">1.8 &nbsp; Arv</span></b> =
 
= <b><span style="color:#931136">1.8 &nbsp; Arv</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
=== <b><span style="color:#931136">Arvrelationens modell</span></b> ===
+
=== <span style="color:#931136">Arvrelationens modell</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>
  
Rad 87: Rad 87:
 
= <b><span style="color:#931136">Arvrelationens implementering</span></b> =
 
= <b><span style="color:#931136">Arvrelationens implementering</span></b> =
 
<div class="ovnA">
 
<div class="ovnA">
=== <b><span style="color:#931136">Klassen Date</span></b> ===
+
=== <span style="color:#931136">Klassen Date</span> ===
 
<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>]], för att  
 
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  
Rad 99: Rad 99:
  
  
=== <b><span style="color:#931136">Super- eller basklassen Person</span></b> ===
+
=== <span style="color:#931136">Super- eller basklassen Person</span> ===
 
[[Image: Personc.jpg]]
 
[[Image: Personc.jpg]]
  
  
=== <b><span style="color:#931136">Subklassen Employee</span></b> ===
+
=== <span style="color:#931136">Subklassen Employee</span> ===
 
[[Image: Employeea.jpg]]
 
[[Image: Employeea.jpg]]
  
  
=== <b><span style="color:#931136">Programmet Inheritance</span></b> ===
+
=== <span style="color:#931136">Programmet Inheritance</span> ===
 
[[Image: Inheritancea.jpg]]
 
[[Image: Inheritancea.jpg]]
  
  
=== <b><span style="color:#931136">Körexempel</span></b> ===
+
=== <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>
 +
 +
 +
= <b><span style="color:#931136">1.9 &nbsp; Polymorfism</span></b> =
 +
<div class="ovnE">
 +
==== <span style="color:#931136">Ex.: &nbsp;&nbsp;Två olika typer av konto i en bank:</span> ====
 +
 +
<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>
  
Rad 132: Rad 164:
  
  
[[Matte:Copyrights|Copyright]] © 2022 TechPages AB. All Rights Reserved.
+
[[Matte:Copyrights|Copyright]] © 2026 Lieta AB. All Rights Reserved.

Nuvarande version från 10 februari 2026 kl. 11.19

        <<  Agenda          Innehåll & struktur          Genomgång          Dagens övningar          Nästa lektion  >>      


1.6   Referensvariabler

Gå igenom texten (PDF 4 sidor):
\( \qquad\;\;\, \)\( \qquad\;\;\, \)


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:

  1. Komposition av klasser
  2. Komposition av objekt


Klassen Date

Date.jpg


Komposition av klasser

Klassen Employ

Employ.jpg


Komposition av objekt

Programmet Composition

Composition.jpg


1.8   Arv

Arvrelationens modell

Arv.jpg


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

Personc.jpg


Subklassen Employee

Employeea.jpg


Programmet Inheritance

Inheritancea.jpg


Körexempel

InheritanceKorexa.jpg


1.9   Polymorfism

Ex.:   Två olika typer av konto i en bank:

Polymorfism.jpg


Super- eller basklassen Account

AccountPolym.jpg


Subklassen MinimalAccount

MinimalAccount.jpg


Programmet PolymorphTest

PolymorphTest.jpg


Körexempel

PolymorphKorex.jpg










Copyright © 2026 Lieta AB. All Rights Reserved.