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

Från Mathonline
Hoppa till: navigering, sök
m
m
Rad 21: Rad 21:
  
  
= <b><span style="color:#931136">1.2 &nbsp; Klassbegreppet</span></b> =
+
= <b><span style="color:#931136">1.7 &nbsp; Komposition</span></b> =
<div class="ovnC">
+
=== <b><span style="color:#931136">En klass som ett C# program</span></b> ===
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Firsta.jpg]]</div>
+
 
+
 
+
<big><big>Varför står metoden <b><span style="color:red">Main()</span></b> i en <b><span style="color:red">klass</span></b>, nämligen <b><span style="color:blue">class First</span></b> &nbsp;?
+
 
+
Eftersom koden ska vara ett <b><span style="color:red">C# program</span></b>, nämligen:
+
 
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: CsPrograma.jpg]]</div>
+
 
+
Koden ovan (<b><span style="color:blue">class First</span></b>) är det det enklast tänkbara <b><span style="color:red">C# programmet</span></b>.
+
 
+
Metoden <b><span style="color:red">Main()</span></b> kan inte skrivas utanför klassen.
+
</big></big>
+
</div>
+
 
+
 
+
= <b><span style="color:#931136">Definition 1 av klass</span></b> =
+
 
<div class="ovnE">
 
<div class="ovnE">
 +
<big>
 +
En <b><span style="color:red">bil</span></b> har en <b><span style="color:red">motor</span></b>. Båda är tekniskt komplexa objekt, byggda av experter.
  
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: VadKlass.jpg]]</div>
+
Man sätter ihop bilen som ett objekt av <b><span style="color:red">klassen Bil</span></b> genom att bygga in i den
  
 +
en motor som i sin tur är ett objekt av en annan klass, <b><span style="color:red">klassen Motor</span></b>.
 +
----
 +
<b><span style="color:red">Komposition</span></b> är sammansättning av ett objekt med ett annat objekt (komponent).
  
<big><big><b><span style="color:red">Generell</span></b> är en klass därför att den beskriver en <b>kategori</b> av saker och ting:
+
För att kunna sammansätta objekt måste man först sammansätta <b><span style="color:red">klasser</span></b>.
  
* &nbsp; &nbsp; ett <b>begrepp</b>
+
Komposition betyder sammansättning och är relaterad till <b><span style="color:red">modularisering</span></b>.
 +
----
 +
Med hjälp av Lego-principen bygger man program med hjälp av redan skrivna
  
* &nbsp; &nbsp; en <b>idé</b>
+
klasser som kan ingå som komponenter i andra klasser. Vi har:
  
* &nbsp; &nbsp; en <b>mall</b>.
+
# <b><span style="color:red">Komposition av klasser</span></b>
 
+
# <b><span style="color:red">Komposition av objekt</span></b>
Enligt klassens mall kan sedan <b>objekt</b> av denna klass skapas. Medan klassen
+
</big>
 
+
är abstrakt, är objekten verkliga eller virtuella saker och ting i den reala världen.
+
 
+
<b><span style="color:red">Modulär</span></b> är en klass därför att den kodas som en separat och namngiven modul
+
 
+
så att den kan användas av vilka andra program som helst. Liksom en Legobit
+
 
+
för att kunna konstruera andra program. Principen heter <b>modularisering</b>.
+
 
+
<b><span style="color:red">Klass och objekt är två olika begrepp.</span></b>
+
 
+
<b>Exempel:</b>
+
 
+
Pepparkakor är <b><span style="color:red">objekt.</span></b>
+
 
+
Pepparkaksformen är <b><span style="color:red">klassen.</span></b>
+
</big></big>
+
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Definition 2 av klass</span></b> =
+
= <b><span style="color:#931136">Klassen Date</span></b> =
<div class="ovnA">
+
<div class="ovnC">
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Def_2_klass.jpg]]</div>
+
[[Image: Date.jpg]]
 
+
 
+
<big><big>Ett begrepp kan ha olika definitioner om de inte motsäger varandra och belyser olika
+
 
+
aspekter av begreppet. Sammanhanget i vilket begreppet används avgör betydelsen.</big></big>
+
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">1.3 &nbsp; Modulariseringsprocessen</span></b> =
+
= <b><span style="color:#931136">Klassen Employ</span></b> =
<div class="ovnE">
+
=== <b><span style="color:#931136">Utan modularisering: all kod i Main()</span></b> ===
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: All_in_Main.jpg]]</div>
+
</div>
+
 
+
 
+
= <b><span style="color:#931136">Modularisering på metodnivå</span></b> =
+
 
<div class="ovnC">
 
<div class="ovnC">
<big><big>
+
[[Image: Employ.jpg]]
Modulariseringens <b>1:a steg: <span style="color:red">Logiken</span></b> flyttas till en <b><span style="color:red">ny metod Ok()</span></b> utanför Main().
+
</big></big>
+
 
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Method_Module.jpg]]</div>
+
 
+
 
+
<big><big>Klassen <b>Method</b> har två metoder: <b>Main()</b> och <b>Ok()</b>: Main() anropar Ok(). Vid anrop:
+
 
+
skickas den aktuella parametern input till den formella parametern passwd och retur-
+
 
+
värdet av typ <b>bool</b> returneras via Ok() till Main() och används i if-satsens samt loopens villkor.
+
</big></big>
+
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Modularisering på klassnivå</span></b> =
+
= <b><span style="color:#931136">Programmet Composition</span></b> =
 
<div class="ovnA">
 
<div class="ovnA">
<big><big>
+
[[Image: Composition.jpg]]
Modulariseringens <b>2:a steg:</b> Metoden Ok() flyttas till en annan klass = <b>ny datatyp</b>.
+
</div>
  
I Main() skapas ett <b><span style="color:red">objekt</span></b> av den nya datatypen Password och
 
 
<b><span style="color:red">objektets metod</span></b> Ok() anropas i Main().
 
</big></big>
 
 
=== <b><span style="color:#931136">Klassen Password</span></b> ===
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Password.jpg]]</div>
 
 
 
<big><big>
 
Klasserna <b><span style="color:#931136">Password</span></b> och <b><span style="color:#931136">PasswordUse</span></b> utgör ETT <b><span style="color:red">objektorienterat</span></b> program.
 
</big></big>
 
 
=== <b><span style="color:#931136">Klassen PasswordUse</span></b> ===
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: PasswordUse.jpg]]</div>
 
 
 
=== <b><span style="color:#931136">Ett körexempel</span></b> ===
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: PasswordUseKorexa.jpg]]</div>
 
</div>
 
  
  

Versionen från 24 november 2022 kl. 20.31

        <<  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


Klassen Employ

Employ.jpg


Programmet Composition

Composition.jpg











Copyright © 2022 TechPages AB. All Rights Reserved.