c concepts constructor
Овај водич објашњава неке од важних концепата у програмирању на Ц #, попут конструктора, деструктора, статичке класе, структура и набрајања:
У једном од наших претходних водича о објектима и класама научили смо шта су класа и објекат.
Објект је сличан објекту из стварног света, а класа је логична колекција сличних врста предмета. То је један од најважнијих типова присутних у Ц #. У овом упутству ћемо заронити дубоко у остале сродне концепте Ц #.
=> Овде истражите комплетну серију обука за Ц #
У овом упутству ћемо учити о неким важним аспектима предавања и како их можемо користити у нашим програмима. Покушаћемо да креирамо једноставне Ц # програме засноване на концептима које смо научили у нашим претходним водичима.
Шта ћете научити:
- Шта је конструктор у Ц #?
- Деструктори у Ц #
- Статични чланови у класи
- Статичка класа у Ц #
- Структуре у Ц #
- Разлика између структуре и класе
- Структура: Дефиниција
- Енумс Ин Ц #
- Својства у Ц #
- Закључак
- Препоручено читање
Шта је конструктор у Ц #?
Конструктор је посебна врста методе у програмском језику Ц # која се позива или позива аутоматски када се креира објекат дате класе.
Његова главна функција је иницијализација чланова података новоствореног објекта. Једна од најпрепознатљивијих карактеристика конструктора је његово име. Има исто име као и разред.
Конструктори су у основи две врсте:
- Уобичајено
- Параметарисано
Ц # подразумевани конструктор
Као што и само име говори, подразумевани конструктор је основни конструктор класе. Нема ниједан аргумент и на њега се директно позива у тренутку стварања објекта.
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } public static void Main(string[] args) { Program p = new Program(); } }
Резултат следећег програма биће:
Позван је конструктор
Објашњење
Дефинисали смо конструктор „Програм“ унутар класе „Програм“. Сада када иницијализујемо класу унутар главне методе, конструктор се аутоматски позива.
Стога ће се позивати било који исјечак кода који смо задржали у конструктору. Овде смо исписали поруку „Конструктор је позван“ унутар витичастих заграда конструктора, тако да када иницијализујемо класу, конструктор ће се подразумевано иницијализовати и порука ће се исписати као излаз.
Параметарски конструктор
Као што и само име говори, параметарски конструктори су конструктори са параметрима. Ови конструктори се користе за прослеђивање различитих вредности објектима.
public class Details { public Details(int a, int b){ int c = a+b; Console.WriteLine('The sum is: '+ c); } } public class Program { public static void Main(string[] args) { Details d = new Details(2, 3); } }
Резултат следећег програма биће:
шта је описно програмирање у ктп-у
Збир је: 5
Објашњење
У нашем претходном примеру са подразумеваним конструктором, имамо главни метод у истој класи. У овом примеру имамо главни метод у другој класи.
Имамо једну класу под називом „Детаљи“ која садржи параметризовани конструктор који прихвата две целобројне вредности. Унутар конструктора исписујемо збир целих бројева. Имамо још један час под називом „Програм“ који садржи нашу главну методу. Унутар главне методе покренули смо класу „Детаљи“.
Као што је раније објашњено, када се класа покрене, њени конструктори се позивају аутоматски. Дакле, у овом случају је позвана наша метода конструктора „Детаљи“ и када смо проследили параметар током иницијализације, он исписује излаз.
Деструктори у Ц #
Деструктори су управо супротни од конструктора. То је посебна метода класе која се позива када објекат класе изађе из опсега. Слично конструктору, име деструктора је такође потпуно исто као и име класе, али са префиксом „~“ (тилда).
Деструктор нити прихвата ниједан параметар нити враћа било какву вредност. Деструктор уништава објекте класе, стога се углавном користи за ослобађање меморије након извршавања програма. Још једна важна ствар коју треба напоменути код деструктора је да он не може бити преоптерећен нити наследљив.
Пример деструктора:
public class Program { public Program(){ Console.WriteLine('Constructor has been invoked'); } ~Program(){ Console.WriteLine('Destructor has been invoked'); } public static void Main(string[] args) { Program p = new Program(); } }
Резултат следећег програма биће:
Позван је конструктор
Позван је деструктор
Објашњење
Користили смо исти пример који смо користили за учење конструктора. Управо смо додали деструктор у класу програма (~ Програм). Када иницијализујемо објекат класе, позива се конструктор и креира се објекат класе. Ово исписује фразу „Конструктор је позван“ на конзолу.
Када је извршење завршено и објект класе изађе из опсега, програм се креће према деструктору. Затим се позива деструктор, који заузврат уништава објекат. Овде смо унутар деструктора одштампали поруку која се штампа на конзоли након што се позове деструктор.
Статични чланови у класи
Чланови класе могу се прогласити статичким помоћу кључне речи статиц. Када је објекат декларисан као статичан, без обзира на број креираних објеката, постојаће само једна копија статичког објекта.
Бити статичан подразумева да ће постојати један примерак члана који ће постојати за дату класу. То значи да се вредност статичке функције или променљивих унутар класе може позивати без стварања објекта за њих.
скл поставља питања и одговоре пдф
Статичке променљиве се користе за декларисање константи, јер се њихове вредности могу добити директно позивањем класе, уместо да се створи њена инстанца.
Пример:
public class Details { public static void stat(){ Console.WriteLine('Static method invoked'); } } public class Program { public static void Main(string[] args) { Details.stat(); } }
Резултат следећег програма биће:
Позвана статичка метода
Објашњење
У горњем примеру смо креирали класу „Детаљи“ која садржи статички метод „стат“. Имамо још једну класу „Програм“ која садржи главну методу. У нашим претходним темама видели смо како можемо иницијализовати класу за приступ методама. Али као што смо разговарали, статичким члановима класе може се приступити иницијализацијом објекта класе.
Дакле, у главној методи смо управо позвали методу користећи класу директно без стварања било ког објекта. Резултат програма је извршио код написан унутар статичке методе. У овом случају смо одштампали поруку на конзоли.
Статичка класа у Ц #
Статичка класа је слична нормалној класи у Ц #. Статичка класа може имати само статичке чланове и не може се инстанцирати. Статичка класа се користи да би се осигурало да класа није инстанцирана. Статичка класа се декларише употребом кључне речи статиц пре кључне речи током класе током декларације.
Пример:
public static class Details { public static void multiply(int a, int b){ int c = a*b; Console.WriteLine('Multiplication result is: '+c); } } public class Program { public static void Main(string[] args) { Details.multiply(2,8); } }
Резултат следећег програма биће:
Резултат множења је: 16
Објашњење
У горњем примеру смо креирали статичку класу „Детаљи“, а унутар статичке класе креирали смо још једну статичку методу „множење“. Унутар методе имамо неке исечке кода које желимо да извршимо. Такође имамо још једну класу „Програм“ са главном методом.
Унутар главне методе позвали смо метод множења који је присутан у статичкој класи. Ако погледате нашу главну методу, видећете да нисмо иницирали или креирали објекат за статичку класу, већ смо директно позвали класу из главне методе.
Дакле, када директно позивамо методу множења користећи име класе и пружањем параметара, он извршава код и исписује излаз.
Структуре у Ц #
Ентитет типа вредности у Ц # назива се структура. Кориснику помаже да ускладишти повезане податке неколико различитих типова података у једној променљивој. Као што је наведено, структура је ентитет типа вредности који садржи поља, методе, конструкторе, операторе, догађаје итд. Структура се декларише помоћу кључне речи „струцт“.
Карактеристике конструкција:
- Може да садржи константе, методе, својства, индекс, операторе, конструкторе итд.
- Не може имати ниједан подразумевани конструктор.
- Може да имплементира интерфејс, али не може да наслеђује друге структуре или класе.
- Потребно је да се структуре иницијализују употребом нове кључне речи за употребу.
Разлика између структуре и класе
Структура и класа могу се на неки начин осећати слични, али имају неколико разлика.
Разлике укључују:
- Структура је вредносни тип док је класа референтни тип.
- Нова кључна реч је потребна за иницијализацију структура.
- Структуре могу имати само параметризовани конструктор, а с друге стране, класа може имати и подразумеване и параметризоване конструкторе.
Структура: Дефиниција
Структура се може дефинисати употребом кључне речи струцт. Структура може дефинисати нови тип података са неколико различитих чланова за програм.
Структура се може иницијализовати на начин сличан оном код иницијализације објекта, тј. Употребом нове кључне речи. Како је струцт ентитет вредносног типа, бржи је за рад од објекта класе. Где год постоји потреба за чувањем података, морамо да користимо структуру. С друге стране, ако требате да пренесете податке, препоручљиво је да користите класу него структуру.
Пример:
public struct Cuboid { public int length; public int width; public int height; } public class Program { public static void Main(string[] args) { Cuboid cb = new Cuboid(); cb.length = 10; cb.width = 20; cb.height = 30; Console.WriteLine('The volume of cuboid is: {0}', (cb.length*cb.width*cb.height)); } }
Резултат следећег програма биће:
Запремина кубоида је: 6000
Објашњење
У горњем примеру, дефинисали смо структурни кубоид у коме смо чували типове података за дужину, ширину и висину кубоида. Имамо још један разредни програм где имамо своју главну методу.
У главној методи иницијализујемо структуру „Цубоид“ употребом нове кључне речи. Затим смо користили објекат за позивање и додељивање вредности врстама података сачуваним у структури. Затим смо извршили операцију над променљивим из структуре и исписали резултат на конзоли.
Дакле, ако желите да користите било које својство, догађаје или методе, структура мора бити иницијализована помоћу нове кључне речи, иначе ће вам дати грешку у компилацији.
Енумс Ин Ц #
Енум је скуп целобројних константи и слично структури такође је ентитет типа вредности. Углавном се користи за декларисање листе целих бројева коришћењем кључне речи „енум“ унутар простора имена, класе или чак структуре. У енум, додељујемо име свакој од целобројних константи, тако да их можемо упутити користећи њихова имена.
Енум може имати фиксни број константи. Помаже у побољшању сигурности и може се прећи преко њега.
Карактеристике Енум-а
- Енум побољшава читљивост и одрживост кода пружајући смислена имена константама.
- Енум се не може користити са константама типа стринга.
- Енум може да садржи константе као што су инт, лонг, схорт, бите итд.
- Подразумевано вредност константи набрајања почиње са нулом
Проглашавање енум
Синтакса за декларисање набрајања дата је у наставку.
enum { list of integer constants };
Све енумске константе имају подразумеване вредности. Вредност почиње од 0 и креће се један по један према горе.
Пример:
public enum Cuboid{ length, width, height } public class Program { public static void Main(string[] args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Резултат следећег програма биће:
Дужина је: 0
Ширина је: 1
Висина је: 2
Објашњење
Радили смо са сличним примером који смо научили током струцт. У овом примеру смо креирали енум по имену Цубоид. Овај попис садржи три члана, тј. Дужину, ширину и висину.
Имамо још један програм класе унутар којег имамо свој главни метод. Експлицитни прелив је коришћен за претварање променљивих типа набрајања у целобројни тип, затим смо њихове вредности ускладиштили у различите променљиве унутар главне методе и одштампали их на конзоли.
Подразумевано, вредност првог набрајања биће нула, другог ће имати 1 и тако даље. Дакле, када смо штампали вредности добили смо горе поменути излаз.
Промена вредности Енум
Енум такође омогућава корисницима да промене подразумевани почетни индекс чланова. Једном када промените почетни индекс променљиве, наредни чланови ће ажурирати своје вредности у инкременталном низу.
Доделимо вредност првом члану набрајања који смо дефинисали у претходном примеру и погледајмо шта ће се догодити:
public enum Cuboid { length = 10, width, height } public class Program { public static void Main(string[] args) { int l = (int)Cuboid.length; int w = (int)Cuboid.width; int h = (int)Cuboid.height; Console.WriteLine('The length is :{0}”, l); Console.WriteLine('The width is :{0}”, w); Console.WriteLine('The height is :{0}”, h); } }
Резултат следећег програма биће:
Дужина је: 10
Ширина је: 11
Висина је: 12
Објашњење
Када смо првом члану набрајања доделили вредност, тада ће сви наредни чланови набрајања добити додељивање са прираштајем те вредности. Као што смо дефинисали, прва вредност је 10, следећа вредност постаје 11, а следећа 12.
Корисник може доделити било коју вредност према свом избору и сви чланови енум-а ће добити аутоматско додељивање са повећањем кориснички дефинисаних вредности.
Својства у Ц #
Својства у Ц # су у основи именовани члан интерфејса, класа и структуре. Својства су продужетак променљивих члана / метода структуре или класе. Користе се за читање, писање или промену вредности приватних поља.
Својствима се приступа као и пољима. Имају приступнике помоћу којих се могу добити, поставити и израчунати вредности. Такође можемо ставити логику приликом подешавања вредности у својствима. Такође се може користити са приватном класом која ограничава приступ споља, али истовремено омогућава кориснику да користи својства за добијање или подешавање вредности.
Шта су приступници?
Приступници својству чине изјаве које се могу користити за читање, писање или израчунавање датог својства. Изјава о својини може садржати гет, сет или обоје.
Пример:
public class Cube { private int side; //Declare a Side property of type integer public int Side{ get{ return side; } set{ side = value; } } } public class Program { public static void Main(string[] args) { Cube cb = new Cube(); cb.Side = 5; Console.WriteLine('The volume of cube is :{0}', (cb.Side * cb.Side* cb.Side)); } }
Када се горњи исечак кода успешно компајлира и изврши, примећује се следећи излаз.
Запремина коцке је: 125
Објашњење
У горњем примеру имамо класу „Коцка“ унутар које смо прогласили својство „Сиде“ целог броја типа. Након тога имамо гет и сет својство где смо се вратили и дали вредност променљивој страни.
додавање елемента у јава низа
Имамо другу класу „Програм“ са главном методом унутар које смо иницијализовали класу Цубе и дали вредност за својство Сиде, а затим смо израчунати резултат одштампали на конзоли.
Закључак
У овом упутству смо сазнали о функцијама чланова класе. Функција члана може да ради на било ком објекту класе где је присутна. Такође смо сазнали о конструкторима и деструкторима.
Конструктори се аутоматски иницијализују у време креирања објекта класе, док деструктори деструирају класу и углавном се користе за уклањање алокације меморије након завршетка извршења. Конструктори могу бити две врсте, тј. Подразумевани и параметризовани.
Деструктор не прихвата ниједан параметар нити враћа било какву вредност. И конструктор и деструктори имају имена која су потпуно иста као и имена класе. Такође смо научили о статичким променљивим и статичкој класи и како им се може приступити без употребе инстанци класе. Сазнали смо да статичка класа може имати само статичке чланове.
Такође смо разговарали о структурама или структурама. Структуре су ентитети вредносног типа и треба их иницијализовати за приступ.
Такође су дискутовани о енуму и својствима Ц #. Енум је скуп именоване целобројне константе. Слично структури, он је такође ентитет типа вредности. Енум ће имати своје чланове и сваки члан ће имати своју подразумевану вредност.
На крају смо разговарали о својствима која су продужетак променљивих члана / метода струцт или класе. Користе се за добијање, подешавање или промену вредности приватних поља.
=> Погледајте нашу комплетну серију обука за Ц # овде
Препоручено читање
- Статични у Ц ++
- Наслеђивање у Ц ++
- Класе и објекти на језику Ц ++
- Коришћење класе Селениум Селецт за руковање падајућим елементима на веб страници - Водич за селениј бр. 13
- Рунтиме полиморфизам у Ц ++
- Функције пријатеља у Ц ++
- Ругање приватним, статичким и празним методама коришћењем Моцкито-а
- Ц # класе и објекти: продубљени водич са примерима