SlideShare uma empresa Scribd logo
1 de 13
Курс по програмиране за напреднали
Ден първи. Обектно програмиране (част 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

Mais conteúdo relacionado

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

Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)DAVID Academy
 
Курс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLКурс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12DAVID Academy
 
JBuilder 4.0 - New Features
JBuilder 4.0 - New FeaturesJBuilder 4.0 - New Features
JBuilder 4.0 - New FeaturesSvetlin Nakov
 
Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11DAVID Academy
 
Nakov - .NET Framework Overview + Security
Nakov - .NET Framework Overview +  SecurityNakov - .NET Framework Overview +  Security
Nakov - .NET Framework Overview + SecuritySvetlin Nakov
 
Acceptance testing with Selenium 2 and PHPUnit
Acceptance testing with Selenium 2 and PHPUnitAcceptance testing with Selenium 2 and PHPUnit
Acceptance testing with Selenium 2 and PHPUnitBisser Todorov
 
Средства на VSTS за управление на проекти, версии на системата, извеждане на ...
Средства на VSTS за управление на проекти, версии на системата, извеждане на ...Средства на VSTS за управление на проекти, версии на системата, извеждане на ...
Средства на VSTS за управление на проекти, версии на системата, извеждане на ...Yosifov
 
WindowsAzure&NoSQL@SQLSaturday#152
WindowsAzure&NoSQL@SQLSaturday#152WindowsAzure&NoSQL@SQLSaturday#152
WindowsAzure&NoSQL@SQLSaturday#152Miroslav Lessev
 
Adaptive design with Fe Framework (Bulgarian version)
Adaptive design with Fe Framework (Bulgarian version)Adaptive design with Fe Framework (Bulgarian version)
Adaptive design with Fe Framework (Bulgarian version)Peter Naydenov
 
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...DAVID Academy
 
High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code IntroductionSvetlin Nakov
 
Svetlin Nakov - E-Business And NASD Academy
Svetlin Nakov - E-Business And NASD AcademySvetlin Nakov - E-Business And NASD Academy
Svetlin Nakov - E-Business And NASD AcademySvetlin Nakov
 
Python choreographe NAOqi Framework
Python choreographe NAOqi FrameworkPython choreographe NAOqi Framework
Python choreographe NAOqi FrameworkAtelier for robotics
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...DAVID Academy
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...DAVID Academy
 
Системи за обучение - инсталиране, обучение, поддръжка от НИТ-Нови Интернет Т...
Системи за обучение - инсталиране, обучение, поддръжка от НИТ-Нови Интернет Т...Системи за обучение - инсталиране, обучение, поддръжка от НИТ-Нови Интернет Т...
Системи за обучение - инсталиране, обучение, поддръжка от НИТ-Нови Интернет Т...NIT- New Internet Technologies PLC
 

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

Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
 
e-School Beta
e-School Betae-School Beta
e-School Beta
 
Курс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLКурс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTML
 
Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12Училищен курс по програмиране на C# (2013/2014), занятие №12
Училищен курс по програмиране на C# (2013/2014), занятие №12
 
JBuilder 4.0 - New Features
JBuilder 4.0 - New FeaturesJBuilder 4.0 - New Features
JBuilder 4.0 - New Features
 
Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11Училищен курс по програмиране на C# (2013/2014), занятие №11
Училищен курс по програмиране на C# (2013/2014), занятие №11
 
Nakov - .NET Framework Overview + Security
Nakov - .NET Framework Overview +  SecurityNakov - .NET Framework Overview +  Security
Nakov - .NET Framework Overview + Security
 
Acceptance testing with Selenium 2 and PHPUnit
Acceptance testing with Selenium 2 and PHPUnitAcceptance testing with Selenium 2 and PHPUnit
Acceptance testing with Selenium 2 and PHPUnit
 
Средства на VSTS за управление на проекти, версии на системата, извеждане на ...
Средства на VSTS за управление на проекти, версии на системата, извеждане на ...Средства на VSTS за управление на проекти, версии на системата, извеждане на ...
Средства на VSTS за управление на проекти, версии на системата, извеждане на ...
 
