Термините "предмет" и "клас" са познати на всяко лице. За компютърните дизайнери обаче те имат свой собствен подтекст. Това са основните понятия в обектно-ориентираното програмиране. Класове - типът данни се определя от разработчика, който се характеризира с начина на предаване и съхранение, профила на използване и набора от действия, които те могат да изпълняват. Те се различават по това, което може да се приложи като интерфейс.
Какво е ООП (обектно-ориентирано програмиране)
Абстракция
Опитваме се да се фокусираме само върху онези неща, които са важни за нас (в живота) или на нашия модул (в програмирането). Смяната на един независим модул не засяга другите. Единственото нещо, което трябва да знаете е това, което ни дава. Лицето, използващо този модул, не трябва да се тревожи за това каква задача е решена, какво става във фонов режим.
Инкапсулиране
Наследяване
Полиморфизъм
Характеристики на понятията "клас" и "обект"
тип
TForml = class (TForm)
Buttonl: TButton;
процедура ButtonlClick (подател: TObject);
край;
може
Forml: TForml;
Ако искаме да симулираме в нашата програма, например автомобил, тогава трябва да определим неговите атрибути: модел, гориво, марка, цвят, неговото поведение, както и т.нар. , Ясно е, че тези показатели са характерни не само за една марка или модел на превозното средство.
В обектно-ориентирания подход се опитваме да обобщим нашия обект (машина), като твърдим, че този, който ще симулираме в нашата програма, ще има някои атрибути и методи. Възможно е да има други индикатори и характеристики на превозното средство, но ние сме достатъчно изброени, за да разберем как работи класът в ООП.
Когато използваме тези данни, създаваме автомобил със специфични параметри. Когато програмираме един и същ обект (машина), можем да приемем различни характеристики, както е показано в таблицата по-долу:
Метод на спиране: прекъсване ()Обект 1 | Обект 2 |
модел: Vaz 2107 | модел: Vaz 2109 |
гориво: бензин | гориво: дизел |
цвят: червен | цвят: зелен |
метод за стартиране на двигателя: Старт () | метод за стартиране на двигателя: Старт() |
метод на спиране: прекъсване () | |
Метод на ускоряване: ускорение () | Метод на ускорение: ускорение () |
Класовете на ООП се състоят от елементи от различни типове:
- Полета с данни: съхранява състоянието на класа чрез променливи и структури.
- Методи: подпрограми за манипулиране на посочените данни.
- Някои езици позволяват на третия тип собственост да бъде. Това е нещо между първите две.
Методи
Поведението на класа или неговите инстанции се определя чрез методи. Това е подпрограма с възможност за работа с обекти. Тези операции могат да променят състоянието на даден обект или просто да осигурят начини за достъп до него.
& lt; script type = "text /javascript" & gt;
може да blockSettings = {blockId: "R-A-70350-45", renderTo: "yandex_rtb_R-A-70350-45", async:! 0};
if (document.cookie.indexOf ("abmatch =")> = 0) blockSettings.statId = 70350;
Функция (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (функция () {Ya.Context.AdvManager.render (blockSettings}), e = b.getElementsByTagName ("скрипт") , d = b.createElement ("скрипт"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (това, този.документ," yandexContextAsyncCallbacks ");
Има много методи. Тяхната подкрепа зависи от езика. Някои от тях са създадени и извикани от кода на програмиста, други (специални, като конструктори,деструктори и оператори за преобразуване) се създават и извикват от генерирания код на компилатора. Езикът може да позволи на програмиста да дефинира тези специални методи.
Интерфейс
Това е дефиниция на група абстрактни действия. Той открива какво поведение трябва да покаже конкретен обект, без да уточнява как трябва да се прилага.
Един обект може да има няколко роли и потребителите могат да го използват от различни гледни точки. Например, обект от типа "човек" може да има роля:
- Войник (с поведението на "стреляй по врага").
- Човек (с поведението на "обича жена си").
- Данъкоплатец (с поведението на "плащат данъци") и т.н.
Възниква въпросът защо основният клас на всички обекти не е интерфейс. Причината е, че в този случай всеки клас ще трябва да приложи малка, но много важна група от методи, които ще отнемат ненужно време. Оказва се, че не всички класове изискват специфична реализация - по подразбиране по подразбиране в повечето случаи е достатъчно. Няма нужда да се пренебрегват всички методи, но ако ситуацията изисква това, е възможно да се извърши тяхното заместване.
Добър пример са бутоните отпред на телевизора. Може да се каже, че те са интерфейсът между потребителя и окабеляването от другата страна на кутията на устройството.Човек кликва върху бутона за захранване, за да включи и изключи уреда. В този пример конкретен телевизор е инстанция, всеки метод е представен с бутон и всички заедно образуват интерфейс. В най-често срещаната си форма тя е спецификация на група свързани методи без тяхното изпълнение.
Designer
Този критерий е отговорен за подготовката на обекта за действие, например за определяне на началните стойности за всичките му данни и техните елементи. Въпреки че играе специална роля, конструкторът е просто друга функция, която ви позволява да предавате информация чрез списък с аргументи. Можете да ги използвате, за да ги инициализирате. Името на дизайнера на класа е същото.
Следният пример обяснява концепцията за конструктор на клас в C ++ (общ език за програмиране):
# включва
използвайки пространство от имена std;
клас Линия {
публична:
невалидна setLength (двойна лента);
двойно getLength (void);
Линия (); //Дизайнерска декларация
частна: двойна дължина;
};
//Дефиниция на функции, включително конструктор
Line :: Line (void) {
cout "Object created" endl;
}
void Line :: setLength (double len) {
дължина = дължина;
}
двойна Line :: getLength (void) {
връщана дължина;
}
//Тялото на програмата
int main () {
Линия;
//Дължина на линия
line.setLength (6.0);
cout "Дължина на реда:" line.getLength () endl;
връщане 0;
}
Когато горният код се компилира и изпълни, той дава следния резултат:
Създаден обект
Дължина на ред: 6
Destructor
Това е специална функция на клас, който унищожава обект катоприключва само областта на действие. Деструктор от компилатора се извиква автоматично, когато обектът е извън полезрението.
Синтаксисът за деструктора е същият като за конструктора, но името на класа се използва в този случай с по-малкия знак "~" като префикс.
Следният пример в C ++ обяснява концепцията за деструктор:
# включва
използвайки пространство от имена std;
клас Линия {
публичен: void setLength (double len);
double getLength (void);
ред (); //Дизайнерски анотации
~ Line (); //Съобщение на разрушителя
частно: двойна дължина;
}
//Дефиниция на функции, включително конструктор
Line :: Line (void) {
cout "Object created" endl;
}
Line :: ~ Line (void) {
cout "Обектът е отдалечен" endl;
}
void Line :: setLength (double len) {
дължина = len;
}
double Line :: getLength (void) {
връщане на дължината;
}
//Тяло на програмата
int main () {
Линия;
//Дължина на линия
line.setLength (6.0);
cout "Дължина на реда:" line.getLength () endl;
връщане 0;
}
Когато горният код се компилира и изпълни, той дава следния резултат:
Създаден обект
Дължина на реда: 6
Обектът е отдалечен