Leer C # voor Android deel 2: klassen en lussen

Schrijver: John Stephens
Datum Van Creatie: 24 Januari 2021
Updatedatum: 1 Juli- 2024
Anonim
Understanding Loops and Arrays | Unity C# Basics Part 2 | Unity Tutorial
Video: Understanding Loops and Arrays | Unity C# Basics Part 2 | Unity Tutorial

Inhoud


In deel één van deze Android-tutorialserie over het leren van C #, hebben we gekeken naar de absolute basisprincipes van C # -programmering. We hebben methoden (groepen code die specifieke taken uitvoeren) behandeld, enkele basissyntaxis (zoals de noodzaak voor puntkomma's), variabelen (containers die gegevens opslaan) en 'if-instructies' voor stroombesturing (vertakkingscode die afhankelijk is van de waarden van variabelen). We hebben ook gezien hoe variabelen zoals tekenreeksen als argumenten tussen methoden moeten worden doorgegeven.

Je moet teruggaan en daarnaar kijken als je het nog niet hebt gelezen.

Op dit moment zou u in staat moeten zijn om enkele basisconsole-apps te maken, zoals quizzen, apps die gegevens opslaan of rekenmachines.

In deel twee gaan we een beetje ambitieuzer worden, wat meer basics behandelt - zoals loops - en onderzoeken hoe we klassen kunnen maken en ermee kunnen omgaan. Dat betekent dat we een begin kunnen maken met de ontwikkeling van Android en kijken hoe we die kloof kunnen overbruggen. Lees verder als je echt C # wilt leren!


Inzicht in klassen en objectgeoriënteerd programmeren

In deel één hebben we kort de basis uitgelegd van Object Oriented Programming, dat draait om talen met behulp van "klassen" om "objecten" te beschrijven. Een object is een stuk gegevens dat veel dingen kan vertegenwoordigen. Het kan een letterlijk object in een gamewereld zijn, zoals een veer, of het kan iets abstracters zijn, zoals een manager die de score van de speler verwerkt.

Een enkele klasse kan meerdere objecten maken. Je zou dus één klasse 'vijand' kunnen schrijven, maar een heel niveau vol slechteriken kunnen genereren. Dit is een van de grote voordelen van het gebruik van objectgeoriënteerd programmeren. Anders zou de enige manier om het gedrag van een veelvoud van vijanden aan te pakken, veel individuele methoden zijn, die elk instructies bevatten voor hoe de slechterik zich in verschillende omstandigheden zou moeten gedragen.


Als dit nog steeds een beetje lastig is om rond te komen, hoef je alleen maar te weten dat objecten eigenschappen en gedrag hebben. Dit is net als echte objecten. Een konijn heeft bijvoorbeeld eigenschappen zoals grootte, kleur en naam; en het heeft gedrag, zoals springen, zitten en eten. Eigenschappen zijn in wezen variabelen en gedragingen zijn methoden.

Het programma dat we in de laatste les hebben gebouwd, is ook een voorbeeld van een klas. Het "object" dat we hier beschrijven is een soort wachtwoordcontrolesysteem. De eigenschap die het heeft, is de tekenreeks Gebruikersnaam en het gedrag dat het heeft is NewMethod (de naam van de gebruiker controleren en begroeten).

Als dat zo isnog steeds een beetje verwarrend, de enige manier om onze hoofden rond te krijgen is om zelf een nieuwe klasse te creëren!

Een nieuwe klas maken

Als je C # gaat leren, moet je weten hoe je nieuwe lessen kunt maken. Gelukkig is dit heel eenvoudig. Klik op het menu-item Project en selecteer vervolgens '+ Klasse toevoegen'.

Kies "C #" en noem het "Konijn". We gaan deze klasse gebruiken om conceptuele konijnen te maken. Je zult meteen zien wat ik bedoel.

Als u rechts in uw Solution Explorer incheckt, ziet u dat een nieuw bestand met de naam Rabbit.cs is gemaakt direct onder Program.cs. Goed gedaan - dat is een van de meest cruciale dingen om te weten als je C # voor Android wilt leren!

Het nieuwe Rabbit.cs-bestand heeft een aantal van dezelfde "boilerplate" -code als voorheen. Het hoort nog steeds bij dezelfde naamruimte en heeft een klasse met dezelfde naam als het bestand.

namespace ConsoleApp2 {class Rabbit {}}

Nu gaan we ons konijn enkele eigenschappen geven met wat we een 'constructor' noemen.

Een constructor is een methode in een klasse die het object initialiseert, waardoor we de eigenschappen ervan kunnen definiëren wanneer we het voor het eerst maken. In dit geval is dit wat we gaan zeggen:

namespace ConsoleApp2 {class Rabbit {public string RabbitName; openbare string RabbitColor; openbaar int RabbitAge; openbaar int RabbitWeight; public Rabbit (Stringnaam, Stringkleur, int leeftijd, int gewicht) {RabbitName = naam; RabbitColor = kleur; RabbitAge = leeftijd; RabbitWeight = gewicht; }}}

Hiermee kunnen we een nieuw konijn uit een andere klasse maken en de eigenschappen ervan definiëren zoals wij:

Konijn Konijn1 = nieuw Konijn ("Jeff", "bruin", 1, 1);

Nu realiseer ik me achteraf dat gewicht waarschijnlijk een dobber of een dubbel moet zijn geweest om decimalen mogelijk te maken, maar je krijgt het idee. We gaan ons konijn naar het dichtstbijzijnde hele getal afronden.

Je zult zien dat je, wanneer je je konijn opschrijft, wordt gevraagd de juiste argumenten door te geven. Op deze manier is je klas bijna een deel van de code geworden.

Geloof het of niet, deze code heeft een konijn gemaakt! Je kunt je konijn niet zien omdat we geen afbeeldingen hebben, maar het is er wel.

En om het te bewijzen, kunt u nu deze lijn gebruiken:

Console.WriteLine (Rabbit1.RabbitName);

Dit zal je dan de naam vertellen van het konijn dat je zojuist hebt gemaakt!

We kunnen op dezelfde manier het gewicht van ons konijn verhogen, als volgt:

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

Merk hier op dat het toevoegen van "++" aan het einde van iets de waarde stapsgewijs met één verhoogt (u kunt ook schrijven "RabbitWeight = RabbitWeight + 1").

Omdat onze klas zoveel konijnen kan maken als we willen, kunnen we veel verschillende konijnen maken, elk met hun eigen eigenschappen.

Gedrag toevoegen

We kunnen er dan ook voor kiezen om ons konijn een bepaald gedrag te geven. Laten we ze in dit geval laten eten.

Om dit te doen, zouden we een openbare methode genaamd 'Eten' creëren, en dit zou een eetgeluid maken, terwijl het gewicht van het konijn ook stapsgewijs toeneemt:

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

Vergeet niet dat 'openbaar' betekent toegankelijk van buiten de klas en 'ongeldig' betekent dat de methode geen gegevens retourneert.

Dan kunnen we vanuit Program.cs deze methode aanroepen en dit zal het konijn van onze keuze laten eten en groter worden:

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

Dat zal ervoor zorgen dat Jeff drie keer eet, dan zullen we het horen en kunnen we zien dat hij groter is geworden! Als we nog een konijn op het toneel hadden, konden ze ook eten!

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

Naar het als konijnen

Dit is geen bijzonder elegante manier om veel objecten te hanteren, omdat we de opdrachten voor elk konijn handmatig moeten uitschrijven en het aantal konijnen niet dynamisch zo ver kunnen verhogen als we willen. We willen niet alleen C # leren, we willen leren hoe we schone C # -code kunnen schrijven!

Daarom kunnen we een lijst gebruiken. Een lijst is een verzameling; variabele zelf die in feite verwijzingen naar andere variabelen bevat. In dit geval kunnen we een lijst met konijnen maken en het goede nieuws is dat dit heel gemakkelijk te begrijpen is:

Lijst RabbitList = nieuwe lijst(); RabbitList.Add (nieuw Rabbit ("Jeff", "brown", 1, 1)); RabbitList.Add (nieuw Rabbit ("Sam", "white", 1, 2));

Hiermee maakt u het nieuwe konijn zoals eerder, maar wordt het konijn tegelijkertijd aan de lijst toegevoegd. Evenzo zouden we dit kunnen zeggen:

Konijn Konijn3 = nieuw Konijn ("Jonny", "oranje", 1, 1); RabbitList.Add (Rabbit3);

Hoe dan ook, er is een object gemaakt en aan de lijst toegevoegd.

We kunnen ook gemakkelijk en elegant informatie uit onze konijnenlijst op deze manier retourneren:

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

Zoals u wellicht kunt uitzoeken, betekent "foreach" dat u een stap voor elk item in de lijst één keer herhaalt. U kunt ook informatie als volgt uit uw lijst ophalen:

RabbitList.Eat ();

Hier is "1" de index, wat betekent dat u verwijst naar de informatie die is opgeslagen op positie één. Het is namelijk het geval tweede konijn dat je echter hebt toegevoegd: omdat lijsten in de programmering altijd beginnen bij 0.

Fibonacci

Als je het nog niet had geraden, gaan we nu al deze informatie gebruiken om een ​​Fibonacci-reeks te maken. Immers, als je C # voor Android leert, zou je eigenlijk iets interessants moeten kunnen doen met al die theorie!

