12.4. Абстракция
~ 58 ~
Агар иккита объект бир ҳил
вазифани бажарса, демак масъулият
тегишлича тақсимланмаган бўлади. Дастурда ортиқча мантиқий схемалар
мавжуд бўлса, уни қайта ишлаш лозим бўлади.
Ҳаётда бўлганидек, билимлар ва масъулият ишни қандай қилиб яхши
бажариш мумкинлигини билган кишига ваколат қилиниши керак. Битта
объектга битта (ҳар ҳолда кам миқдордаги) вазифа
учун масъулиятни юклаш
лозим. Агар битта объектга кўп миқдордаги вазифалар устидан масъулият
юклатиб қўйилган бўлса, уларни бажариш мураккаблашади, объектни кузатиб
бориш ва такомиллаштириш ҳам қийинлашади. Масъулиятни ўзгартириш ҳам
ҳавфли, чунки бунда, агар объект бир неча хулқ-атвор линияларига эга бўлса,
уларни ҳам ўзгартиришга тўғри келади. Натижада жуда катта миқдордаги
ахборот бир ерга жамланиб қолади, уни эса тенг тақсимлаш лозим. Объект
жуда катталашиб кетган ҳолларда, у амалда мустақил дастурга айланади ҳамда
процедурали дастурлаш афзалликларидан фойдаланиш билан бирга унинг
барча тузоқларига ҳам илиниб қолиши мумкин бўлади.
Натижада сиз
инкапсуляциялаш умуман қўлланмаган дастурда юзага келадиган
барча
муаммоларга дуч келиб қоласиз.
Объект бир-иккитадан ортиқ вазифа учун масъул эканини аниқлагач,
масъулиятнинг бир қисмини бошқа объектга олиб ўтиш керак.
Жорий eтишнинг беркитилганлиги - самарали инкапсуляциялаш
йўлидаги қадамлардан бири холос. Масъулиятни тегишли равишда
тақсимламай, натижада сиз процедуралар рўйхатига эга бўлиб қоласиз холос.
Самарали
инкапсуляциялаш=абстракция+жорий
қилишнинг
беркитилганлиги+масъулият.
Абстракцияни
олиб ташлаб, дастурдан такроран фойдаланиб бўлмайди.
Жорий қилишнинг беркитилганлигини олиб ташлаб сиз кучли боғланган
дастурга эга бўласиз. Ниҳоят, масъулиятни олиб ташлаш натижасида эса сиз
процедурали, маълумотлар ишловига мўлжалланган, марказлашмаган кучли
боғланган дастурга эга бўласиз.
Инкапсуляциялаш: намунавий ҳатолар
Абстракцияни ўта даражада қўллаш синфни ёзишда маълум муаммоларни
келтириб чиқариши мумкин. Барча фойдаланувчиларга ҳамда барча
вазиятларда бирдек тўғри келадиган синфни ёзиш мумкин эмас.
Ҳаддан ташқари абстакциялаш ҳам ҳавфли бўлиши мумкин. Ҳатто агар
сиз бирон-бир элементнинг ишлаб чиқилишида абстракциядан фойдаланган
бўлсангиз, у шу бир элементда ҳам барча вазиятларда ишлай олмаслиги
мумкин. Фойдаланувчининг барча эҳтиёжларини қондира оладиган синфни
яратиш жуда қийин. Абстракцияга ўралашиб қолиш керак эмас, биринчи галда
қўйилган масалани ечиш керак.
Синфга масалани ечиш учун керак бўлганидан кўпроқ нарсани киритиш
тавсия қилинмайди. Бирданига
барча масалаларни ечманг, эътиборингизни