"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
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:
Processorsınıfını kullanarak birprocessorözelliği oluşturunMemorysınıfını kullanarak birmemoryözelliği oluşturun- processorSpeed değerini Processor constructor'ına ve memorySize değerini Memory constructor'ına geçirin
Kopya kağıdı
Nesne yönelimli programlamada, nesneler arasında iki ana ilişki türü vardır:
- "is-a" ilişkisi (kalıtım): Bir alt sınıfın bir üst sınıfı genişlettiği ebeveyn-çocuk hiyerarşileri oluşturur
- "has-a" ilişkisi (kompozisyon): Daha küçük, odaklanmış bileşenleri birleştirerek nesneler oluşturur
Kalıtım örneği ("is-a"):
class Animal {
constructor(name) {
this.name = name;
}
eat() {
console.log(`${this.name} is eating.`);
}
}
// Dog "is-a" Animal'dır
class Dog extends Animal {
bark() {
console.log(`${this.name} says woof!`);
}
}Kompozisyon örneği ("has-a"):
class Engine {
start() {
console.log("Engine started");
}
}
// Car "has-a" Engine'dir
class Car {
constructor() {
this.engine = new Engine(); // Kompozisyon
}
startCar() {
this.engine.start();
console.log("Car is running");
}
}Kendin dene
import { Computer } from './computer.js';
const myComputer = new Computer(3.5, 16);
myComputer.start();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
1Nesneler ve this Anahtar Kelimesi
Hızlı Tekrar: NesnelerNesnelere Metot Eklemethis Anahtar Kelimesini AnlamakYapıcı Fonksiyonlarnew Anahtar KelimesiGenel Tekrar Uygulaması7Kalıtım ve extends Anahtar Kelimesi
Kalıtım"is-a" İlişkisiextends Anahtar Kelimesisuper() MetoduÖzellikleri ve Metotları DevralmaÖzet Meydan Okuması2Kodu Düzenleme
Modüller Nedir?export ile Dışa Aktarmaimport ile İçe AktarmaVarsayılan ve Adlandırılmış Dışa Aktarmalar8OOP Kodunu Düzenleme
Sınıfları Modüller Halinde Düzenleme6Proje: Basit Bir Banka Hesabı
BankAccount SınıfıPara Yatırma ve Para Çekme9Statik Metotlar ve Özellikler
Sınıf Düzeyi ve Örnek DüzeyiStatik ÖzelliklerStatik Yardımcı MetotlarÖzet Meydan Okuma12Getter ve Setter'lar
get ve set Anahtar KelimeleriHesaplanmış ÖzelliklerDoğrulama ve Yan EtkilerÖzet Meydan Okuması15Final Meydan Okumaları
Oyun Karakteri OluşturucuE-ticaret Ürün SistemiÜniversite Yönetim SistemiAkıllı Ev Cihaz Sistemi