Más contenido relacionado Similar a Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмиране (част 1) (20) Más de DAVID Academy (20) Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмиране (част 1)1. Курс по програмиране за напреднали
Ден първи. Обектно програмиране (част 1):
• Въведение в Microsoft .NET Framework и езика C#:
• Common Language Runtime (CLR)
• Base Class Library;
• Обектно-ориентирано програмиране;
• Обекти и класове. Полета и методи;
• Наследяване и композиция;
• Абстрактни класове и интерфейси;
• Видимост. Конструктори
• Някои ключови думи;
• Полиморфизъм;
• Полезни връзки и литература.
Copyright © 2012 DAVID Holding Company
2. Въведение в .NET Framework
• Microsoft .NET Framework е софтуерна рамка създадена през 2000 г.:
• Работи върху операционните системи на Microsoft Windows 98 и по-нови
клиентски операционни системи Windows, Windows NT 4.0 и по-нови сървърни
операционни системи Windows;
• Microsoft .NET Framework се състои от два основни компонента:
• Base Class Library (BCL);
• Common Language Runtime (CLR).
•Настоящата версия е 4.0;
• Типична среда за разработка на приложения е Microsoft Visual Studio;
• Свободна и open source алтернатива на .NET Framework е Mono:
• Mono се стреми към максимална съвместимост с .NET Framework;
• Работи върху множество операционни системи сред които:
• Android, BSD, iOS, Linux, OS X, Windows, Solaris и др..
• В настоящия курс ще използваме комбинацията от:
• Microsoft Visual C# 2010 Express Edition;
• Microsoft Visual Web Developer 2010 Express Edition;
• Microsoft .NET Framework 4.0.
Copyright © 2012 DAVID Holding Company
3. Common Language Runtime
• Виртуална среда изпълняваща програмите написани за .NET Framework;
• Осигурява на работещите в нея приложения:
• сигурност;
• управление на паметта;
• обработката на грешки.
• Създава междинен слой (CIL или още MSIL) между хардуерната среда и
изпълняваното приложение;
• Максимална независимост от хардуера и операционната система;
• Дава възможност за използване на различни езици за програмиране, сред които:
• C#;
• Visual Basic .NET;
• F#;
• IronPython;
• J#;
• и др..
Copyright © 2012 DAVID Holding Company
4. Base Class Library
• Мащабна библиотека от предварително реализирани функционалности;
• Осигурява функционалност като:
• потребителски интерфейс;
• достъп до данни;
• свързване с бази данни;
• криптография;
• разработка уеб приложения;
• често използвани алгоритми;
• мрежова свързаност.
• Софтуерът за .NET Framework представлява комбинация от собствен код и
използваните от него функционалности на .NET Framework;
Copyright © 2012 DAVID Holding Company
5. Обектно-ориентирано програмиране
• Основни цели на обектно-ориентираното програмиране (ООП):
• Моделира обектите в реалния свят и отношенията между тях;
• Позволява работа с абстрактни данни и операции;
• Капсулира кода и опростява кода, като позволява неговото преизползване.
• Smalltalk:
• Език създаден през 1970те;
• Създаден от работна група в Xerox (пак ли?!) предвождана от Алън Кей;
• Създаден предимно за целите на обучението;
• Първи успешен ОО език за програмиране;
• Използван за основа на Java.
• Основни характеристики на Smalltalk:
• Всичко е обект;
• Програмата е купчина обекти казващи си един на друг какво да правят, като си
изпращат съобщения;
• Всеки обект има собствена памет състояща се от други обекти;
• Всеки обект си има тип;
• Всички обекти от един и същи тип могат да получават едни и същи съобщения.
Copyright © 2012 DAVID Holding Company
6. Обекти и класове. Полета и методи
• Според Грейди Буч (един от създателите на UML), всеки обект се характеризира със:
• състояние;
• поведение;
• идентичност.
• Множеството обекти с еднакви характеристики, но различна идентичност, формират
т.нар. “класове”. Правилата “is-a” и “is-like-a”;
• Полета (или член-променливи):
• Данни с определено име и тип специфични за конкретния клас обекти;
• Мога да имат различна стойност за всеки обект от конкретния клас;
• Множеството от полета описва състоянието на конкретния обект.
• Методи (или член-функции):
• Функция с определено име, параметри и резултат (прототип) за конкретния
клас обекти;
• Определя определено поведение на обектите от конкретния клас.
• Референции:
• Указатели към вида на конкретни данни и мястото им в паметта;
• Идентифицират обектите, за да позволят работа с тях.
Copyright © 2012 DAVID Holding Company
7. Наследяване и композиция
• Преизползването на код – основна цел на мързеливия програмист;
• Наследяване (или правилото “is-a”):
• Изразява едновременно сходството на два класа и особеностите на поспецифичния от тях;
• Дава възможност за отразяване на особеностите на определено подмножество
(подклас) обекти.
• Композиция (или правилото “has-a”):
• Изразява формирането на един клас от съвкупността на други класове;
• Скрива особеностите на съставящите класове (напр. автомобил и неговите
компоненти).
• Един клас може да има само един базов клас (не се позволява т.нар. “множествено
наследяване”).
Copyright © 2012 DAVID Holding Company
8. Абстрактни класове
• Абстрактни са методите (член-функциите), които са общи за определен клас обекти
(напр. “астрономически обект”), но конкретната им реализация зависи от точния вид
на обекта (напр. “планета”, “спътник” и др.);
• Абстрактните методи (член-функции) нямат тяло, а само прототип –
“имплементацията” става в наследниците;
• Абстрактен клас е клас, който съдържа поне един абстрактен метод (член-функция);
• Обекти могат да бъдат създавани само от конкретни класове, не и от абстрактни;
• Абстрактните класове целят да отделят общи особености (свойства и/или
поведение) на определен клас обекти.
Copyright © 2012 DAVID Holding Company
9. Интерфейси
• Интерфейсите могат да се разглеждат като напълно абстрактни базови класове;
• Класовете се “разширяват” (“extends” в Java), а интерфейсите се “имплементират”
(“implements” в Java);
• Един клас може разшири точно един базов клас, но може да имплементира
множество интерфейси;
• Интерфейсите позволяват свойствата на обектите от даден клас да бъдат
разглеждани в една или друга тяхна съвкупност (напр. служител с множество
длъжности).
Copyright © 2012 DAVID Holding Company
10. Видимост. Конструктори
• Определянето на видимостта на опрелени класове и техните членове дава
възможност за контролиране на достъпа до данните;
• Видимост на класове (по подразбиране “internal”):
• public – пълна видимост;
• internal – видимост само в рамките на текущото assembly;
• private – видимост само в рамките на настоящия клас.
• Видимост на член-променливи и член-методи (по подразбиране “private”):
• public – пълна видимост;
• protected – видимост само в рамките на текущия клас и неговите наследници;
• private – видимост само в рамките на текущия клас;
• internal – видимост само в рамките на текущото assembly;
• protected internal – комбинация от protected и internal.
• Конструкторите на нов глас:
• Параметризиране на създаването на обекти;
• Подразбиращи се конструктори;
• Извикване на един конструктор от друг конструктор;
• Извикване на конструктори на базовия клас;
• Private конструктори (фабрики);
• Singleton.
Copyright © 2012 DAVID Holding Company
11. Някои ключови думи
• “override” (припокриване);
• “overload” (претоварване?);
• “new” при дефинирането на метод;
• “static”;
• “readonly”;
• “virtual”;
•…
Copyright © 2012 DAVID Holding Company
13. Полезни връзки и литература
Полезни връзки:
• Microsoft Visual Studio 2010 Express
http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express-iso
• Microsoft SQL Server 2008 Express with Tools
http://www.microsoft.com/en-us/download/details.aspx?id=22973
Литератора:
• “Програмиране за .NET Framework” на С. Наков и колектив
http://www.devbg.org/dotnetbook/;
• “Въведение в програмирането със C#” на С. Наков, В. Колев и колектив
http://www.introprogramming.info/intro-csharp-book/
• “Thinking in Java” на B. Eckel
http://www.mindview.net/Books/TIJ/
Copyright © 2012 DAVID Holding Company