Мурас жана Курам
Мурас жана Курам OOP (Объектке багытталган программалоо) ичинде табылган эки маанилүү түшүнүк. Жөнөкөй сөз менен айтканда, Композиция да, Мурас да класска кошумча касиеттерди же жүрүм-турумду камсыз кылуу менен алектенет. Мурас - бул класстын ата-энелик класстын касиеттерин жана жүрүм-турумун кеңейтүү аркылуу мурастоо мүмкүнчүлүгү. Башка жагынан алганда, Композиция класстын ар кандай класстардагы объекттерди мүчө дайындары катары камтышы мүмкүн.
Мурас деген эмне?
Жогоруда айтылгандай, Мурас - бул класстын ата-энелик класстын касиеттерин жана жүрүм-турумун кеңейтүү аркылуу мурастоо мүмкүнчүлүгү. Мурас, негизинен, жаңы аныкталган класс менен болгон класстын касиеттерин жана жүрүм-турумун кеңейтүүгө мүмкүндүк берүү менен кодду кайра колдонууну камсыз кылат. Эгерде А классы В кеңейтилсе, анда В классы ата-эне класс (же супер класс) жана А классы бала класс (же туунду класс/суб класс) деп аталат. Бул мисал сценарийинде А классы супер класстын (B) бардык ачык жана корголгон атрибуттарын жана ыкмаларын мурастайт. Кошумча класс башкы класстан мураска калган жүрүм-турумду ыктыярдуу түрдө жокко чыгара алат (усулдарга жаңы же кеңейтилген функцияларды берет).
Мурас OOPдеги "болгон-а" мамилесин билдирет. Бул негизинен А дагы В экенин билдирет. Башкача айтканда, В белгилүү бир реалдуу дүйнөнүн объектинин жалпы сыпаттамасы бар класс болушу мүмкүн, бирок А белгилүү бир адистикти көрсөтөт. Чыныгы дүйнөлүк программалоо маселесинде Person классы Кызматкер классын түзүү үчүн кеңейтилиши мүмкүн. Бул адистештирүү деп аталат. Бирок сиз адегенде Кызматкер классын түзүп, андан кийин аны Person классына жалпылай аласыз (б.а.д. жалпылоо). Бул мисалда Кызматкер Адамдын бардык касиеттерине жана жүрүм-турумуна ээ болот (б.а. Кызматкер дагы Жеке адам) жана ошондой эле кээ бир кошумча функцияларды камтышы мүмкүн (андыктан, Адам Кызматкер эмес).
Композиция деген эмне?
Композиция – класстын ар кандай класстардагы объекттерди мүчө маалыматтары катары камтышы. Мисалы, А классы В классынын объектисин мүчө катары камтышы мүмкүн. Бул жерде В-де аныкталган бардык жалпы методдор (же функциялар) А классынын ичинде аткарылышы мүмкүн. А классы контейнерге, ал эми В классы камтылган класска айланат. Курамы контейнердик деп да аталат. Бул мисалда А классы В классынан турат деп айтууга болот. OOPдо Композиция “бар-а” байланышын билдирет. Белгилей кетчү нерсе, контейнер камтылган класстын бардык жалпы ыкмаларын аткарууга мүмкүнчүлүгү бар болсо да, ал өзгөртүүгө же кошумча функцияларды бере албайт. Чыныгы дүйнөдөгү программалоо маселесине келгенде, TextBox классынын объекти Form классында камтылышы мүмкүн, ошондуктан Форма TextBox (же болбосо, Форма TextBoxтан турат) камтыйт деп айтууга болот.
Мурас жана составдын ортосунда кандай айырма бар?
Мурас жана состав эки OOP түшүнүгү болгону менен, алар программистке жетишүүгө мүмкүндүк берген нерселерде такыр башкача. Мурас - класстын негизги класстын касиеттерин жана жүрүм-турумун кеңейтүү жолу менен мурастоо жөндөмү, ал эми Композиция класстын мүчө маалыматтары катары ар кандай класстардын объекттерин камтышы. Эгерде класс кеңейтилсе, ал бардык жалпыга ачык жана корголгон касиеттерди/ жүрүм-турумду мурастайт жана ал жүрүм-турум субкласс тарабынан жокко чыгарылышы мүмкүн. Бирок класс башкасында камтылган болсо, контейнер камтылганга жүрүм-турумду өзгөртүү же кошуу мүмкүнчүлүгүн албайт. Мурастык OOPдеги "болгон-а" мамилесин, ал эми Курамы "бар-а" мамилесин билдирет.