Сазнајте Ц # за Андроид 2. део: Класе и петље

Аутор: John Stephens
Датум Стварања: 24 Јануар 2021
Ажурирати Датум: 1 Јули 2024
Anonim
Как связать детское платье-вязание спицами.Ч.2.Учимся вязать горловину и спинку
Видео: Как связать детское платье-вязание спицами.Ч.2.Учимся вязать горловину и спинку

Садржај


У првом делу ове Андроид туториал серије о учењу Ц #, осврнули смо се на апсолутне основе Ц # програмирања. Обухватили смо методе (групе кода које изводе одређене задатке), неке основне синтаксе (као што су потреба за полуслоје), променљиве (контејнери који чувају податке) и "ако изјаве" за контролу протока (код гранања који зависи од вредности променљивих). Такође смо видели како проследити променљиве попут стрингова као аргументе између метода.

Вратите се и погледајте ово ако га већ нисте прочитали.

У овом тренутку требали бисте бити у могућности да направите неке основне конзоле, попут квизова, апликација за смештање података или калкулатора.

У другом делу, постаћемо мало амбициознији, покривајући још неке основе - попут петље - и истражујући како да креирате и комуницирате са предавањима. То значи да ћемо моћи да започнемо убризгавање у Андроидов развој и да видимо како да премостимо тај јаз. Наставите читати ако желите заиста научити Ц #!


Разумевање класа и објектно оријентисаног програмирања

Укратко у првом делу, објаснили смо основе објектно оријентисаног програмирања, које се врти око језика користећи „класе“ за описивање „објеката“. Објекат је део података, који може представљати многе ствари. То би могао бити дословни објект у свијету игре попут прољећа, или то може бити нешто апстрактније, попут менаџера који обрађује резултат играча.

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


Ако је ово још мало напорно заобићи главу, све што стварно требате знати је да предмети имају својства и понашања. То је баш као прави предмети. На пример, кунић има својства попут величине, боје и имена; и има понашање, попут скакања, седења и једења. У суштини су својства променљиве, а понашања методе.

Програм који смо изградили на прошлој лекцији такође је пример наставе. „Објекат“ који овде описујемо је нека врста система за контролу лозинке. Својство које он има је стринг УсерНаме, а понашање које има има НевМетход (проверавање имена корисника и поздрављање).

Ако је тојош увек помало збуњујуће, једини начин да се око тога кренемо у креирање нове класе или две сами!

Стварање нове класе

Ако ћете учити Ц #, морате знати како да направите нове часове. Срећом, ово је врло лако. Само кликните ставку менија Пројект и затим одаберите „+ Додај класу“.

Изаберите „Ц #“ и назовите је „Кунић“. Користићемо ову класу за стварање концептуалних зечева. Видећете на тренутак на шта мислим.

Ако се пријавите у вашем Солутион Екплорер-у са десне стране, видећете да је нова датотека под називом Раббит.цс креирана одмах испод Програм.цс. Браво - то је једна од најважнијих ствари које треба да знате да ли желите да научите Ц # за Андроид!

Нова датотека Раббит.цс има неки исти код „котловске плоче“ као и раније. И даље припада истом простору имена и има класу са истим именом као и датотека.

простор имена ЦонсолеАпп2 {цласс Раббит {}}

Сада ћемо нашем кунићу дати нека својства са оним што називамо "конструктор".

Конструктор је метода из класе која иницијализира објект, омогућавајући нам дефинирање његових својстава приликом првог стварања. У овом случају, ево шта ћемо рећи:

простор имена ЦонсолеАпп2 {цласс Раббит {јавни низ РаббитНаме; јавни низ РаббитЦолор; јавни инт РаббитАге; публиц инт РаббитВеигхт; јавни зец (име струне, боја жице, инт старост, инт тежина) {РаббитНаме = име; РаббитЦолор = боја; РаббитАге = старост; РаббитВеигхт = тежина; }}}

То нам омогућава да створимо новог зеца из друге класе и дефинишемо његова својства као и ми:

Зец зец1 = нови зец („Јефф“, „браон“, 1, 1);

Сада схватам да би ретроспективна тежина вероватно требала бити пловка или дупла да би омогућили децимале, али ви схватате. Заокружићемо зеца до најближег целог броја.

Видећете док исписујете зеца, од вас ће се тражити да унесете исправне аргументе. На овај начин је ваша класа готово постала део кода.

Вјеровали или не, овај код је створио зеца! Не можете видети свог кунића јер немамо графику, али постоји.

