Конструктор и Деструктор

Општо за конструкторот

Конструктор е метод (функција во класа) што ја нарекуваме кога сакаме да создадеме нова инстанца од таа класа (нов објект). Користејќи го конструкторот, при креирање нова инстанца на класа, можеме да доделиме вредности на елементите на класата што објектот ќе ги преземе веднаш по креирањето. Ако не е наведен конструктор, ќе се користи стандардниот конструктор (Default). Се разбира, ние можеме да создадеме свои конструктори.

Можеме да имаме неколку конструктори во една класа!

Создавање конструктор

Ние пишуваме конструктор како и секој друг метод, во класа. За да се направи конструктор, овој метод мора да има исто име како и самата класа. Правото за пристап што му го доделуваме на конструкторот е Јавно. Имајте на ум цело време, ако не направите свој конструктор, ќе се повика стандардниот конструктор.

Забележете дека конструкторот, за разлика од сите други функции, нема спецификација за тип на враќање. Едноставно напишете прво право на пристап (Јавно), потоа името на конструкторот и сите параметри во заградата (како и кај другите методи). Внатре во виткани загради, пишуваме понатамошен код што ќе се изврши кога се креира инстанца од таа класа.

Забележете дека стандардниот конструктор нема параметри (внатре во загради)

Слика 1 - Создавање конструктор

Претпоставен - Default конструктор

Кога креирате инстанци на класа, Претпоставен - Default конструктор се повикува, освен ако не е поинаку одредено. Претпоставен - Default конструктор ќе создаде елементи од таа класа што потоа можеме да ги повикаме преку објектот на таа класа.

Совет:

За побрзо пишување на конструкторот, можете да го напишете клучниот збор „ctor“ и двапати да го притиснете копчето „Tab“, а Visual Studio ќе го генерира самиот стандарден конструктор.

Преоптоварување на конструкторот

Ако при креирање на пример на некои променливи сакаме да ги поставиме вредностите на елементите од таа класа на некои специфични вредности, тогаш го правиме и повикуваме конструкторот наменет за тоа. Во рамките на една класа можеме да имаме повеќе конструктори. Сите конструктори се „наречени“ исто со  нивното име кое  мора да биде идентично со името на класата. Единствената разлика е во бројот и / или редоследот на параметрите што ги добива конструкторот.

Слика 2 - Преоптоварување на конструкторот

Гледаме дека постои прв конструктор „Vozilo ()“ кој не доделува никакви вредности на елементите на класата. Вториот конструктор " Vozilo (string dodeliBoja) ќе ја постави вредноста на елементот (променлива) "boja" до вредност еднаква на параметарот " dodeliBoja ".

Третиот конструктор " Vozilo (string dodeliBoja, float dodeliVisina)" ќе додели вредности за двата елементи на класата. Елементот "boja" ќе добие вредност еднаква на параметарот " dodeliBoja ", а елементот "visina" ќе добие вредност еднаква на параметарот " dodeliVisina".0

Деструктор

Спротивно на конструкторите, ние користиме деструктори кога сакаме да уништиме пример од класа. Притоа, мора да следиме некои правила на јазикот C #.

Деструкторот не смее да се дефинира во рамките на структурите, туку само во рамките на класата

• Секоја класа може да има најмногу еден деструктор

Деструкторите немаат својство на наследство или преоптоварување

Деструкторот нема права и параметри за пристап

Бидејќи јазикот # не бара контрола на меморијата како и некои други програмски јазици, ние нема да навлегуваме во конструктори. Детали за конструкторот можете да прочитате овде:

http://msdn.microsoft.com/en-us/library/66x5fx1b.aspx

This - повикување на тековната инстанца

Ако сакаме да се увериме дека пристапуваме до својство на инстанцата  на класата за која  го повикуваме метод,  го користиме клучниот збор „ This “ што овозможува повикување на тековната инстанца на класата.

  

Слика 3 - Клучен збор „this“

Getters & Setters

Општо земено и зошто да ги користите

Кога креирате елемент на класа, практиката е да го ограничите директното право да пишувате или менувате вредноста на овие елементи. Ова се покажа како добра идеја, така што овие вредности не би биле случајно изменети „некаде подоцна“ во кодот, а ние исто така се заштитуваме од внесување неважечка вредност при креирање променлива.

За ова ги користиме методите (функциите) што ги нарекуваме преку секој елемент. Во рамките на овие методи, ние одредуваме дали сакаме да имаме само за читање, запишување / менување податоци или и двете. На овој начин на пишување код, не пристапуваме директно до елемент, туку прво го нарекуваме методот на класата што има право да пристапува до тие елементи, и преку овој метод влијаеме врз вредностите на елементите.

Таквите методи популарно се нарекуваат Getters и  Setters. Ние користиме Getters за читање или преземање на вредноста на елемент, и Setters за поставување / промена на вредноста на елементот.

Исто така, со овој пристап можеме да ја заштитиме апликацијата од уривање предизвикувајќи исклучоци во случај на неважечки внес и обработка на овие исклучоци. Исклучоците ќе бидат обработени подоцна.

Како да направите својства на Getter и Setter

Слика 4 - Создавање својства на Getter и Setter

Гледаме дека во рамките на класата „Vozilo“ имаме тројца конструктори со кои веќе сме се сретнале. Подолу има два елементи; "Visina" и "visina". Стандардното право за пристап за елементите е исто како и за класи - Internal. Ако се обидеме од друга класа да пристапиме до елементите на инстанцата што произлегуваат од класата „Vozilo“, тоа нема да биде возможно. На овој начин, ние се заштитивме од потенцијално несакани записи и промени во вредноста на овие елементи.

Под декларацијата на овие два елементи го наоѓаме својството "Boja". Забележете дека ова својство  е напишано со големи букви. Ова е конвенција за именување својство за елемент, како и за тој елемент, само со почетна голема буква (елементите секако се нарекуваат со мала почетна буква по конвенција).

Во својството "Boja", наоѓаме два клучни зборови; "Get" и "Set". Ние го користиме својството „Get“ за да ги преземеме податоците, а тоа го направивме со користење на клучниот збор „return“ и името на елементот. Ние го користиме својството "set" за да доделиме или смениме вредност на елемент. Во рамките на делот "set", доделивме вредност на елементот "boja". Тука се појавува нов клучен збор „value“. „Value “ ја добива вредноста што му ја доделуваме на елементот

 

Поставување на „Read-Only“ својствa

 

Својството само за читање „Read-Only“  обезбедува заштита од запишување вредности на елемент од класа, односно има само дел за добивање – земање (Get), но не и дел за давање (Set). Го поставуваме својството get само кога сакаме да го оневозможиме запишувањето во променлива, кои се елементи чија вредност се пресметува од некои други елементи.

На пример:

Слика 5 - Својство само за читање

Гледаме дека не сакаме да внесеме вредност за „volumen“, туку ја пресметуваме врз основа на други вредности. Во овој случај, за елементот " volumen ", не сакаме да дозволиме право на пишување, туку само да читаме вредности.