Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DA361A - OOP (1)

Avatar for Anton Tibblin Anton Tibblin
September 08, 2021

DA361A - OOP (1)

Avatar for Anton Tibblin

Anton Tibblin

September 08, 2021
Tweet

More Decks by Anton Tibblin

Other Decks in Education

Transcript

  1. Dagens föreläsning Dagens agenda • Att se världen genom objekt

    • Vad är ett objekt, egentligen? • Objekt och klasser • Att rita klasser • Typing (type hints) i Python • Klasser och objekt i Python
  2. Vad ska vi kunna efter dagens föreläsning? • Vad är

    ett objekt? • Vad är en klass? • Vad är attribut och metoder? • Kunna skapa ett klassdiagram (av en klass) • Kunna implementera en klass från ett klassdiagram • Kunna använda Python Type Hints
  3. 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.”
  4. Vad har vi gemensamt? > Attribut - Namn - Ålder

    - Telefonnummer - Epostadress - Adress - Etc.
  5. Datatyper ▪ Nummer ▪ Strängar ▪ Boolska värden ▪ Listor

    ▪ Lexikon ▪ Egna datatyper 1, 5, 7, 234 ”Hej”, ”Anton”, ”Pyhton”, ”Glass är gott” True, False [1, 2, 3, 4, 5, ”hej”, ”på”, ”dig] {”namn”: ”Anton”, ”ålder”: 29}
  6. Övning i grupp! I klassrummet: 1. Hitta tre klasser, med

    individer 2. Beskriv klassens egenskaper, och individernas värde för egenskaperna. 3. Beskriv klassens metoder
  7. 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
  8. Att jobba med OOP 1. Identifiera en sak 2. Beskriv

    saken 3. Skapa instanser (objekt) av saken
  9. Blueprint that describes a house Class _J lnstances of the

    house described by the blueprint 3 objects I instances I individuals
  10. Tillvägagångssätt 1. Identifiera en klass (substantiv), med: • Attribut •

    Metoder 2. Skapa ett klassdiagram 3. Översätt klassdiagram till Python-kod
  11. Konstruktor - Körs när en instans av klassen skapas. Kan

    t.ex. bestämma vilka attribut som är obligatoriska för att skapa en instans av klassen, m.m. Sträng-funktion - I Python finns funktionen _ _str_ _ vars uppgift är att skriva ut en textbaserad beskrivning av instansen.
  12. Vi testar mer! Någon frivillig som har ett case som

    vi kan modellera, rita klassdiagram & implementera?
  13. Att beskriva en taxibil Attribut ▪ Namn på chaufför ▪

    I tjänst ▪ Antal passagerare ▪ Städer Sträng Bool Nummer 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 ▪ …
  14. 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” …
  15. Att beskriva en taxibil Attribut ▪ Namn på chafför ▪

    I tjänst ▪ Antal passagerare ▪ Städer Sträng Bool Nummer 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 ▪ …
  16. 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
  17. Att beskriva en taxibil Attribut ▪ Namn på chafför ▪

    I tjänst ▪ Antal passagerare ▪ Städer Sträng Bool Nummer 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 ▪ …