Obyekt yönümlü proqramlaşdırmada irsiyyət və komponentlərin injeksiyası arasında əsas fərqlər nələrdir?
sobes.tech Süni İntellekt
AI-dan cavab
Obyekt yönümlü proqramlaşdırmada irsiyyət və komponentlərin inteqrasiyası (kompozisiya) arasındakı əsas fərqlər:
-
İrsiyyət — bu, bir sinifin (alt sinif) başqa bir sinifin (üst sinif) xüsusiyyətlərini və metodlarını əldə etdiyi mexanizmdir. Hierarxiyalar yaratmağa və kodu təkrar istifadə etməyə imkan verir. Ancaq, irsiyyət siniflər arasında güclü əlaqə yaradır və sərt struktura səbəb ola bilər.
-
Komponentlərin inteqrasiyası (kompozisiya) — bu, obyektin digər obyektlərə istinadlar saxladığı və onların funksionallığından istifadə etdiyi vəziyyətdir. Davranışı irsiyyət etmək əvəzinə, obyekt tapşırıqları komponentlərə həvalə edir. Bu, daha çevik yanaşmadır, davranışı işləmə vaxtında dəyişdirməyə və əlaqəliliyi azaltmağa imkan verir.
Nümunə:
// İrsiyyət (Go-da gömme vasitəsilə həyata keçirilir)
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
type Dog struct {
Animal // gömme
}
func (d Dog) Speak() string {
return "Hav!"
}
// Kompozisiya
ntype Speaker interface {
Speak() string
}
type Dog struct {
speaker Speaker
}
func (d Dog) Speak() string {
return d.speaker.Speak()
}
Xülasə, irsiyyət "bir şeydir" (is-a) münasibətini ifadə etmək üçün daha uyğundur, kompozisiya isə "sahibdir" (has-a) münasibətləri üçün istifadə olunur və daha çox çeviklik və modullluq təmin edir.