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