Skillnad mellan versioner av "Objektorienterad modellering och implementation"

Från Mathonline
Hoppa till: navigering, sök
m
m
 
(60 mellanliggande versioner av samma användare visas inte)
Rad 11: Rad 11:
 
= <b><span style="color:#931136">Projekt Lönespecifikation</span></b> =
 
= <b><span style="color:#931136">Projekt Lönespecifikation</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
==== <b><span style="color:#931136">Utdrag ur kursboken, sid 117:</span></b> ====
+
==== <b><span style="color:#931136">Definition av program ur ett objektorienterat perspektiv:</span></b> ====
  
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Proj_Lonespecifikation.jpg]]</div>
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Proj_Lonespecifikation.jpg]]</div>
Rad 33: Rad 33:
  
 
::&nbsp;&nbsp;Vilka operationer är relevanta, karakteristiska eller typiska för den?
 
::&nbsp;&nbsp;Vilka operationer är relevanta, karakteristiska eller typiska för den?
 +
 +
Läs mer om modellering i fyra steg i kursboken, sid 117-119.
 
</big>
 
</big>
 
</div>
 
</div>
Rad 39: Rad 41:
 
= <b><span style="color:#931136">Klassdiagram</span></b> =
 
= <b><span style="color:#931136">Klassdiagram</span></b> =
 
<div class="ovnA">
 
<div class="ovnA">
==== <b><span style="color:#931136">Rita modellen i ett klassdiagram:</span></b> ====
+
=== <b><span style="color:#931136">Resultat av modelleringen:</span></b> ===
  
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Klassdiagram.jpg]]</div>
 
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Klassdiagram.jpg]]</div>
</div>
 
 
 
= <b><span style="color:#931136">Klassen Fisk</span></b> =
 
<div class="ovnE">
 
[[Image: Fish.jpg]]
 
  
 
<big>
 
<big>
För enkelhetens skull deklareras klassens alla medlemmar som public. Därför definieras inte heller någon konstruktor.
+
Följer regler enligt det objektorienterade modelleringsspråket <b>Unified Modeling Language (UML)</b>:
  
Typkonverteringen till <b><span style="color:red">int</span></b> behövs däför att returtypen till metoderna är <b><span style="color:red">int</span></b>.
+
Varje <b>klass</b> modelleras i en ruta som innehåller klassens datamedlemmar och metoder.  
  
<b><span style="color:green">rad 26</span></b> överskrids arrayens övre indexgräns, eftersom no[<b><span style="color:red">4</span></b>] är arrayens <b><span style="color:red">5</span></b>:te element som är odefinierat.
+
Minustecknen står framför <b>datamedlemmarna</b> och plustecknen står framför <b>metoderna</b>.
 +
 
 +
I de högra kolumnerna står datamedlemmarnas <b>datatyper</b> resp. metodernas <b>returtyper</b>.
 
</big>
 
</big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Programmet ArrayOfRef</span></b> =
+
<div class="border-divblue">
<div class="ovnC">
+
[[Image: ArrayOfRefa.jpg]]
+
 
+
 
<big>
 
<big>
På <b><span style="color:green">rad 7</span></b> skapas en array av 5 referenser: <b>f[0], f[1], ... , f[4]</b> av koden <b><span style="color:red">new Fisk[5]</span></b>.
+
Modellen är projektets <b><span style="color:red">arkitektur</span></b> och därför logiskt primär.
  
<b>f</b> är ingen array av Fisk-objekt utan en <b><span style="color:red">array av</span> referenser <span style="color:red">av typ Fisk</span></b>.
+
Modellen är <b><span style="color:red">oberoende</span></b> av programmeringsspråket.
  
Fisk-objekten skapas på <b><span style="color:green">rad 10</span></b> i <b>for</b>-loopen av koden <b><span style="color:red">new Fisk()</span></b>. I samma sats tilldelas de till referenserna <b>f[i]</b>.
+
Modellen måste vara objektorienterad för att programmet ska bli objektorienterat.
  
Varje referens <b>f[i]</b> pekar nu på ett Fisk-objekt: &nbsp; <b>i = 0, 1, ... , 4</b> &nbsp; eftersom <b>for</b>-loopen har <b>5</b> varv.  
+
Omvandlingen av modell till kod kallas <b><span style="color:red">implementation</span></b>.
  
Tanken om att skapa en "array av objekt" måste förkastas. Lösningen är en <b>tvåstegsmetod</b>:
+
Modellen "planteras", koden växer ur den.
 +
