Objektorientering
Från Wikibooks
Innehåll |
[redigera] Vad är Objektorienterad programmering?
Objektorientering är ett sätt att beskriva för en dator hur den ska se på världen, hur data ska struktureras och hur metoder ska skapas och användas. Även deras relationer till varandra beskrivs.
Objektorientering ska försöka likna en människas sätt att se på saker, att man grupperar saker som hör ihop, man skapar objekt.
[redigera] Objekt
Ett traditionellt program består av funktioner och data. Ett objektorienterat program består av objekt. Ett objekt kan sedan innehålla data samt de funktioner (metoder) som ska kunna appliceras på data. Datorspråk som nyttjar objektorientering är t. ex Smalltalk, C++, Python och Java.
[redigera] Klasser
En klass innehåller instansvariabler, konstruktor och metoder.Den är en beskrivning av olika objekt som har något gemensamt. Klassen kan betraktas som en mall för vilka data, metoder och meddelanden som ingår i ett objekt.
[redigera] Konstruktor
I konstruktor finns ritningen till objektet. Alla klasser innehåller en konstruktor men har man inte defineierat hur den ska se ut skapas ett tomt objekt, allså ingenting. Man måste tänka på att allt är objekt.
[redigera] Instansvariabler
[redigera] Metoder
Metoderna används inom klassen för att behandla data. Metoderna bör vara privata, dvs bara åtkomliga inom klassen för att förhindra att att data påverkas utifrån. Undantaget är get & set metoderna som används för att kommunicera med klassen.
[redigera] Arv
Genom arv kan den programmeraren som använder objektorienterad programmering konstruera nya klasser gemom att låta dessa ärva egenskapen från någon annan basklass.
[redigera] Exempel på användandet av klasser (Java)
Om man ska göra till exempel ett kortspel så börjar man med att hitta dom objekt som används. Ett bra sätt är att leta substantiv.
- Kortlek
- Deltagare
En kortlek innehåller kort.
[redigera] Kort
Vi börjar med att skapa klassen Kort som ska innehålla:
- instansvariabler (privata, tillgängliga bara inom klassen)
- konstruktor som skapar kortet
- metoder (verb som talar om vad som ska utföras)
[redigera] Instansvariabler
Först bestämmer vi vilka variabler som behövs:
private String[] färglista = {"Klöver", "Ruter", "Hjärter", "Spader"};
private int färgnr, värdenr;
[redigera] Konstruktor
Konstruktorn skapar ett kort och vilket kort det blir måste man ange när konstruktorn anropas. Vi använder nr 0-3 för färgerna och 2-14 för värdet:
public Kort(int färg, int värde) {
färgnr = färg;
värdenr = värde;
}
[redigera] Metoder
Och så skapar vi några metoder. Det enda man behöver är visa-metoder (get) för nåt annat gör man inte med ett kort:
public int getFärgnr () {
return färgnr;
}
public int getVärdenr () {
return värdenr;
}
public String toString () {
return färglista[färgnr] + " " + värde;
}
Annars brukar man ha set-metoder (ändra) för att ändra på en instansvariabel
toString är en metod för att kunna visa kortet som en sträng.
[redigera] Kortlek
Man spelar inte kort med enstaka kort utan med en kortlek och därför skapar vi klassen Kortlek.
[redigera] Instansvariabler
Här behövs en lista innehållande alla korten och en räknare nr som håller koll på vilket kort som ska ges:
private List<Kort> högen = new LinkedList<Kort>(); private int nr;
[redigera] Konstruktor
Konstruktorn skapar en kortlek:
public Kortlek() {
for (int f=0;f<4;f++)
for (int v=2;v<15;v++)
högen.add(0,new Kort(f, v));
}
[redigera] Metoder
Med en kortlek kan man blanda eller ge kort,
public void blanda() {
nr = 0;
Collections.shuffle(högen);
}
public Kort geKort(){
return högen.get(nr++);
}
Nu är kortleken skapad.
Återstår att skapa en klass spelare och en Main-metod som sköter spelet.
För att använda kortleken:
Kortlek Leken = new Kortlek(); Leken.Blanda(); Kort MittKort = Leken.Ge();
Nu innehåller variabeln MittKort ett kort.

