OOP билети - 12. Структурата на OOP подхода (програмиране)

Топологията на обектните и обектно-ориентираните езици.Значението на абстрактните типове данни при решаването на проблема със сложността на системата е добре изразено от Шанкар: „Абстракцията, постигната чрез използването на процедури, е много подходяща за описание на абстрактни действия, но не е подходяща за описване на абстрактни обекти. Това е сериозен недостатък, тъй като в много практически ситуации сложността на обектите, върху които трябва да се работи, съставлява основната част от сложността на цялата задача."

Това осъзнаване води до два важни извода. Първо, има техники за проектиране на потоци от данни, които въвеждат ред в абстракцията на данни в ориентирани към алгоритми езици. Второ, има теория на типовете, която е въплътена в езици като Pascal.

На фиг. 2-4 показва топологията на такива езици във връзка с проблеми с ниска и средна сложност. Основният елемент на конструкцията в тези езици е модул, съставен от логически свързани класове и обекти, а не подпрограма, както в езиците от първо поколение.

данни

Ориз. 2-3. Топология на езиците от края на третото поколение.

С други думи: "Ако процедурите и функциите са глаголи, а данните са съществителни, тогава процедурните програми са изградени от глаголи, а обектно-ориентираните програми са изградени от съществителни." По същата причина структурата на програми с ниска и средна сложност в обектно-ориентирания подход е представена от графика, а не от дърво, както в случая с алгоритмичните езици. В допълнение, глобалната област с данни е намалена или липсва. Данните и действията вече са организирани по такъв начин, че основните логически градивни елементи на нашите системи са класове и обекти, а не алгоритми.

Основи на обектния модел

МетодиСтруктурният дизайн помага за опростяване на процеса на разработване на сложни системи чрез използване на алгоритми като готови градивни елементи. По подобен начин техниките за обектно-ориентирано проектиране са предназначени да помогнат на разработчиците да използват мощните изразни средства на обектно-ориентираното и обектно-ориентираното програмиране, което използва класове и обекти като градивни елементи.

Но обектният модел отразява и много други фактори. Както е показано в полето по-долу, обектният подход се е доказал като обединяваща идея в цялата компютърна наука, приложима не само към програмирането, но и към дизайна на потребителския интерфейс, дизайна на бази данни и дори компютърната архитектура. Причината за тази широта е, че обектната ориентация ни позволява да се справяме със сложността на системи от много различно естество.

билети

Ориз. 2-4. Топология на малки и средни приложения в обектни и обектно-ориентирани езици.

За повече информация относно ООП вижте въпроси 1 и 2!

Обектно-ориентиран дизайн.Програмирането включва преди всичко правилното и ефективно използване на механизмите на специфични езици за програмиране. Дизайнът, напротив, се фокусира върху правилното и ефективно структуриране на сложни системи. Ние дефинираме обектно-ориентирания дизайн, както следва:

Обектно-ориентираният дизайн е методология на проектиране, която съчетава процеса на декомпозиция на обекти и техники за представяне на логически и физически, както и статични и динамични модели на системата, която се проектира.

Това определение съдържа две важни части: обектно-ориентиран дизайн 1) се основава на обектно-ориентиранразлагане; 2) използва различни техники за представяне на модели, които отразяват логическата (класове и обекти) и физическата (модули и процеси) структура на системата, както и нейните статични и динамични аспекти.

подхода

Това е обектно-ориентираното разлагане, което отличава обектно-ориентирания дизайн от структурния дизайн; в първия случай логическата структура на системата се отразява от абстракции под формата на класове и обекти, във втория - от алгоритми. От време на време ще използваме акронима OOD, обектно-ориентиран дизайн, за да обозначим метода на обектно-ориентирано проектиране, описан в тази книга.

За какво е обектно-ориентираното програмиране?

Развитието на обектно-ориентирания метод се дължи на ограниченията на други методи за програмиране, разработени по-рано.

НедостатъциСтруктурно програмиране

В протичащия процес на растеж и усложняване на програмите постепенно започнаха да излизат наяве недостатъците на структурния подход към програмирането. Може би сте чували „ужасни истории“ за това как протича работата по софтуерен проект или дори сами сте участвали в създаването на такъв проект: задачата се оказва по-трудна, отколкото изглеждаше, сроковете на проекта се отлагат. Все повече програмисти се включват в работата, което увеличава драстично разходите. Краят на работата отново се отлага и в резултат на това проектът се срива.

След като анализираме причините за такава тъжна съдба на много проекти, можем да стигнем до извода, че силата на структурираното програмиране е недостатъчна: без значение колко ефективно се прилага структурният подход, той не позволява достатъчно опростяване на големи сложни програми.

Какъв е недостатъкът на процедурно ориентираните езици? Има два основни проблема.Първият е неограниченият достъп на функции до глобални данни. Второто е, че разделянето на данни и функции, което е в основата на структурния подход, не отразява добре картината на реалния свят.

билети

Фиг. 1.1. Глобални и локални променливи

програмиране

Фиг. 1.2. Процедурен подход

Голям брой връзки между функции и данни от своя страна пораждат няколко проблема. Първо, структурата на програмата става по-сложна. Второ, става трудно да се правят промени в програмата.

Симулация на реалния свят

Вторият, по-важен проблем с процедурния подход е, че отделянето на данни от функции е от малка полза за показване на картина на реалния свят. В реалния свят трябва да имаме работа с физически обекти, като хора или коли. Тези обекти не могат да бъдат приписани нито на данни, нито на функции, тъй като реалните неща са колекция отсвойстваиповедения.

Примери за свойства (понякога наричани характеристики) за хората са цвят на очите или работно място; за леки автомобили - мощност на двигателя и брой врати.

Поведението е определена реакция на обект в отговор на външно въздействие. Например вашият шеф може да отговори с да или не на искане за повишение на заплатата. Ако натиснете спирачките на колата, тя ще спре.

По този начин нито отделните данни, нито отделните функции са в състояние да представят адекватно обектите на реалния свят.

Основната идея на обектно-ориентирания подход е да се комбиниратданниидействия, извършени върху тези данни,в едно цяло, което се наричаобект.

Обектните функции обикновено са предвидениза достъп до обектни данни. Ако трябва да прочетете каквито и да било обектни данни, трябва да извикате подходящия метод, който ще извърши четенето и ще върне необходимата стойност. Не е възможен директен достъп до данните. Данните са скрити от външно влияние, което ги предпазва от случайна промяна. За данните и методите се казва, че сакапсулирани.Терминитескриванеикапсулиранена данни са ключови термини при описанието на обектно-ориентираните езици.

Ако е необходимо да промените данните на обект, тогава, очевидно, това действие ще бъде присвоено и на методите на обекта.

Типичната ООП програма се състои от колекция от обекти, които взаимодействат помежду си чрез взаимно извикване на методи. Структурата на програмата е показана на фиг. 1.3.

структурата

Фиг. 1.3. Обектно ориентиран подход

Обектно-ориентираното програмиране няма нищо общо с процеса на изпълнение на програма, а е само начин за организирането ѝ.