GNU/Linux >> Znalost Linux >  >> Linux

Jak na to:Úvod do programování – objektově orientované programování

Seriál Jak na to

Toto je 5. část z 5dílné série Úvod do programování

  1. Úvod do programování:Začínáme
  2. Úvod do programování:Váš první program
  3. Úvod do programování:Proměnné, typy a manipulace s daty
  4. Úvod do programování:Řízení toku
  5. Úvod do programování:objektově orientované programování

Návrat na závěrečnou lekci

Skvělé vás vidět znovu! Jsem rád, že jste se vrátili pro tento poslední článek v této sérii Úvod do programování na Atlantic.NET. Dosud jste se toho hodně naučili a tento článek nebude výjimkou.

V tomto článku prozkoumáme objektovou orientaci, což je metodologie programování, kde vytváříte objekty, které představují věci, které chcete modelovat, a pak tyto objekty necháváte provádět různé úkoly.

Chcete vědět to nejlepší? Už jste to dělali. Nyní stačí pochopit, co jste dělali, a můžete jít.

.

Náhodné objekty

Nejprve si připomeňte, že v předchozím článku jsem skončil tím, že jsem vám dal dva řádky kódu, které jsem ještě nevysvětlil. Zde jsou opět dva řádky:

Random random = new Random(); // Object orientation stuff
int answer = random.Next(10) + 1; // Give me a random number less than 10 and add one

První řádek je pro nás v tuto chvíli nejneznámější. Začneme s novým klíčovým slovem, což je, no, new . Co new dělá je instance objektu. Instanciace znamená vytvoření instance něčeho a v tomto případě vytváříme instanci třídy s názvem Random() .

Takže tento první řádek vytvoří nový objekt z Random() class a poté ji přiřadí proměnné typu Random a jehož název je náhodný . To je velká náhoda pro počítač, který náhodný vůbec není! Toto rozdělení může pomoci, pokud vám toto vysvětlení připadá matoucí.

Nejprve máte typ proměnné. Doposud jsme používali int a string typů, takže zde představujeme nový typ – nebo ve skutečnosti typ třídy – nazvaný Random .
Zadruhé máme název proměnné. Při práci s proměnnými v předchozích článcích jsme používali názvy proměnných, jako je input a hodnota . Upozorňujeme, že v tomto případě používáme název proměnné random (udělali jsme to malými písmeny, abychom vám to pomohli rozlišit), ačkoli to může být téměř cokoliv, co se vám líbí, například číslo nebo hey_there_human_can_you_get_me_a_cookie_please_kthxbye .
Třetí – a to je doslova nová část – je způsob, jakým přiřazujeme hodnotu proměnné. V dřívějších článcích jsme to nastavili na výstup z Console.ReadLine() metodu nebo pevnou hodnotu, jako je 8 nebo „Ahoj světe!“. Nyní používáme trochu jiný přístup, protože vytváříme nový objekt s new klíčové slovo.

.

Než se dostaneme k dalšímu řádku, uděláme si malou recenzi.
.

Přehled tříd, objektů, vlastností a metod

V objektové orientaci jsou dva nejdůležitější pojmy třídy a objekty. Krátce jste se o tom dozvěděli ve druhém článku této série, když jsem vysvětlil, že si můžete představit třídy jako šablony a objekty jako to, co z těchto šablon vytvoříte, například dort (objekt) z receptu (třídy).

Třída, která je šablonou pro objekty, definuje, jaké objekty budou, prostřednictvím vlastností a metod. Když vytvoříte objekt pomocí new klíčové slovo, získáte jedinečný objekt, který má vlastnosti a metody definované třídou.

Můžete například chtít vytvořit nový dort z daného receptu. Tímto způsobem můžete říci, že vytvoříte instanci receptu a získáte objekt dortu. Dort je jedinečný od všech ostatních dortů vyrobených podle tohoto receptu, takže změny, které provedete na jednom dortu, neovlivní žádné jiné dorty; dát polevu na jeden dort neznamená dát polevu na všechny dorty.

Vlastnosti jsou hodnoty, které definují, co je objekt. Může být snazší, pokud si vlastnost představujete jako druh proměnné, která je připojena k objektu. Například u dortového předmětu může být typ polevy nebo náplně vlastností.

Metody definují, co může objekt dělat. Například může jezdit auto. Ve skutečnosti nepotřebujete vědět, jak motor funguje; můžete autu jednoduše říct, aby nastartovalo, a auto se postará o to, co musí udělat, aby roztočilo motor a dalo vás na vaši veselou cestu. Jednou z krásných věcí na objektové orientaci je to, že se vlastně nestaráme o základní fungování metody a ani nemusíme. Toto je koncept abstrakce, o kterém jsme také hovořili dříve.

Protože jsme již diskutovali o dortech, můžeme si představit metody pro dort, jako je AddFilling a WrapInPaper které by například přidaly nebo upravily vlastnost plnění nebo označily dort jako zabalený v papíru.

.

To, že máte co do činění s objekty a třídami, často poznáte podle použití teček nebo „teček“. Například ve výstupu našeho programu používáme Console.ReadLine() (řečeno jako „Console dot ReadLine“). První část před tečkou určuje třídu nebo objekt a druhá část za tečkou určuje vlastnosti nebo metody, které chceme vyvolat.

Jak poznáte rozdíl mezi vlastnostmi a metodami? Metody budou mít většinou závorky, zatímco vlastnosti ne. Můžete například říci, že příkaz Console.ReadLine() ptá se Console třídy nebo objektu k vyvolání ReadLine() protože za „ReadLine“ následují závorky.

U vlastností zjistíte, že s nimi komunikujete téměř stejně jako s normálními proměnnými. Můžete provádět matematické operace, přiřazovat hodnoty, číst hodnoty a tak dále, stejně jako u int a string proměnné. Ve skutečnosti, pokud byste chtěli trochu změnit náš herní kód, mohli byste nastavit vlastnosti pro barvy popředí a pozadí konzole jako takové:

Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;

Přidání těchto příkazů způsobí, že při příštím výstupu z programu bude text napsán bílou barvou na modrém pozadí, jak je vidět na obrázku 1 níže.

Obrázek 1:Bílá na modrém textu konzoly

Možná jste čekali, že celé okno bude modré, že? Dostáváme pouze modré výstupní řádky, protože jsme konzoli neřekli, aby odstranila jakékoli černé pozadí, které tam již je. Tuto změnu můžeme provést voláním Clear() metoda na konzole:

Console.BackgroundColor = ConsoleColor.Blue;
Console.ForegroundColor = ConsoleColor.White;
Console.Clear();

S tímto přidáním dostaneme něco v souladu s níže uvedeným na obrázku 2.

Obrázek 2:Modré okno konzoly

V tomto příkladu nejprve použijete orientaci objektu k přiřazení hodnot vlastnostem na konzole a poté k požádání konzole, aby něco provedla. Tento vzor je běžný v objektové orientaci.

Existuje ještě jedna věc týkající se metod, kterou se musíte naučit, a to je použití parametrů . Naštěstí jste již použili parametr při psaní textu do konzole pomocí WriteLine() metoda.

Parametry vám umožňují nakonfigurovat, jak se má metoda provádět. Když například chcete, aby konzole něco napsala, musíte jí říct, co má napsat. Uděláte to vložením jednoho nebo více parametrů do závorek za názvem metody.

Console.WriteLine(“this is a parameter”);

Dosud jsme k výstupu něčeho používali pouze pevný text, ale do metod můžeme předávat i proměnné, vlastnosti nebo dokonce celé objekty. Například WriteLine() metoda, může přijímat int proměnnou, kterou chcete předat konzoli, zobrazí hodnotu této proměnné.

int i = 99;
Console.WriteLine(i);

Co přesně můžete s různými třídami a objekty dělat, se velmi liší. Další informace o možnostech různých objektů naleznete v dokumentaci k rozhraní API. Některé vývojářské nástroje, jako je Visual Studio, vám také mohou nesmírně pomoci tím, že navrhnou hodnoty na základě toho, co metody chtějí, nebo navrhnou dostupné vlastnosti a metody, když začnete psát název objektu nebo třídy.

V sadě Visual Studio můžete například zobrazit všechny vlastnosti konzoly zadáním Console a „tečka“. Počkejte zlomek sekundy a měli byste vidět seznam vlastností a metod a dokonce i dokumentaci týkající se toho, co různé vlastnosti a metody dělají, jak je znázorněno na obrázku 3 níže.

Obrázek 3:Výzva Visual Studio Intellisense

V sadě Visual Studio se tato funkce nazývá IntelliSense a pokud svůj vývoj provádíte v sadě Visual Studio, bude to jedna z nejužitečnějších funkcí, které můžete použít. Podobné funkce nabízejí i další vývojové nástroje.

Nakonec je tu jeden speciální typ metody v objektové orientaci zvaný konstruktor . Konstruktor je metoda, která se volá, když vytváříte objekt s new klíčové slovo. Tato metoda vám umožňuje provádět úkoly, jako je inicializace hodnot pro objekt, a je vždy první metodou volanou v době životnosti objektu.

.

Zpět k naší hádací hře

Když napíšeme Random random = new Random(); Random() část je konstruktér. Stejně jako jiné metody může přijímat parametry, které pak metoda může použít k inicializaci vlastností objektu.

Nyní jej můžeme vrátit zpět na druhý řádek, který jsme přidali, abychom vytvořili náhodné celé číslo pro naši hru.

int answer = random.Next(10) + 1;

Možná jste si všimli, že když jste začali psát text (pokud jste jej jednoduše nezkopírovali, což je také v pořádku; stačí se podívat na obrázek 4), objevil se IntelliSense sady Visual Studio a řekl vám, co Next() způsob, jak je uvedeno níže.

Obrázek 4. Random.Next()

Tato nápověda vám říká, že Random.Next() metoda potřebuje parametr typu int s maximální hodnotou „maxValue“. Všimněte si, že zde uvedený název není typ, ale spíše deskriptor – své celočíselné hodnoty nemusíte nazývat „maxValue“.

Dále se to dozvíme, když tuto metodu zavoláme s int parametr, metoda nám vrátí nezáporné náhodné celé číslo. V naší hře to přiřadíme v názvu proměnné answer takže se na to můžeme odkázat později.

Dokumentace však uvádí, že vrácená hodnota je menší než maximum. Když tedy předáme 10, dostaneme hodnotu, která je menší, takže může být až 9. Dále, číslo vrácené z Next() je nezáporná, takže to znamená, že může být 0 a potřebujeme číslo mezi 1 a 10 včetně.

Co získáme, jinými slovy, když zavoláme random.Next(10) je libovolné číslo od 0 do 9. Přidání 1 k tomuto číslu znamená, že se stane číslem mezi 1 a 10, než jej přiřadíme k answer .

Pokud se nyní vrátíme k těmto dvěma řádkům, mělo by to dávat větší smysl, co se stane:

Random random = new Random();  
int answer = random.Next(10) + 1; 

Nejprve vytvoříme nový objekt založený na Random třídy, kterou nazýváme náhodná . Potom se zeptáme, že náhodné vyvolá jeho Next() a předejte do této metody hodnotu 10. Poté, když se tato metoda spustí, přidáme k výsledku 1 a pak uložíme hodnotu do int s názvem odpověď .

A je to! Jsi hotový! Nyní, pokaždé, když spustíte tento program, váš uživatel bude muset uhodnout náhodnou hodnotu, kterou jste dali počítači vygenerovat.

.

Podívejte se, jak daleko jste došli

Postavili jste a pochopili – doufejme – všechny aspekty jednoduché konzolové hry. V této sérii jste se naučili mnoho aspektů programování, od toho, jak se programy spouštějí, jak vytvářet aplikace, jak píšete kód, jaký kód psát, proměnné, smyčky, větve, objekty, třídy.

Co byste však měli vědět, je, že to, co jste se nyní naučili, je pouze základem toho, co jako programátor potřebujete vědět. Ať už se chcete vydat na cestu jako vývojář, nebo se jen chcete naučit dost, abyste udělali dojem na své přátele, lekce v těchto článcích by měly být dobrým výchozím bodem.

Doufám, že se vám tato série líbila a pokud máte zájem prozkoumat další. Nezapomeňte se také podívat na další články v atlantické komunitě. Ať vás tato série zavede kamkoli, užijte si programování! Nezapomeňte se podívat na přední řešení hostingu VPS společnosti Atlantic.Net.

Seriál Jak na to

Toto je 5. část z 5dílné série Úvod do programování

  1. Úvod do programování:Začínáme
  2. Úvod do programování:Váš první program
  3. Úvod do programování:Proměnné, typy a manipulace s daty
  4. Úvod do programování:Řízení toku
  5. Úvod do programování:objektově orientované programování

Linux
  1. Programovací jazyk C - Úvod

  2. Jak vygenerovat náhodné heslo v linuxu pomocí /dev/random

  3. Jak využít výhod objektu VDSO s vlastním programovacím jazykem?

  1. Jak se začít učit programovací jazyk

  2. Jak nainstalovat programovací jazyk R na Fedora 35

  3. Jak na to:Programování soketů v Pythonu

  1. Jak nainstalovat programovací jazyk Nim na Linux

  2. Jak nainstalovat programovací jazyk Go v Alpine Linux

  3. Jak fungují čísla SO (sdílených objektů)?