Diskuze: Objektová kalkulačka

C# .NET .NET (C# a Visual Basic) Objektová kalkulačka American English version English version

Avatar
Honza
Člen
Avatar
Honza:

Ahoj, nejsem si jistý zda jsem to oop správně pochopil. Podíval by se mi prosím někdo na moji kalkulačku předělanou do objektů? je mi jasné, že nejspíš budete mít spoustu výhrad. Jde mi spíš o to, zda jsem alespoň na správné cestě. Děkuji, zde je můj kod

https://www.dropbox.com/…lkulacka.rar

 
Odpovědět 22.4.2013 21:37
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Honza
Petr Nymsa:

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ý ;)

Nahoru Odpovědět  +1 23.4.2013 7:27
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Honza
Člen
Avatar
Honza:

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 :))

Editováno 23.4.2013 10:39
 
Nahoru Odpovědět 23.4.2013 10:38
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Honza
Petr Nymsa:

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 :)

Nahoru Odpovědět 23.4.2013 10:57
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Honza
David Čápka:

Když budeš v seriálu pokračovat, řeším tam i toto oddělení.

Nahoru Odpovědět 23.4.2013 11:33
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na Petr Nymsa
Libor Šimo (libcosenior):

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);
    }
}
Nahoru Odpovědět 8.6.2013 12:39
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Oprava, trieda Vypocty(), nie Vypocitaj().
Bavíme sa stále o úrovni 2. diel OOP. ;)

Editováno 8.6.2013 12:46
Nahoru Odpovědět 8.6.2013 12:45
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Ešte jedna oprava, namiesto name mám v popisoch nema, je to preklep, u seba som ho už opravil

Nahoru Odpovědět 8.6.2013 13:08
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Petr Nymsa
Redaktor
Avatar
Nahoru Odpovědět 8.6.2013 13:56
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Odpovídá na Petr Nymsa
Libor Šimo (libcosenior):

Má význam na výber druhu výpočtu vytvárať samostatnú triedu? Alebo je lepšie nechať to v hlavnom programe?

Editováno 8.6.2013 14:17
Nahoru Odpovědět 8.6.2013 14:15
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na Libor Šimo (libcosenior)
Petr Nymsa:

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

Nahoru Odpovědět 8.6.2013 14:17
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Libor Šimo (libcosenior):

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.

Nahoru Odpovědět 8.6.2013 14:20
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Asi už chápem. Je to vlastne druh menu a takú triedu budem potrebovať vždy. :)

Nahoru Odpovědět 8.6.2013 14:25
Aj tisícmíľová cesta musí začať jednoduchým krokom.
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 13 zpráv z 13.