Sobes.tech
Junior — Middle

Объектке багытталган программалоодо мурас алуу менен компоненттерди киргизүүнүн негизги айырмачылыктары эмне?

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) мамилелерин билдирүү үчүн колдонулат жана көбүрөөк ийкемдүүлүк жана модулдуулук камсыздайт.