Naučte se C # pro Android část 2: Třídy a smyčky

Autor: John Stephens
Datum Vytvoření: 24 Leden 2021
Datum Aktualizace: 1 Červenec 2024
Anonim
Naučte se C # pro Android část 2: Třídy a smyčky - Aplikace
Naučte se C # pro Android část 2: Třídy a smyčky - Aplikace

Obsah


V části jedna z této řady tutoriálů pro Android o učení C # jsme se podívali na absolutní základy programování C #. Pokryli jsme metody (skupiny kódu, které provádějí specifické úkoly), některé základní syntaxe (například potřebu středníků), proměnné (kontejnery, které ukládají data) a „if příkazy“ pro řízení toku (větvící se kód, který je závislý na hodnotách) proměnných). Viděli jsme také, jak předávat proměnné jako řetězce jako argumenty mezi metodami.

Měli byste se vrátit a podívat se na to, pokud jste si ji ještě nečetli.

Nyní byste měli být schopni vytvořit některé základní konzolové aplikace, například kvízy, aplikace, které ukládají data nebo kalkulačky.


V druhé části se chystáme trochu ambicióznější, pokryjeme některé další základy - například smyčky - a zkoumáme, jak vytvářet a komunikovat s třídami. To znamená, že budeme schopni začít bodat ve vývoji Androidu a uvidíme, jak tuto mezeru překlenout. Pokračujte ve čtení, pokud se chcete opravdu naučit C #!

Porozumění třídám a objektově orientovanému programování

Stručně v první části jsme vysvětlili základy objektově orientovaného programování, které se točí kolem jazyků pomocí „tříd“ k popisu „objektů“. Objekt je část dat, která může představovat mnoho věcí. Mohl by to být doslovný předmět ve hře jako jaro, nebo to může být něco abstraktnějšího, jako manažer, který zpracovává skóre hráče.

Jedna třída může vytvářet více objektů. Můžete tedy napsat jednu „nepřátelskou“ třídu, ale být schopni vytvořit celou úroveň plnou padouchů. To je jedna z velkých výhod používání objektově orientovaného programování. Jinak by jediným způsobem, jak zvládnout chování velkého množství nepřátel, bylo použít spoustu individuálních metod, z nichž každá by obsahovala pokyny, jak by se špatný člověk měl chovat za různých okolností.


Pokud je to stále trochu složité na to, aby se vám to povedlo, vše, co potřebujete vědět, je, že objekty mají vlastnosti a chování. Je to jako skutečné objekty. Například králík má vlastnosti, jako je velikost, barva a název; a má chování, jako je skákání, sezení a stravování. Vlastnosti jsou v zásadě proměnné a chování jsou metody.

Program, který jsme vytvořili v poslední lekci, je také příkladem třídy. „Objekt“, který zde popisujeme, je nějaký druh systému řízení hesel. Vlastnost, kterou má, je řetězec UserName a jeho chování je NewMethod (kontrola jména uživatele a pozdrav).

Pokud je to takještě pořád trochu matoucí, jediný způsob, jak se obejít, je vytvořit novou třídu nebo dva sami!

Vytvoření nové třídy

Pokud se chcete naučit C #, musíte vědět, jak vytvořit nové třídy. Naštěstí je to velmi snadné. Stačí kliknout na položku nabídky Projekt a poté vybrat „+ Přidat třídu“.

Vyberte „C #“ a nazvejte jej „Králík“. Tuto třídu použijeme k vytvoření koncepčních králíků. Za okamžik uvidíte, co tím myslím.

Pokud zaškrtnete v Průzkumníku řešení vpravo, uvidíte, že pod Program.cs byl vytvořen nový soubor s názvem Rabbit.cs. Výborně - to je jedna z nejdůležitějších věcí, které byste měli vědět, pokud se chcete naučit C # pro Android!

Nový soubor Rabbit.cs má některé stejné kódy „boilerplate“ jako dříve. Stále patří do stejného jmenného prostoru a má třídu se stejným názvem jako soubor.

namespace ConsoleApp2 {class Rabbit {}}

Nyní uděláme králíkovi nějaké vlastnosti s tím, čemu říkáme „konstruktér“.

Konstruktor je metoda ve třídě, která inicializuje objekt a umožňuje nám definovat jeho vlastnosti při prvním vytvoření. V tomto případě řekneme následující:

namespace ConsoleApp2 {class Rabbit {public string RabbitName; veřejný řetězec RabbitColor; public int RabbitAge; public int RabbitWeight; public Rabbit (String name, String color, int age, int weight) {RabbitName = name; RabbitColor = barva; RabbitAge = věk; RabbitWeight = hmotnost; }}}

