Objektorienterad programmering (OOP) är en programmeringsstil där man modellerar sin kod efter verkliga objekt. Istället för att ha en lång rad funktioner och variabler som hanterar olika saker, skapar man klasser som representerar begrepp (t.ex. en bil, en användare eller ett djur). Dessa klasser innehåller data (attribut) och funktioner (metoder) som hör till just det objektet.

Nyckelbegrepp

BegreppFörklaring
KlassEn mall för att skapa objekt. Innehåller attribut och metoder.
ObjektEn instans (kopiering) av en klass.
AttributVariabler som hör till objektet.
MetodFunktioner som hör till objektet.
__init__En speciell metod som körs när objektet skapas (kallas ”konstruktorn”).
selfReferens till det aktuella objektet (måste alltid vara första argumentet i metoder).

Exempel: En enkel klass i Python

class Dog:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def bark(self):
        print(f"{self.name} säger voff!")

# Skapa objekt
my_dog = Dog("Fido", 3)

# Använd metoder och attribut
print(my_dog.name)        # Skriver ut: Fido
print(my_dog.age)         # Skriver ut: 3
my_dog.bark()             # Skriver ut: Fido säger voff!

Formatsträngar med f (f-strings)

Innan vi går vidare med fler exempel på klasser och objekt, är det viktigt att känna till ett smartare sätt att skriva ut text och variabler i Python: f-strängar (formatsträngar). Det används ofta i objektorienterad programmering för att skriva ut objektdata snyggt och tydligt.

Exempel:

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

student1 = Student("Ali", 17)
print(f"{student1.name} är {student1.age} år gammal.")

Vad är en f-sträng?

  • En f-sträng är en sträng som börjar med bokstaven f.
  • Inuti {} kan du skriva Python-kod, t.ex. variabler, uträkningar, metodanrop.

Jämförelse:

# Med kommatecken (användes tidigare)
print(student1.name, "är", student1.age, "år gammal.")

# Med plustecken
print(student1.name + " är " + str(student1.age) + " år gammal.")

# Med f-sträng
print(f"{student1.name} är {student1.age} år gammal.")

Fördelar med f-strängar:

  • Tydligare och lättare att läsa.
  • Fungerar med alla typer av variabler och uttryck.
  • Perfekt vid utskrifter av objekt i OOP.

Varför OOP?

Objektorienterad programmering gör det enklare att:

  • strukturera kod i större projekt
  • återanvänd kod (t.ex. genom arv)
  • hålla ordning på tillstånd (variabler) för olika delar av programmet
  • jobba med modellering som liknar verkligheten