Курс по програмиране за напреднали
Ден първи. Обектно програмиране (част 1):
• Въведение в Microsoft .NET Framework и език...
Въведение в .NET Framework
• Microsoft .NET Framework е софтуерна рамка създадена през 2000 г.:
• Работи върху операционни...
Common Language Runtime
• Виртуална среда изпълняваща програмите написани за .NET Framework;
• Осигурява на работещите в н...
Base Class Library
• Мащабна библиотека от предварително реализирани функционалности;
• Осигурява функционалност като:
• п...
Обектно-ориентирано програмиране
• Основни цели на обектно-ориентираното програмиране (ООП):
• Моделира обектите в реалния...
Обекти и класове. Полета и методи
• Според Грейди Буч (един от създателите на UML), всеки обект се характеризира със:
• съ...
Наследяване и композиция
• Преизползването на код – основна цел на мързеливия програмист;
• Наследяване (или правилото “is...
Абстрактни класове
• Абстрактни са методите (член-функциите), които са общи за определен клас обекти
(напр. “астрономическ...
Интерфейси
• Интерфейсите могат да се разглеждат като напълно абстрактни базови класове;
• Класовете се “разширяват” (“ext...
Видимост. Конструктори
• Определянето на видимостта на опрелени класове и техните членове дава
възможност за контролиране ...
Някои ключови думи
• “override” (припокриване);
• “overload” (претоварване?);
• “new” при дефинирането на метод;
• “static...
Полиморфизъм
• ...

Copyright © 2012 DAVID Holding Company
Полезни връзки и литература
Полезни връзки:
• Microsoft Visual Studio 2010 Express
http://www.microsoft.com/visualstudio/e...
Upcoming SlideShare
Loading in …5
×

Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмиране (част 1)

623 views

Published on

Занятие №1 на курса по програмиране за напреднали (2012) провеждан от ДАВИД академия в гр.Казанлък. Включва темите:
- Въведение в .NET Framework и езика C#
- Обектно-ориентирано програмиране
- Класове и обекти. Полета и методи
- Наследяване и композиция
- Абстрактни класове и интерфейси
- Видимост и конструктори
- Някои ключови думи
- Полиморфизъм
- Полезни връзки и литература

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
623
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмиране (част 1)

  1. 1. Курс по програмиране за напреднали Ден първи. Обектно програмиране (част 1): • Въведение в Microsoft .NET Framework и езика C#: • Common Language Runtime (CLR) • Base Class Library; • Обектно-ориентирано програмиране; • Обекти и класове. Полета и методи; • Наследяване и композиция; • Абстрактни класове и интерфейси; • Видимост. Конструктори • Някои ключови думи; • Полиморфизъм; • Полезни връзки и литература. Copyright © 2012 DAVID Holding Company
  2. 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. 3. Common Language Runtime • Виртуална среда изпълняваща програмите написани за .NET Framework; • Осигурява на работещите в нея приложения: • сигурност; • управление на паметта; • обработката на грешки. • Създава междинен слой (CIL или още MSIL) между хардуерната среда и изпълняваното приложение; • Максимална независимост от хардуера и операционната система; • Дава възможност за използване на различни езици за програмиране, сред които: • C#; • Visual Basic .NET; • F#; • IronPython; • J#; • и др.. Copyright © 2012 DAVID Holding Company
  4. 4. Base Class Library • Мащабна библиотека от предварително реализирани функционалности; • Осигурява функционалност като: • потребителски интерфейс; • достъп до данни; • свързване с бази данни; • криптография; • разработка уеб приложения; • често използвани алгоритми; • мрежова свързаност. • Софтуерът за .NET Framework представлява комбинация от собствен код и използваните от него функционалности на .NET Framework; Copyright © 2012 DAVID Holding Company
  5. 5. Обектно-ориентирано програмиране • Основни цели на обектно-ориентираното програмиране (ООП): • Моделира обектите в реалния свят и отношенията между тях; • Позволява работа с абстрактни данни и операции; • Капсулира кода и опростява кода, като позволява неговото преизползване. • Smalltalk: • Език създаден през 1970те; • Създаден от работна група в Xerox (пак ли?!) предвождана от Алън Кей; • Създаден предимно за целите на обучението; • Първи успешен ОО език за програмиране; • Използван за основа на Java. • Основни характеристики на Smalltalk: • Всичко е обект; • Програмата е купчина обекти казващи си един на друг какво да правят, като си изпращат съобщения; • Всеки обект има собствена памет състояща се от други обекти; • Всеки обект си има тип; • Всички обекти от един и същи тип могат да получават едни и същи съобщения. Copyright © 2012 DAVID Holding Company
  6. 6. Обекти и класове. Полета и методи • Според Грейди Буч (един от създателите на UML), всеки обект се характеризира със: • състояние; • поведение; • идентичност. • Множеството обекти с еднакви характеристики, но различна идентичност, формират т.нар. “класове”. Правилата “is-a” и “is-like-a”; • Полета (или член-променливи): • Данни с определено име и тип специфични за конкретния клас обекти; • Мога да имат различна стойност за всеки обект от конкретния клас; • Множеството от полета описва състоянието на конкретния обект. • Методи (или член-функции): • Функция с определено име, параметри и резултат (прототип) за конкретния клас обекти; • Определя определено поведение на обектите от конкретния клас. • Референции: • Указатели към вида на конкретни данни и мястото им в паметта; • Идентифицират обектите, за да позволят работа с тях. Copyright © 2012 DAVID Holding Company
  7. 7. Наследяване и композиция • Преизползването на код – основна цел на мързеливия програмист; • Наследяване (или правилото “is-a”): • Изразява едновременно сходството на два класа и особеностите на поспецифичния от тях; • Дава възможност за отразяване на особеностите на определено подмножество (подклас) обекти. • Композиция (или правилото “has-a”): • Изразява формирането на един клас от съвкупността на други класове; • Скрива особеностите на съставящите класове (напр. автомобил и неговите компоненти). • Един клас може да има само един базов клас (не се позволява т.нар. “множествено наследяване”). Copyright © 2012 DAVID Holding Company
  8. 8. Абстрактни класове • Абстрактни са методите (член-функциите), които са общи за определен клас обекти (напр. “астрономически обект”), но конкретната им реализация зависи от точния вид на обекта (напр. “планета”, “спътник” и др.); • Абстрактните методи (член-функции) нямат тяло, а само прототип – “имплементацията” става в наследниците; • Абстрактен клас е клас, който съдържа поне един абстрактен метод (член-функция); • Обекти могат да бъдат създавани само от конкретни класове, не и от абстрактни; • Абстрактните класове целят да отделят общи особености (свойства и/или поведение) на определен клас обекти. Copyright © 2012 DAVID Holding Company
  9. 9. Интерфейси • Интерфейсите могат да се разглеждат като напълно абстрактни базови класове; • Класовете се “разширяват” (“extends” в Java), а интерфейсите се “имплементират” (“implements” в Java); • Един клас може разшири точно един базов клас, но може да имплементира множество интерфейси; • Интерфейсите позволяват свойствата на обектите от даден клас да бъдат разглеждани в една или друга тяхна съвкупност (напр. служител с множество длъжности). Copyright © 2012 DAVID Holding Company
  10. 10. Видимост. Конструктори • Определянето на видимостта на опрелени класове и техните членове дава възможност за контролиране на достъпа до данните; • Видимост на класове (по подразбиране “internal”): • public – пълна видимост; • internal – видимост само в рамките на текущото assembly; • private – видимост само в рамките на настоящия клас. • Видимост на член-променливи и член-методи (по подразбиране “private”): • public – пълна видимост; • protected – видимост само в рамките на текущия клас и неговите наследници; • private – видимост само в рамките на текущия клас; • internal – видимост само в рамките на текущото assembly; • protected internal – комбинация от protected и internal. • Конструкторите на нов глас: • Параметризиране на създаването на обекти; • Подразбиращи се конструктори; • Извикване на един конструктор от друг конструктор; • Извикване на конструктори на базовия клас; • Private конструктори (фабрики); • Singleton. Copyright © 2012 DAVID Holding Company
  11. 11. Някои ключови думи • “override” (припокриване); • “overload” (претоварване?); • “new” при дефинирането на метод; • “static”; • “readonly”; • “virtual”; •… Copyright © 2012 DAVID Holding Company
  12. 12. Полиморфизъм • ... Copyright © 2012 DAVID Holding Company
  13. 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

×