А да бисте то доказали, сада можете користити ову линију:

Цонсоле.ВритеЛине (Раббит1.РаббитНаме);

То ће вам рећи име зеца који сте управо створили!

На исти начин можемо повећати тежину нашег кунића:

Раббит1.РаббитВеигхт ++; Цонсоле.ВритеЛине (Раббит1.РаббитНаме + "тежи" + Раббит1.РаббитВеигхт + "кг");

Имајте на уму да ће додавање „++“ на крају нечега постепено повећати вредност за један (Такође бисте могли написати „РаббитВеигхт = РаббитВеигхт + 1“).

Будући да наша класа може створити колико зечева колико желимо, можемо створити пуно различитих зечева, сваки са својим својствима.

Додавање понашања

Тада ћемо можда и одлучити да свом кунићу пружимо неку врсту понашања. У овом случају, пустимо их да једу.

Да бисмо то постигли, створили бисмо јавну методу која ће се звати "Једите", а то би звуковало исхрану, истовремено повећавајући тежину зеца:

јавна воид Еат () {Цонсоле.ВритеЛине (РаббитНаме + ": грицкање!"); РаббитВеигхт ++; }

Запамтите, „јавно“ значи да је доступан изван класе, а „неважећи“ значи да метода не враћа никакве податке.

Затим ћемо из програма Програм.цс назвати ову методу и тако ће зец по нашем избору јести и постати већи:

Цонсоле.ВритеЛине (Раббит1.РаббитНаме + "тежи" + Раббит1.РаббитВеигхт + "кг"); Раббит1.Еат (); Раббит1.Еат (); Раббит1.Еат (); Цонсоле.ВритеЛине (Раббит1.РаббитНаме + "тежи" + Раббит1.РаббитВеигхт + "кг");

Због тога ће Јефф јести три пута, тада ћемо га чути и моћи да видимо да је постао већи! Да имамо још једног зеца на сцени, и они би могли да једу!

Цонсоле.ВритеЛине (Раббит1.РаббитНаме + "тежи" + Раббит1.РаббитВеигхт + "кг"); Цонсоле.ВритеЛине (Раббит2.РаббитНаме + "тежи" + Раббит2.РаббитВеигхт + "кг"); Раббит1.Еат (); Раббит1.Еат (); Раббит2.Еат (); Раббит2.Еат (); Раббит1.Еат (); Цонсоле.ВритеЛине (Раббит1.РаббитНаме + "тежи" + Раббит1.РаббитВеигхт + "кг"); Цонсоле.ВритеЛине (Раббит2.РаббитНаме + "тежи" + Раббит2.РаббитВеигхт + "кг");

Као зечеви

Ово није нарочито елегантан начин за руковање с пуно предмета, јер морамо наредбе за свакога зеца написати ручно и не можемо динамички повећавати број зечева колико желимо. Не желимо само да учимо Ц # - желимо да научимо како да пишемо чист Ц # код!

Због тога бисмо могли користити листу. Листа је збирка; сама варијабла која у основи садржи референце на друге променљиве. У овом случају можемо направити списак Зечева, а добра вест је да је то врло лако за разумети:

Листа РаббитЛист = нова листа(); РаббитЛист.Адд (нови зец ("Јефф", "браон", 1, 1)); РаббитЛист.Адд (нови зец ("Сам", "бели", 1, 2));

Ово ствара новог зеца као и до сада, али истовремено додаје зеца на листу. Једнако тако, могли бисмо рећи и ово:

Раббит Раббит3 = нови зец ("Јонни", "наранџасти", 1, 1); РаббитЛист.Адд (Раббит3);

Било како било, објект је креиран и додан у листу.

На овај начин такође можемо згодно и елегантно вратити податке са наше листе зечева:

фореацх (вар Раббит ин РаббитЛист) {Цонсоле.ВритеЛине (Раббит.РаббитНаме + "вага" + Раббит.РаббитВеигхт + "кг"); }

Као што ћете можда моћи да схватите, „предрадити“ значи да поновите корак једном за сваку ставку на листи. Такође можете преузети податке са своје листе:

РаббитЛист.Еат ();

Овде је "1" индекс, што значи да упућујете на информације сачуване на првом месту. Као што се догађа, то је заправо друго зец који сте ипак додали: јер листе у програмирању увек почињу од 0.

Фибонацције

