SlideShare une entreprise Scribd logo
1  sur  40
Курс по програмиране на C#
Занятие №7
Обектно-ориентирано програмиране.
Класове. Обекти. Структури. Полета

2013
Съдържание
•
•
•
•
•
•
•

Обектно-ориентирано програмиране
Класове
Обекти
Класове в C#
Обекти в C#
Структури в C#
Полета
Обектно-ориентирано програмиране
• Какво е „обекно-ориентирано програмиране“?
– Парадигма (подход) в програмирането
– Програмният код се разбива на части (обекти)
– Обектите се характеризират с данни и функции (характеристики и
поведение)
– Обектите си взаимодействат – различни начини
– Три основни принципа:
• Капсулиране
• Наследяване
• Полиморфизъм
Обектно-ориентирано програмиране
• Кратка история на ООП
– Simula 67 – първи стъпки
– Smalltalk – чистият ООП език: обектите взаимодействат непряко, чрез
съобщения
– C++, Delphi, Objective-C – навлизане на ООП парадигмата в
масовата практика
– Java, C#.NET, Python, Ruby, JavaScript, PHP 5 – съвременни ООП
езици
– Бъдещето?
Обектно-ориентирано програмиране
• Предимства на ООП
– Програмите са отражение на реалния свят
– Реалният свят може да бъде моделиран чрез естественото му
разделяне на прости съставни части (обекти)
– Тези модели могат лесно да бъдат трансформирани в обектноориентирани програми
– Улеснява се разработката от екипи от разработчици
– Изолират се промените в отделен фрагмент от програмата
Класове
• Какво е „клас“?
Абстрактно понятие в ООП
Обединява обекти със сходни характеристики и поведение
Съставен тип данни
Множество от стойности – всички комбинации от възможни
стойности на характеристиките
– Не описва конкретен физически обект, а дефинира как всеки
конкретен обект може да бъде описан
– Различните класове могат да описват по-широко или поспециализирано множество от обекти
–
–
–
–
Класове
• Примери за класове
–
–
–
–
–
–
–
–

Жив организъм
Човек
Учител
Куче
Превозно средство
Автомобил
Прозорец в приложение с графичен потребителски интерфейс
Файл
Класове
• Програмиране с класове
– В обектно-ориентираните езици програмите представляват
декларации на множество класове
– В декларацията на всеки клас се описват неговите членове:
• Полета – подобни на локални променливи за всеки обект на класа, те
съдържат характеристиките му
• Методи – функции, които се прилагат върху обект на класа, като имат достъп
до неговите характеристики

– Някои езици, като например C# и Java, не позволяват поставянето
на никакъв код извън декларация на клас – това са напълно
обектно-ориентирани езици
Обекти
• Какво е „обект“?
– Абстрактно понятие в ООП
– Представлява конкретен екземпляр (инстанция) на някакъв клас
– Съдържа конкретни стойности за характеристиките, описани от
класа
– Върху него могат да бъдат изпълнени методите, описани от класа
– Понятието се използва и за променлива, чийто тип данни е клас
Обекти
• Примери за обекти
Конкретна бактерия по тялото ви
Бай Иван
Г-жа Савова
Едно от кучетата на съседа
Влак „Чайка“, пристигащ в 19:20 на гара Казанлък на 07.02.2014 г.
(ако не броим закъсненията)
– Служебният автомобил на Валери
– Прозорецът на Visual Studio 2012, което сте отворили в момента
– Файлът, в който е съхранена тази презентация
–
–
–
–
–
Обекти
• Как обектите и техните класове улесняват създаването на
програми?
– Класовете описват сходни характеристики и поведение
– На базата на тях, програмистът може да опише алгоритми, които
не зависят от конкретни стойности на характеристиките
– Съответните алгоритми могат да бъдат приложени върху
произволни инстанции на класовете
– Нещо повече: сами по себе си алгортимите стават част от
поведението на тези или други класове
– Могат да се създадат системи с изключително висока сложност,
които са разделени на малки относително независими модули
Класове в C#
• Класове в C#
– Референтни типове данни
– Както всички типове данни, имат уникално наименование в
рамките на съответното пространство от имена
– Декларират се всички членове класа
– Желателно е (но не е задължително) декларацията на всеки клас
да бъде в отделен файл със същото име
– Възможно е декларацията на клас да бъде разделена в няколко
файла
– Класовете могат да наследяват други класове (наследяването ще
разгледаме подробно в друг урок)
Класове в C#
• Деклариране на клас
Ключова дума class
Наименование на класа
Блок с декларации на членове
Декларациите на членове ще
разгледаме по-късно
– Може декларацията да се предхожда
от ключовата partial, за да се раздели в
няколко файла
–
–
–
–

class Program
{
// Декларации на членове
}
class Car
{
// Декларации на членове
}
// Частична декларация на клас
partial class CivilServant
{
// Декларации на членове
}
Класове в C# - демо
// Демонстрация
Обекти в C#
• Обекти в C#
– Декларираме променливи от тип данни някакъв клас, както го
правим за всички други типове данни
– За да се създаде (инстанцира, конструира) обект (инстанция,
екземпляр) на клас, се използва операторът new
– При създаването на обекта се заделя необходимото количество
памет в heap и с него се свързва референция, която се записва в
съответната променлива
– Може няколко променливи да реферират един и същи обект в
паметта
– При създаването на обекта, данните му могат да бъдат
инициализирани по начин, описан в специален член на класа –
конструктор (ще ги разгледаме следващия път)
Обекти в C#
• Деклариране на променлива,
която ще съдържа обект
– Тип данни (наименование на класа)
– Име на променлива;

