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



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

Използвана литература


  1. Светлин Наков, Въведение в C# – http://www.nakov.com/dotnet/ lectures/Lecture-2-Introduction-to-CSharp-v1.0.ppt

  2. MSDN Training, Programming C# (MOC 2124C), Module 2: Overview of C#

  3. MSDN Training, Programming C# (MOC 2124C), Module 3: Using Value-Type Variables

  4. Jessy Liberty, Programming C#, Second Edition, O’Reilly, 2002, ISBN 0-596-00309-9

  5. Svetlin Nakov, .NET Framework Overview – http://www.nakov.com/ publications/Nakov-DotNET-Framework-Overview-english.ppt

  6. MSDN, C# Keywords – http://msdn.microsoft.com/library/en-us/csref/ html/vclrfcsharpkeywords_pg.asp

  7. MSDN, C# Built-in Types Table – http://msdn.microsoft.com/library/en-us/csref/html/vclrfbuiltintypes.asp

  8. MSDN, Common Type System Overview – http://msdn.microsoft.com/ library/en-us/cpguide/html/cpconcommontypesystemoverview.asp

  9. MSDN, Enumerations – http://msdn.microsoft.com/library/en-us/cpguide/ html/cpconEnumerations.asp

  10. MSDN, C# Operators – http://msdn.microsoft.com/library/en-us/csref/ html/vclrfCSharpOperators.asp

  11. MSDN, Statements (C# Programmer's Reference) – http://msdn.microsoft.com/library/en-us/csref/html/vclrfstatements.asp

  12. MSDN, XML Documentation Tutorial (C# Programmer's Reference) – http://msdn.microsoft.com/library/en-us/csref/html/vcwlkxmldocumentationtutorial.asp

  13. MSDN, C# Preprocessor Directives - http://msdn.microsoft.com/ library/en-us/csref/html/vclrfPreprocessorDirectives.asp

  14. MSDN, Composite Formatting – http://msdn.microsoft.com/library/en-us/cpguide/html/cpconcompositeformatting.asp

  15. MSDN, Console Class (.NET Framework) – http://msdn.microsoft.com/ library/en-us/cpref/html/frlrfsystemconsoleclasstopic.asp

Глава 3. Обектно-ориентирано програмиране в .NET

Необходими знания


  • Познаване на принципите на обектно-ориентираното програ­миране

  • Познаване на поне един обектно-ориентиран език за програ­миране – C++, Java, C#, Object Pascal/Delphi

Съдържание


  • Предимства и особености на ООП.

  • Основни принципи на ООП. Основни понятия

  • ООП и .NET Framework

  • Членове на клас

  • Член-променливи (полета). Константни полета

  • Методи (член-функции)

  • Статични членове

  • Конструктори. Статичен конструктор

  • Предаване на параметрите

  • Свойства. Индексатори

  • Предефиниране на оператори

  • Наследяване

  • Интерфейси. Абстрактни класове

  • Виртуални членове. Предефиниране и скриване.

  • Клас диаграми

  • Принципи при обектно-ориентирания дизайн

  • Пространства от имена (namespaces)

В тази тема ...


В настоящата тема ще направим кратък обзор на основните принципи на обектно-ориентираното програмиране (ООП) и сред­ствата за изпол­зването им в .NET Framework и езика C#. Ще се запознаем с типовете "клас", "струк­тура" и "интерфейс" в C#. Ще въведем понятието "член на тип" и ще се разгледаме видовете членове (член-променливи, методи, конструк­тори, свойства, индексатори и др.) и тяхната употреба. Ще се спрем и на наследяването на ти­по­ве в различните му аспекти и приложения. Ще обърнем внимание и на полиморфизмът в C# и свързаните с него понятия и програмни техники. Накрая ще обсъдим някои утвър­дени практики при създаването на ефек­тив­ни йерархии от типове.

Предимства и особености на ООП


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

Моделиране на обекти от реалния свят


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

Обектите притежават атрибути, които описват свойствата на им, и опе­­рации – възможните действия, които могат да се извършват с обекта.


Преизползване на програмния код


Едно от основните предимства на обектно-ориентирания подход е, че позволява лесно преизползва­не на програмния код (code reuse). Това се постига с помощта на наследяване и по­ли­мор­фи­зъм, които ни позволяват да дефинираме общите свойства и действия за множество от типове обек­ти само в един от тях.

Основни принципи на ООП


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

Капсулация на данните


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

Обектите в ООП съдържат своите данни и средствата за тяхната обра­ботката, капсулирани като едно цяло.


Наследяване


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

За да изясним това понятие, ще си послужим с класическият в OOП пример за класа от обекти Animal, който пред­ставлява абстракция за мно­жест­вото от всички животни. Всички обек­ти от този клас имат общи ха­рак­те­ристики (например цвят и възраст) и обща функционалност, например операциите Eat и Sleep, докато за класът Dog, представляващ мно­жест­во­то от всички ку­че­та, които също са животни, би могъл да предоставя опе­ра­циите Eat, Sleep и Bark. Удачно е кла­сът Dog да наследи Animal – тогава той ще съдържа описание само на соб­стве­ното си действие Bark, докато те­зи на Eat и Sleep ще получи от ба­зо­ви­я си клас.

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

Може да се каже, че наследяването моделира "is-a" отношението между обек­­тите, например можем да твърдим, че кучето е животно, тъй като то "мо­­же да прави" всичко, което и животното и притежава всички животин­ски характеристики (цвят, възраст и т.н.).


Полиморфизъм


Полиморфизъм буквално означава приемането на различни форми от един обект. Нека е даден базов клас, представящ категория от обекти, които ре­ализират общо действие, което се наследява от множество класове, опис­­ващи по-тесни категории. Въпреки, че те всички споделят това дей­ствие, те могат да го реализират по различен начин. Когато раз­по­ла­га­ме с обек­ти от базовия клас, знаем че всички те реализират това дей­ствие, не­за­ви­си­мо на кой наследен клас принадлежат. Поради това можем да го из­пол­зваме без да се интересуваме от конкретната му реализация. На­при­мер, ако кла­сът Animal предоставя действието Talk и разгледаме нас­ле­дя­ва­щите го кла­сове Dog и Cat, всеки от тях го ре­а­ли­зи­ра по кон­кретен начин. И ако има­ме животно, което издава звук и то е ку­че – ще лае, а ако е котка – ще мяучи.

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


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


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

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