Diskuze: Objektová kalkulačka
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.
Nejsi úplně na špatné cestě, ale. Bylo by lepší aby ti třída
poskytovala čistě Matematické operace a nejen jednu (Vypocitej()) ale
rozdělit to na Secti(),Odecti(),... každá by brala dva parametry (pro
začátek) a vracela výsledek. Veškeré vypisování a vstup od uživatele by
mělo být mimo tuto třídu, která jak jsem řekl, měla poskytovat pouze
výpočty. Dále tu máš dvě metody, které dělají totéž. Načtou vstup.
Udělej ji pouze jednou a vrať načtené číslo od uživatele. Jinak dobrý
Děkujim tohle jsem chtěl slyšet. Ještě než to začnu předělávat, chtěl bych se na něco zeptat. Píšeš, že veškeré vypisování a vstupy od uživatele by měly být mimo tuto třídu a o větu vedle píšeš, že bych měl udělat pouze jednu metodu na načtení vstupu. Měl bych tedy založit další třídu nebo to psát normálně do Main?
(omlouvám se, zapomněl jsem to dát jako odpověd
No úplně nejlépe je oddělit logiku od výstupu, ale to se používá v
rozsáhlejších projektech. Tu metodu pro vstup můžeš klidně v té třídě
anebo si založit třídu třeba UI (jako user interface - uživatelské
rozhraní) a tam mít různé metody - vstup od uživatele, výpis apod. Ale to
je opět moc složitý. Takže v main vypisuj a volej akorát metody pro
výpočet a klidně si udělej i metodu pro vstup
Když budeš v seriálu pokračovat, řeším tam i toto oddělení.
Teda trieda Vypocitaj() by mohla vyzerať nejak takto?
/// <summary>
/// Trieda reprezentuje základné matematické funkcie: sčítanie, odčítanie, násobenie, delenie a modulo
/// </summary>
class Vypocty
{
/// <summary>
/// Výpočet a + b
/// </summary>
/// <param nema="a">ľavé double číslo</param>
/// /// <param nema="b">pravé double číslo</param>
/// <returns>výpočet a + b</returns>
public double scitanie(double a, double b)
{
return (a + b);
}
/// <summary>
/// Výpočet a - b
/// </summary>
/// <param nema="a">ľavé double číslo</param>
/// /// <param nema="b">pravé double číslo</param>
/// <returns>výpočet a - b</returns>
public double odcitanie(double a, double b)
{
return (a - b);
}
/// <summary>
/// Výpočet a * b
/// </summary>
/// <param nema="a">ľavé double číslo</param>
/// /// <param nema="b">pravé double číslo</param>
/// <returns>výpočet a * b</returns>
public double nasobenie(double a, double b)
{
return (a * b);
}
/// <summary>
/// Výpočet a / b
/// </summary>
/// <param nema="a">ľavé double číslo</param>
/// /// <param nema="b">pravé double číslo</param>
/// <returns>výpočet a / b</returns>
public double delenie(double a, double b)
{
return (a / b);
}
/// <summary>
/// Výpočet a % b
/// </summary>
/// <param nema="a">ľavé double číslo</param>
/// /// <param nema="b">pravé double číslo</param>
/// <returns>výpočet a % b</returns>
public double modulo(double a, double b)
{
return (a % b);
}
}
Oprava, trieda Vypocty(), nie Vypocitaj().
Bavíme sa stále o úrovni 2. diel OOP.
Ešte jedna oprava, namiesto name mám v popisoch nema, je to preklep, u seba som ho už opravil
Má význam na výber druhu výpočtu vytvárať samostatnú triedu? Alebo je lepšie nechať to v hlavnom programe?
Uvědom si že to bude vlastně dále použitelné, rozěiřitelné a nezávislé. Rozohdně lepší než to mít vnořené do nějaký IFů. Stačí připravit data jednou a poslat. Navíc takhle můžeš pohodlně ošetřit další věci
Skúsim to, ale práve tú rozšíriteľnosť a nezávislosť konkrétne v
tomto zatiaľ nevidím, pripadá mi, že to bude použiteľné iba v tomto
programe. Ešte uvidím.
Ešte nepremýšľam poriadne objektovo, učím sa.
Asi už chápem. Je to vlastne druh menu a takú triedu budem potrebovať
vždy.
Zobrazeno 13 zpráv z 13.