• Инстанциране на обект
– Оператор new
– Наименование на класа
– Списък от аргументи в кръгли скоби (за
момента – празен)

• Новоинстанциран обект може да
бъде включен директно в израз или
подаден като аргумент на функция

// Деклариране на променлива за обект
Car raceCar;
// Инстанциране на обект
raceCar = new Car();
// Декларация на променлива
// с инициализация
CivilServant cashier = new CivilServant();
Обекти в C# - демо
// Демонстрация
Структури в C#
• Какво е „структура“ в C#?
– Нереферентен тип данни
– Подобно на класовете, декларира членове (характеристики и
поведение)
– Не позволява наследяване (базовият тип на всички структурни
типове винаги е System.ValueType)
– Понятието се използва и за стойностите от структурен тип
– Както всички нереферентни типове, сравнението за равенство
между две структури по подразбиране се свежда до сравнение за
равенство по всички техни характеристики
Структури в C#
• Деклариране на структурен тип
данни
– Ключова дума struct
– Наименование на структурния тип
– Блок с декларации на членове

struct
{
//
}
struct
{
//
}
struct
{
//
}

Book
Декларации на членове

MailAttachmentInfo
Декларации на членове
GameTile
Декларации на членове
Структури в C#
• Променливи от структурен тип

// Деклариране на променлива от
// структурен тип
– Не е необходимо да се инициализират
GameTile tile;
преди стойностите им да бъдат
// Използване на променливата веднага
достъпени: памет за тях се заделя при
самото им деклариране и на всяка от // след декларирането ѝ
GameTile otherTile = tile;
характеристиките им се присвоява
// Присвояване на "празна" структура
стойност по подразбиране
otherTile = new GameTile();
– При присвояване на стойност на
променлива от структурен тип,
стойностите на всяка от
характеристиките на присвояваната
структурна стойност се копират в
паметта, заделена за променливата
– Все пак може да се използва
операторът new, за да се присвои на
променлива „свежа“ стойност
Структури в C# - демо
// Демонстрация
Полета
• Какво е „поле“?
Член на клас
Нарича се още член-данна
Съхранява конкретна характеристика на обект от съответния клас
Може да се разглежда като локална променлива за обекта
Декларира се в класа
Всеки екземпляр на класа съдържа конкретна стойност в
съответното поле
– Всички данни на обект се съхраняват в полета
–
–
–
–
–
–
Полета
• Примери за полета
– Латинско наименование на биологичен вид (за клас „жив
организъм“)
– Собствено и фамилно имена (за клас „човек“)
– Трудов стаж и преподаван предмет (за клас „учител“)
– Порода и възраст (за клас „куче“)
– Пътнически и товарен капацитет (за клас „превозно средство“)
– Текуща, номинална и максимална скорост (за клас „автомобил“)
– Заглавие, размери и позиция (за клас „прозорец на приложение с
графичен потребителски интерфейс“)
– Дати на създаване, последна модификация и последен достъп (за
клас „файл“)
Полета
• Деклариране на полета в C#
– Полетата в C# се декларират в рамките на декларацията на класа
– Всяко поле има следните характеристики:
•
•
•
•
•

Тип на данните
Наименование (уникално измежду всички членове на класа)
Видимост (ще говорим за нея в следващ урок)
Дали е константно или достъпно само за четене
Дали е статично (статичните членове ще разгледаме в друг урок)

– При декларацията на поле може да се укаже неговата начална
стойност
– Ако не е указана начална стойност, се използва стойността по
подразбиране на съответния тип данни
Полета
• Деклариране на полета
– Модификатор за достъп (за момента –
public)
– Тип данни
– Наименование

• Деклариране с инициализация
(начална стойност)
– Декларация на поле
– Знак за равенство
– Израз, съвместим с типа на полето

class Car
{
public string Make;
public string Model;
public int Year;
public string Colour;
}
class Person
{
public string FullName;
public string Nationality = "Bulgarian";
public bool IsAlive = true;
}
struct Book
{
public string Author;
public int Edition;
public int Year;
}
Деклариране на полета - демо
// Демонстрация
Полета
• Достъпване на полета в C#
– Поле на обект може да бъде достъпено от произволно място в
програмата, като между израза, представляващ екземпляра, и
наименованието на полето се постави операторът за достъпване
на член „.“
– Така конструираният израз може да бъде използван по същия
начин, както обикновена променлива:
• Може да бъде включен в друг израз
• Може да бъде подаден като аргумент на функция
• Може да му бъде присвоена стойност

– В декларацията на класа, полетата могат да бъдат достъпени и
директно чрез наименованията си, подобно на локални
променливи
Полета
• Достъпване на полета на обект
– Израз, представляващ обекта
(екземпляр на класа)
– Оператор за достъпване на член „.“
– Наименование на полето
– Полетата се използват, както локални
променливи и параметри на функции

