Lær C # for Android del 2: Klasser og løkker

Forfatter: John Stephens
Opprettelsesdato: 24 Januar 2021
Oppdater Dato: 1 Juli 2024
Anonim
Lær C # for Android del 2: Klasser og løkker - Apps
Lær C # for Android del 2: Klasser og løkker - Apps

Innhold


I del en av denne Android-opplæringsserien om å lære C #, så vi på det absolutte grunnleggende om C # -programmering. Vi dekket metoder (grupper med kode som utfører spesifikke oppgaver), noen grunnleggende syntaks (for eksempel behovet for halvkolon), variabler (containere som lagrer data), og "if-setninger" for flytkontroll (forgreningskode som er avhengig av verdiene av variabler). Vi så også hvordan du kan gi variabler som strenger som argumenter mellom metodene.

Du bør gå tilbake og se på det hvis du ikke allerede har lest det.

På dette tidspunktet bør du kunne lage noen grunnleggende konsoll-apper, for eksempel spørrekonkurranser, apper som lagrer data eller kalkulatorer.

I del to kommer vi til å bli litt mer ambisiøse, dekke noen flere grunnleggende - som løkker - og utforske hvordan du kan lage og samhandle med klasser. Det betyr at vi kan begynne å stikke inn på Android-utviklingen og se hvordan vi kan bygge bro mellom dette gapet. Fortsett å lese hvis du virkelig vil lære C #!


Forstå klasser og objektorientert programmering

I første del forklarte vi det grunnleggende om objektorientert programmering, som dreier seg om språk ved å bruke "klasser" for å beskrive "objekter." Et objekt er et stykke data, som kan representere mange ting. Det kan være et bokstavelig objekt i en spillverden som en vår, eller det kan være noe mer abstrakt, som en manager som håndterer spillerens poengsum.

En enkelt klasse kan lage flere objekter. Så du kan skrive en "fiende" -klasse, men være i stand til å generere et helt nivå fullt av skurkene. Dette er en av de store fordelene ved å bruke objektorientert programmering. Ellers ville den eneste måten å håndtere oppførselen til et mangfold av fiender være å bruke mange individuelle metoder, hver og en inneholder instruksjoner for hvordan den gale mannen skal oppføre seg under forskjellige omstendigheter.


Hvis dette fremdeles er litt vanskelig å få hodet rundt, er alt du trenger å vite at objekter har egenskaper og atferd. Dette er akkurat som virkelige gjenstander. For eksempel har en kanin egenskaper som størrelse, farge og navn; og det har oppførsel, som å hoppe, sitte og spise. I hovedsak er egenskaper variabler og atferd er metoder.

Programmet vi bygde i forrige leksjon er også et eksempel på en klasse. "Objektet" vi beskriver her er et slags passordkontrollsystem. Egenskapen den har er strengen Brukernavn, og oppførselen den har er NewMethod (sjekker brukerens navn og hilser dem).

Hvis det erfortsatt litt forvirrende, den eneste måten å få hodene rundt er å skape en ny klasse eller to selv!

Opprette en ny klasse

Hvis du skal lære C #, må du vite hvordan du lager nye klasser. Heldigvis er dette veldig enkelt. Bare klikk på menypunktet Prosjekt og velg deretter "+ Legg til klasse."

Velg "C #" og kalt det "Kanin." Vi kommer til å bruke denne klassen til å lage konseptuelle kaniner. Du får se hva jeg mener om et øyeblikk.

Hvis du sjekker inn Løsningsutforskeren til høyre, ser du at det er opprettet en ny fil som heter Rabbit.cs rett under Program.cs. Godt gjort - det er noe av det viktigste du må vite om du vil lære C # for Android!

Den nye Rabbit.cs-filen har noen av den samme “kjeleplate” -koden som før. Det hører fortsatt til samme navneområde, og den har en klasse med samme navn som filen.

namespace ConsoleApp2 {class Rabbit {}}

Nå skal vi gi kaninen vår noen egenskaper med det vi kaller en "konstruktør."

En konstruktør er en metode i en klasse som initialiserer objektet, slik at vi kan definere dens egenskaper når vi først oppretter det. I dette tilfellet er det hva vi skal si:

namespace ConsoleApp2 {class Rabbit {public string RabbitName; offentlig streng RabbitColor; offentlig int RabbitAge; offentlig int RabbitWeight; offentlig kanin (strengnavn, strengfarge, int alder, int vekt) {kaninnavn = navn; RabbitColor = farge; RabbitAge = alder; RabbitWeight = vekt; }}}

