Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
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í.
Avatar
Honza
Člen
Avatar
Honza:22.4.2013 21:37

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
Tvůrce
Avatar
Odpovídá na Honza
Petr Nymsa:23.4.2013 7:27

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
23.4.2013 7:27
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
Honza
Člen
Avatar
Honza:23.4.2013 10:38

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
Tvůrce
Avatar
Odpovídá na Honza
Petr Nymsa:23.4.2013 10:57

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 Hartinger
Vlastník
Avatar
Odpovídá na Honza
David Hartinger:23.4.2013 11:33

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

Nahoru Odpovědět
23.4.2013 11:33
You are the greatest project you will ever work on.
Avatar
Odpovídá na Petr Nymsa
Libor Šimo (libcosenior):8.6.2013 12:39

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):8.6.2013 12:45

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):8.6.2013 13:08

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
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Petr Nymsa:8.6.2013 13:56

Ano, třbea takto může vypadat

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):8.6.2013 14:15

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
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Petr Nymsa:8.6.2013 14:17

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):8.6.2013 14:20

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):8.6.2013 14:25

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.