Menu
CoddyTech

Konsep "has-a" vs. "is-a"

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan JavaScript di Coddy. Pelajaran 47 dari 56.

Dalam pemrograman berorientasi object, ada dua jenis hubungan utama antara object: "has-a" (komposisi) dan "is-a" (pewarisan). Pewarisan membentuk hierarki induk-anak, sedangkan komposisi membangun object dengan menggabungkan komponen yang lebih kecil dan terfokus.

Mari kita pahami dulu hubungan "is-a" melalui pewarisan:

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

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

Sekarang mari kita lihat hubungan "has-a" melalui komposisi:

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

// Car "has-a" Engine, hubungan komposisi
class Car {
  constructor() {
    this.engine = new Engine(); // Komposisi
  }
  
  startCar() {
    this.engine.start();
    console.log("Car is running");
  }
}

Perbedaan utamanya:

  • "is-a" (pewarisan): Anjing ADALAH Hewan
  • "has-a" (komposisi): Mobil MEMILIKI Mesin
challenge icon

Tantangan

Kamu diberi class komponen (Processor, Memory) dan sebagian besar class Computer. Tugasmu adalah melengkapi constructor di file computer.js:

  1. Buat property processor menggunakan class Processor
  2. Buat property memory menggunakan class Memory
  3. Teruskan processorSpeed ke constructor Processor dan memorySize ke constructor Memory

Coba sendiri

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

const myComputer = new Computer(3.5, 16);
myComputer.start();
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler JavaScript online