Методи в До-диез
Концепцията за обектно-ориентирано програмиране (ООП). Класове и обекти
Обектно-ориентираното програмиране (ООП) означава един от най-ефективните подходи към съвременното програмиране.
Преди това програмистите в повечето случаи използваха функционалния или процедурния принцип на програмиране. Всички програми, големи и малки, бяха написани в един файл. С течение на времето програмите ставаха все по-сложни, което създаваше проблеми за разработчиците да поддържат такива програми и да правят промени. Този проблем се решава чрез обектно-ориентирано програмиране. OOP ви позволява да комбинирате данни и методи, свързани с един обект и да работите с тях, сякаш са един обект.
Класове и обекти. Каква е разликата?
OOP ни предлага две ключови концепции:Клас иОбект.Клас е абстрактен тип данни. С помощта на клас се описва някакъв обект (неговите характеристики и възможни действия). Например клас може да описва ученик, кола и т.н. След като сме описали класа, можем да създадем негов екземпляр -object. Един обект вече е конкретен представител на клас.
Да предположим, че трябва да работим с държави в програмата. Държавата е абстрактно понятие. Има характеристики като име, население, площ, знаме и др. За описание на такава държава ще се използва клас със съответните полета с данни. Държави като България и Украйна вече ще бъдат обекти (конкретни представители на типа държава).
Основни принципи на обектно-ориентираното програмиране
OOP се основава на няколко основни принципа, всеки от които ще бъде посветен на отделен урок, но засега накратконека ги разгледаме.
Абстракция - позволява ви да изберете от даден обект само необходимите характеристики и методи, които напълно (за задачата) описват обекта. Например, когато създаваме клас, за да опишем ученик, ние подчертаваме само необходимите характеристики, като пълно име, номер на книжката за оценки, група. Тук няма смисъл да добавяте полето за тегло или името на неговата котка / куче и т.н.
Всичко е толкова объркващо
Разбира се, за тези, които изобщо не са запознати с ООП, всичко това може да изглежда сложно и ще бъде трудно веднага да се разбере какво е какво. Но с по-нататъшни уроци ООП подходът ще стане по-ясен за вас и ще стане ясно, че всичко е много логично.
Класове по C-диез. Деклариране на класове и създаване на обекти
Клас е абстрактен тип данни. С други думи, класът е някакъв шаблон, въз основа на който ще бъдат създадени неговите екземпляри -обекти.
[модификатор за достъп] клас [име на клас] //тяло на класа >
Има два модификатора за достъп за класове:
Какво е сглобяване?
Асамблея (assembly) е готов функционален модул под формата на exe или dll файл (файлове), който съдържа компилиран код за .NET. Сглобяването предоставя възможност за повторно използване на код.
namespace HelloWorld class Student //без да се указва модификатор за достъп, класът ще бъде вътрешен //тяло на класа > публичен клас Ученик //тяло на класа > >
Членове на класа
Класовете в C-sharp могат да съдържат следните членове:
Всички членове на един клас, както и самият клас, имат собствено ниво на достъп. Само членовете вече могат да имат пет:
Ако не посочите модификатор за достъп за член, той ще бъде в режимличенпо подразбиране.
С помощМодификаторите за достъп в C-sharp прилагат един от основните принципи на ООП -капсулиране.
В този урок ще разгледаме членовете на класа като полета и константи.
Полета на клас
Поле е променлива, декларирана в рамките на клас. Обикновено полетата се декларират с модификаторите за достъпprivateилиprotected, за да се предотврати директен достъп до тях. Трябва да използвате свойства или методи за достъп до полета.
class Student private string firstName; личен низ фамилно име; частна възраст; обществена низова група; // не се препоръчва използването на public за поле >
Създаване на обекти
След като сме декларирали класа, вече можем да създаваме обекти. Това се прави с помощта на ключовата думаnewи името на класа:
namespace HelloWorld class Student private string firstName; личен низ фамилно име; частна възраст; обществена низова група; > class Program static void Main(string[] args) Student student1 = new Student(); //създаване на обект student1 от клас Student Student student2 = new Student(); > > >
Членовете на обект се осъществяват чрез оператора за точка ". " :
static void Main(string[] args) Student student1 = new Student(); Студент student2 = нов студент();
student1.group = "Група1"; student2.group = "Група2";
Console.WriteLine(student1.group); // показва "Group1" Console.Write(student2.group); Console.ReadKey(); >
Полетата на класаStudentкатоfirstName,lastNameиageса посочени с модификатора за достъпprivate, така че достъпът до тях ще бъде отказан извън класа:
static void Main(string[] args) Студентстудент1 = нов ученик(); student1.firstName= "Николай"; //грешка, няма достъп до полето firstName. Програмата няма да компилира >
Константи
Константите на член на класа не се различават от обикновените константи в методите, които бяха обсъдени в променливите и константите на урока.
class Math private const double Pi = 3.14; >
Домашна работа
Създайте някакъв клас (например клас Car), декларирайте полета с различни режими на достъп (частен, защитен, вътрешен, публичен) в него. Създайте обект от класа и опитайте да записвате/получавате данни от различни полета.
Методи в до-диез. Разлика между прост и статичен
Метод е малка подпрограма, която в идеалния случай изпълнява само една функция. Методите ви позволяват да намалите количеството код.
Методите, заедно с полетата, са основните членове на класа.
По-рано вече разгледахме методите в урока Функции в C-sharp, но сега ще ги разгледаме от различен ъгъл.
В този урок разгледахме статичните методи, а в този урок ще говорим за простите и разликата между тях.
Статичен метод е метод, който няма достъп до полетата на даден обект и за да се извика такъв метод, не е необходимо да се създава екземпляр (обект) на класа, в който е деклариран.
Прост метод е метод, който има достъп до данните на обект и се извиква чрез обекта.
Използват се прости методи за обработка на вътрешните данни на даден обект.
Ще дам пример за използване на прост метод. КласTV, има полеswitchedOn, което показва включено/изключено състояние и два метода - включено и изключено:
class TVSet private bool switchedOn;
public void SwitchOn() включено = вярно; > public void SwitchOff() switchedOn = невярно; > > class Program static void Main(string[] args) TVSet myTV = new TVSet(); myTV.SwitchOn(); // включване на телевизора, switchedOn = true; myTV.SwitchOff(); // изключване на телевизора, switchedOn = false; > >
За да извикате прост метод, пред името му поставете името на обекта. За да извикате статичен метод, трябва да посочите името на класа.
Статичните методи обикновено изпълняват някаква глобална, обща функция, обработват "външни данни". Например сортиране на масив, обработка на низ, повишаване на число на степен и др.
Пример за статичен метод, който изрязва низ до определена дължина и добавя многоточие: