OOP är ett programmeringsparadigm som organiserar kod runt objekt — instanser av klasser — istället för funktioner och procedurer. Målet är att modellera verklighetens entiteter och relationer på ett sätt som gör koden mer intuitiv, återanvändbar och underhållbar.


Varför OOP?

Innan OOP blev vanligt skrevs de flesta program med procedurell programmering — kod organiserades i funktioner som anropade varandra, och data låg ofta i globala strukturer. Detta fungerar bra för små program, men blir snabbt svårhanterligt när koden växer.

ProcedurelltObjektorienterat
Data och funktioner separeradeData och beteende samlade i objekt
Globalt tillståndVarje objekt hanterar sitt eget tillstånd
struct + fristående funktionerclass med metoder
Svårt att utöka utan att ändraLätt att utöka via arv och polymorfism

De fyra grundprinciperna

OOP bygger på fyra pelare som tillsammans möjliggör flexibel och underhållbar kod:

PrincipKärnidé
InkapslingDölj interna detaljer, exponera bara nödvändiga gränssnitt
ArvLåt en klass ärva egenskaper och beteenden från en annan
PolymorfismSamma gränssnitt, olika implementationer
AbstraktionFokusera på vad något gör, inte hur

Dessa principer är inte bara teoretiska — de är grunden för nästan alla designmönster och moderna ramverk.


Ett enkelt exempel

// En klass beskriver vad ett objekt är och kan göra
public class Bok {
    private String titel;
    private String forfattare;

    public Bok(String titel, String forfattare) {
        this.titel = titel;
        this.forfattare = forfattare;
    }

    public String beskrivning() {
        return titel + " av " + forfattare;
    }
}

// Objekt är konkreta instanser av klassen
Bok minBok = new Bok(
	"Harry Potter and the Philosopher's Stone", 
	"J. K. Rowling"
);
System.out.println(minBok.beskrivning()); // "Harry Potter and the Philosopher's Stone av J. K. Rowling"

Här ser vi inkapsling (private-fält, publik metod) och abstraktion (vi anropar beskrivning() utan att veta hur den implementeras internt).


OOP i olika språk

OOP-stödet varierar mellan språk men grundkoncepten är desamma:

SpråkKlasserArvInterface
Javaclassextends (enkelarv)interface / implements
TypeScriptclassextendsinterface / implements
PHPclassextendsinterface / implements
C# (.NET)class: (enkelarv)interface / :
Pythonclass(ParentClass) (flerarv)ABC / @abstractmethod
C++class: public Base (flerarv)Rena abstrakta klasser

När ska man använda OOP?

OOP passar bäst när du har:

  • System med tydliga entiteter (kund, order, produkt)
  • Komplexa relationer mellan objekt
  • Behov av återanvändbar och utbyggbar kod
  • Flera utvecklare som samarbetar

OOP är inte alltid rätt verktyg — enkla script och ren databearbetning blir ofta onödigt komplicerade med klasser och arv.


Fortsätt till Klasser och Objekt för att lära dig mer.

Av Victor Hernandez från Bytebase.se