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

DA361A - OOP (1)

1e708b2afb8622d5c5f070a94a3425a9?s=47 Anton Tibblin
September 08, 2021

DA361A - OOP (1)

1e708b2afb8622d5c5f070a94a3425a9?s=128

Anton Tibblin

September 08, 2021
Tweet

Transcript

  1. OOP MED

  2. None
  3. None
  4. None
  5. 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
  6. 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
  7. None
  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. None
  11. INTE SÅ SMIDIGT… Men listor och lexikon då?

  12. Beskriva mig genom en lista

  13. Beskriva mig genom ett lexikon

  14. GANSKA BRA? Men jag vill ha en egen datatyp!

  15. ATT SE VÄRLDEN GENOM OBJEKT Har ni börjat göra det

    än?
  16. None
  17. None
  18. None
  19. None
  20. Beskriv objektet - Egenskaper - Funktioner

  21. None
  22. None
  23. VAD ÄR ETT OBJEKT? Objekt = Individ = Instans

  24. KLASS?

  25. Anton är en människa

  26. Johan är en människa

  27. Objekt/instans Klass Människa

  28. Människa (klass) – Egenskaper?

  29. Vad har vi gemensamt? > Attribut - Namn - Ålder

    - Telefonnummer - Epostadress - Adress - Etc.
  30. Människa Klass Datatyp

  31. 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}
  32. EN KLASS SPECIFICERAR EN DATATYP MED ATTRIBUT (egenskaper) OCH METODER

    (funktioner).
  33. Ö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
  34. 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
  35. Att jobba med OOP 1. Identifiera en sak 2. Beskriv

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

    house described by the blueprint 3 objects I instances I individuals
  37. Person name pl: Person name = 11Jane'' p2: Person name

    = 11John''
  38. Klassdiagram Python-kod

  39. Dagens fokus - Klasser i isolation

  40. Tillvägagångssätt 1. Identifiera en klass (substantiv), med: • Attribut •

    Metoder 2. Skapa ett klassdiagram 3. Översätt klassdiagram till Python-kod
  41. 1. Identifiera en klass, med: • Attribut • Metoder

  42. 1. Identifiera en klass, med: • Attribut • Metoder

  43. 2. Skapa ett klassdiagram

  44. Namn på klassen Klassens attribut Klassens metoder

  45. + Publika attribut/metoder - Privata attribut/metoder Datatyp för attribut Parametrar

    för metoder Datatyp för returvärde
  46. Konstruktor Utskriftsversion av instans (Python)

  47. 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.
  48. 2. Skapa ett klassdiagram

  49. 3. Översätt klassdiagram till Python-kod

  50. Klassdiagram Python-kod

  51. 3. Översätt klassdiagram till Python-kod

  52. Bonus – Type hinting =)

  53. ”Vanlig” Python-kod Type hinting

  54. Demo!

  55. Vi testar mer! Någon frivillig som har ett case som

    vi kan modellera, rita klassdiagram & implementera?
  56. - Mer om klasser & objekt - Inkapsling - Relationer

    mellan klasser Nästa vecka?
  57. EXEMPEL

  58. Vilka attribut? Vilka metoder?

  59. 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 ▪ …
  60. SKAPA ETT KLASSDIAGRAM FÖR VÅR KLASS

  61. Vi behöver… ett klassnamn!

  62. Vi behöver… ange vilka attribut vi ska ha! Attributen för

    klassen
  63. 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” …
  64. Skapa ett objekt av klassen

  65. Titta närmre på skapande av objektet

  66. 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 ▪ …
  67. 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
  68. Ännu en metod

  69. 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 ▪ …
  70. VI TAR OCH TESTAR! =)

  71. None