Javascript

OOP

Objektorienterad programmering (OOP) bygger på några grundläggande koncept. Här är de viktigaste, med enkla exempel för att visa hur de tillämpas i praktiken:


🔹 1. Klass och Instans

JavaScript (ES6):

class Hund {
  constructor(namn, ålder) {
    this.namn = namn;
    this.ålder = ålder;
  }
}

let minHund = new Hund("Fido", 3);
console.log(minHund.namn); // Fido

🔹 2. Inkapsling (Encapsulation)

JavaScript:

class Konto {
  #saldo; // privat variabel (ES2022+)

  constructor(saldo) {
    this.#saldo = saldo;
  }

  sättIn(belopp) {
    this.#saldo += belopp;
  }

  hämtaSaldo() {
    return this.#saldo;
  }
}

let konto = new Konto(100);
konto.sättIn(50);
console.log(konto.hämtaSaldo()); // 150

🔹 3. Abstraktion (Abstraction)

JavaScript (interface-liknande med abstrakta basklasser): Visa det som är intressant från klassen. Ett sätt att illustrera vår inkapsling.

class Djur {
  ljud() {
    throw new Error("Måste implementeras i subklass");
  }
}

class Hund extends Djur {
  ljud() {
    return "Voff!";
  }
}

let hund = new Hund();
console.log(hund.ljud()); // Voff!

🔹 4. Arv (Inheritance)

JavaScript: Super - Sub Parent - Child En abstrakt klass är en klass som du inte skall skapa en instans av.

class Djur {
  constructor(namn) {
    this.namn = namn;
  }

  info() {
    return `Jag heter ${this.namn}`;
  }
}

class Hund extends Djur {
  ljud() {
    return "Voff!";
  }
}

let hund = new Hund("Rex");
console.log(hund.info()); // Jag heter Rex
console.log(hund.ljud()); // Voff!

🔹 5. Polymorfism (Polymorphism)

JavaScript:

class Fågel {
  ljud() {
    return "Kvittra!";
  }
}

class Anka extends Fågel {
  ljud() {
    return "Kvack!";
  }
}

class Papegoja extends Fågel {
  ljud() {
    return "Hallå!";
  }
}

let fåglar = [new Anka(), new Papegoja(), new Fågel()];
fåglar.forEach(f => console.log(f.ljud()));
// Kvack!
// Hallå!
// Kvittra!

Sammanfattning:

  • Klass & Objekt – mall och instanser
  • Inkapsling – skydda data
  • Abstraktion – visa bara viktiga delar
  • Arv – återanvändning av kod
  • Polymorfism – samma metod, olika beteenden