To nám umožňuje vytvořit nového králíka z jiné třídy a definovat jeho vlastnosti tak, jak to děláme:

Králík Králík1 = nový králík („Jeff“, „hnědý“, 1, 1);

Teď si v retrospektivě uvědomuji, že by to asi měl být float nebo double, aby bylo možné počítat s desetinnými místy, ale ten nápad získáte. Hodláme králíka zaokrouhlit na nejbližší celé číslo.

Když píšete králíka, uvidíte, že budete vyzváni, abyste předali správné argumenty. Tímto způsobem se vaše třída stala téměř součástí kódu.

Věřte tomu nebo ne, tento kód vytvořil králíka! U králíka nevidíte, protože nemáme žádnou grafiku, ale je tam.

A dokázat to, můžete nyní použít tento řádek:

Console.WriteLine (Rabbit1.RabbitName);

To vám řekne jméno králíka, kterého jste právě vytvořili!

Stejně tak můžeme zvýšit hmotnost našeho králíka:

Rabbit1.RabbitWeight ++; Console.WriteLine (Rabbit1.RabbitName + "váží" + Rabbit1.RabbitWeight + "kg");

Zde si poznamenejte, že přidání „++“ na konec něčeho postupně zvýší jeho hodnotu o jednu (Můžete také napsat „RabbitWeight = RabbitWeight + 1“).

Protože naše třída dokáže vyrobit tolik králíků, kolik se nám líbí, můžeme vytvořit spoustu různých králíků, z nichž každý má své vlastní vlastnosti.

Přidávání chování

Můžeme se pak také rozhodnout dát králíkovi nějaké chování. V takovém případě je pojďme jíst.

Abychom toho dosáhli, vytvořili bychom veřejnou metodu nazvanou „Jezte“, což by vydalo zdravý zvuk a zároveň by postupně zvyšovalo hmotnost králíka:

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

Pamatujte, že „veřejný“ znamená přístupný mimo třídu a „neplatný“ znamená, že metoda nevrací žádná data.

Potom zevnitř Program.cs budeme moci zavolat tuto metodu a tím se králík podle našeho výběru sní a zvětšuje:

Console.WriteLine (Rabbit1.RabbitName + "váží" + Rabbit1.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "váží" + Rabbit1.RabbitWeight + "kg");

To způsobí, že Jeff sníst třikrát, pak to uslyšíme a budeme schopni vidět, že se zvětšil! Kdybychom měli na scéně dalšího králíka, mohli by také jíst!

Console.WriteLine (Rabbit1.RabbitName + "váží" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "váží" + Rabbit2.RabbitWeight + "kg"); Rabbit1.Eat (); Rabbit1.Eat (); Rabbit2.Eat (); Rabbit2.Eat (); Rabbit1.Eat (); Console.WriteLine (Rabbit1.RabbitName + "váží" + Rabbit1.RabbitWeight + "kg"); Console.WriteLine (Rabbit2.RabbitName + "váží" + Rabbit2.RabbitWeight + "kg");

Na to jako králíci

Toto není obzvláště elegantní způsob, jak zacházet se spoustou objektů, protože musíme psát příkazy pro každého králíka ručně a nemůžeme dynamicky zvyšovat počet králíků, jak chceme. Nechceme se jen učit C # - chceme se naučit, jak psát čistý C # kód!

Proto bychom mohli použít seznam. Seznam je sbírka; samotná proměnná, která v podstatě obsahuje odkazy na jiné proměnné. V tomto případě bychom mohli vytvořit seznam králíků a dobrá zpráva je, že je to velmi snadno pochopitelné:

Seznam RabbitList = nový seznam(); RabbitList.Add (nový králík („Jeff“, „brown“, 1, 1)); RabbitList.Add (nový králík ("Sam", "white", 1, 2));

Tím se vytvoří nový králík jako dříve, ale současně se přidá králík do seznamu. Stejně tak bychom mohli říci:

Králík Králík 3 = nový králík („Jonny“, „oranžový“, 1, 1); RabbitList.Add (Rabbit3);

V obou případech byl objekt vytvořen a přidán do seznamu.

Takto můžeme pohodlně a elegantně vracet informace z našeho seznamu králíků:

foreach (var Rabbit in RabbitList) {Console.WriteLine (Rabbit.RabbitName + "váží" + Rabbit.RabbitWeight + "kg"); }

Jak můžete zjistit, „foreach“ znamená opakovat krok jednou pro každou položku v seznamu. Můžete také získat informace ze seznamu takto:

RabbitList.Eat ();

Zde je „1“ index, což znamená, že odkazujete na informace uložené na pozici jedna. Jak se to stane, je to vlastně druhý králíka, kterého jste přidali: protože seznamy v programování začínají vždy na 0.

Fibonacci

V případě, že jste to ještě uhodli, použijeme všechny tyto informace k vytvoření sekvence Fibonacci. Koneckonců, pokud se učíte C # pro Android, měli byste být schopni skutečně udělat něco zajímavého se vší tou teorií!

V sekvenci Fibonacci jsou králíci zavřeni v místnosti a nechají se rozmnožit. Mohou se rozmnožovat po měsíci, kdy jsou sexuálně dospělí (nemohu potvrdit, zda je to správná králičí biologie). Pokud každý králičí pár může od té doby produkovat jedenkrát za měsíc a produkovat dva potomky, vypadá tato sekvence takto:

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

Magicky je každé číslo v sekvenci hodnota předchozích dvou čísel sečtených dohromady. Podle vědy je to docela velká věc.

Skvělá věc je, že to dokážeme zopakovat.

Nejprve musíme zavést nový koncept: smyčka. Toto jednoduše opakuje stejný kód znovu a znovu, dokud není splněna podmínka. Smyčka „for“ nám umožňuje vytvořit proměnnou, nastavit podmínky, které chceme splnit, a poté na ní pracovat - vše je definováno v závorkách:

pro (int měsíce = 0; měsíce <100; měsíce ++) {// Udělejte něco}

Vytváříme tedy celé číslo, které se nazývá měsíce, a opakuje se, dokud nedosáhne 100. Pak počet měsíců zvětšujeme o jeden.

Chcete vidět, jak se to může stát Fibonacciho sekvencí? Spatřit:

namespace ConsoleApp2 {class Program {static void Main (řetězce args) {List RabbitList = nový seznam(); RabbitList.Add (nový králík ("Jeff", "brown", 0, 1)); RabbitList.Add (nový králík ("Sam", "white", 0, 1)); pro (int měsíce = 0; měsíce <10; měsíce ++) {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 ++; }} Králík.RabbitAge ++; } pro (int i = 0; i <timesToReproduce; i ++) {RabbitList.Add (nový králík ("NewBabyRabbit", "hnědý", 0, 1)); RabbitList.Add (nový králík ("NewBabyRabbit", "brown", 0, 1)); Console.Write ("r"); Console.Write ("r"); } Console.WriteLine ("--- Existují" + RabbitList.Count / 2 + "páry králíků!"); Console.WriteLine (""); } Console.WriteLine ("Vše hotovo!"); Console.ReadKey (); }}}

Dobře, to bylo těžší, než jsem si myslel!

Nechci to všechno projít, ale pomocí toho, co jste se již dozvěděli, byste měli být schopni to převrátit.

Určitě existují elegantnější způsoby, jak toho dosáhnout - nejsem matematik. Myslím si však, že je to docela zábavné cvičení, a jakmile to dokážete, jste připraveni na velký čas.

Rád bych viděl i jiné přístupy, mimochodem!

Kam máme odsud namířeno? Jak se naučit C # pro Android

Se všemi těmi znalostmi pod pásem jste připraveni začít s většími věcmi. Zejména jste připraveni bodnout na programování Android s C # v Xamarin nebo Unity.

To je jiné, protože budete používat třídy poskytované společnostmi Google, Microsoft a Unity. Když píšete něco jako „RigidBody2D.velocity“, děláte přístup k nemovitosti ze třídy volala RigidBody2D. Funguje to stejně, jediný rozdíl spočívá v tom, že nevidíte RigidBody2D, protože jste jej sami nevytvořili.

S tímto C # pod pásem byste měli být připraveni skočit do jedné z těchto možností a mít velký náskok, pokud jde o pochopení toho, co se děje:

  • Jak vytvořit aplikaci pro Android s Xamarin
  • Vytvořte si svou první hru pro Android za 7 minut pomocí Unity

V nadcházející lekci se také podíváme na to, jak se můžete otočit proti směru hodinových ručiček a použít jej k vytváření aplikací systému Windows.

polečnot Google dne oznámila novou funkci, která vám umožní ověřit vaši totožnot pomocí vašeho otiků prtů Android nebo zámku obrazovky namíto hela při návštěvě ...

Porušení dat je jednou z největších hrozeb, kterým dnešní digitální krajina čelí, a to kvůli kybernetickým zločincům a nedotatečným bezpečnotním opatř...

Čerstvé Články