Avatar
Peter Lazorik:

Prosím o kontrolu, je táto aplikácia napísaná dobre z hľadiska OOP?

//trieda
class Fakto
    {
        public ulong vysledok=1;
        public ulong cislo;
        public ulong faktorial()
        {
            for (ulong i = 1; i <= cislo; i++)
                 vysledok *= i;
            return vysledok;
        }
    }


//hlavný program

static void Main(string[] args)
        {
            Fakto faktorial = new Fakto();
            Console.WriteLine("Zadaj číslo");
            faktorial.cislo = ulong.Parse(Console.ReadLine());
            Console.WriteLine(faktorial.faktorial());
            Console.ReadKey();
        }
Odpovědět 6.2.2014 17:44
Naše cnosti a naše vady sú neoddeliteľné ako sila a hmota, keď ich oddelíte človek prestane existovať.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Peter Lazorik
David Čápka:

Na tvé úrovni asi ano, až na ty názvy. Místo Fakto snad Faktorial, místo faktorial() něco jako vypocti(). V praxi se toho dělá hodně jinak, ale tam se dostaneš.

Nahoru Odpovědět 6.2.2014 17:54
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
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Jan Vargovský
David Čápka:

Chlape, taková odpověď mu není moc platná, to mu radši nepiš vůbec :P

Nahoru Odpovědět  +7 6.2.2014 17:57
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 Peter Lazorik
Luboš Běhounek (Satik):

Zkusil jsi ten faktorial nechat vypocitat a vypsat dvakrat po sobe? :)

Nahoru Odpovědět  +1 6.2.2014 18:28
:)
Avatar
hanpari
Redaktor
Avatar
hanpari:

Proč OOP? Na výpočet faktoriálu ti stačí funkce. I když je objektové programování sexy, tady je to jako jít na mravence s bazukou :) P4koo (mimochodem, kdo to má psát?) má bohužel pravdu.

 
Nahoru Odpovědět  -1 6.2.2014 20:43
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na hanpari
Jan Vargovský:

Pravdu má sdraco, jen jsem odpověděl na otázku, ale měl jsem říct co je na tom blbě.

 
Nahoru Odpovědět  +1 6.2.2014 20:50
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Jan Vargovský
hanpari:

V tom případě co takto?

class Matematika
{

        public static int Faktorial(int cislo)
        {
                int vysledek=1;

                while (cislo>1)
                {
                  vysledek*=cislo;
                  cislo--;
                }

                return vysledek;
        }
}

Z pohledu OOP je důležité, že jde o sdílenou "static" funkci, takže nemusíš vytvářet instanci třídy, když ji chceš použít. Nic chytřejšího mne u faktoriálu nenapadlo, alespoň ne ke vztahu k objektovému programování.

 
Nahoru Odpovědět 6.2.2014 22:08
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na hanpari
Jan Vargovský:
internal static class Program
{
    [STAThread]
    private static void Main(string[] args)
    {
        for (int i = 1; i < 6; i++)
            Console.WriteLine(i + " " + i.Faktorial());
    }

    private static int Faktorial(this int i)
    {
        return i > 1 ? i * Faktorial(i - 1) : i;
    }
}

Může být?

 
Nahoru Odpovědět 6.2.2014 22:30
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Jan Vargovský
hanpari:

Hezké a stručné, ale na můj vkus trochu nesrozumitelné :)
Chvíli jsem na to hleděl, než jsem to rozluštil.

Rozhodně bych takový kód nechtěl potkat bez komentáře :)

 
Nahoru Odpovědět 6.2.2014 22:37
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na hanpari
Jan Vargovský:

Vždyť tam není co komentovat :)

 
Nahoru Odpovědět 6.2.2014 22:40
Avatar
hanpari
Redaktor
Avatar
Odpovídá na Jan Vargovský
hanpari:

To ať posoudí PlTR (ježkovy oči, kdo ty přezdívky má vypisovat!) :)

Ale ne, je to moc pěkné. Určitě zkus checkio, tam se vyžiješ... pokud ti tedy nevadí python.

Musím se přiznat, že já se tady už ztrácím. Teoreticky vím, co jsi napsal, ale já bych to nezopakoval :)

 
Nahoru Odpovědět 6.2.2014 22:45
Avatar
Jan Vargovský
Redaktor
Avatar
 
Nahoru Odpovědět 6.2.2014 23:04
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.