// Присвояване на стойности на полета
Car car = new Car();
car.Make = "Peugeot";
car.Model = "306";
car.Year = 2005;
car.Colour = "Dark green metallic";
// Достъпване на стойности на полета
Console.WriteLine(
"{0} {1}, Year: {2}",
car.Make, car.Model, car.Year);
// Конструиране с инициализация на полета
Person me = new Person()
{
FullName = "Aleksandar Dalemski",
Nationality = "Bulgarian",
};
Достъпване на полета - демо
// Демонстрация
Полета
• Полета с достъп само за четене
– Модификатор за достъп (за момента –
public)
– Ключова дума readonly
– Тип данни
– Наименование
– Начална стойност (незадължителна)
– На полето не могат да бъдат
присвоявани стойности никъде, освен в
инициализацията му или в тялото на
конструктор

class UserInfo
{
public readonly DateTime ObtainedOn =
DateTime.Now;
public readonly string UserName =
Environment.UserName;
public readonly string MachineName =
Environment.MachineName;
}
UserInfo userInfo = new UserInfo();
// Достъпване на поле само за четене
Console.WriteLine(userInfo.UserName);
// Опит за присвояване на стойност:
// Предизвиква грешка при компилация
userInfo.MachineName = "Home computer";
Полета с достъп само за четене - демо
// Демонстрация
Полета
• Константни полета
– Модификатор за достъп (за момента –
public)
– Ключова дума const
– Тип данни
– Наименование
– Начална стойност (задължителна и
определима по време на компилация)
– Константните полета се достъпват през
класа, а не през негов екземпляр
– Спомагат за премахване на
„магическите числа“ в кода
– Удобни за групиране/класифициране
на константни стойности в програмата

class Building
{
public const int MaxFloors = 15;

public int FloorCount;
}
Building myBuilding = new Building();
do
{
Console.Write("Input floor count: ");
myBuilding.FloorCount =
int.Parse(Console.ReadLine());
}
while ((myBuilding.FloorCount < 1)
|| (myBuilding.FloorCount >
Building.MaxFloors));
Константни полета - демо
// Демонстрация
Пример - музикална колекция
• Програма за описване на музикална колекция
• Класове:
– Музикален албум (заглавие, изпълнител(и), година на издаване,
формат, песни)
– Песен (заглавие, изпълнител(и), автор(и), продължителност)

• Въвеждане на албуми и песни в колекцията
• Извеждане на албумите и песните в колекцията
Музикална колекция - демо
// Демонстрация
Задачи за упражнение
• Преработете играта „Златотърсачи“, така че квадратчетата
да са от структурен тип и да съдържат информация за
терена и наличието на допълнителни обекти върху тях (хора
и диаманти); хората направете обекти, съдържащи
информация за координатите, цвета им и броя на
събраните от тях диаманти.
Задачи за упражнение
• Създайте програма, в която се въвежда метеорологична
информация за всеки кръгъл час от едно денонощие
(реална температура, посока и скорост на вятъра,
„привидна“ температура, атмосферно налягане,
облачност/валежи/мъгла; програмата да определя и
извежда минималните и максималните стойности на
количествените величини.
Задачи за упражнение
• Създайте програма, в която се декларират класове за
свиделство за правоуправление на МПС (номер, дата на
издаване, издаващ орган, валидност), автомобил
(регистрационен номер, марка, модел, дата на
регистриране) и шофьор (имена, свидетелство,
автомобили). Предоставете на потебителя възможност да
регистрира обекти от съответните класове, както и да
разглежда вече регистрираните обекти.
Въпроси?
Благодаря!
• Александър Далемски
– sasho@david.bg
– Skype: musasho
– https://facebook.com/adalemski

• ДАВИД академия
–
–
–
–

acad@david.bg
http://acad.david.bg/
@david_academy
https://facebook.com/DavidAcademy

Contenu connexe

Tendances

Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...DAVID Academy
 
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#DAVID Academy
 
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...DAVID Academy
 
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)DAVID Academy
 
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...DAVID Academy
 
Курс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLКурс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLDAVID Academy
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4DAVID Academy
 
Курс по уеб програмиране (2015), занятие №2 - CSS
Курс по уеб програмиране (2015), занятие №2 - CSSКурс по уеб програмиране (2015), занятие №2 - CSS
Курс по уеб програмиране (2015), занятие №2 - CSSDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2DAVID Academy
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)DAVID Academy
 
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)DAVID Academy
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3DAVID Academy
 
JDK 1.5 New Features
JDK 1.5 New FeaturesJDK 1.5 New Features
JDK 1.5 New FeaturesSvetlin Nakov
 
Курс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSКурс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSDAVID Academy
 

Tendances (17)

Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
Курс по програмиране на C# 2013 - 8. Полиморфизъм. Абстракция. Шаблони. Вград...
 
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
Курс по програмиране на C# 2013 - 1. Въведение в компютърното програмиране и C#
 
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
Курс по програмиране на C# 2013 - 2. Конзолен вход и изход. Условни преходи. ...
 
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2015), занятие №4 - JavaScript (част 2/2)
 
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
Курс по програмиране на C# 2013 - 7. Свойства. Индексатори. Наследяване. Изкл...
 
Курс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTMLКурс по уеб програмиране (2015), занятие №1 - HTML
Курс по уеб програмиране (2015), занятие №1 - HTML
 
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
Курс по информационни технологии (2013) - 1. Desktop приложения. Windows Form...
 
Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4Училищен курс по програмиране на C# (2013/2014), занятие №4
Училищен курс по програмиране на C# (2013/2014), занятие №4
 
