12.4. Абстракция
~ 54 ~
Абстракция мураккаб масалани соддалаштириш жараёнидир. Муайян
масалани ечишга киришар экансиз, сиз барча деталларни ҳисобга олишга
ўринмайсиз, балки ечимни осонлаштирадиганларини танлаб оласиз.
Айтайлик, сиз йўл ҳаракати моделини тузишингиз керак. Шуниси аёнки,
бу ўринда
сиз светофорлар, машиналар, шосселар, бир томонлама ва икки
томонлама кўчалар, об-ҳаво шароитлари ва ҳ.к. синфларини яратасиз. Ушбу
элементларнинг ҳар бири транспорт ҳаракатига таъсир кўрсатади. Бироқ бу
ўринда ҳашаротлар ва қушлар хам йўлда пайдо бўлиши мумкин бўлса-да, сиз
уларнинг моделини яратмайсиз. Инчунин, сиз машиналар маркаларини ҳам
ажратиб кўрсатмайсиз. Сиз ҳақиқий оламни соддалаштирасиз ҳамда
унинг
фақат асосий элементларидан фойдаланасиз. Машина - моделнинг муҳим
детали, бироқ бу Кадиллакми ёки бошқа бирон маркадаги машинами, йўл
ҳаракати модели учун бу деталлар ортиқча.
Абстракциянинг иккита афзал жиҳати бор. Биринчидан, у масала
ечимини соддалаштиради. Муҳими яна шундаки, абстракция туфайли дастурий
таъминот компонентларидан такроран фойдаланиш мумкин. Такроран
қўлланадиган компонентларни яратишда улар одатда ғоят ихтисослашади.
Яъни компонентлар бирон-бир маълум масала ечимига мўлжаллангани, яна
улар кераксиз ўзаро боғлиқликда бўлгани сабабли дастур фрагментининг бошқа
бирон ўринда такроран қўлланиши қийинлашади. Имкони борича бир қатор
масалаларни ечишга қаратилган объектларни яратишга ҳаракат қилинг.
Абстракция битта масала ечимидан ушбу соҳадаги бошқа масалаларни ҳам
ечишда фойдаланиш имконини беради.
Иккита мисолни кўриб чиқамиз.
Биринчи мисол: банк кассирига навбатда
турган одамларни тасаввур
қилинг. Кассир бўшаганда, унинг дарчасига навбатда турган биринчи мижоз
яқинлашади. Шундай қилиб, навбатдаги ҳамма одам бирин-кетин кассир
дарчаси томон сурилади. Навбатда турганлар «биринчи келганга биринчи
бўлиб хизмат кўрсатилди» алгоритми бўйича сурилиб боради.
Иккинчи мисол: газакхонада гамбургерли конвейерни кўриб чиқайлик.
Навбатдаги янги гамбургер
конвейерга келиб тушганда, у гамбургерлар
қаторидаги охирги гамбургер ёнидан жой олади. Шунинг учун конвейердан
олинган гамбургер у ерда бошқаларидан кўпроқ вақт туриб қолган бўлади.
Ресторанлар «биринчи келганга биринчи бўлиб ҳизмат кўрсатилди» алгоритми
бўйича ишлайди.
Гарчи бу мисоллар буткул турлича бўлса-да, уларда қандайдир умумий
тамойил қўлланган бўлиб, ундан бошқа вазиятларда ҳам фойдаланиш мумкин.
Бошқача қилиб айтганда, сиз абстракцияга келасиз.
Бу мисолларнинг ҳар иккаласида ҳам «биринчи келганга биринчи бўлиб
ҳизмат кўрсатилди» алгоритми қўлланган. Бу ўринда навбат элементи нимани
билдириши муҳим эмас. Ҳақиқатда ушбу элемент
навбат охирига келиб
қўшилиши ҳамда навбатни унинг бошига етганда тарк этишигина муҳимдир.
Абстракция ёрдамида бир марта навбатни яратиб, кейинчалик уни бошқа