Skillnad mellan versioner av "Kap 1 Objektorienterad programmering (OOP)"

Från Mathonline
Hoppa till: navigering, sök
m
m
 
(66 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" |  
 
{{Not selected tab|[[Lektion 1 (OOP)| <<&nbsp;&nbsp;Agenda]]}}
 
{{Not selected tab|[[Lektion 1 (OOP)| <<&nbsp;&nbsp;Agenda]]}}
{{Not selected tab|[[Media: Innehall_OOP_design.pdf|Innehåll & struktur]]}}
+
{{Not selected tab|[[Innehåll och struktur av kursen OOP & design|Innehåll & struktur]]}}
 
{{Selected tab|[[Kap 1 Objektorienterad programmering (OOP)|Genomgång]]}}
 
{{Selected tab|[[Kap 1 Objektorienterad programmering (OOP)|Genomgång]]}}
 
{{Not selected tab|[[Övningar 1 (OOP)|Dagens övningar]]}}
 
{{Not selected tab|[[Övningar 1 (OOP)|Dagens övningar]]}}
Rad 12: Rad 12:
 
<br>
 
<br>
  
+++
+
= <b><span style="color:#931136">1.1 &nbsp; Vad är objektorienterad programmering?</span></b> =
 
+
<div class="ovnE">
 
+
= <b><span style="color:#931136">5.2 Relationsdatabaser</span></b> =
+
<div class="ovnC">
+
 
<big><big>
 
<big><big>
:Bläddra igenom PowerPointen (PDF 11 sidor)<span>:</span>  
+
:igenom texten (PDF 7 sidor)<span>:</span>
<math> \qquad\;\;\, </math><div class="smallBox">[http://www.taifun.se/images/stories/5_2_Rel_databaser.pdf <b><span style="color:blue">Relationsdatabasmodellen</span></b>]</div><math> \qquad\;\;\, </math>
+
<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>
 
</big></big>
 
</big></big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">5.3 Introduktion till SQL</span></b> =
+
= <b><span style="color:#931136">1.2 &nbsp; Klassbegreppet</span></b> =
<div class="ovnA">
+
<div class="ovnC">
<big><big>
+
=== <b><span style="color:#931136">En klass som ett C# program</span></b> ===
:Bläddra igenom bilder & text (PDF 3 sidor)<span>:</span>
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Firsta.jpg]]</div>
<math> \qquad\;\;\, </math><div class="smallBox">[http://www.mathonline.se/Progr_3/Databashanterare.pdf <b><span style="color:blue">Databashanterare</span></b>]</div><math> \qquad\;\;\, </math>
+
 
 +
 
 +
<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>
 
</big></big>
 
</div>
 
</div>
  
  
 +
= <b><span style="color:#931136">Definition 1 av klass</span></b> =
 
<div class="ovnE">
 
<div class="ovnE">
<big><big>
 
:Bläddra igenom bilder & text (PDF 7 sidor)<span>:</span>
 
<math> \qquad\;\;\, </math><div class="smallBox">[http://www.mathonline.se/Progr_3/SQL.pdf <b><span style="color:blue">SQL – databasers språk</span></b>]</div><math> \qquad\;\;\, </math>
 
</big></big>
 
</div>
 
  
 +
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: VadKlass.jpg]]</div>
  
<div class="ovnC">
+
 
<big><big>
+
<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:
:Bläddra igenom bild & text (PDF 1 sida)<span>:</span>  
+
 
<math> \qquad\;\;\, </math><div class="smallBox">[http://www.mathonline.se/Progr_3/Regler_Konv.pdf <b><span style="color:blue">Regler och konventioner</span></b>]</div><math> \qquad\;\;\, </math>
+
* &nbsp; &nbsp; ett <b>begrepp</b>
 +
 
 +
* &nbsp; &nbsp; en <b>idé</b>
 +
 
 +
* &nbsp; &nbsp; 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>
 
</big></big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">5.4 Vår första SQL Server databas</span></b> =
+
= <b><span style="color:#931136">Definition 2 av klass</span></b> =
 
<div class="ovnA">
 
<div class="ovnA">
=== <b><span style="color:#931136">Projektet FirstDatabase, en Windows Forms Application</span></b> ===
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Def_2_klass.jpg]]</div>
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Our_First_DBa.jpg]]</div>
+
  
  
<big><big>Så här kommer gränssnittet till vår första SQL Server databas i C# se ut.
+
<big><big>Ett begrepp kan ha olika definitioner om de inte motsäger varandra och belyser olika
  
Projektets hela beskrivning finns i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 179-184</big></big>
+
aspekter av begreppet. Sammanhanget i vilket begreppet används avgör betydelsen.</big></big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Att ladda ned en exempeldatabas</span></b> =
+
= <b><span style="color:#931136">1.3 &nbsp; Modulariseringsprocessen</span></b> =
 
<div class="ovnE">
 
<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>
 
