Junior
Nesne yönelimli programlamada kalıtım ve bileşim arasındaki farklar nelerdir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kalıtım:
- "-dır" (is-a) ilişkisi.
- Alt sınıf, üst sınıfın alanlarını ve metodlarını miras alır.
- Mevcut sınıfların özelleştirilmiş versiyonlarını oluşturmak için kullanılır.
- Sert hiyerarşilere ve çoklu kalıtım sorunlarına yol açabilir.
Bileşim:
- "-e sahip" (has-a) ilişkisi.
- Sınıf, diğer sınıfların örneklerini alanları olarak içerir.
- Görevlerin yerine getirilmesini içerik nesnelerine devreder.
- Esneklik sağlar ve bileşenlerin değiştirilmesine imkan tanır.
Java örneği:
// Kalıtım
class Vehicle { // Temel sınıf
void start() { /* ... */ }
}
class Car extends Vehicle { // Vehicle'dan kalıtım
// Car'a özgü metodlar
}
// Bileşim
class Engine { // Bileşen
void start() { /* ... */ }
}
class AnotherCar { // Bileşim kullanan sınıf
private Engine engine; // Engine örneği içerir
AnotherCar(Engine engine) {
this.engine = engine;
}
void start() {
engine.start(); // Devretme
}
}
Farklar tablo şeklinde gösterilebilir:
| Kriter | Kalıtım | Bileşim |
|---|---|---|
| İlişki | "-dır" (is-a) | "-e sahip" (has-a) |
| Sertlik | Daha sert | Daha esnek |
| Yeniden kullanım | Sınıf hiyerarşileri aracılığıyla | Nesne örnekleri aracılığıyla |
| Davranış değişikliği | Metodların üzerine yazılması | İçerik nesnelerinin değiştirilmesi |
| Uygulama | Uzmanlaştırma, fonksiyonelliğin genişletilmesi | Bileşenlerin birleştirilmesi, parçalardan oluşturulması |
Bileşim, çoğu durumda kalıtımdan daha üstün olup, daha fazla esneklik ve sınıflar arasındaki bağımlılığı azaltır.