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


OOP е програмска парадигма, односно начин на програмирање во кој преовладува концептот на создавање објекти. Секој објект може да има свои членови и функции што можеме да ги повикаме преку тој објект. Функциите што ги повикуваме преку објект се нарекуваат методи. Објектите се создаваат како примери на класа. Ние ги сметаме типовите податоци како класа. На пример, Стрингот е класа, но со веќе постоечки типови на податоци, честопати имаме потреба да правиме сопствени типови на податоци.

Објектно-ориентиран пристап ви овозможува да напишете код што лесно се менува и надградува, а кодот може повторно да се искористи. Овој пристап кон програмирање носи некои важни карактеристики за кои денес сметаме дека се основните принципи на OOP. Во овој дел, ние само ќе ги наведеме и ќе ги објасниме подоцна.

1. Наследство engl. Inheritance) - Од постоечка класа или нова класа можеме да создадеме нова класа со сите членови на „суперкласата“, односно „изведената класа“ наследува членови и методи од „Основна класа“.

2. Енкапсулација (engl. Encapsulation)- Сокривање податоци или забрана за пристап до податоци од една класа од друга класа или метод.

3. Полиморфизам (engl. Polymorphism)- Накратко, полиморфизмот е значење

"Едно име -> повеќе облици". Ова значи дека можеме да имаме повеќе функции со исто име, но со помала или поголема разлика во функционалноста.

Класи (класи) и објекти (инстанци)

Што се класи и предмети

Класа е тип на податоци. Навикнати сме на типови на податоци како цели броеви кои претставуваат цели броеви, или да кажеме знаци што претставуваат еден знак. Но, што ако сакаме да работиме со комплексни броеви. Во овој случај, можеме да ги дефинираме нашите сопствени типови на податоци со создавање класа која ќе има својство на реална и имагинарна компонента. Досега, кога пишувате променливи, најверојатно сте го направиле процесот на прво внесување на типот на податоци на променливата што ја креирате, потоа нејзиното име, и евентуално доделување на одредена вредност на таа променлива -> Int број = 5.

Ако создадеме класа на комплексни броеви во кои дефинираме дека променливите што ќе бидат од типот „Комплексен“ содржат реална и имагинарна компонента, би можеле да направиме нешто како ова:

 Комплексен број = 12 + 24i. Во овој случај, имаме тип на податоци кој знае како да препознае реални и имагинарни компоненти на комплексен број. Исто така, на таквите класи можеме да додадеме функции за собирање, одземање, множење и делење на комплексни броеви.

(Сложениот број се состои од реален и имагинарен дел. На пример 3 + 2i или 4-5i. Буквата „i“ означува имагинарна компонента.)

За полесно да се разбере класната апстрактност, да погледнеме пример за реалниот свет. Замислете дека имате тип на податоци за Vozilo. Засега се ограничуваме само на автомобили. Секое Vozilo може да има различни членови како број на тркала, тип на мотор (бензин или дизел), рачен или автоматски менувач, должина, ширина, visina, боја и друго. Во светот на програмирањето, ова значи дека можеме да создадеме класа „Vozilo“ со исти својства. Потоа можеме да направиме променлива што е според типот на податоци „Vozilo“. Пример за создавање ваква променлива би бил: „Vozilo avtomobilBroj1;“. Создадовме променлива наречена „ avtomobilBroj1 “ која е по тип "Vozilo". Кога креираме променлива од овој тип, велиме дека создадовме објект или пример на класата.Како што знаеме дека класата „Vozilo“ содржи својства како боја, должина, ширина и други, истите својства важат и за променливата „ avtomobilBroj1 “. Ако напишеме " avtomobilBroj1.color =" crveno ", тогаш ќе го дефинираме својството" color "за таа променлива и ќе ја доделиме вредноста "crveno" на таа особина. Исто така, можеме да создадеме друг објект „ avtomobilBroj2 “ кој ќе ги има сите својства што ги има класата „Vozilo“. Сега можеме да ги дефинираме својствата на овој автомобил. " avtomobilBroj2.color ="sino " ќе дефинира својство за овој објект "color" со доделената вредност "sina".

Како се создаваат класи.

 Во развојниот интерфејс на Visual Studio, во рамките на Solutiona на кое работиме, кликнете со десното копче, изберете - Add, а потоа„New Item 

 

