NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 4 - Hrací kostka v C# - Zapouzdření, konstruktor a Random

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na krepsy3
Miroslav Mazal:15.8.2018 22:52

Myslím, že ano. Zapouzdření se netýká nějakého programátora, který si otevře script programu, ale uživatelského rozhraní. Nebo tak nějak, že? No musím to stále dokola projíždět v hlavě, abych to začal "vidět" očima programátorské logiky a né logikou českého jazyka..

 
Odpovědět
15.8.2018 22:52
Avatar
Odpovídá na krepsy3
Miroslav Mazal:15.8.2018 23:11

Když bych teď třeba psal program dále, a snažil jsem se někde později dát kostce "desetistena" např.parametr 8, tak to již program nedovolí. Je to tak?

 
Odpovědět
15.8.2018 23:11
Avatar
Odpovídá na Miroslav Mazal
Michal Haňáček:16.8.2018 7:03

Ahoj, je to tak.

Nejreálnější příměr je asi v reálné hrací kostce např. ze dřeva. Když někdo vyrábí kostku, ví předem že bude šestistenná a takovou jí udělá. Deseti, nebo čtyř stenou z ní potom také už neuděláš ... (jako víme že kde se vůle, tam je cesta a pilka svede ledasco, ale ... :-D ) a přesně pro stejný účel je v tomto případě konstruktor.

Odpovědět
16.8.2018 7:03
Každé rozhodnutí a každý krok v životě nás někam posune. Bohužel jen některé nás posouvají dopředu.
Avatar
Odpovídá na Miroslav Mazal
Josef Horváth:16.8.2018 7:07

Ano, přesně tak. Díky zapouzdření objekt ochráníš proti nechtěným změnám. Atribut se v konstruktoru nastaví pouze jednou a víc se nemění.
Tím tedy zakážeš toto:

sestistenna.pocetSten = 10

A už se ti nestane, že po hodu šestistěnnou kostkou padne třeba číslo 9.

Obdobný příklad:

Auto cerveneAuto = new Auto(„cervena“);
cerveneAuto.barva = „modrá“;

Pokud bude atribut barva „private“, pak ti kousek kódu se změnou barvy neprojde. U menších projektů takovou blbost asi sám nenapíšeš, ale u větších a složitějších aplikací, už to tak jasné být nemusí. Proto nevystavuj ven nic, co už nebude třeba měnit! Když bys přece jen potřeboval zpřístupnit atribut zvenčí, použiješ k tomu vlastnost, ale o té se dozvíš až v lekci 10 – Vlastnosti. Proto vytrvej v tutoriálech a ono už ti to do sebe pak hezky zapadne.

 
Odpovědět
16.8.2018 7:07
Avatar
Miroslav Mazal:16.8.2018 18:51

Next nám vygeneruje jedno z čísel v posloupnosti, kterou si zvolíme. Třeba 2-7, ale co když si chceme sami definovat jaká čísla budou na šesti stranách? Třeba kostku s čísly 2, 3, 3, 4, 4, 5 ?

 
Odpovědět
16.8.2018 18:51
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Miroslav Mazal
Marek Uhlik:16.8.2018 19:07

Vytvoříš si pole hodnot co ta kostka může mít, a to co hodíš bude hodnota pole s náhodně vygenerovanym indexem

public int hod()
{
        int[] hodnoty = {2,3,3,4,4,5};
        return random.Next(0, pocetSten);
}
 
Odpovědět
16.8.2018 19:07
Avatar
Marek Uhlik
Člen
Avatar
Marek Uhlik:16.8.2018 19:12

Tenhle return tam teda má bejt

return hodnoty[random.Next(0, pocetSten)];
 
Odpovědět
16.8.2018 19:12
Avatar
Miroslav Mazal:16.8.2018 20:01

Díky. Já jsem právě přemýšlel, jak ale generátor ví, že má vybírat z daných hodnot. Teď jsi mi to sám vysvětlil.

 
Odpovědět
16.8.2018 20:01
Avatar
Jiří Mancl
Člen
Avatar
Jiří Mancl:7.7.2019 10:38

Ahoj. Mám dotaz ohledně IntelliSense. Kde si nastavím rozšířenou nápovědu jako je v ukázce?
Mě se ukazuje pouze nějaká ořezaná. Přiložil jsem obrázky pro lepší pochopení. Díky

 
Odpovědět
7.7.2019 10:38
Avatar
Jakub Švasta
Lektor
Avatar
Odpovídá na Jiří Mancl
Jakub Švasta:7.7.2019 22:25

Ty popisky generuje automaticky Visual Studio podle toho, co napíšeš do dokumentace. Nad konstruktor přidej

/// <summary>
/// Vytvoří novou instanci hrací kostky
/// </summary>
/// <param name="pocetSten">Počet stěn hrací kostky</param>

Koukám, že v článku zrovna u konstruktoru tohle chybí, asi by bylo dobré to do něj doplnit.

 
Odpovědět
7.7.2019 22:25
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 154.