WindowsAzure&NoSQL@SQLSaturday#152
WindowsAzure&NoSQL@SQLSaturday#152WindowsAzure&NoSQL@SQLSaturday#152
WindowsAzure&NoSQL@SQLSaturday#152
 
Adaptive design with Fe Framework (Bulgarian version)
Adaptive design with Fe Framework (Bulgarian version)Adaptive design with Fe Framework (Bulgarian version)
Adaptive design with Fe Framework (Bulgarian version)
 
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
Курс по програмиране за напреднали (2012) - 9. Добър и лош код. Преработка и ...
 
High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code Introduction
 
Svetlin Nakov - E-Business And NASD Academy
Svetlin Nakov - E-Business And NASD AcademySvetlin Nakov - E-Business And NASD Academy
Svetlin Nakov - E-Business And NASD Academy
 
Python choreographe NAOqi Framework
Python choreographe NAOqi FrameworkPython choreographe NAOqi Framework
Python choreographe NAOqi Framework
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
 
M7: 1.The Java Platform
M7: 1.The Java PlatformM7: 1.The Java Platform
M7: 1.The Java Platform
 
Системи за обучение - инсталиране, обучение, поддръжка от НИТ-Нови Интернет Т...
Системи за обучение - инсталиране, обучение, поддръжка от НИТ-Нови Интернет Т...Системи за обучение - инсталиране, обучение, поддръжка от НИТ-Нови Интернет Т...
Системи за обучение - инсталиране, обучение, поддръжка от НИТ-Нови Интернет Т...
 
Module1
Module1Module1
Module1
 

Mais de DAVID Academy

Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)DAVID Academy
 
Курс по уеб програмиране (2015), занятие №2 - CSS
Курс по уеб програмиране (2015), занятие №2 - CSSКурс по уеб програмиране (2015), занятие №2 - CSS
Курс по уеб програмиране (2015), занятие №2 - CSSDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14DAVID Academy
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13DAVID Academy
 
Курс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSКурс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSDAVID Academy
 
Курс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLКурс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоУчилищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияУчилищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3DAVID Academy
 
Курс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web ServicesКурс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web ServicesDAVID Academy
 
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET FrameworkКурс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET FrameworkDAVID Academy
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLDAVID Academy
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...DAVID Academy
 
Курс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. ПредставянеКурс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. ПредставянеDAVID Academy
 
Курс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - ПомагалоКурс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - ПомагалоDAVID Academy
 

Mais de DAVID Academy (20)

Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
 
Курс по уеб програмиране (2015), занятие №2 - CSS
Курс по уеб програмиране (2015), занятие №2 - CSSКурс по уеб програмиране (2015), занятие №2 - CSS
Курс по уеб програмиране (2015), занятие №2 - CSS
 
Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14Училищен курс по програмиране на C# (2013/2014), занятие №14
Училищен курс по програмиране на C# (2013/2014), занятие №14
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
 
Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13Училищен курс по програмиране на C# (2013/2014), занятие №13
Училищен курс по програмиране на C# (2013/2014), занятие №13
 
Курс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSКурс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSS
 
Курс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLКурс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTML
 
Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10Училищен курс по програмиране на C# (2013/2014), занятие №10
Училищен курс по програмиране на C# (2013/2014), занятие №10
 
Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9Училищен курс по програмиране на C# (2013/2014), занятие №9
Училищен курс по програмиране на C# (2013/2014), занятие №9
 
Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8Училищен курс по програмиране на C# (2013/2014), занятие №8
Училищен курс по програмиране на C# (2013/2014), занятие №8
 
Училищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоУчилищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - Помагало
 
Училищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияУчилищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - Упражнения
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4
 
Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3
 
Курс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web ServicesКурс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web Services
 
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET FrameworkКурс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
Курс по информационни технологии (2013) - 4. XML, XSD, XML в .NET Framework
 
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQLКурс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
Курс по информационни технологии (2013) - 3. ADO.NET, LINQ to SQL
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
 
Курс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. ПредставянеКурс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. Представяне
 
Курс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - ПомагалоКурс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - Помагало
 

Курс по програмиране за напреднали (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
  • 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