<big><big>
* &nbsp; &nbsp; Ladda ned databasfilen [http://taifun.se/images/stories/Books.zip <b><span style="color:red">Books.mdf</span></b>] som är packad i en zip-fil.
+
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>
 +
 
  
* &nbsp; &nbsp; Filen <b>Books.zip</b> laddas ned. Packa upp den, so att <b><span style="color:red">mdf</span></b>-filen läggs utanför <b>zip</b>.  
+
<big><big>Klassen <b>Method</b> har två metoder: <b>Main()</b> och <b>Ok()</b>: Main() anropar Ok(). Vid anrop:
  
* &nbsp; &nbsp; Spara filen <b><span style="color:red">Books.mdf</span></b> på en plats (i en mapp) som du kommer ihåg.
+
skickas den aktuella parametern input till den formella parametern passwd och retur-
  
* &nbsp; &nbsp; Den ska nämligen sedan infogas i projektet och användas som datakälla.
+
värdet av typ <b>bool</b> returneras via Ok() till Main() och används i if-satsens samt loopens villkor.  
 
</big></big>
 
</big></big>
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Att skapa ett projekt av typ Windows Forms Application</span></b> =
+
= <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
  
<div class="ovnC">
+
<b><span style="color:red">objektets metod</span></b> Ok() anropas i Main().
<big>
+
</big></big>
* &nbsp; &nbsp; Öppna Visual Studio och skapa en Windows Forms Application, så här:
+
  
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: WinFormsAppl_1b.jpg]]</div>
+
=== <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>
  
  
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: Conf_Proj_FirstDB.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>
  
* &nbsp; &nbsp; Följ instruktionerna i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 179/180.
+
=== <b><span style="color:#931136">Klassen PasswordUse</span></b> ===
</big>
+
<div style="border:1px solid black;display:inline-table;margin-left: 0px;"> [[Image: PasswordUse.jpg]]</div>
</div>
+
  
  
= <b><span style="color:#931136">Att koppla upp sig till SQL Servern</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: PasswordUseKorexa.jpg]]</div>
<big>* &nbsp; &nbsp; Följ instruktionerna i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 180-183.
+
</big>
+
 
</div>
 
</div>
  
  
= <b><span style="color:#931136">Att visa databasens innehåll</span></b> =
 
<div class="ovnE">
 
<big>* &nbsp; &nbsp; Följ instruktionerna i [http://mathonline.se:1802/Boken%20Alg%20Datastr%20Design.pdf <b><span style="color:blue">kursboken</span></b>], sid 183-184.
 
</big>
 
</div>
 
  
  
= <b><span style="color:#931136">1.1 &nbsp; Vad är objektorienterad programmering?</span></b> =
+
 
<div class="ovnE">
+
<big><big>
+
: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>
+
</big></big>
+
</div>
+
  
  

Nuvarande version från 24 november 2022 kl. 19.02

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


1.1   Vad är objektorienterad programmering?

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


1.2   Klassbegreppet

En klass som ett C# program

Firsta.jpg


Varför står metoden Main() i en klass, nämligen class First  ?

Eftersom koden ska vara ett C# program, nämligen:

CsPrograma.jpg

Koden ovan (class First) är det det enklast tänkbara C# programmet.

Metoden Main() kan inte skrivas utanför klassen.


Definition 1 av klass

VadKlass.jpg


Generell är en klass därför att den beskriver en kategori av saker och ting:

  •     ett begrepp
  •     en idé
  •     en mall.

Enligt klassens mall kan sedan objekt av denna klass skapas. Medan klassen

är abstrakt, är objekten verkliga eller virtuella saker och ting i den reala världen.

Modulär ä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 modularisering.

Klass och objekt är två olika begrepp.

Exempel:

Pepparkakor är objekt.

Pepparkaksformen är klassen.


Definition 2 av klass

Def 2 klass.jpg


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.


1.3   Modulariseringsprocessen

Utan modularisering: all kod i Main()

All in Main.jpg


Modularisering på metodnivå

Modulariseringens 1:a steg: Logiken flyttas till en ny metod Ok() utanför Main().

Method Module.jpg


Klassen Method har två metoder: Main() och Ok(): Main() anropar Ok(). Vid anrop:

skickas den aktuella parametern input till den formella parametern passwd och retur-

värdet av typ bool returneras via Ok() till Main() och används i if-satsens samt loopens villkor.


Modularisering på klassnivå

Modulariseringens 2:a steg: Metoden Ok() flyttas till en annan klass = ny datatyp.

I Main() skapas ett objekt av den nya datatypen Password och

objektets metod Ok() anropas i Main().

Klassen Password

Password.jpg


Klasserna Password och PasswordUse utgör ETT objektorienterat program.

Klassen PasswordUse

PasswordUse.jpg


Ett körexempel

PasswordUseKorexa.jpg










Copyright © 2022 TechPages AB. All Rights Reserved.