Menu
Coddy logo textTech

"has-a" ve "is-a" İlişkisi

Coddy'nin JavaScript Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 47 / 56.

Nesne yönelimli programlamada, nesneler arasında iki ana ilişki türü vardır: "has-a" (kompozisyon) ve "is-a" (kalıtım). Kalıtım ebeveyn-çocuk hiyerarşileri oluştururken, kompozisyon daha küçük, odaklanmış bileşenleri birleştirerek nesneler inşa eder.

Öncelikle kalıtım yoluyla "is-a" ilişkisini anlayalım:

class Animal {
  constructor(name) {
    this.name = name;
  }
  
  eat() {
    console.log(`${this.name} is eating.`);
  }
}

// Dog "is-a" Animal - kalıtım ilişkisi
class Dog extends Animal {
  bark() {
    console.log(`${this.name} says woof!`);
  }
}

Şimdi kompozisyon (composition) yoluyla "has-a" (sahip olma) ilişkisine bakalım:

class Engine {
  start() {
    console.log("Engine started");
  }
}

// Araba bir Motora "sahiptir" (has-a) - kompozisyon ilişkisi
class Car {
  constructor() {
    this.engine = new Engine(); // Kompozisyon
  }
  
  startCar() {
    this.engine.start();
    console.log("Car is running");
  }
}

Temel fark:

  • "is-a" (kalıtım): Bir Köpek bir Hayvandır
  • "has-a" (kompozisyon): Bir Arabanın bir Motoru vardır
challenge icon

Görev

Size bileşen sınıfları (Processor, Memory) ve Computer sınıfının çoğu verilmiştir. Göreviniz computer.js dosyasındaki constructor'ı tamamlamaktır:

  1. Processor sınıfını kullanarak bir processor özelliği oluşturun
  2. Memory sınıfını kullanarak bir memory özelliği oluşturun
  3. processorSpeed değerini Processor constructor'ına ve memorySize değerini Memory constructor'ına geçirin

Kendin dene

import { Computer } from './computer.js';

const myComputer = new Computer(3.5, 16);
myComputer.start();
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler