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
Tantangan
Kamu diberi class komponen (Processor, Memory) dan sebagian besar class Computer. Tugasmu adalah melengkapi constructor di file computer.js:
- Buat property
processormenggunakan classProcessor - Buat property
memorymenggunakan classMemory - 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();Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Object dan Kata Kunci this
Tinjauan Singkat: objectMenambahkan method ke objectMemahami Kata Kunci thisFungsi KonstruktorKata Kunci newTantangan Rangkuman7Pewarisan & Kata Kunci extends
PewarisanHubungan "is-a"Kata Kunci extendsmethod super()Mewarisi property & methodTantangan Rangkuman2Mengatur Kode
Apa itu module?Mengekspor dengan exportMengimpor dengan importEkspor default vs. ekspor bernama8Mengatur Kode OOP
Mengatur class ke dalam module11Proyek: Perender Bentuk
Penyiapan: class Shape & EksporPewarisan class CircleOverride & Method LuasPenghitung Shape Statis14Sistem Manajemen Perpustakaan
Merancang PerpustakaanClass Book dengan CompositionValidasi Penulis Buku9Method dan property Statis
Level class vs. level instanceProperty StatisMethod Utilitas StatisTantangan RangkumanLatihan sendiri: Compiler JavaScript online