Курс по уеб програмиране (2015), занятие №2 - CSS
Курс по уеб програмиране (2015), занятие №2 - CSSКурс по уеб програмиране (2015), занятие №2 - CSS
Курс по уеб програмиране (2015), занятие №2 - CSS
 
Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2Училищен курс по програмиране на C# (2013/2014), занятие №2
Училищен курс по програмиране на C# (2013/2014), занятие №2
 
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
Курс по уеб програмиране (2014), занятие №4 - JavaScript (част 2/2)
 
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
Курс по уеб програмиране (2014), занятие №3 - JavaScript (част 1/2)
 
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
Курс по програмиране на C# 2013 - 6. Обектно-ориентирано програмиране. Класов...
 
Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3Училищен курс по програмиране на C# (2013/2014), занятие №3
Училищен курс по програмиране на C# (2013/2014), занятие №3
 
JDK 1.5 New Features
JDK 1.5 New FeaturesJDK 1.5 New Features
JDK 1.5 New Features
 
Курс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSSКурс по уеб програмиране (2014), занятие №2 - CSS
Курс по уеб програмиране (2014), занятие №2 - CSS
 
Въведение в Perl
Въведение в PerlВъведение в Perl
Въведение в Perl
 

En vedette

Introduction To Useful Wpf
Introduction To Useful WpfIntroduction To Useful Wpf
Introduction To Useful WpfBurke Holland
 
MVVM - Model View ViewModel
MVVM - Model View ViewModelMVVM - Model View ViewModel
MVVM - Model View ViewModelDareen Alhiyari
 
Организация и анализ на данни. Бейхан Данаджъ-ПГИ - Шумен
Организация и анализ на данни. Бейхан Данаджъ-ПГИ - ШуменОрганизация и анализ на данни. Бейхан Данаджъ-ПГИ - Шумен
Организация и анализ на данни. Бейхан Данаджъ-ПГИ - ШуменAdelina Peneva - Club "History"
 
Ускоряване на World Wide Wait
Ускоряване на World Wide WaitУскоряване на World Wide Wait
Ускоряване на World Wide WaitSEOM
 
Училищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоУчилищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоDAVID Academy
 
НВО 7 клас 2014
НВО 7 клас 2014НВО 7 клас 2014
НВО 7 клас 2014Az Vulev
 
пробен дзи 2013
пробен  дзи 2013пробен  дзи 2013
пробен дзи 2013Velikova31
 
Задачи върху съседни и противоположни ъгли
Задачи върху съседни и противоположни ъглиЗадачи върху съседни и противоположни ъгли
Задачи върху съседни и противоположни ъглиMariq Kokalanova
 
Лица задачи върху готови чертежи
Лица задачи върху готови чертежиЛица задачи върху готови чертежи
Лица задачи върху готови чертежиMariq Kokalanova
 
задачи върху готови чертежи признаци за еднаквост триъгълници
задачи върху готови чертежи   признаци за еднаквост триъгълницизадачи върху готови чертежи   признаци за еднаквост триъгълници
задачи върху готови чертежи признаци за еднаквост триъгълнициMariq Kokalanova
 
Ms office word 2007
Ms office word 2007Ms office word 2007
Ms office word 2007club23
 
MS Excel - логическата функция IF
MS Excel - логическата функция IF MS Excel - логическата функция IF
MS Excel - логическата функция IF nad_and
 
ИТ - MS Excel - Проектиране на таблици
ИТ - MS Excel - Проектиране на таблициИТ - MS Excel - Проектиране на таблици
ИТ - MS Excel - Проектиране на таблициnad_and
 
видове триъгълници според страните урок 67
видове триъгълници според страните урок 67видове триъгълници според страните урок 67
видове триъгълници според страните урок 67Светла Събева
 

En vedette (20)

Introduction To Useful Wpf
Introduction To Useful WpfIntroduction To Useful Wpf
Introduction To Useful Wpf
 
Здравей, Swift (Hello, Swift)
Здравей, Swift (Hello, Swift)Здравей, Swift (Hello, Swift)
Здравей, Swift (Hello, Swift)
 
The MVVM Pattern
The MVVM PatternThe MVVM Pattern
The MVVM Pattern
 
MVVM - Model View ViewModel
MVVM - Model View ViewModelMVVM - Model View ViewModel
MVVM - Model View ViewModel
 
Шумен Севим 10 д - ПГИ
Шумен   Севим 10 д - ПГИШумен   Севим 10 д - ПГИ
Шумен Севим 10 д - ПГИ
 
Организация и анализ на данни. Бейхан Данаджъ-ПГИ - Шумен
Организация и анализ на данни. Бейхан Данаджъ-ПГИ - ШуменОрганизация и анализ на данни. Бейхан Данаджъ-ПГИ - Шумен
Организация и анализ на данни. Бейхан Данаджъ-ПГИ - Шумен
 
Ускоряване на World Wide Wait
Ускоряване на World Wide WaitУскоряване на World Wide Wait
Ускоряване на World Wide Wait
 
Ravnob.triagalnik
Ravnob.triagalnikRavnob.triagalnik
Ravnob.triagalnik
 
Училищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - ПомагалоУчилищен курс по програмиране на C# (2013/2014) - Помагало
Училищен курс по програмиране на C# (2013/2014) - Помагало
 
НВО 7 клас 2014
НВО 7 клас 2014НВО 7 клас 2014
НВО 7 клас 2014
 
пробен дзи 2013
пробен  дзи 2013пробен  дзи 2013
пробен дзи 2013
 
Задачи върху съседни и противоположни ъгли
Задачи върху съседни и противоположни ъглиЗадачи върху съседни и противоположни ъгли
Задачи върху съседни и противоположни ъгли
 
Лица задачи върху готови чертежи
Лица задачи върху готови чертежиЛица задачи върху готови чертежи
Лица задачи върху готови чертежи
 
Mat
MatMat
Mat
 
задачи върху готови чертежи признаци за еднаквост триъгълници
задачи върху готови чертежи   признаци за еднаквост триъгълницизадачи върху готови чертежи   признаци за еднаквост триъгълници
задачи върху готови чертежи признаци за еднаквост триъгълници
 
Ms office word 2007
Ms office word 2007Ms office word 2007
Ms office word 2007
 
MS Excel - логическата функция IF
MS Excel - логическата функция IF MS Excel - логическата функция IF
MS Excel - логическата функция IF
 
Zabavna matematika(2)
Zabavna matematika(2)Zabavna matematika(2)
Zabavna matematika(2)
 
ИТ - MS Excel - Проектиране на таблици
ИТ - MS Excel - Проектиране на таблициИТ - MS Excel - Проектиране на таблици
ИТ - MS Excel - Проектиране на таблици
 
видове триъгълници според страните урок 67
видове триъгълници според страните урок 67видове триъгълници според страните урок 67
видове триъгълници според страните урок 67
 

Similaire à Училищен курс по програмиране на C# (2013/2014), занятие №7

Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...DAVID Academy
 
Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1DAVID Academy
 
Курс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
Курс по програмиране на C# 2013 - 3. Функции и методи. РекурсияКурс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
Курс по програмиране на C# 2013 - 3. Функции и методи. РекурсияDAVID Academy
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov
 
Introduction to-rdbms-systems
Introduction to-rdbms-systemsIntroduction to-rdbms-systems
Introduction to-rdbms-systemsRosen Spasov
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BGsvilen.ivanov
 
High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code IntroductionSvetlin Nakov
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality CodeSvetlin Nakov
 
5. vb promenlivi
5. vb promenlivi5. vb promenlivi
5. vb promenlividnaidenowa
 
Introduction To Object Oriented Design and UML
Introduction To Object Oriented Design and UMLIntroduction To Object Oriented Design and UML
Introduction To Object Oriented Design and UMLSvetlin Nakov
 
Информационни системи - упражнение № 1
Информационни системи - упражнение № 1Информационни системи - упражнение № 1
Информационни системи - упражнение № 1Tsvetelin Pavlov
 