Се отвора менито за додавање датотеки.

Слика 2 - Мени за додавање класа

Мора да се избере датотеката "Class". Во долниот дел го внесуваме името на класата што сакаме да ја додадеме. Откако ќе го внесете името, изберете го копчето „Add“ и новата класа ќе се појави во рамките на Solution Explorer.

Слика 3 - Приказ на ново додадената класа во Solution Explorer

Visual Studio, исто така, веднаш ќе ја отвори таа класа за уредување.

 Слика 4 - Почетен код по додавање нова класа

Проверете дали вашата класа е внатре во Имениот простор со истото име како и проектот (.cs екстензија) на кој работите. Почнуваме да создаваме класа со пишување на клучниот збор „ class “ проследено со името на класата што ја креираме. На програмскиот јазик C #, конвенцијата е класите да се искористуваат со големи букви. Ако вашиот час се состои од неколку зборови, напишете ги сите заедно, започнувајќи го секој збор со голема буква. На пример " PrvaTestKlasa ". Избегнувајте да пишувате имиња на часови што започнуваат со броеви и симболи. Имајте на ум дека „Intelli-Sense“ секогаш ќе ги надополни вашите имиња, така што не е проблем да напишете долго име за класа.

Додавање членови на класа

 Кога креираме класа, мора да имаме на ум дека создаваме нов тип на податоци. Како таков, овој тип на податоци е всушност комплексен тип на податоци. На крајот на краиштата, ако ни требаше само примитивен тип на податоци (Цел број, Плови, Двојно, знак, ...) не би работеле ниту на нов тип на податоци. Сложените типови на податоци се состојат од едноставни типови на податоци. Токму овие упатства ги следиме кога креираме сопствени класи. Во рамките на витканите загради што го означуваат почетокот и крајот на класата или блок команди, ги пишуваме членовите (и методите) на таа класа.

 Слика 5 - Додавање својства на класа

Гледаме како се пишуваат членовите како обични променливи од одреден примарен тип на податоци (исклучок е типот на податок Стринг кој сам по себе не е примарен тип на податоци, но сигурни сме дека компајлерот ќе знае како да работи со таков тип на податоци).

Сега создадовме класа за возила која има членови „boja“ и „visina“. Ако создадеме пример од таа класа или нов објект што е од типот „Vozilo“, ќе ги имаме на располагање овие две својства. Пристапуваме до својствата (и методите) со внесување на симболот на точката зад објектот, по што ќе се појават достапните својства и методи, на кои потоа стандардно доделуваме вредност користејќи го операторот за приклучување (знак за еднаквост).

  Додавање методи во класа

На ист начин како што додаваме својства во класи, додаваме функции. Кога се додава функција во класа, односно е поврзана со таа класа, тогаш се нарекува метод. Методот го нарекуваме преку објекти или инстанци од класа.

Слика 6 - Додавање методи на класа

Овде е создаден метод наречен "zemiboja()" . Овој метод не прима никакви параметри и го враќа она што е зачувано како „boja“ од класата „Vozilo“.

Наследување класи – class

Способноста да наследиме класи ни овозможува да создадеме главна класа од која потекнуваат други класи. Изведените класи ги преземаат својствата на главната класа. На пример, дали имаме класа „Vozilo“ со елемент brojVrati“ што го означува бројот на врати што ги има Vozilo и „dolzina“ што ја означува должината на Voziloто, можеме да направиме два наследени класи, едната „avtomobil“, а другиот „motorcikal“. Во рамките на секоја од овие класи ќе ги дефинираме нивните посебни својства што се карактеристични само за нив, но основните својства што се заеднички за мотоциклот и автомобилот што ќе ги наследиме од класата Vozilo.

Слика 7 - Наследување класи

Синтаксата за наследување е: (евентуално право на пристап) - клучен збор „class“ - новата класа што ја создаваме - симбол на двоточка (:) - името на класата што ја наследуваме.

Слика 8 - Класа на возила

Гледаме дека во класата „ Vozilo “ има елементи на боја, visina, должина, ширина и волумен. До сите својства може да се пристапи во рамките на наследената класа „Avtomobil“. Забележете дека можеме да пристапиме само до својствата на класата, во нашиот случај тоа се " Volumen " и "boja".

 

Слика 9 - Пристап до својствата на класата на наследство