Menu
Coddy logo textTech

Relacja „ma” a relacja „jest”

Część sekcji Programowanie obiektowe ścieżki JavaScript w Coddy. Lekcja 47 z 56.

W programowaniu obiektowym istnieją dwa główne rodzaje relacji między obiektami: „ma” (kompozycja) i „jest” (dziedziczenie). Dziedziczenie tworzy hierarchie rodzic-dziecko, natomiast kompozycja buduje obiekty przez łączenie mniejszych, wyspecjalizowanych komponentów.

Najpierw zrozummy relację „jest rodzajem” poprzez dziedziczenie:

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

// Dog "is-a" Animal - relacja dziedziczenia
class Dog extends Animal {
  bark() {
    console.log(`${this.name} says woof!`);
  }
}

Teraz przyjrzyjmy się relacji „ma” poprzez kompozycję:

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

// Car "has-a" Engine — relacja kompozycji
class Car {
  constructor() {
    this.engine = new Engine(); // Kompozycja
  }
  
  startCar() {
    this.engine.start();
    console.log("Car is running");
  }
}

Kluczowa różnica:

  • „jest” (dziedziczenie): Pies JEST zwierzęciem
  • „ma” (kompozycja): Samochód MA silnik
challenge icon

Wyzwanie

Masz podane klasy komponentów (Processor, Memory) oraz większość klasy Computer. Twoje zadanie to uzupełnić konstruktor w pliku computer.js:

  1. Utwórz właściwość processor przy użyciu klasy Processor
  2. Utwórz właściwość memory przy użyciu klasy Memory
  3. Przekaż processorSpeed do konstruktora klasy Processor, a memorySize do konstruktora klasy Memory

Spróbuj swoich sił

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

const myComputer = new Computer(3.5, 16);
myComputer.start();
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator JavaScript online