12. Объектга йўналтирилган дастурлаш ва унинг тамойиллари
~ 61 ~
Биринчи синф ўзида иккинчи синфнинг экземплярига эга бўлгандагина
иккита синф ўзаро «Хaс-a» муносабатида турибди деб ҳисобланади.
Айтайлик, Caнинe (Итларники) базавий синфи мавжуд. У ҳолда ит
итники бўлади (A дoг ис a caнинe). Шунинг учун Дoг синфи Caнинe синфининг
ҳосиласи бўлмоғи керак. Шунинг билан бирга итнинг думи (Тaил) бор (A дoг
хaс a тaил). Шунинг учун Тaил синфининг экземпляри (нушаси)ни, масалан,
Caнинe га киритиб қўйиш керак. Ушбу бироз биологик мисолдан кўриниб
турганидек, «Иa-a» муносабати синфларнинг табақаланишида намоён бўлади.
Синфлар орасидаги «Хaс-a» муносабати
эса шунга олиб келадики, бир синф
иккинчисида мавжуд бўлади.
Бошқа синфга ворислик бўлаётган синф ворис бераётган синф билан
шундай муносабатда бўлмоғи лозимки, бунда натижавий муносабатлар ўз
маъносига эга бўлмоғи, яъни ворислик табақаланишига амал қилиниши керак.
Ворислик - синфлар ўртасида «Ис-a» муносабатларини ўрнатиш
имконини берадиган механизм. Ворислик синф ўз аждоди бўлган синфдан
ҳусусиятлар ва ҳулқ-атворни ворис қилиб олаётганида, у шунингдек ўз аждоди
бўлган синф эҳтимол бошқа синфлардан ворис қилиб
олган хусусиятлар ва
хулқ-атворга ҳам эга бўлади.
Ворислик табақаланиши қандайдир маъно касб этиши учун аждодлар
устидан қандай амаллар бажарилган бўлса, авлодлар устидан ҳам шундай
амаллар бажарилиш имконияти бўлиши лозим. Бу «Ис-a» тести ёрдамида
текширилади. Ворислик синфга функцияларни кенгайтириш ва янгиларини
қўшиш учун рухсат берилади. Аммо унга функцияларни чиқариб ташлашга
рухсат йўқ.
Ворислик ёрдамида қурилган синф методлар ва ҳусусиятларнинг учта
кўринишига эга бўлиши мумкин:
- Ўрнига ўрин қўйиш (алмаштириш): янги
синф аждодларининг методи
ёки ҳусусиятини шунчаки ўзлаштириб олмайди, балки унга янги таъриф ҳам
беради;
- Янги: янги синф бутунлай янги методлар ёки ҳусусиятларни қўшади;
- Рекурсив: янги синф ўз аждодлари методлари ёки ҳусусиятларини
тўғридан-тўғри олиб қўя қолади.
Объектга мўлжаллангантилларнинг кўпчилиги таърифни маълумот
ўзатилган объектдан қидирадилар. Агар у ердан таъриф топишнинг иложи
бўлмаса, бирон таъриф топилмагунча, қидирув табақалар бўйича юқорига
кўтарилаверади. Маълумотни бошқариш айнан
шундай амалга оширилади
ҳамда айнан шу туфайли ўринга ўрин қўйиш жараёни иш кўрсатади.
Ворис синфлар ҳимояланган кириш даражасига эга бўлган методлар ва
ҳусусиятларга кириш хуқуқини олишлари мумкин. Базавий синфда фақат
авлодлар фойдаланиши мумкинлиги аниқ бўлган методларгагина ҳимояланган
кириш даражасини беринг. Бошқа ҳолларда хусусий ёки оммавий кириш
даражасидан фойдаланиш лозим. Бундай ёндошув барча синфларга, шу
12.6. Полиморфизм
~ 62 ~
жумладан, тармоқ синфларга ҳам кириш ҳуқуқи берилганидан кўра,
мустаҳкамроқ конструкцияни яратиш имконини беради.
Ворислик турлари
Ворислик уч асосий ҳолларда қўлланади:
1. Кўп марталаб фойдаланишда;
2. Ажралиб туриш учун;
3. Турларни алмаштириш учун.
Ворисликнинг айрим турларидан фойдаланиш бошқаларидан кўра
афзалроқ ҳисобланади. Ворислик янги синфга эски синфнинг амалда
қўлланишидан кўп марталаб фойдаланиш имконини беради. Кодни қирқиб
ташлаш ёки киритиш ўрнига, ворислик кодга автоматик тарзда киришни
таъминлайди,
яъни кодга киришда, у янги синфнинг бир қисмидек олиб
қаралади. Кўп марталаб қўллаш учун ворисликдан фойдаланар экансиз, сиз
ворис қилиб олинган реализация (жорий қилиниш) билан боғлиқ бўласиз.
Ворисликнинг бу турини эҳтиёткорлик билан қўллаш лозим. Яхшиси бу ўринда
«Хaс-a» муносабатидан фойдаланиш керак.
Фарқлаш учун ворислик фақат авлод-синф ва аждод-синф ўртасидаги
фарқларни дастурлаш имконини беради. Фарқларни дастурлаш ғоят қудратли
воситадир. Кодлаш ҳажмининг кичиклиги ва коднинг осон бошқарилиши
лойиҳа ишланмасини осонлаштиради. Бу ҳолда код сатрларини камроқ ёзишга
тўғри келадики, бу қўшиладиган ҳатолар миқдорини ҳам камайтиради.
Алмаштириш имконияти - ОМЁ да муҳим тушунчалардан бири.
Ворислик синфга унинг аждоди бўлмиш синфга юбориладиган хабарларни
юбориш мумкин бўлгани учун, уларнинг ҳар иккаласига бир хил муносабатда
бўлиш мумкин. Айнан шунинг учун ворислик синфни яратишда ҳулқ-атворни
чиқариб ташлаш мумкин эмас. Алмаштириш имкониятини қўллаб, дастурга ҳар
қандай тармоқ турларни қўшиш мумкин. Агар дастурда аждод қўлланган бўлса,
бу ҳолда у янги объектлардан қандай фойдаланишни билади.
Do'stlaringiz bilan baham: