Lær C # til Android del 2: Klasser og sløjfer

Forfatter: John Stephens
Oprettelsesdato: 24 Januar 2021
Opdateringsdato: 1 Juli 2024
Anonim
Lær C # til Android del 2: Klasser og sløjfer - Apps
Lær C # til Android del 2: Klasser og sløjfer - Apps

Indhold


I del en af ​​denne Android-tutorial-serie om læring af C #, så vi på det absolutte grundlæggende ved C # -programmering. Vi dækkede metoder (grupper af kode, der udfører specifikke opgaver), nogle grundlæggende syntaks (såsom behovet for halvkolonier), variabler (containere, der gemmer data), og "hvis udsagn" for flowkontrol (forgreningskode der er afhængig af værdierne af variabler). Vi så også, hvordan man kan sende variabler som strenge som argumenter mellem metoder.

Du skal gå tilbage og se på det, hvis du ikke allerede har læst det.

På dette tidspunkt skal du være i stand til at oprette nogle basale konsol-apps, såsom quizzer, apps, der gemmer data eller regnemaskiner.

I del to vil vi blive lidt mere ambitiøse, dække nogle mere grundlæggende - som løkker - og udforske, hvordan man opretter og interagerer med klasser. Det betyder, at vi vil være i stand til at begynde at stoppe Android-udviklingen og se, hvordan vi kan bygge bro over dette hul. Fortsæt med at læse, hvis du virkelig vil lære C #!


Forståelse af klasser og objektorienteret programmering

Kort fortalt i del ét forklarede vi det grundlæggende i Objektorienteret programmering, der drejer sig om sprog ved hjælp af "klasser" til at beskrive "objekter." Et objekt er et stykke data, der kan repræsentere mange ting. Det kan være et bogstaveligt objekt i en spilverden som en forår, eller det kan være noget mere abstrakt, som en manager, der håndterer spillerens score.

En enkelt klasse kan oprette flere objekter. Så du skriver måske en "fjendens" klasse, men kan generere et helt niveau fuld af onde fyre. Dette er en af ​​de store fordele ved at bruge objektorienteret programmering. Ellers ville den eneste måde at håndtere adfærd fra et væld af fjender være at bruge masser af individuelle metoder, der hver indeholder instruktioner til hvordan den onde fyr skal opføre sig under forskellige omstændigheder.


Hvis dette stadig er lidt vanskeligt at få dit hoved rundt, er alt hvad du virkelig behøver at vide, at objekter har egenskaber og opførsel. Dette er ligesom rigtige genstande. For eksempel har en kanin egenskaber som størrelse, farve og navn; og det har adfærd, som at hoppe, sidde og spise. Grundlæggende er egenskaber variabler, og adfærd er metoder.

Programmet, vi opførte i den sidste lektion, er også et eksempel på en klasse. Det "objekt", vi beskriver her, er en slags adgangskodekontrolsystem. Den egenskab, den har, er strengen Brugernavn, og den opførsel, den har, er NewMethod (kontrol af brugerens navn og hilsen på dem).

Hvis det erstadig lidt forvirrende, den eneste måde at få vores hoveder rundt på er at skabe en ny klasse eller to selv!

Oprettelse af en ny klasse

Hvis du vil lære C #, skal du vide, hvordan man laver nye klasser. Heldigvis er dette meget let. Klik bare på menupunktet Projekt, og vælg derefter "+ Tilføj klasse."

Vælg "C #", og kald det "Kanin." Vi vil bruge denne klasse til at skabe konceptuelle kaniner. Du kan se, hvad jeg mener om et øjeblik.

Hvis du tjekker ind i din Solution Explorer til højre, ser du, at der er oprettet en ny fil ved navn Rabbit.cs lige under Program.cs. Godt klaret - det er en af ​​de mest afgørende ting at vide, hvis du vil lære C # til Android!

Den nye Rabbit.cs-fil har nogle af den samme “kedelplade” -kode som før. Det hører stadig til det samme navneområde, og det har en klasse med samme navn som filen.

namespace ConsoleApp2 {class Rabbit {}}

Nu vil vi give vores kanin nogle egenskaber med det, vi kalder en "konstruktør."

En konstruktør er en metode i en klasse, der initialiserer objektet, så vi kan definere dens egenskaber, når vi først opretter det. I dette tilfælde er det her, vi vil sige:

namespace ConsoleApp2 {class Rabbit {public string RabbitName; offentlig streng RabbitColor; offentlig int RabbitAge; offentlig int RabbitWeight; offentlig kanin (strengnavn, strengfarve, int alder, int vægt) {kaninnavn = navn; RabbitColor = farve; RabbitAge = alder; RabbitWeight = vægt; }}}

Dette giver os mulighed for at oprette en ny kanin fra en anden klasse og definere dens egenskaber som vi gør:

Kanin Kanin1 = ny kanin (“Jeff”, “brun”, 1, 1);

Nu er jeg klar over, at baglænsevægt burde sandsynligvis have været en flyder eller en dobbelt for at give mulighed for decimaler, men du får ideen. Vi vil runde vores kanin til det nærmeste hele tal.

Du kan se, mens du skriver din kanin ud, du bliver bedt om at videregive de korrekte argumenter. På denne måde er din klasse næsten blevet en del af koden.

Tro det eller ej, denne kode har oprettet en kanin! Du kan ikke se din kanin, fordi vi ikke har nogen grafik, men den er der.

Og for at bevise det, kan du nu bruge denne linje:

Console.WriteLine (Rabbit1.RabbitName);

Dette fortæller dig derefter navnet på den kanin, du lige har oprettet!

Vi kan ligeledes øge vægten af ​​vores kanin som sådan:

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

Bemærk her, at tilføjelse af "++" i slutningen af ​​noget gradvist vil øge dens værdi med en (Du kan også skrive "RabbitWeight = RabbitWeight + 1").

Fordi vores klasse kan fremstille så mange kaniner, som vi vil, kan vi oprette masser af forskellige kaniner, hver med deres egne egenskaber.

Tilføjelse af adfærd

Vi kan derefter også vælge at give vores kanin en slags adfærd. Lad os i dette tilfælde lade dem spise.

For at gøre dette, ville vi oprette en offentlig metode kaldet "Spis", og dette ville give en spiselyd, mens vi også øger kaninens vægt gradvis:

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

Husk, at "offentligt" betyder tilgængelig uden for klassen, og "ugyldigt" betyder, at metoden ikke returnerer nogen data.

Derefter fra inde i Program.cs vil vi være i stand til at kalde denne metode, og dette vil få kaninen efter vores valg at spise og blive større:

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

Det får Jeff til at spise tre gange, så hører vi det og kan se, at han er blevet større! Hvis vi havde en anden kanin på scenen, kunne de også spise!

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

På det som kaniner

Dette er ikke en særlig elegant måde at håndtere mange objekter på, da vi er nødt til at udskrive kommandoerne for hver kanin manuelt og ikke kan dynamisk øge antallet af kaniner så vidt vi ønsker. Vi ønsker ikke bare at lære C # - vi vil lære at skrive ren C # kode!

Derfor bruger vi muligvis en liste. En liste er en samling; variabel i sig selv, der dybest set indeholder referencer til andre variabler. I dette tilfælde kan vi muligvis lave en liste over kaniner, og den gode nyhed er, at dette er meget let at forstå:

Liste RabbitList = ny liste(); RabbitList.Tilføj (ny kanin ("Jeff", "brun", 1, 1)); RabbitList.Tilføj (ny kanin ("Sam", "hvid", 1, 2));

Dette skaber den nye kanin som før, men tilføjer samtidig kaninen på listen. Ligeledes kunne vi sige dette:

Kanin Kanin3 = ny kanin ("Jonny", "orange", 1, 1); RabbitList.Add (Rabbit3);

Uanset hvad er et objekt blevet oprettet og føjet til listen.

Vi kan også nemt og elegant returnere information fra vores kaninliste på denne måde:

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

Som du muligvis kan finde ud af, betyder "foreach", at du gentager et trin én gang for hvert element på listen. Du kan også hente oplysninger fra din liste på denne måde:

RabbitList.Eat ();

Her er "1" indekset, hvilket betyder, at du henviser til de oplysninger, der er gemt på position en. Som det sker, er det faktisk sekund kanin, du tilføjede dog: fordi lister i programmering altid starter ved 0.

fibonacci

