Presentationer Slide 1/1

Kap 3.1

Vad är OOP?

Objektorienterad programmering organiserar kod runt objekt.

Mål

Efter lektionen ska du kunna...

  • förklara vad objektorienterad programmering är
  • skilja mellan klass och objekt
  • förklara attribut, metod och konstruktor
  • läsa ett enkelt klass-exempel i Python

Idén

Data och beteende tillsammans

Ett objekt kan ha data.

Ett objekt kan också ha metoder.

Då ligger information och funktionalitet på samma ställe.

Exempel

En bok som objekt

  • Titel: Project Hail Mary
  • Författare: Andy Weir
  • Metod: skriv ut bokens information

Klass

Klassen är mallen

pass måste bara vara med om klassen är tom.

class Bok:

Det här fungerar inte. Python väntar på kod efter kolon.

class Bok:
    pass

pass betyder: här kommer inget mer än.

Så fort klassen får en metod behövs inte pass.

Objekt

Objekt skapas från klassen

bok1 = Bok()
bok2 = Bok()

Bok är klassen.

bok1 och bok2 är två objekt.

En instans är ett konkret objekt som har skapats från en klass.

Konstruktor

__init__() ger startvärden

class Bok:
    def __init__(self, titel, forfattare):
        self.titel = titel
        self.forfattare = forfattare

Konstruktorn körs när ett nytt objekt skapas.

Attribut

Data som hör till objektet

self.titel = titel
self.forfattare = forfattare

self.titel sparas i objektet.

Varje bokobjekt får egna attributvärden.

Skapa objekt

Argument skickas in

bok1 = Bok("Project Hail Mary", "Andy Weir")
  • "Project Hail Mary" blir titel.
  • "Andy Weir" blir forfattare.
  • Värdena sparas i bok1.

Metod

En funktion i en klass

def skriv_ut_info(self):
    print(f"{self.titel} av {self.forfattare}")

Metoden använder objektets egna attribut.

Anrop

Kör metoden på ett objekt

bok1.skriv_ut_info()
Project Hail Mary av Andy Weir

Python använder attributen som finns i just bok1.

self

self betyder detta objekt

class Bok:
    def skriv_ut_info(self):
        print(self.titel)
bok1.skriv_ut_info()
bok2.skriv_ut_info()

Samma metod kan köras på olika objekt.

När metoden körs på bok1 betyder self bok1.

När metoden körs på bok2 betyder self bok2.

Hela exemplet

Klassen Bok

class Bok:
    def __init__(self, titel, forfattare):
        self.titel = titel
        self.forfattare = forfattare

    def skriv_ut_info(self):
        print(f"{self.titel} av {self.forfattare}")

bok1 = Bok("Project Hail Mary", "Andy Weir")
bok2 = Bok("Surely You're Joking, Mr. Feynman!", "Richard P. Feynman")

bok1.skriv_ut_info()
bok2.skriv_ut_info()

Utskrift

Vad skriver programmet?

Project Hail Mary av Andy Weir
Surely You're Joking, Mr. Feynman! av Richard P. Feynman

Samma klass används för två olika objekt.

Jämförelse

Funktion eller metod?

def skriv_hej():
    print("Hej")

En vanlig funktion står fritt, alltså utanför en klass.

class Bok:
    def skriv_ut_info(self):
        print("Information")

En metod är en funktion som ligger i en klass.

Alla metoder är funktioner, men alla funktioner är inte metoder.

Bara funktioner som hör till en klass eller ett objekt kallas metoder.

Begrepp

Orden du måste kunna

  • klass: mall för objekt
  • objekt: konkret sak som skapats från en klass
  • instans: ett annat ord för ett objekt som skapats från en klass
  • attribut: data i objektet
  • metod: funktion som hör till objektet
  • konstruktor: __init__()

Varför OOP?

När program växer

  • Data och funktioner hålls ihop.
  • Koden blir lättare att dela upp.
  • Samma klass kan skapa många objekt.
  • Det blir enklare att bygga vidare.

Öva

Tänk objekt

Klass: Elev

Attribut:
namn, klass, ålder

Metoder:
skriv_ut_info()
byt_klass(ny_klass)

Börja med att beskriva objektet innan du skriver Pythonkod.

Sammanfattning

Kom ihåg

  • En klass är en mall.
  • Ett objekt skapas från klassen.
  • Attribut är objektets data.
  • Metoder är objektets funktioner.
  • self betyder objektet som används just nu.