Dette lar oss lage en ny kanin fra en annen klasse, og definere dens egenskaper som vi gjør:

Rabbit Rabbit1 = new Rabbit (“Jeff”, “brown”, 1, 1);

Nå innser jeg i ettertid at vekten sannsynligvis burde vært en flottør eller en dobbel for å gi rom for desimaler, men du får ideen. Vi skal runde kaninen vår til det nærmeste hele tallet.

Når du skriver kaninen din, vil du bli bedt om å gi de riktige argumentene. På denne måten har klassen din nesten blitt en del av koden.

Tro det eller ei, denne koden har skapt en kanin! Du kan ikke se kaninen din fordi vi ikke har grafikk, men den er der.

Og for å bevise det, kan du nå bruke denne linjen:

Console.WriteLine (Rabbit1.RabbitName);

Dette vil da fortelle deg navnet på kaninen du nettopp opprettet!

Vi kan også øke vekten på kaninen vår, slik:

Rabbit1.RabbitWeight ++; Console.WriteLine (Rabbit1.RabbitName + "veier" + Rabbit1.RabbitWeight + "kg");

Merk her at å legge til “++” på slutten av noe vil øke verdien med en trinnvis (du kan også skrive “RabbitWeight = RabbitWeight + 1”).

Fordi klassen vår kan lage så mange kaniner som vi vil, kan vi lage mange forskjellige kaniner, hver med sine egne egenskaper.

Legge til atferd

Vi kan også velge å gi kaninen vår en slags oppførsel. La oss i dette tilfellet spise.

For å gjøre dette, ville vi lage en offentlig metode som kalles "Spis", og dette vil gi en spiselyd, samtidig som vi øker tyngden til kaninen trinnvis:

public void Eat () {Console.WriteLine (RabbitName + ": Nibble nibble!"); RabbitWeight ++; }

Husk at "offentlig" betyr tilgjengelig utenfor klassen, og "ugyldig" betyr at metoden ikke returnerer noen data.

Så fra innsiden av Program.cs, vil vi kunne kalle denne metoden, og dette vil gjøre at kaninen vi velger, spiser og blir større:

Console.WriteLine (Rabbit1.RabbitName + "veier" + Rabbit1.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "veier" + Rabbit1.RabbitWeight + "kg");

Det vil føre til at Jeff spiser tre ganger, så får vi høre det og kunne se at han har blitt større! Hvis vi hadde en annen kanin på scenen, kunne de også spise!

Console.WriteLine (Rabbit1.RabbitName + "veier" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "veier" + Rabbit2.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit2.Eat (); Rabbit2.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "veier" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "veier" + Rabbit2.RabbitWeight + "kg");

På det som kaniner

Dette er ikke en spesielt elegant måte å håndtere mange gjenstander på, fordi vi trenger å skrive ut kommandoene for hver kanin manuelt og ikke kan øke antall kaniner dynamisk så langt vi vil. Vi vil ikke bare lære C # - vi vil lære hvordan du skriver ren C # -kode!

Dette er grunnen til at vi kan bruke en liste. En liste er en samling; variabel i seg selv som i utgangspunktet inneholder referanser til andre variabler. I dette tilfellet kan vi lage en liste over kaniner, og den gode nyheten er at dette er veldig lett å forstå:

Liste RabbitList = ny liste(); RabbitList.Legg til (ny Rabbit ("Jeff", "brown", 1, 1)); RabbitList.Legg til (ny kanin ("Sam", "hvit", 1, 2));

Dette skaper den nye kaninen som før, men legger samtidig kaninen til listen. På samme måte kan vi si dette:

Rabbit Rabbit3 = new Rabbit ("Jonny", "orange", 1, 1); RabbitList.Add (Rabbit3);

Uansett er et objekt blitt opprettet og lagt til listen.

Vi kan også enkelt og elegant returnere informasjon fra kaninlisten vår på denne måten:

foreach (var Rabbit in RabbitList) {Console.WriteLine (Rabbit.RabbitName + "veier" + Rabbit.RabbitWeight + "kg"); }

Som du kanskje kan finne ut, betyr “foreach” at du gjentar et trinn en gang for hvert element i listen. Du kan også hente informasjon fra listen din slik:

RabbitList.Eat ();

Her er “1” indeksen, noe som betyr at du viser til informasjonen som er lagret på posisjon én. Når det skjer, er det faktisk det sekund kanin du la til: fordi lister i programmering alltid starter på 0.

fibonacci

