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

  • 253 views
Uploaded on

Занятие №1 на курса по програмиране за напреднали (2012) провеждан от ДАВИД академия в гр.Казанлък. Включва темите: …

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

More in: Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
253
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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
  • 12. Полиморфизъм • ... 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