Diskuze: Code in Csharp
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 13 zpráv z 13.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
No, mas se jeste co ucit. Ale ano, uceny z nebe nespadl.
public bool Zije{get;set;}
dale je nepsane pravidlo, ale je to tzv. best practice - nazvy metod a vlast.
zacinam velkym pismenen.
4. Metoda ktera nic nevraci a nema zadny vstup je na h***o
to je ode mne vse,
Měl jsem problém pochopit, co jsi těmi radami myslel. Jurajs podle mne moc šancí na pochopení nemá.
Vlastnost Zije bych udělal zcela závislou na hodnotě atributu zivot.
Pomocí private se skrývají prvky, které nemají být veřejně přístupné. Objekt se tak může používat jen tím správným způsobem a nelze narušovat jeho vnitřní funkci, která je skrytá.
A při jakém příkladu se dává public??
K hodně věcem, nejlépe to pochopíš z následujícího příkladu. Public položky jsou přístupné zvenčí objektu a tedy můžeš je libovolně měnit. Vem si následujcí příklad (podobný je i v tutoriálech)
class Clovek
{
public int vek;
public bool plnolety;
public Clovek(int vek)
{
this.vek=vek;
if(vek >=18) plnolety = true;
}
}
Když založíš instanci Clovek nastavíš mu pouze věk a bool plnolety se dopočítá sám.
Jenže, máme tu vlastně chybku. Oba atributy jsou public. Když později změním věk, třeba na 5, atribut plnolety se nezmění.
Proto se využívají Vlastnosti (gettery , settery) a proto také public a private
Ano bude a to je chyba v návrhu. Public atributy, lépe Vlastnosti ti umožní hlídat závislosti uvnitř objektu, uhlídat špatné nastavení apod. Tento problém by šle řešit několika způsoby
1. Metodou a atributy by byly privátní
private int vek;
private bool vek;
...
public void NastavVek(int vek)
{
...
}
Zde by se odehrávalo to samé co v kontruktoru.
2. Lepší řešení -> vlastnosti
Zde je spousta možností. Můžeš nastavit věk přes Setter nebo metodu.
Následující příklad deklaruje vlastnosti pouze ke čtení a nastavení
dojde přes metodu.
public int Vek{get;private set;}
public bool Plnolety {get;private set;}
public void NastavVek(int vek)
...
Dále tě okdážu už na tutoriály. Je zde vše krásně vysvětlené
BTW
David Hartinger jak píšeš {} ? Protože mě ve FF kombinací CTRL+B to vytovří vždy tučný text resp. toto
**{**
Dík moc za rady...A ještě kdyz napisu public void nebo private void a slovo return? Jak je tady v tutorialech, ze return vraceni hodnoty..porad nechapu jak jako vraceni neceho?
Metody ti mohou a nemusí vracet hodnoty.
public int SectiCisla(int a,int b)
{
return a+b;
}
public void VypisPozdrav(string jmeno)
{
Console.WriteLine("Ahoj "+jmeno);
}
Tj void značí že metoda nic nevrací, jinak označíš typem co vrací (int,double,string, NejakouInstanciTridy,...)
Mrkni na ty tutoriály, vše tu je napsané
Zkus si tohle:
using System;
class Clovek {
static void Main(string[] args) {
Clovek adam = new Clovek(17);
Console.WriteLine("Adamovi bylo " + adam.Vek + " let. Plnoletý: " + adam.Plnolety);
adam.Vek = 18;
Console.WriteLine("Adamovi je " + adam.Vek + " let. Plnoletý: " + adam.Plnolety);
}
public int Vek {get; private set;}
public bool Plnolety {
get {
return (Vek >=18);
}
}
public Clovek(int vek) {
this.Vek=vek;
}
}
void použiješ tehdy, kdy chceš metodou změnit např. obsah nějaké
proměnné.
return použiješ tehdy, kdy chceš např. do nějaké proměnné uložit
výsledek nějaké metody (funkce)..
Když vytváříš metodu a zvolíš cokoli jiného, než void, tak musí mít vždy návratovou hodnotu, čili musíš použít return.
Příklad pro void:
private int cislo = 0;
private void ulozCislo()
{
cislo = 2;
}
Příklad pro return:
private int cislo = 0;
private void ulozCislo()
{
cislo = zmenCislo();
}
private int zmenCislo()
{
cislo = 5;
return cislo;
}
Není to úplně přesně, ale pro začátečníka to snad bude dobře
pochopitelné.
Zkoušej si to na nějakých příkladech třeba s kalkulačkou - ukládej si
čísla a tak.. na tom nejlíp uvidíš, jak to funguje.
Zobrazeno 13 zpráv z 13.