У случају да још нисте погодили, сада ћемо користити све ове информације за креирање Фибонаццијевог низа. Уосталом, ако учите Ц # за Андроид, требали бисте бити у могућности да учините нешто занимљиво са свом том теоријом!

У Фибонаццијевом низу, зечеви су затворени у соби и остављени за узгој. Могу се размножавати након месец дана, када су сексуално зрели (не могу да потврдим да ли је то исправна зечја биологија). Ако сваки пар зечева од тада може да произведе једном месечно, производећи потомство, ево како изгледа ова секвенца:

1,1,2,3,5,8,13,21,34

Магично, сваки број у низу је вредност претходна два броја сакупљена. Према науци, ово је велика ствар.

Супер ствар је што можемо то поновити.

Прво морамо увести нови концепт: петљу. Ово једноставно понавља исти код изнова и изнова док се не испуни неки услов. Петља „фор“ омогућава нам то креирањем променљиве, постављањем услова које желимо испунити, а затим радом на њој - сви дефинисани унутар заграда:

за (инт монтхс = 0; месеци <100; месеци ++) {// Урадите нешто}

На тај начин стварамо цео број који се зове месеци и петљамо док не буде једнак 100. Тада број месеци повећавамо за један.

Желите да видите како то може постати Фибонаццијева секвенца? Ево:

намеспаце ЦонсолеАпп2 {класни програм {статиц воид Маин (стринг аргс) {Листа РаббитЛист = нова листа(); РаббитЛист.Адд (нови Раббит ("Јефф", "браон", 0, 1)); РаббитЛист.Адд (нови зец ("Сам", "бели", 0, 1)); фор (инт монтхс = 0; месеци <10; месеци ++) {инт фирстРаббит = 0; инт тимесТоРепродуце = 0; фореацх (вар Раббит ин РаббитЛист) {Цонсоле.Врите ("Р"); иф (Раббит.РаббитАге> 0) {иф (фирстРаббит == 0) {фирстРаббит = 1; } елсе {фирстРаббит = 0; тимесТоРепродуце ++; }} Раббит.РаббитАге ++; } фор (инт и = 0; и <тимесТоРепродуце; и ++) {РаббитЛист.Адд (нови зец ("НевБабиРаббит", "браон", 0, 1)); РаббитЛист.Адд (нови Раббит („НевБабиРаббит“, „браон“, 0, 1)); Цонсоле.Врите ("р"); Цонсоле.Врите ("р"); } Цонсоле.ВритеЛине ("--- Постоје" + РаббитЛист.Цоунт / 2 + "парови зечева!"); Цонсоле.ВритеЛине (""); } Цонсоле.ВритеЛине ("Све готово!"); Цонсоле.РеадКеи (); }}}

Ок, то је било теже него што сам мислио!

Нећу пролазити кроз све ово, али користећи оно што сте већ научили, требало би да будете у могућности да преиначите то.

Дефинитивно постоје елегантнији начини за то - ја нисам математичар. Међутим, мислим да је то прилично забавна вежба, и када једном то урадите, спремни сте за велико време.

Успут, волио бих да видим било који други приступ!

Куда идемо одавде? Како научити Ц # за Андроид

Са свим тим знањем испод појаса, спремни сте да започнете на већим стварима. Конкретно, спремни сте да закуцате Андроид програмирање са Ц # у Ксамарин или Унити.

Ово је другачије јер ћете користити класе које пружају Гоогле, Мицрософт и Унити. Када напишете нешто попут „РигидБоди2Д.велоцити“, оно што радите је приступање ентитету из класе звани РигидБоди2Д. Ово функционише потпуно исто, једина разлика је што не можете да видите РигидБоди2Д јер га сами нисте направили.

Са овим Ц # испод појаса, требали бисте бити спремни за скок у било коју од ових опција и започети велики напредак када је у питању разумевање шта се догађа:

  • Како направити Андроид апликацију са Ксамарин-ом
  • Изградите своју прву прву Андроид игру за 7 минута уз Унити

У наредној лекцији такође ћемо погледати како можете да скренете и обратно за то да направите Виндовс апликације!

Јава је и даље можда први програмски језик који вам падне на памет кад размишљате о Андроиду, али нисте имати да се користи Јава за развој Андроид-а. У ствари, Котлин је сада Гоогле-овпожељнослужбени ...

У веб развоју се бавите различитим оперативним системима, резолуцијама екрана и прегледачима, тако да је осигуравање да ће апликација или веб локација радити на платформама од суштинског значаја. Ламб...

Публикације