Курс по информационни технологии (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
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkciiIvan Peev
 
Nakov - .NET Framework Overview + Security
Nakov - .NET Framework Overview +  SecurityNakov - .NET Framework Overview +  Security
Nakov - .NET Framework Overview + SecuritySvetlin Nakov
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroSvetlin Nakov
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...DAVID Academy
 

Similaire à Училищен курс по програмиране на C# (2013/2014), занятие №7 (20)

Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
Курс по програмиране за напреднали (2012) - 1. Обектно-ориентирано програмира...
 
Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1Училищен курс по програмиране на C# (2013/2014), занятие №1
Училищен курс по програмиране на C# (2013/2014), занятие №1
 
.NET/C#_4
.NET/C#_4.NET/C#_4
.NET/C#_4
 
Курс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
Курс по програмиране на C# 2013 - 3. Функции и методи. РекурсияКурс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
Курс по програмиране на C# 2013 - 3. Функции и методи. Рекурсия
 
Svetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework OverviewSvetlin Nakov - .NET Framework Overview
Svetlin Nakov - .NET Framework Overview
 
Introduction to-RDBMS-systems
Introduction to-RDBMS-systemsIntroduction to-RDBMS-systems
Introduction to-RDBMS-systems
 
Introduction to-rdbms-systems
Introduction to-rdbms-systemsIntroduction to-rdbms-systems
Introduction to-rdbms-systems
 
Web applications with Catalyst BG
Web applications with Catalyst BGWeb applications with Catalyst BG
Web applications with Catalyst BG
 
High Quality Code Introduction
High Quality Code IntroductionHigh Quality Code Introduction
High Quality Code Introduction
 
Nakov High Quality Code
Nakov High Quality CodeNakov High Quality Code
Nakov High Quality Code
 
5. vb promenlivi
5. vb promenlivi5. vb promenlivi
5. vb promenlivi
 
Introduction To Object Oriented Design and UML
Introduction To Object Oriented Design and UMLIntroduction To Object Oriented Design and UML
Introduction To Object Oriented Design and UML
 
Информационни системи - упражнение № 1
Информационни системи - упражнение № 1Информационни системи - упражнение № 1
Информационни системи - упражнение № 1
 
Курс по информационни технологии (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
 
18 operatori i funkcii
18 operatori i funkcii18 operatori i funkcii
18 operatori i funkcii
 
Nakov - .NET Framework Overview + Security
Nakov - .NET Framework Overview +  SecurityNakov - .NET Framework Overview +  Security
Nakov - .NET Framework Overview + Security
 
Nakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - IntroNakov - RDBMS Systems - Intro
Nakov - RDBMS Systems - Intro
 
C++ OpenFest 2015
C++ OpenFest 2015C++ OpenFest 2015
C++ OpenFest 2015
 
.NET/C#_20
.NET/C#_20.NET/C#_20
.NET/C#_20
 
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
Курс по информационни технологии (2013) - 2. Бази данни. Системи за управлени...
 

Plus de DAVID Academy

Курс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLКурс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLDAVID Academy
 
Училищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияУчилищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияDAVID Academy
 
Курс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web ServicesКурс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web ServicesDAVID 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) - 0. Представяне
Курс по информационни технологии (2013) - 0. ПредставянеКурс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. ПредставянеDAVID Academy
 
Курс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - ПомагалоКурс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - ПомагалоDAVID Academy
 
Курс по програмиране на C# (2013) - Упражнения
Курс по програмиране на C# (2013) - УпражненияКурс по програмиране на C# (2013) - Упражнения
Курс по програмиране на C# (2013) - УпражненияDAVID Academy
 
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функцииКурс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функцииDAVID Academy
 

Plus de DAVID Academy (8)

Курс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTMLКурс по уеб програмиране (2014), занятие №1 - HTML
Курс по уеб програмиране (2014), занятие №1 - HTML
 
Училищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - УпражненияУчилищен курс по програмиране на C# (2013/2014) - Упражнения
Училищен курс по програмиране на C# (2013/2014) - Упражнения
 
Курс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web ServicesКурс по информационни технологии (2013) - 5. HTTP & Web Services
Курс по информационни технологии (2013) - 5. HTTP & Web Services
 
Курс по информационни технологии (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) - 0. Представяне
Курс по информационни технологии (2013) - 0. ПредставянеКурс по информационни технологии (2013) - 0. Представяне
Курс по информационни технологии (2013) - 0. Представяне
 
Курс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - ПомагалоКурс по информационни технологии (2013) - Помагало
Курс по информационни технологии (2013) - Помагало
 
Курс по програмиране на C# (2013) - Упражнения
Курс по програмиране на C# (2013) - УпражненияКурс по програмиране на C# (2013) - Упражнения
Курс по програмиране на C# (2013) - Упражнения
 
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функцииКурс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
Курс по програмиране на C# 2013 - 9. Делегати. Събития. Ламбда функции
 

Училищен курс по програмиране на C# (2013/2014), занятие №7

  • 1. Курс по програмиране на C# Занятие №7 Обектно-ориентирано програмиране. Класове. Обекти. Структури. Полета 2013
  • 3. Обектно-ориентирано програмиране • Какво е „обекно-ориентирано програмиране“? – Парадигма (подход) в програмирането – Програмният код се разбива на части (обекти) – Обектите се характеризират с данни и функции (характеристики и поведение) – Обектите си взаимодействат – различни начини – Три основни принципа: • Капсулиране • Наследяване • Полиморфизъм
  • 4. Обектно-ориентирано програмиране • Кратка история на ООП – Simula 67 – първи стъпки – Smalltalk – чистият ООП език: обектите взаимодействат непряко, чрез съобщения – C++, Delphi, Objective-C – навлизане на ООП парадигмата в масовата практика – Java, C#.NET, Python, Ruby, JavaScript, PHP 5 – съвременни ООП езици – Бъдещето?
  • 5. Обектно-ориентирано програмиране • Предимства на ООП – Програмите са отражение на реалния свят – Реалният свят може да бъде моделиран чрез естественото му разделяне на прости съставни части (обекти) – Тези модели могат лесно да бъдат трансформирани в обектноориентирани програми – Улеснява се разработката от екипи от разработчици – Изолират се промените в отделен фрагмент от програмата
  • 6. Класове • Какво е „клас“? Абстрактно понятие в ООП Обединява обекти със сходни характеристики и поведение Съставен тип данни Множество от стойности – всички комбинации от възможни стойности на характеристиките – Не описва конкретен физически обект, а дефинира как всеки конкретен обект може да бъде описан – Различните класове могат да описват по-широко или поспециализирано множество от обекти – – – –
  • 7. Класове • Примери за класове – – – – – – – – Жив организъм Човек Учител Куче Превозно средство Автомобил Прозорец в приложение с графичен потребителски интерфейс Файл
  • 8. Класове • Програмиране с класове – В обектно-ориентираните езици програмите представляват декларации на множество класове – В декларацията на всеки клас се описват неговите членове: • Полета – подобни на локални променливи за всеки обект на класа, те съдържат характеристиките му • Методи – функции, които се прилагат върху обект на класа, като имат достъп до неговите характеристики – Някои езици, като например C# и Java, не позволяват поставянето на никакъв код извън декларация на клас – това са напълно обектно-ориентирани езици
  • 9. Обекти • Какво е „обект“? – Абстрактно понятие в ООП – Представлява конкретен екземпляр (инстанция) на някакъв клас – Съдържа конкретни стойности за характеристиките, описани от класа – Върху него могат да бъдат изпълнени методите, описани от класа – Понятието се използва и за променлива, чийто тип данни е клас
  • 10. Обекти • Примери за обекти Конкретна бактерия по тялото ви Бай Иван Г-жа Савова Едно от кучетата на съседа Влак „Чайка“, пристигащ в 19:20 на гара Казанлък на 07.02.2014 г. (ако не броим закъсненията) – Служебният автомобил на Валери – Прозорецът на Visual Studio 2012, което сте отворили в момента – Файлът, в който е съхранена тази презентация – – – – –
  • 11. Обекти • Как обектите и техните класове улесняват създаването на програми? – Класовете описват сходни характеристики и поведение – На базата на тях, програмистът може да опише алгоритми, които не зависят от конкретни стойности на характеристиките – Съответните алгоритми могат да бъдат приложени върху произволни инстанции на класовете – Нещо повече: сами по себе си алгортимите стават част от поведението на тези или други класове – Могат да се създадат системи с изключително висока сложност, които са разделени на малки относително независими модули
  • 12. Класове в C# • Класове в C# – Референтни типове данни – Както всички типове данни, имат уникално наименование в рамките на съответното пространство от имена – Декларират се всички членове класа – Желателно е (но не е задължително) декларацията на всеки клас да бъде в отделен файл със същото име – Възможно е декларацията на клас да бъде разделена в няколко файла – Класовете могат да наследяват други класове (наследяването ще разгледаме подробно в друг урок)
  • 13. Класове в C# • Деклариране на клас Ключова дума class Наименование на класа Блок с декларации на членове Декларациите на членове ще разгледаме по-късно – Може декларацията да се предхожда от ключовата partial, за да се раздели в няколко файла – – – – class Program { // Декларации на членове } class Car { // Декларации на членове } // Частична декларация на клас partial class CivilServant { // Декларации на членове }
  • 14. Класове в C# - демо // Демонстрация
  • 15. Обекти в C# • Обекти в C# – Декларираме променливи от тип данни някакъв клас, както го правим за всички други типове данни – За да се създаде (инстанцира, конструира) обект (инстанция, екземпляр) на клас, се използва операторът new – При създаването на обекта се заделя необходимото количество памет в heap и с него се свързва референция, която се записва в съответната променлива – Може няколко променливи да реферират един и същи обект в паметта – При създаването на обекта, данните му могат да бъдат инициализирани по начин, описан в специален член на класа – конструктор (ще ги разгледаме следващия път)
  • 16. Обекти в C# • Деклариране на променлива, която ще съдържа обект – Тип данни (наименование на класа) – Име на променлива; • Инстанциране на обект – Оператор new – Наименование на класа – Списък от аргументи в кръгли скоби (за момента – празен) • Новоинстанциран обект може да бъде включен директно в израз или подаден като аргумент на функция // Деклариране на променлива за обект Car raceCar; // Инстанциране на обект raceCar = new Car(); // Декларация на променлива // с инициализация CivilServant cashier = new CivilServant();
  • 17. Обекти в C# - демо // Демонстрация
  • 18. Структури в C# • Какво е „структура“ в C#? – Нереферентен тип данни – Подобно на класовете, декларира членове (характеристики и поведение) – Не позволява наследяване (базовият тип на всички структурни типове винаги е System.ValueType) – Понятието се използва и за стойностите от структурен тип – Както всички нереферентни типове, сравнението за равенство между две структури по подразбиране се свежда до сравнение за равенство по всички техни характеристики
  • 19. Структури в C# • Деклариране на структурен тип данни – Ключова дума struct – Наименование на структурния тип – Блок с декларации на членове struct { // } struct { // } struct { // } Book Декларации на членове MailAttachmentInfo Декларации на членове GameTile Декларации на членове
  • 20. Структури в C# • Променливи от структурен тип // Деклариране на променлива от // структурен тип – Не е необходимо да се инициализират GameTile tile; преди стойностите им да бъдат // Използване на променливата веднага достъпени: памет за тях се заделя при самото им деклариране и на всяка от // след декларирането ѝ GameTile otherTile = tile; характеристиките им се присвоява // Присвояване на "празна" структура стойност по подразбиране otherTile = new GameTile(); – При присвояване на стойност на променлива от структурен тип, стойностите на всяка от характеристиките на присвояваната структурна стойност се копират в паметта, заделена за променливата – Все пак може да се използва операторът new, за да се присвои на променлива „свежа“ стойност
  • 21. Структури в C# - демо // Демонстрация
  • 22. Полета • Какво е „поле“? Член на клас Нарича се още член-данна Съхранява конкретна характеристика на обект от съответния клас Може да се разглежда като локална променлива за обекта Декларира се в класа Всеки екземпляр на класа съдържа конкретна стойност в съответното поле – Всички данни на обект се съхраняват в полета – – – – – –
  • 23. Полета • Примери за полета – Латинско наименование на биологичен вид (за клас „жив организъм“) – Собствено и фамилно имена (за клас „човек“) – Трудов стаж и преподаван предмет (за клас „учител“) – Порода и възраст (за клас „куче“) – Пътнически и товарен капацитет (за клас „превозно средство“) – Текуща, номинална и максимална скорост (за клас „автомобил“) – Заглавие, размери и позиция (за клас „прозорец на приложение с графичен потребителски интерфейс“) – Дати на създаване, последна модификация и последен достъп (за клас „файл“)
  • 24. Полета • Деклариране на полета в C# – Полетата в C# се декларират в рамките на декларацията на класа – Всяко поле има следните характеристики: • • • • • Тип на данните Наименование (уникално измежду всички членове на класа) Видимост (ще говорим за нея в следващ урок) Дали е константно или достъпно само за четене Дали е статично (статичните членове ще разгледаме в друг урок) – При декларацията на поле може да се укаже неговата начална стойност – Ако не е указана начална стойност, се използва стойността по подразбиране на съответния тип данни
  • 25. Полета • Деклариране на полета – Модификатор за достъп (за момента – public) – Тип данни – Наименование • Деклариране с инициализация (начална стойност) – Декларация на поле – Знак за равенство – Израз, съвместим с типа на полето class Car { public string Make; public string Model; public int Year; public string Colour; } class Person { public string FullName; public string Nationality = "Bulgarian"; public bool IsAlive = true; } struct Book { public string Author; public int Edition; public int Year; }
  • 26. Деклариране на полета - демо // Демонстрация
  • 27. Полета • Достъпване на полета в C# – Поле на обект може да бъде достъпено от произволно място в програмата, като между израза, представляващ екземпляра, и наименованието на полето се постави операторът за достъпване на член „.“ – Така конструираният израз може да бъде използван по същия начин, както обикновена променлива: • Може да бъде включен в друг израз • Може да бъде подаден като аргумент на функция • Може да му бъде присвоена стойност – В декларацията на класа, полетата могат да бъдат достъпени и директно чрез наименованията си, подобно на локални променливи
  • 28. Полета • Достъпване на полета на обект – Израз, представляващ обекта (екземпляр на класа) – Оператор за достъпване на член „.“ – Наименование на полето – Полетата се използват, както локални променливи и параметри на функции // Присвояване на стойности на полета Car car = new Car(); car.Make = "Peugeot"; car.Model = "306"; car.Year = 2005; car.Colour = "Dark green metallic"; // Достъпване на стойности на полета Console.WriteLine( "{0} {1}, Year: {2}", car.Make, car.Model, car.Year); // Конструиране с инициализация на полета Person me = new Person() { FullName = "Aleksandar Dalemski", Nationality = "Bulgarian", };
  • 29. Достъпване на полета - демо // Демонстрация
  • 30. Полета • Полета с достъп само за четене – Модификатор за достъп (за момента – public) – Ключова дума readonly – Тип данни – Наименование – Начална стойност (незадължителна) – На полето не могат да бъдат присвоявани стойности никъде, освен в инициализацията му или в тялото на конструктор class UserInfo { public readonly DateTime ObtainedOn = DateTime.Now; public readonly string UserName = Environment.UserName; public readonly string MachineName = Environment.MachineName; } UserInfo userInfo = new UserInfo(); // Достъпване на поле само за четене Console.WriteLine(userInfo.UserName); // Опит за присвояване на стойност: // Предизвиква грешка при компилация userInfo.MachineName = "Home computer";
  • 31. Полета с достъп само за четене - демо // Демонстрация
  • 32. Полета • Константни полета – Модификатор за достъп (за момента – public) – Ключова дума const – Тип данни – Наименование – Начална стойност (задължителна и определима по време на компилация) – Константните полета се достъпват през класа, а не през негов екземпляр – Спомагат за премахване на „магическите числа“ в кода – Удобни за групиране/класифициране на константни стойности в програмата class Building { public const int MaxFloors = 15; public int FloorCount; } Building myBuilding = new Building(); do { Console.Write("Input floor count: "); myBuilding.FloorCount = int.Parse(Console.ReadLine()); } while ((myBuilding.FloorCount < 1) || (myBuilding.FloorCount > Building.MaxFloors));
  • 33. Константни полета - демо // Демонстрация
  • 34. Пример - музикална колекция • Програма за описване на музикална колекция • Класове: – Музикален албум (заглавие, изпълнител(и), година на издаване, формат, песни) – Песен (заглавие, изпълнител(и), автор(и), продължителност) • Въвеждане на албуми и песни в колекцията • Извеждане на албумите и песните в колекцията
  • 35. Музикална колекция - демо // Демонстрация
  • 36. Задачи за упражнение • Преработете играта „Златотърсачи“, така че квадратчетата да са от структурен тип и да съдържат информация за терена и наличието на допълнителни обекти върху тях (хора и диаманти); хората направете обекти, съдържащи информация за координатите, цвета им и броя на събраните от тях диаманти.
  • 37. Задачи за упражнение • Създайте програма, в която се въвежда метеорологична информация за всеки кръгъл час от едно денонощие (реална температура, посока и скорост на вятъра, „привидна“ температура, атмосферно налягане, облачност/валежи/мъгла; програмата да определя и извежда минималните и максималните стойности на количествените величини.
  • 38. Задачи за упражнение • Създайте програма, в която се декларират класове за свиделство за правоуправление на МПС (номер, дата на издаване, издаващ орган, валидност), автомобил (регистрационен номер, марка, модел, дата на регистриране) и шофьор (имена, свидетелство, автомобили). Предоставете на потебителя възможност да регистрира обекти от съответните класове, както и да разглежда вече регистрираните обекти.
  • 40. Благодаря! • Александър Далемски – sasho@david.bg – Skype: musasho – https://facebook.com/adalemski • ДАВИД академия – – – – acad@david.bg http://acad.david.bg/ @david_academy https://facebook.com/DavidAcademy