изтегли

Download Report

Transcript изтегли

Курс по програмиране за напреднали

Ден първи. Обектно програмиране (част 1): • • • • • • • • • Въведение в Microsoft .NET Framework и езика C#: • Common Language Runtime (CLR) • Base Class Library; Обектно-ориентирано програмиране; Обекти и класове. Полета и методи; Наследяване и композиция; Абстрактни класове и интерфейси; Видимост. Конструктори Някои ключови думи; Полиморфизъм; Полезни връзки и литература.

Copyright © 2012 DAVID Holding Company

Въведение в .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

Common Language Runtime

• Виртуална среда изпълняваща програмите написани за .NET Framework; • • Осигурява на работещите в нея приложения: • сигурност; • управление на паметта; • • обработката на грешки.

• Създава междинен слой (CIL или още MSIL) между хардуерната среда и изпълняваното приложение; Максимална независимост от хардуера и операционната система; Дава възможност за използване на различни езици за програмиране, сред които: • C#; • Visual Basic .NET; • F#; • IronPython; • • J#; и др..

Copyright © 2012 DAVID Holding Company

Base Class Library

• • • Мащабна библиотека от предварително реализирани функционалности; Осигурява функционалност като: • потребителски интерфейс; • достъп до данни; • свързване с бази данни; • криптография; • разработка уеб приложения; • често използвани алгоритми; • мрежова свързаност.

Софтуерът за .NET Framework представлява комбинация от собствен код и използваните от него функционалности на .NET Framework; Copyright © 2012 DAVID Holding Company

Обектно-ориентирано програмиране

• • • Основни цели на обектно-ориентираното програмиране (ООП): • Моделира обектите в реалния свят и отношенията между тях; • Позволява работа с абстрактни данни и операции; • Капсулира кода и опростява кода, като позволява неговото преизползване.

Smalltalk: • Език създаден през 1970те; • Създаден от работна група в Xerox (пак ли?!) предвождана от Алън Кей; • Създаден предимно за целите на обучението; • • Първи успешен ОО език за програмиране; Използван за основа на Java.

Основни характеристики на Smalltalk: • Всичко е обект; • Програмата е купчина обекти казващи си един на друг какво да правят, като си • • • изпращат съобщения; Всеки обект има собствена памет състояща се от други обекти; Всеки обект си има тип; Всички обекти от един и същи тип могат да получават едни и същи съобщения.

Copyright © 2012 DAVID Holding Company

Обекти и класове. Полета и методи

• • Според Грейди Буч (един от създателите на UML), всеки обект се характеризира със: • състояние; • поведение; • идентичност.

Множеството обекти с еднакви характеристики, но различна идентичност, формират • • • т.нар. “класове”. Правилата “is-a” и “is-like-a”; Полета (или член-променливи): • Данни с определено име и тип специфични за конкретния клас обекти; • • Мога да имат различна стойност за всеки обект от конкретния клас; Множеството от полета описва състоянието на конкретния обект.

Методи (или член-функции): • • Функция с определено име, параметри и резултат (прототип) за конкретния клас обекти; Определя определено поведение на обектите от конкретния клас.

Референции: • • Указатели към вида на конкретни данни и мястото им в паметта; Идентифицират обектите, за да позволят работа с тях.

Copyright © 2012 DAVID Holding Company

Наследяване и композиция

• • Преизползването на код – основна цел на мързеливия програмист; Наследяване (или правилото “is-a”): • Изразява едновременно сходството на два класа и особеностите на по • специфичния от тях; Дава възможност за отразяване на особеностите на определено подмножество (подклас) обекти.

• Композиция (или правилото “has-a”): • Изразява формирането на един клас от съвкупността на други класове; • Скрива особеностите на съставящите класове (напр. автомобил и неговите компоненти).

• Един клас може да има само един базов клас (не се позволява т.нар. “множествено наследяване”).

Copyright © 2012 DAVID Holding Company

Абстрактни класове

• Абстрактни са методите (член-функциите), които са общи за определен клас обекти (напр. “астрономически обект”), но конкретната им реализация зависи от точния вид на обекта (напр. “планета”, “спътник” и др.); • • • • Абстрактните методи (член-функции) нямат тяло, а само прототип – “имплементацията” става в наследниците; Абстрактен клас е клас, който съдържа поне един абстрактен метод (член-функция); Обекти могат да бъдат създавани само от конкретни класове, не и от абстрактни; Абстрактните класове целят да отделят общи особености (свойства и/или поведение) на определен клас обекти. Copyright © 2012 DAVID Holding Company

Интерфейси

• Интерфейсите могат да се разглеждат като напълно абстрактни базови класове; • Класовете се “разширяват” (“extends” в Java), а интерфейсите се “имплементират” (“implements” в Java); • Един клас може разшири точно един базов клас, но може да имплементира множество интерфейси; • Интерфейсите позволяват свойствата на обектите от даден клас да бъдат разглеждани в една или друга тяхна съвкупност (напр. служител с множество длъжности).

Copyright © 2012 DAVID Holding Company

Видимост. Конструктори

• • • Определянето на видимостта на опрелени класове и техните членове дава възможност за контролиране на достъпа до данните; Видимост на класове (по подразбиране “internal”): • • public – пълна видимост; internal – видимост само в рамките на текущото assembly; • private – видимост само в рамките на настоящия клас.

Видимост на член-променливи и член-методи (по подразбиране “private”): • public – пълна видимост; • • protected – видимост само в рамките на текущия клас и неговите наследници; private – видимост само в рамките на текущия клас; • • internal – видимост само в рамките на текущото assembly; protected internal – комбинация от protected и internal.

• Конструкторите на нов глас: • Параметризиране на създаването на обекти; • Подразбиращи се конструктори; • Извикване на един конструктор от друг конструктор; • Извикване на конструктори на базовия клас; • Private конструктори (фабрики); • Singleton.

Copyright © 2012 DAVID Holding Company

Някои ключови думи

• • • • • • • “override” (припокриване); “overload” (претоварване?); “new” при дефинирането на метод; “static”; “readonly”; “virtual”; … Copyright © 2012 DAVID Holding Company

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

• ...

Copyright © 2012 DAVID Holding Company

Полезни връзки и литература

Полезни връзки: • 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