Dagens föreläsning
Dagens agenda
• Att se världen som klasser
och objekt
• Att representera världen i kod
• Hur klasser och objekt fungerar
i Python
• Att programmera OOP i Python
• Hur fungerar det i ett
större perspektiv?
ATT SE VÄRLDEN I
KLASSER OCH OBJEKT
Har ni börjat göra det än?
EN KLASS ÄR KOD SOM
SPECIFICERAR EN DATATYP MED
ATTRIBUTE OCH METODER.
Att beskriva mig genom olika datatyper
■ anton = ”Anton är 29 år och bor i Lund. Han gillar att sport, teknik och att resa.”
johan = ”Johan är 38 år och bor i Malmö. Han gillar datorer, scouting och språk.”
Varför OOP?
■ Vi beskriver väldigt ofta ”verkliga” objekt i kod
– Lättare att göra i OOP
– Kan beskriva inte bara hur objekten ser ut, utan även hur de får agera
■ Källkoden blir ofta enklare att hantera
– All relevant kod på samma ställe
■ Med OOP är det enkelt att återanvända kod
– Vi vill ju inte uppfinna hjulet eller skriva om kod igen…
■ Väldigt många större projekt, byggs enligt OOP
Att jobba med OOP
1. Identifiera en sak
2. Beskriv saken
3. Skapa instanser (objekt) av saken
Att beskriva en taxibil
Attribut
■ Namn på chaufför Sträng
■ I tjänst Bool
■ Antal passagerare Nummer
■ Städer Lista
Metoder
■ Plocka upp passagerare
■ Släppa av passagerare
■ Aktivera taxibilen för körningar
■ Avaktivera taxibilen för körningar
■ Ange namn på taxichaufför
■ Hämta namn på taxichaufför
■ …
Metoden __init__
■ __init__ är en speciell metod i Python
■ Metoden är konstruktor för klassen som den finns inuti
■ __init__ körs varje gång ett objekt skapas från klassen
Skapar ett nytt
objekt
Funktionen
__init__ kalls på
Koden i __init__-
funktionen körs
myTaxi = Taxi(”Anton”) self.driver = ”Anton”
…
Att beskriva en taxibil
Attribut
■ Namn på chafför Sträng
■ I tjänst Bool
■ Antal passagerare Nummer
■ Städer Lista
Metoder
■ Plocka upp passagerare
■ Släppa av passagerare
■ Aktivera taxibilen för körningar
■ Avaktivera taxibilen för körningar
■ Ange namn på taxichafför
■ Hämta namn på taxichafför
■ …
Metoder (beteende) för en klass
■ Metoder i en klass fungerar på samma sätt som en funktion, fast man skickar alltid
med self som första parameter
■ En metod tar kan, efter parametern self, ta emot hur många parametrar som helst
Att beskriva en taxibil
Attribut
■ Namn på chafför Sträng
■ I tjänst Bool
■ Antal passagerare Nummer
■ Städer Lista
Metoder
■ Plocka upp passagerare
■ Släppa av passagerare
■ Aktivera taxibilen för körningar
■ Avaktivera taxibilen för körningar
■ Ange namn på taxichafför
■ Hämta namn på taxichafför
■ …
Övning! Skriv en klass som beskriver en
buss – och skapa sedan bussar
■ Instruktioner
■ 1) Börja med att skapa ett klassdiagram
■ 2) Skapa en klass för en buss i Python
■ 3) Skapa två bussar (objekt) av klassen
buss i Python, de ska ha olika antal
platser och färg.
■ En buss ska skapas med antal platser, en färg, och körs av en busschafför som har
ett namn. Nya passagerare kan gå in in bussen och existerande passagerare kan
lämna bussen. Antalet passagerare på bussen kan inte vara färre än 0 och inte fler
än antalet platser i bussen. Skriv även en funktion som visar hur många lediga
platser det finns i bussen.
Objekt- vs. klassvariabler
■ I Python finns det variabler som är specifika för varje objekt och variabler som är
specifika för klassen (och tillgängliga för att objekt).
– T.ex. kanske vi vill veta hur många taxibilar som finns?
Övning! Uppdatera er bussklass
■ Instruktioner
■ 1) Börja med att skapa en klassvariabel
■ 2) Öka klassvariabeln varje gång en ny
buss skapas (i __init__ funktionen)
■ 3) Skapa en @classmethod som skriver
ut antalet bussar
■ Vi vill nu ha koll på antalet bussar som har skapats!