In de Fibonacci-reeks worden konijnen in een kamer opgesloten en achtergelaten om te fokken. Ze kunnen zich na een maand voortplanten, op welk moment ze seksueel volwassen zijn (ik kan niet bevestigen of dit de juiste konijnbiologie is). Als elk konijnenpaar vanaf dat moment één keer per maand kan produceren en twee nakomelingen kan produceren, zo ziet de volgorde eruit:

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

Magisch is elk nummer in de reeks de waarde van de vorige twee getallen bij elkaar opgeteld. Volgens de wetenschap is dit nogal een probleem.

Het leuke is dat we dat kunnen repliceren.

Eerst moeten we een nieuw concept introduceren: de lus. Dit herhaalt eenvoudig dezelfde code steeds opnieuw totdat aan een voorwaarde is voldaan. Met de "for" -lus kunnen we dit doen door een variabele te maken, de voorwaarden in te stellen waaraan we willen voldoen en er vervolgens op te werken - allemaal gedefinieerd tussen haakjes:

voor (int maanden = 0; maanden <100; maanden ++) {// Doe iets}

We maken dus een geheel getal dat maanden wordt genoemd en lopen tot het gelijk is aan 100. Vervolgens verhogen we het aantal maanden met één.

Wil je zien hoe dit een Fibonacci-reeks kan worden? Zie:

namespace ConsoleApp2 {class Program {static void Main (string args) {Lijst RabbitList = nieuwe lijst(); RabbitList.Add (nieuw Rabbit ("Jeff", "brown", 0, 1)); RabbitList.Add (nieuw Rabbit ("Sam", "white", 0, 1)); voor (int maanden = 0; maanden <10; maanden ++) {int firstRabbit = 0; int timesToReproduce = 0; foreach (var Rabbit in RabbitList) {Console.Write ("R"); if (Rabbit.RabbitAge> 0) {if (firstRabbit == 0) {firstRabbit = 1; } else {firstRabbit = 0; timesToReproduce ++; }} Rabbit.RabbitAge ++; } voor (int i = 0; i <timesToReproduce; i ++) {RabbitList.Add (nieuw konijn ("NewBabyRabbit", "brown", 0, 1)); RabbitList.Add (nieuw Rabbit ("NewBabyRabbit", "brown", 0, 1)); Console.Write ( "r"); Console.Write ( "r"); } Console.WriteLine ("--- Er zijn" + RabbitList.Count / 2 + "konijnenparen!"); Console.WriteLine ( ""); } Console.WriteLine ("All done!"); Console.ReadKey (); }}}

Oké, dat was moeilijker dan ik dacht!

Ik ga dit niet allemaal doornemen, maar met behulp van wat je al hebt geleerd, zou je het moeten kunnen reverse-engineeren.

Er zijn absoluut elegantere manieren om dit te doen - ik ben geen wiskundige. Ik vind het echter een vrij leuke oefening en als je het eenmaal hebt gedaan, ben je klaar voor de grote tijd.

Ik zou trouwens graag andere benaderingen zien!

Hoe gaan we verder? Hoe C # voor Android te leren

Met al die kennis binnen handbereik, ben je klaar om aan grotere dingen te beginnen. In het bijzonder ben je klaar om Android-programma's te programmeren met C # in Xamarin of Unity.

Dit is anders omdat u klassen van Google, Microsoft en Unity gebruikt. Wanneer u zoiets schrijft als "RigidBody2D.velocity", doet u toegang tot een eigenschap van een klasse riep RigidBody2D. Dit werkt precies hetzelfde, het enige verschil is dat je RigidBody2D niet kunt zien omdat je het niet zelf hebt gebouwd.

Met deze C # onder je riem, zou je klaar moeten zijn om in een van deze opties te springen en een grote voorsprong hebben als het gaat om het begrijpen van wat er aan de hand is:

  • Hoe maak je een Android-app met Xamarin
  • Bouw je eerste Android-game in 7 minuten met Unity

In een komende les zullen we ook kijken hoe je een U-bocht kunt nemen en deze kunt gebruiken om in plaats daarvan Windows-apps te bouwen!

Het Google Pixelbook.Een potentieel mobiel apparaat genaamd Google ‘Coral’ i geland op de benchmarkwebite Geekbench (via MymartPrice). Het apparaat werd giteren getoett, blijkbaar met Android Q met ee...

Google heeft de conumentenverie van Google+ eerder deze maand beëindigd. De G uite-verie voor zakelijke gebruiker bleef echter met rut. Dat wil zeggen tot vandaag....

Opgedaan Vandaag