Кратко съдържание



страница24/73
Дата21.07.2018
Размер8.57 Mb.
1   ...   20   21   22   23   24   25   26   27   ...   73

Основни понятия в ООП


Без да претендираме за изчерпателност ще даден кратка дефиниция за основните понятия от ООП, които ще използваме по-нататък. Ако откри­вате, че повечето от тези термини са ви напълно непознати, ви препоръч­ваме първо да се запознаете с принципите на обектно-ориентираното програмиране от някоя специализирана книга по ООП, а след това да продължите нататък. В настоящата тема ще направим преглед на реализа­цията на ООП в .NET Framework, а не на ООП като идеология.

Клас


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

Обект


Обект наричаме конкретен елемент от даден клас (инстанция), например студентът Тодор Георгиев, трети курс, ядрена физика в СУ.

Инстанциране


Про­цесът на създаване на обект от даден клас е инстанциране. Обектите, съз­­дадени при инстанциране на даден клас, се наричат негови ин­стан­ции. Например в резултат от инстанцирането на класа "студент" можем да получим обекта "Иван Петров", който е инстанция на класа "студент".

Свойство


Свойство се нарича видима за външния свят характеристика (атрибут) на обектите от даден клас. Например свойства на класа "студент" са личните имената му, личните му данни, оценките му и др.

Метод


Метод е действие, което всички обекти от даден клас могат да извършват. Например всички обекти от класа "студент" могат да извършват действи­ето "явяване на изпит".

Интерфейс


Интерфейсът е описание на съвкупност от действия, които даден обект може да из­вър­шва. Ако един обект може да извършва всички действия от даден ин­тер­фейс, казваме че обек­тът реализира, или имплементира интер­фейса. Кла­сът "студент", на­пример, би могъл да реализира интер­фейса "учащ" съдържащ действието "учене".

Наследяване на класове


Наследяване в ООП наричаме възможността един клас, наричан нас­ледник, да при­добие свойства и действия на друг клас – родител (базов клас). Например класът "пре­къс­нал студент" би могъл да наследи класа "студент", като към наследените методи и свойства добави собствени, например "получаване на призовка от военните власти".

Абстракция на данните


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

Структури от данни, които дефинират група от операции, но не разкриват информация как са имплементирани тези операции, се наричат абстракт­ни структури от данни.


Абстракция на действията


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

ООП и .NET Framework


В .NET Framework обектно-ориентираният подход е залегнал на най-дъл­бо­ко архитектурно ниво. Всеки тип, дефиниран от потребителя, и всич­ки типове от Common Type System (CTS) насле­дяват System.Object или не­гов наследник.

В някои обектно-ориентирани езици се използват примитивни типове дан­ни (булеви, числови, символни), които в езиците от .NET Framework са съ­­що наследници на System.Object.

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

Типове данни


В предходната глава въведохме понятието тип и разделихме типовете в C# на типове стойностни и референтни. Следва да представим една по-подробна класифи­кация на типовете данни в .NET Framework. Те биват:

  • класове

  • структури

  • интерфейси

  • делегати

  • изброени типове

Реализация на понятието клас


Понятието "клас" от ООП се реализира в .NET Framework чрез класове (classes) и структури (structs).

Не трябва да бъркаме понятието клас от концепциите на ООП с понятието клас в .NET Framework. Разликата е тънка – класът в .NET действително е клас според ООП терминологията, но обратното не е вярно. ООП терминът клас се реализира и по още един начин – чрез структури.

Основната разлика между класовете и структурите в .NET Framework е, че структурите са стойностни типове, докато класовете са референтни типо­ве. Структурите по-интуитивно моделират данни, от които се очаква пове­дение като на примитивни типове, докато класовете по-добре моделират обекти от реалния свят, които могат да извършват определени действия.

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


Множествено наследяване


Някои обектно-ориентирани езици позволяват използването на мно­жест­ве­но наследяване – възможността един клас да приеме методи и свой­ства от няколко родителя. При проектирането на .NET Framework е взето ре­шение това да не се допуска.

Една от причините в .NET Framework да няма множествено наследяване е, че множественото нас­ледяване води до конфликти, например ако един клас наследи еле­мент с едно и също име от повече от един родител.

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

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


1   ...   20   21   22   23   24   25   26   27   ...   73


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница