|
|
Rad 11: |
Rad 11: |
| <br> | | <br> |
| | | |
− | = <b><span style="color:#931136">1.1 Vad är objektorienterad programmering?</span></b> = | + | = <b><span style="color:#931136">1.1 Om inbyggda system</span></b> = |
| <div class="ovnE"> | | <div class="ovnE"> |
| <big><big> | | <big><big> |
| :Gå igenom texten (PDF 7 sidor)<span>:</span> | | :Gå igenom texten (PDF 7 sidor)<span>:</span> |
− | <math> \qquad\;\;\, </math><div class="smallBox">[[Media: Vad_OOP.pdf|<b><span style="color:blue">Vad är objektorienterad programmering?</span></b>]]</div><math> \qquad\;\;\, </math> | + | <math> \qquad\;\;\, </math><div class="smallBox">[[Media: Om_Inb_Syst.pdf|<b><span style="color:blue">Om inbyggda system</span></b>]]</div><math> \qquad\;\;\, </math> |
| </big></big> | | </big></big> |
− | </div>
| |
− |
| |
− |
| |
− | = <b><span style="color:#931136">1.2 Klassbegreppet</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> ?
| |
− |
| |
− | 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 style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: VadKlass.jpg]]</div>
| |
− |
| |
− |
| |
− | <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:
| |
− |
| |
− | * ett <b>begrepp</b>
| |
− |
| |
− | * en <b>idé</b>
| |
− |
| |
− | * en <b>mall</b>.
| |
− |
| |
− | Enligt klassens mall kan sedan <b>objekt</b> av denna klass skapas. Medan klassen
| |
− |
| |
− | ä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>
| |
− |
| |
− |
| |
− | = <b><span style="color:#931136">Definition 2 av klass</span></b> =
| |
− | <div class="ovnA">
| |
− | <div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Def_2_klass.jpg]]</div>
| |
− |
| |
− |
| |
− | <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>
| |
− |
| |
− |
| |
− | = <b><span style="color:#931136">1.3 Modulariseringsprocessen</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">
| |
− | <big><big>
| |
− | 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>
| |
− |
| |
− |
| |
− | = <b><span style="color:#931136">Modularisering på klassnivå</span></b> =
| |
− | <div class="ovnA">
| |
− | <big><big>
| |
− | Modulariseringens <b>2:a steg:</b> Metoden Ok() flyttas till en annan klass = <b>ny datatyp</b>.
| |
− |
| |
− | 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> | | </div> |
| | | |