I tilfelle du ikke hadde gjettet ennå, vil vi nå bruke all denne informasjonen til å lage en Fibonacci-sekvens. Tross alt: Hvis du lærer C # for Android, burde du være i stand til å faktisk gjøre noe interessant med all den teorien!

I Fibonacci-sekvensen er kaniner lukket i et rom og får lov til å avle. De kan reprodusere seg etter en måned, på hvilket tidspunkt de er kjønnsmodne (jeg kan ikke bekrefte om dette er riktig Kaninbiologi). Hvis hvert kaninpar kan produsere en gang i måneden fra og med og produsere to avkom, så er serien ut:

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

Magisk nok er hvert nummer i sekvensen verdien av de to foregående numrene lagt sammen. I følge vitenskapen er dette litt av en stor sak.

Det kule er at vi kan gjenskape det.

Først må vi introdusere et nytt konsept: loopen. Dette gjentar ganske enkelt den samme koden igjen og igjen til en betingelse er oppfylt. "For" -sløyfen lar oss gjøre dette ved å lage en variabel, stille inn betingelsene vi ønsker å oppfylle og deretter operere på den - alt definert i parentes:

for (int måneder = 0; måneder <100; måneder ++) {// Gjør noe}

Så vi oppretter et helt tall som heter måneder, og sløyfer til det er lik 100. Så øker vi antall måneder med én.

Vil du se hvordan dette kan bli en Fibonacci-sekvens? Se:

namespace ConsoleApp2 {class Program {statisk tomrom Main (string args) {List RabbitList = ny liste(); RabbitList.Legg til (ny Rabbit ("Jeff", "brown", 0, 1)); RabbitList.Legg til (ny kanin ("Sam", "hvit", 0, 1)); for (int måneder = 0; måneder <10; måneder ++) {int firstRabbit = 0; int timesToReproduce = 0; foreach (var Rabbit in RabbitList) {Console.Write ("R"); if (Rabbit.RabbitAge> 0) {if (firstRabbit == 0) {firstRabbit = 1; } annet {firstRabbit = 0; timesToReproduce ++; }} Rabbit.RabbitAge ++; } for (int i = 0; i <timesToReproduce; i ++) {RabbitList.Add (new Rabbit ("NewBabyRabbit", "brown", 0, 1)); RabbitList.Legg til (new Rabbit ("NewBabyRabbit", "brown", 0, 1)); Console.Write ( "r"); Console.Write ( "r"); } Console.WriteLine ("--- Det er" + RabbitList.Count / 2 + "par kaniner!"); Console.WriteLine ( ""); } Console.WriteLine ("Alt gjort!"); Console.ReadKey (); }}}

OK, det var vanskeligere enn jeg trodde!

Jeg har ikke tenkt å gå gjennom alt dette, men ved å bruke det du allerede har lært, bør du være i stand til å snu det.

Det er definitivt mer elegante måter å gjøre dette på - jeg er ingen matematiker. Imidlertid synes jeg det er en ganske morsom øvelse, og når du først har gjort det, er du klar for den store tiden.

Jeg ville veldig gjerne sett noen andre tilnærminger, forresten!

Hvor går vi herfra? Hvordan lære C # for Android

Med all den kunnskapen under beltet, er du klar til å begynne på større ting. Spesielt er du klar til å prøve deg på Android-programmering med C # i Xamarin eller Unity.

Dette er annerledes fordi du bruker klasser levert av Google, Microsoft og Unity. Når du skriver noe som “RigidBody2D.velocity”, er det du gjør å få tilgang til en eiendom fra en klasse kalt RigidBody2D. Dette fungerer akkurat det samme, den eneste forskjellen er at du ikke kan se RigidBody2D fordi du ikke bygde den selv.

Med denne C # under beltet, bør du være klar til å hoppe inn på et av disse alternativene og ha et stort forsprang når det gjelder å forstå hva som skjer:

  • Hvordan lage en Android-app med Xamarin
  • Bygg ditt aller første Android-spill på 7 minutter med Unity

I en kommende leksjon skal vi også se på hvordan du kan ta en U-sving og bruke denne til å bygge Windows-apper i stedet!

er du etter en tynn LG V30-veke? Det er ingen tynnere ak enn MNML-aken på bare 0,35 mm. Det er å tynt at det vil e ut og føle om om du ikke har noen ak i det hele tatt. Det gir ikke mye...

Beste LG V40 saker

Louise Ward

Juli 2024

Mobiltelefonveker handler ikke bare om bekyttele - de handler ogå om å holde til og etetikk intakt. En ak er tort ett et mut-have tilbehør for de flete telefoner. For LG V40 er den enda...

Interessant På Nettstedet