</big>
 +
</div>
  
<b>Steg 1:</b> &nbsp; <b><span style="color:red">Skapa en array av referenser</span></b>.
 
  
<b>Steg 2:</b> &nbsp; <b><span style="color:red">Låta varje referens i arrayen peka på ett objekt</span></b>.
+
= <b><span style="color:#931136">Implementation av modellen</span></b> =
 +
<div class="ovnE">
 +
=== <b><span style="color:#931136">Klassen Time</span></b> ===
 +
[[Image: Time.jpg]]
 +
 
 +
=== <b><span style="color:#931136">Klassen Emplo</span></b> ===
 +
[[Image: Emplo.jpg]]
 +
 
 +
<big>
 +
För enkelhetens skull deklareras klassernas datamedlemmar som public.
 +
 
 +
Därför definieras inte heller någon konstruktor. I en skarp version borde datamedlemmarna vara private.
 
</big>
 
</big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Ett körexempel</span></b> =
+
= <b><span style="color:#931136">Programmet EmploTest</span></b> =
 
<div class="ovnC">
 
<div class="ovnC">
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: ArrayOfRefKorex.jpg]]</div>
+
[[Image: EmploTest_1.jpg]]
 +
 
 +
[[Image: EmploTest_2.jpg]]
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Läs om Referensvariabler på sid 88-91 och om Array av referenser på sid 113-116.</span></b> =
+
= <b><span style="color:#931136">Ett körexempel</span></b> =
 +
<div class="ovnA">
 +
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: EmploTKorres.jpg]]</div>
 +
</div>
  
 +
<!--
 +
= <b><span style="color:#931136">Läs om Objektorienterad modellering och implementation i [http://www.mathonline.se/Progr_2/Boken%20Progr_2_Cs.pdf <span style="color:blue">kursboken</span>] på sid 203-210 =
 +
-->
  
  
Rad 113: Rad 128:
  
  
[[Matte:Copyrights|Copyright]] © 2021 [https://www.techpages.se <b><span style="color:blue">TechPages AB</span></b>]. All Rights Reserved.
+
[[Matte:Copyrights|Copyright]] © 2022 [https://www.techpages.se <span style="color:blue">TechPages AB</span>]. All Rights Reserved.

Nuvarande version från 23 februari 2022 kl. 10.36

       Lektion 21          Genomgång          Övningar      


Projekt Lönespecifikation

Definition av program ur ett objektorienterat perspektiv:

Proj Lonespecifikation.jpg


Objektorienterad modellering i fyra steg

Steg 1   Förstå problemet:   Läs kundens kravspecifikation (rutan ovan) om och om igen!

Steg 2   Identifiera problemets nyckelbegrepp:

  
Saker som är relevanta för verksamheten, som man behöver lagra information om.
  Vid implementeringen kommer nyckelbegrepp att bli programmets klasser.

Steg 3   Identifiera datamedlemmar till varje klass:   Vad består den av? Testa "Har"-relationen!

Steg 4   Identifiera metoder till varje klass:   Vad gör den eller vad kan man göra med den?

  Vilka operationer är relevanta, karakteristiska eller typiska för den?

Läs mer om modellering i fyra steg i kursboken, sid 117-119.


Klassdiagram

Resultat av modelleringen:

Klassdiagram.jpg

Följer regler enligt det objektorienterade modelleringsspråket Unified Modeling Language (UML):

Varje klass modelleras i en ruta som innehåller klassens datamedlemmar och metoder.

Minustecknen står framför datamedlemmarna och plustecknen står framför metoderna.

I de högra kolumnerna står datamedlemmarnas datatyper resp. metodernas returtyper.


Modellen är projektets arkitektur och därför logiskt primär.

Modellen är oberoende av programmeringsspråket.

Modellen måste vara objektorienterad för att programmet ska bli objektorienterat.

Omvandlingen av modell till kod kallas implementation.

Modellen "planteras", koden växer ur den.


Implementation av modellen

Klassen Time

Time.jpg

Klassen Emplo

Emplo.jpg

För enkelhetens skull deklareras klassernas datamedlemmar som public.

Därför definieras inte heller någon konstruktor. I en skarp version borde datamedlemmarna vara private.


Programmet EmploTest

EmploTest 1.jpg

EmploTest 2.jpg


Ett körexempel

EmploTKorres.jpg



 










Copyright © 2022 TechPages AB. All Rights Reserved.