Advertisement
Advertisement

More Related Content

Advertisement

HT19 - DA361A - OOP med Python (1)

  1. OOP MED
  2. 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?
  3. ATT SE VÄRLDEN I KLASSER OCH OBJEKT Har ni börjat göra det än?
  4. EN KLASS ÄR KOD SOM SPECIFICERAR EN DATATYP MED ATTRIBUTE OCH METODER.
  5. ATT MODELLERA VÅRA PROGRAM OBJEKTORIENTERADE Vad kan ni såhär långt?
  6. ATT REPRESENTERA VÄRLDEN I KOD Genom olika datatyper
  7. Datatyper ■ Nummer 1, 5, 7, 234 ■ Strängar ”Hej”, ”Anton”, ”Pyhton”, ”Glass är gott” ■ Boolska värden True, False ■ Listor [1, 2, 3, 4, 5, ”hej”, ”på”, ”dig] ■ Lexikon {”namn”: ”Anton”, ”ålder”: 29}
  8. 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.”
  9. Att beskriva mig genom olika datatyper
  10. INTE SÅ SMIDIGT… Men listor och lexikon då?
  11. Beskriva mig genom en lista
  12. Beskriva mig genom ett lexikon
  13. GANSKA BRA? Men jag vill ha en egen datatyp!
  14. 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
  15. Att jobba med OOP 1. Identifiera en sak 2. Beskriv saken 3. Skapa instanser (objekt) av saken
  16. EXEMPEL En taxibil
  17. 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 ■ …
  18. SKAPA ETT KLASSDIAGRAM FÖR VÅR KLASS
  19. Vi behöver… ett klassnamn!
  20. Vi behöver… ange vilka attribut vi ska ha! Attributen för klassen
  21. 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” …
  22. Skapa ett objekt av klassen
  23. Titta närmre på skapande av objektet
  24. 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 ■ …
  25. 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
  26. Ännu en metod
  27. 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 ■ …
  28. VI TAR OCH TESTAR! =)
  29. Ö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.
  30. 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?
  31. Ö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!
  32. BONUS! FUNKTIONEN __STR__ Att skriva ut en ”vänlig” beskrivning av ett objekt (som en sträng)
Advertisement