I tilfælde af at du endnu ikke havde gættet, bruger vi nu alle disse oplysninger til at oprette en Fibonacci-sekvens. Når alt kommer til alt, hvis du lærer C # til Android, skal du være i stand til faktisk at gøre noget interessant med al den teori!

I Fibonacci-sekvensen lukkes kaniner i et rum og får lov til at opdrætte. De kan reproducere sig efter en måned, på hvilket tidspunkt de er seksuelt modne (jeg kan ikke bekræfte, om dette er korrekt Kaninbiologi). Hvis hvert kaninpar kan producere en gang om måneden fra da af og fremstille to afkom, så er serien så ud:

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

Magisk nok er hvert nummer i sekvensen værdien af ​​de to foregående numre, der er tilføjet sammen. Ifølge videnskaben er dette en slags big deal.

Den seje ting er, at vi kan gentage det.

Først skal vi introducere et nyt koncept: loopen. Dette gentager simpelthen den samme kode igen og igen, indtil en betingelse er opfyldt. "For" -løkken giver os mulighed for at gøre dette ved at oprette en variabel, indstille de betingelser, vi ønsker at opfylde, og derefter arbejde på den - alt defineret inden for parenteser:

i (int måneder = 0; måneder <100; måneder ++) {// Gør noget}

Så vi opretter et heltal kaldet måneder og sløjfer indtil det er lig med 100. Derefter øger vi antallet af måneder med en.

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

namespace ConsoleApp2 {class Program {statisk tomrum Main (string args) {List RabbitList = ny liste(); RabbitList.Tilføj (ny kanin ("Jeff", "brun", 0, 1)); RabbitList.Tilføj (ny kanin ("Sam", "hvid", 0, 1)); i (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; } andet {firstRabbit = 0; timesToReproduce ++; }} Rabbit.RabbitAge ++; } for (int i = 0; i <timesToReproduce; i ++) {RabbitList.Tilføj (ny kanin ("NewBabyRabbit", "brown", 0, 1)); RabbitList.Tilføj (ny kanin ("NewBabyRabbit", "brown", 0, 1)); Console.Write ( "r"); Console.Write ( "r"); } Console.WriteLine ("--- Der er" + RabbitList.Count / 2 + "par kaniner!"); Console.WriteLine ( ""); } Console.WriteLine ("Alt gjort!"); Console.ReadKey (); }}}

Okay, det var sværere, end jeg troede!

Jeg vil ikke gennemgå alt dette, men ved hjælp af det, du allerede har lært, skal du være i stand til at vende det.

Der er bestemt mere elegante måder at gøre dette på - jeg er ingen matematiker. Jeg synes dog, det er en ret sjov øvelse, og når du først kan gøre det, er du klar til det store tidspunkt.

Jeg ville meget gerne se andre tilgange, forresten!

Hvor går vi hen herfra? Sådan lærer du C # til Android

Med al den viden under dit bælte er du klar til at starte med større ting. Især er du klar til at tage en kniv ved Android-programmering med C # i Xamarin eller Unity.

Dette er anderledes, fordi du bruger klasser leveret af Google, Microsoft og Unity. Når du skriver noget som "RigidBody2D.velocity", hvad du laver er at få adgang til en ejendom fra en klasse hedder RigidBody2D. Dette fungerer på samme måde, den eneste forskel er, at du ikke kan se RigidBody2D, fordi du ikke selv har bygget den.

Med denne C # under dit bælte, skal du være klar til at hoppe ind på en af ​​disse muligheder og have et stort forspring, når det kommer til at forstå, hvad der foregår:

  • Sådan opretter du en Android-app med Xamarin
  • Byg dit allerførste Android-spil på 7 minutter med Unity

I en kommende lektion skal vi også se på, hvordan du kan tage en sving og bruge dette til at oprette Windows-apps i stedet!

En udvikler har formået at porte Google Camera-appen med Night ight til Huawei-telefoner.Huawei Mate 10, Mate 10 Pro og Honor Play er anført om tre undertøttede enheder.Night ight bruge...

Forkellige problemer med Google Pixel 4 er allerede dokumenteret grundigt i vore gennemgang og andre teder, å jeg vil ikke genoprette for mange punkter. Det er imidlertid tydeligt, at Pixel 4 og ...

Valg Af Læsere