Объектке багытталган программалоодо мурас алуу менен компоненттерди киргизүүнүн негизги айырмачылыктары эмне?
sobes.tech AI
AIден жооп
Объектке багытталган программалоодо мурас жана компоненттерди киргизүү (композиция) ортосундагы негизги айырмачылыктар:
-
Мурас — бул бир класс (подкласс) башка класс (ата-эне класс) өзгөчөлүктөрү жана ыкмаларын алган механизм. Бул иерархияларды түзүүгө жана кодду кайра колдонууга мүмкүндүк берет. Бирок, мурас класстар ортосунда күчтүү байланыш түзүп, катуу структурага алып келиши мүмкүн.
-
Компоненттерди киргизүү (композиция) — бул объект башка объекттерге шилтемелерди камтып, алардын функционалдуулугун колдонушу. Мурас ордуна, объект милдеттерди компоненттерге тапшырган. Бул көбүрөөк ийкемдүү ыкма, ал иштөө учурунда жүрүм-турумду өзгөртүүгө жана байланыштарды азайтууга мүмкүндүк берет.
Мисал:
// Мурас (Goдо инклюзия аркылуу ишке ашырылат)
type Animal struct {
Name string
}
func (a Animal) Speak() string {
return "..."
}
type Dog struct {
Animal // инклюзия
}
func (d Dog) Speak() string {
return "Ха!"
}
// Композиция
ntype Speaker interface {
Speak() string
}
type Dog struct {
speaker Speaker
}
func (d Dog) Speak() string {
return d.speaker.Speak()
}
Жыйынтыктап айтканда, мурас "бар" (is-a) мамилелерин билдирүү үчүн ылайыктуу, ал эми композиция "бар" (has-a) мамилелерин билдирүү үчүн колдонулат жана көбүрөөк ийкемдүүлүк жана модулдуулук камсыздайт.