Lär dig C # för Android del 2: Klasser och slingor

Författare: John Stephens
Skapelsedatum: 24 Januari 2021
Uppdatera Datum: 1 Juli 2024
Anonim
Lär dig C # för Android del 2: Klasser och slingor - Appar
Lär dig C # för Android del 2: Klasser och slingor - Appar

Innehåll


I del en av denna Android-tutorial-serie om att lära sig C #, tittade vi på de absoluta grunderna för C # -programmering. Vi behandlade metoder (grupper av kod som utför specifika uppgifter), vissa grundläggande syntaxer (som behovet av halvkolon), variabler (behållare som lagrar data) och "if-uttalanden" för flödeskontroll (grenkod som är beroende av värdena av variabler). Vi såg också hur man kan överföra variabler som strängar som argument mellan metoder.

Du bör gå tillbaka och titta på det om du inte redan har läst det.

Just nu bör du kunna skapa några grundläggande konsolappar, som frågesporter, appar som lagrar data eller kalkylatorer.

I del två kommer vi att bli lite mer ambitiösa, täcka några mer grunder - som slingor - och utforska hur man skapar och interagerar med klasser. Det innebär att vi kommer att kunna börja ta ett kniv vid Android-utvecklingen och se hur vi kan överbrygga detta gap. Fortsätt läsa om du verkligen vill lära dig C #!


Förstå klasser och objektorienterad programmering

Kortfattat i del en förklarade vi grunderna i Objektorienterad programmering, som kretsar kring språk med hjälp av ”klasser” för att beskriva ”objekt.” Ett objekt är en datamängd som kan representera många saker. Det kan vara ett bokstavligt föremål i en spelvärld som en vår, eller det kan vara något mer abstrakt, som en manager som hanterar spelarens poäng.

En enda klass kan skapa flera objekt. Så du kanske skriver en “fiendens” klass, men kan generera en hel nivå full av skurkar. Detta är en av de stora fördelarna med att använda objektorienterad programmering. Annars skulle det enda sättet att hantera beteendet hos en mängd fiender vara att använda massor av enskilda metoder, var och en med instruktioner för hur den onda killen ska bete sig under olika omständigheter.


Om detta fortfarande är lite svårt att ta sig runt är allt du verkligen behöver veta att objekt har egenskaper och beteenden. Detta är precis som riktiga föremål. Till exempel har en kanin egenskaper som storlek, färg och namn; och det har beteenden, som att hoppa, sitta och äta. I huvudsak är egenskaper variabler och beteenden är metoder.

Programmet vi byggde i den sista lektionen är också ett exempel på en klass. "Objektet" som vi beskriver här är ett slags lösenordskontrollsystem. Egenskapen den har är strängen Användarnamn, och beteendet den har är NewMethod (kontrollera användarens namn och hälsa dem).

Om det är såfortfarande lite förvirrande, det enda sättet att få våra huvuden runt är att skapa en ny klass eller två själva!

Skapa en ny klass

Om du kommer att lära dig C # måste du veta hur du gör nya klasser. Lyckligtvis är detta mycket enkelt. Klicka bara på menyposten Projekt och välj sedan "+ Lägg till klass."

Välj "C #" och kalla det "Kanin." Vi kommer att använda den här klassen för att skapa konceptuella kaniner. Du får se vad jag menar på ett ögonblick.

Om du checkar in i din Solution Explorer till höger ser du att en ny fil som heter Rabbit.cs har skapats precis under Program.cs. Bra gjort - det är en av de viktigaste sakerna att veta om du vill lära dig C # för Android!

Den nya filen Rabbit.cs har några av samma "pannplatta" -kod som tidigare. Den tillhör fortfarande samma namnutrymme och har en klass med samma namn som filen.

namespace ConsoleApp2 {class Rabbit {}}

Nu ska vi ge våra kaniner några egenskaper med det vi kallar en "konstruktör."

En konstruktör är en metod i en klass som initialiserar objektet, vilket gör att vi kan definiera dess egenskaper när vi först skapar det. I det här fallet är det här vi ska säga:

namespace ConsoleApp2 {class Rabbit {public string RabbitName; public string RabbitColor; public int RabbitAge; public int RabbitWeight; public Rabbit (String name, String color, int age, int vikt) {RabbitName = name; RabbitColor = färg; RabbitAge = ålder; RabbitWeight = vikt; }}}

Detta gör att vi kan skapa en ny kanin från en annan klass och definiera dess egenskaper som vi gör:

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

Nu inser jag att i efterhand tyngden borde ha varit en flottör eller en dubbel för att möjliggöra decimaler, men du får idén. Vi kommer att runda vår kanin till närmaste heltal.

Du ser när du skriver ut din kanin, du blir ombedd att skicka rätt argument. På detta sätt har din klass nästan blivit en del av koden.

Tro det eller inte, den här koden har skapat en kanin! Du kan inte se din kanin eftersom vi inte har någon grafik, men den är där.

Och för att bevisa det kan du nu använda den här linjen:

Console.WriteLine (Rabbit1.RabbitName);

Då berättar du namnet på kaninen du just skapade!

Vi kan också öka vikten på vår kanin, så:

Rabbit1.RabbitWeight ++; Console.WriteLine (Rabbit1.RabbitName + "väger" + Rabbit1.RabbitWeight + "kg");

Observera här att lägga till "++" i slutet av något kommer stegvis att öka dess värde med ett (Du kan också skriva "RabbitWeight = RabbitWeight + 1").

Eftersom vår klass kan göra så många kaniner som vi vill kan vi skapa massor av olika kaniner, var och en med sina egna egenskaper.

Lägga till beteenden

Vi kan då också välja att ge vår kanin något slags beteende. Låt dem i detta fall äta.

För att göra detta skulle vi skapa en offentlig metod som heter "Ät", och detta skulle göra ett ätande ljud, samtidigt som kaninens vikt stegvis ökar:

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

Kom ihåg att "offentligt" betyder tillgängligt utanför klassen, och "ogiltigt" betyder att metoden inte returnerar data.

Sedan kommer vi från Program.cs att kunna kalla den här metoden och detta kommer att göra att kaninen efter vårt val äter och blir större:

Console.WriteLine (Rabbit1.RabbitName + "väger" + Rabbit1.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "väger" + Rabbit1.RabbitWeight + "kg");

Det får Jeff att äta tre gånger, då hör vi det och kan se att han har blivit större! Om vi ​​hade en annan kanin på scenen, kunde de också äta!

Console.WriteLine (Rabbit1.RabbitName + "väger" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "väger" + Rabbit2.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit2.Eat (); Rabbit2.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "väger" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "väger" + Rabbit2.RabbitWeight + "kg");

På det som kaniner

Detta är inte ett särskilt elegant sätt att hantera massor av objekt, eftersom vi måste skriva ut kommandona för varje kanin manuellt och inte kan dynamiskt öka antalet kaniner så långt vi vill. Vi vill inte bara lära oss C # - vi vill lära oss att skriva ren C # -kod!

Det är därför vi kan använda en lista. En lista är en samling; variabel i sig som i princip innehåller referenser till andra variabler. I det här fallet kan vi göra en lista med kaniner, och den goda nyheten är att detta är väldigt lätt att förstå:

Lista RabbitList = ny lista(); RabbitList.Tillsätt (ny kanin ("Jeff", "brun", 1, 1)); RabbitList.Tillsätt (ny kanin ("Sam", "vit", 1, 2));

Detta skapar den nya kaninen som tidigare, men lägger samtidigt kaninen till listan. På samma sätt kan vi säga detta:

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

I vilket fall som helst har ett objekt skapats och lagts till i listan.

Vi kan också enkelt och elegant returnera information från vår kaninlista på detta sätt:

förhand (var Rabbit in RabbitList) {Console.WriteLine (Rabbit.RabbitName + "väger" + Rabbit.RabbitWeight + "kg"); }

Som du kanske kan räkna ut betyder "förhand" att du upprepar ett steg en gång för varje objekt i listan. Du kan också hämta information från din lista så här:

RabbitList.Eat ();

Här är ”1” indexet, vilket innebär att du hänvisar till informationen som är lagrad på plats ett. När det händer är det faktiskt andra kanin du lagt till dock: eftersom listor i programmering alltid börjar på 0.

Fibonacci

Om du ännu inte hade gissat oss kommer vi nu att använda all denna information för att skapa en Fibonacci-sekvens. När allt kommer omkring, Om du lär dig C # för Android bör du kunna göra något intressant med all den teorin!

I Fibonacci-sekvensen stängs kaninerna i ett rum och lämnas för att föda upp. De kan reproducera sig efter en månad, vid vilken tidpunkt de är sexuellt mogna (jag kan inte bekräfta om detta är korrekt kaninbiologi). Om varje kaninpar kan producera en gång i månaden därefter och producera två avkommor, så ser sekvensen ut:

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

Magiskt sett är varje nummer i sekvensen värdet på de två föregående numren som lagts samman. Enligt vetenskapen är detta lite stort.

Det coola är att vi kan replikera det.

Först måste vi introducera ett nytt koncept: loopen. Detta upprepar helt enkelt samma kod om och om igen tills ett villkor är uppfyllt. "For" -slingan låter oss göra detta genom att skapa en variabel, ställa in villkoren vi vill uppfylla och sedan arbeta med den - allt definierat inom parentes:

för (int månader = 0; månader <100; månader ++) {// Gör något}

Så vi skapar ett heltal som heter månader och slingrar tills det är lika med 100. Sedan ökar vi antalet månader med en.

Vill du se hur det här kan bli en Fibonacci-sekvens? Skåda:

namespace ConsoleApp2 {class Program {static void Main (string args) {List RabbitList = ny lista(); RabbitList.Tillsätt (ny kanin ("Jeff", "brown", 0, 1)); RabbitList.Tillfoga (ny kanin ("Sam", "vit", 0, 1)); för (int månader = 0; månader <10; månader ++) {int firstRabbit = 0; int timesToReproduce = 0; förhand (var Rabbit in RabbitList) {Console.Write ("R"); if (Rabbit.RabbitAge> 0) {if (firstRabbit == 0) {firstRabbit = 1; } annat {firstRabbit = 0; timesToReproduce ++; }} Rabbit.RabbitAge ++; } för (int i = 0; i <timesToReproduce; i ++) {RabbitList.Tillfoga (ny kanin ("NewBabyRabbit", "brun", 0, 1)); RabbitList.Tillsätt (ny kanin ("NewBabyRabbit", "brun", 0, 1)); Console.Write ( "r"); Console.Write ( "r"); } Console.WriteLine ("--- Det finns" + RabbitList.Count / 2 + "par kaniner!"); Console.WriteLine ( ""); } Console.WriteLine ("Allt gjort!"); Console.ReadKey (); }}}

Okej, det var svårare än jag trodde!

Jag tänker inte gå igenom allt detta, men med det du redan har lärt dig bör du kunna göra omvänd teknik.

Det finns definitivt mer eleganta sätt att göra detta - jag är ingen matematiker. Jag tycker dock att det är en ganska rolig övning och när du väl kan göra det är du redo för den stora tiden.

Jag skulle gärna vilja se några andra tillvägagångssätt, förresten!

Var går vi härifrån? Hur man lär sig C # för Android

Med all den kunskapen under ditt bälte är du redo att börja med större saker. I synnerhet är du redo att ta en knäpp vid Android-programmering med C # i Xamarin eller Unity.

Det här är annorlunda eftersom du använder klasser från Google, Microsoft och Unity. När du skriver något som "RigidBody2D.velocity" är det du gör att få tillgång till en egenskap från en klass kallad RigidBody2D. Detta fungerar precis på samma sätt, den enda skillnaden är att du inte kan se RigidBody2D eftersom du inte byggde det själv.

Med denna C # under ditt bälte bör du vara redo att hoppa till något av dessa alternativ och ha ett stort försprång när det gäller att förstå vad som händer:

  • Hur man skapar en Android-app med Xamarin
  • Bygg ditt allra första Android-spel på 7 minuter med Unity

I en kommande lektion tittar vi också på hur du kan ta en U-sväng och använda den här för att bygga Windows-appar istället!

Att budgetera dina pengar är mycket viktigt. Vi lever i en era där prenumerationtjänter är vanliga. Du har det vanliga utbudet av hyror och verktyg att betala. Deutom är peng...

15 bästa kortspel för Android!

Lewis Jackson

Juli 2024

Kortpel är en fantatik form av underhållning. De arbetar var om helt och överallt, de är må nog att paa i en väka för reor, och det finn många olika orter kort...

Populär På Webbplatsen