NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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í.

Diskuze – Lekce 2 - První objektová aplikace v C# - Hello object world

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na albertpatera
Jakub Ondrák:1.4.2018 16:35

Ahoj, díky za odpověď. A můžu tedy nějak zařídit, aby se zobrazovaly, jako je to na poslední obrázku této lekce? :-)

 
Odpovědět
1.4.2018 16:35
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Jakub Ondrák
Martin Petrovaj:1.4.2018 16:42

Ahoj, u mňa sa tvoje komentáre zobrazujú normálne: http://prntscr.com/izaxl7

Netuším, čo za problém s tým môžeš mať, možností je viacero - na nete spomínajú najčastejšie problémy s vygenerovanou XML dokumentáciou, keď tak si to skús prejsť, keďže podobný problém som zatiaľ nemal, tak ti veľmi neporadím :-S Prípadne nenašiel si k tomu nič v nastaveniach Visual Studia (Tools -> Options ?)

https://stackoverflow.com/…f-vb-net-pro
https://stackoverflow.com/…ions-anymore?…
https://docs.microsoft.com/…ion-features

Odpovědět
1.4.2018 16:42
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
albertpatera
Tvůrce
Avatar
Odpovídá na Jakub Ondrák
albertpatera:1.4.2018 16:57

Ahoj, pravděpodobně si musíš nainstalovat nějaký plugin, popřípadě si stáhnout kód pod článkem a porovnat :-)
Možná nějaké nastavení ve visual studiu

Editováno 1.4.2018 16:58
 
Odpovědět
1.4.2018 16:57
Avatar
Odpovídá na Martin Petrovaj
Jakub Ondrák:1.4.2018 18:36

Díky, Martin Petrovaj, přes druhý link jsem se dopracoval ke správnému nastavení. Je to zde:
Tools -> Option -> Text editor -> General -> a checkbox "Open definition in peek view"

 
Odpovědět
1.4.2018 18:36
Avatar
Odpovídá na Jakub Ondrák
Jakub Ondrák:1.4.2018 18:40

No tak možná to není ono, protože po restartu VS se mi to začalo zobrazovat i bez zaškrtnutého toho checkboxu. Možná teda stačilo jen restartnout VS... :-?

 
Odpovědět
1.4.2018 18:40
Avatar
Ernest Kuki
Člen
Avatar
Ernest Kuki:10.5.2018 22:22

Zde přidávám svojí snahu. Dalo mi to dost práce, ale proste me to bavi =)

static void Main(string[] args)
       {
           //Vytvoření propojovací instace
           PocetniOperace pocetniOperace = new PocetniOperace();

           //Úvodní text programu
           Console.WriteLine("Vitejte v jednoduché konzolové kalkulačce.");
           Console.WriteLine();
           Console.WriteLine("Na vstup zadejte dvě čísla: ");

           // Načtení proměnných (dvou čísel od uživatele)
           double cislo1 = double.Parse(Console.ReadLine());
           double cislo2 = double.Parse(Console.ReadLine());

           //Navigační text programu
           Console.WriteLine("Nyní vyberte stisknutím klávesy 1-4 početní operaci. ");

           // Přehled voleb
           Console.WriteLine("  1 - součet   2 - rozdíl  3 - součin  4 - podíl");

           //Načtení proměnné (Výběr metody)
           int volbaMetody = int.Parse(Console.ReadLine());

           // Načtení volbymetody pomocí casové metody
           switch (volbaMetody)
           {
               case 1: pocetniOperace.text = "Tady máš výsledek";
                       Console.WriteLine(pocetniOperace.Soucet(cislo1,cislo2));
                   break;
               case 2:Console.WriteLine(pocetniOperace.Rozdil(cislo1,cislo2));
                   break;
               case 3:Console.WriteLine(pocetniOperace.Soucin(cislo1,cislo2));
                   break;
               case 4:Console.WriteLine(pocetniOperace.Podil(cislo1,cislo2));
                   break;
               default:;
                   break;

           }



           Console.WriteLine("Děkuji za využití aplikace.");
           Console.ReadKey();
/// <summary>
/// Třída, která dělá 4 základní početní operace
/// </summary>
class PocetniOperace
{
    /// <summary>
    /// text k výsledku
    /// </summary>
    public string text;

    public double Soucet(double cislo1, double cislo2)
    {
        return cislo1 + cislo2;
    }

    public double Rozdil(double cislo1, double cislo2)
    {
        return cislo1 - cislo2;
    }

    public double Soucin(double cislo1, double cislo2)
    {
        return cislo1 * cislo2;
    }

    public double Podil(double cislo1, double cislo2)
    {
        return cislo1 / cislo2;
    }
Odpovědět
10.5.2018 22:22
Najdi co tě baví a nech ať tě to zabije..
Avatar
Dušan Kovářík:11.6.2018 4:29

Moc pěkně napsaný tutoriál. Líbí se mi, jak čtenáře uvádí do principů OOP stylem postupných úprav ukázkového kódu krok za krokem, takže je to velice názorné a pochopitelné.
A tady je můj úkol:

class Program
{
    static void Main(string[] args)
    {
        UzivatelskyVstup uzivatelskyVstup = new UzivatelskyVstup();
        AritmetickeOperace aritmetickeOperace = new AritmetickeOperace();
        Console.WriteLine("Kalkulačka");
        Console.WriteLine("==========");

        double cislo1, cislo2;
        int cisloOperace;
        bool pokracovat = true;
        while (pokracovat)
        {
            Console.WriteLine();
            cislo1 = uzivatelskyVstup.NactiDouble("Zadejte 1. číslo:");
            cislo2 = uzivatelskyVstup.NactiDouble("Zadejte 2. číslo:");
            Console.WriteLine("Vyberte operaci stiskem klávesy:");
            Console.WriteLine("1 - sčítání");
            Console.WriteLine("2 - odčítání");
            Console.WriteLine("3 - násobení");
            Console.WriteLine("4 - dělení");
            cisloOperace = uzivatelskyVstup.ZvolPolozku(4);
            switch (cisloOperace)
            {
                case 1:
                    Console.WriteLine(aritmetickeOperace.Soucet(cislo1, cislo2));
                    break;
                case 2:
                    Console.WriteLine(aritmetickeOperace.Rozdil(cislo1, cislo2));
                    break;
                case 3:
                    Console.WriteLine(aritmetickeOperace.Soucin(cislo1, cislo2));
                    break;
                case 4:
                    Console.WriteLine(aritmetickeOperace.Podil(cislo1, cislo2));
                    break;
            }
            pokracovat = uzivatelskyVstup.DotazPokracovani("Přejete si zadat další příklad?");
        }
        Console.WriteLine("Aplikaci ukončíte stiskem libovolné klávesy...");
        Console.ReadKey();
    }
}
/// <summary>
/// Třída obsahuje metody pro provedení základních aritmetických operací
/// </summary>
class AritmetickeOperace
{
    /// <summary>
    /// Názvy jednotlivých operací, které metody třídy umí provést
    /// </summary>
    private string[] textOperace = new string[] { "Součet", "Rozdíl", "Součin", "Podíl" };

    /// <summary>
    /// Sečte dvě čísla typu double
    /// </summary>
    /// <param name="x"></param>
    /// <param name="y"></param>
    /// <returns>Text s popisem operace a výsledkem</returns>
    public string Soucet(double x, double y)
    {
        return VysledkovaVeta(0, x, y, x + y);
    }

    /// <summary>
    /// Odečte dvě čísla typu double
    /// </summary>
    /// <param name="x"></param>
    /// <param name="y"></param>
    /// <returns>Text s popisem operace a výsledkem</returns>
    public string Rozdil(double x, double y)
    {
        return VysledkovaVeta(1, x, y, x - y);
    }

    /// <summary>
    /// Vynásobí dvě čísla typu double
    /// </summary>
    /// <param name="x"></param>
    /// <param name="y"></param>
    /// <returns>Text s popisem operace a výsledkem</returns>
    public string Soucin(double x, double y)
    {
        return VysledkovaVeta(2, x, y, x * y);
    }

    /// <summary>
    /// Vydělí dvě čísla typu double
    /// </summary>
    /// <param name="x"></param>
    /// <param name="y"></param>
    /// <returns>Text s popisem operace a výsledkem; jestliže druhé číslo bude 0, pak upozornění na pokus o neplatnou operaci</returns>
    public string Podil(double x, double y)
    {
        if (y != 0)
            return VysledkovaVeta(3, x, y, x / y);
        else
            return "Dělení nulou! Operaci nelze provést.";
    }

    /// <summary>
    /// Sestaví větu s názvem aritmetické operace, operandy i výsledkem
    /// </summary>
    /// <param name="cisloOperace"></param>
    /// <param name="x"></param>
    /// <param name="y"></param>
    /// <param name="vysledek"></param>
    /// <returns>Text kompletní věty</returns>
    private string VysledkovaVeta(int cisloOperace, double x, double y, double vysledek)
    {
        return String.Format("{0} čísel {1} a {2} je {3}", textOperace[cisloOperace], x, y, vysledek);
    }
}
/// <summary>
/// Třída obsahuje metody pro vstup hodnot či voleb od uživatele z klávesnice
/// </summary>
class UzivatelskyVstup
{
    /// <summary>
    /// Text, který se vypíše na konzoli v případě, že uživatel zadá neplatnou hodnotu
    /// </summary>
    private string neplatnaHodnota = "Zadali jste neplatnou hodnotu. Zkuste to prosím znovu.";

    /// <summary>
    /// Text, který se vypíše na konzoli, pokud uživatel vybere z nabídky položku
    /// s větším pořadovým číslem, než kolik jich nabídka obsahuje
    /// </summary>
    private string volbaMimoRozsah = "Zadaná volba je mimo rozsah. Zkuste to prosím znovu.";

    /// <summary>
    /// Načte číslo typu double zadané uživatel z klávesnice
    /// </summary>
    /// <param name="vyzva"></param>
    /// <returns>Číslo typu double</returns>
    public double NactiDouble(string vyzva)
    {
        double cislo = 0;
        bool platneZadani = false;
        while(!platneZadani)
        {
            Console.Write("{0} ", vyzva);
            platneZadani = double.TryParse(Console.ReadLine(), out cislo);
            if (!platneZadani)
                Console.WriteLine(neplatnaHodnota);
        }
        return cislo;
    }

    /// <summary>
    /// Zajistí volbu položky z nějaké nabídky stiskem numerické klávesy uživatelem
    /// </summary>
    /// <param name="horniMez"></param>
    /// <returns>Pořadové číslo položky</returns>
    public int ZvolPolozku(int horniMez)
    {
        int volba = 0;
        bool platneZadani = false;
        while (!platneZadani)
        {
            platneZadani = int.TryParse(Console.ReadKey().KeyChar.ToString(), out volba);
            Console.WriteLine();
            if (!platneZadani)
                Console.WriteLine(neplatnaHodnota);
            else if (volba < 1 || volba > horniMez)
            {
                platneZadani = false; // sice je úspěšně naparsována hodnota int, která je ale mimo rozsah
                Console.WriteLine(volbaMimoRozsah);
            }
        }
        return volba;
    }

    /// <summary>
    /// Vyzve uživatele k volbě stiskem klávesy tam, kde možnosti mohou být buď Ano nebo Ne
    /// </summary>
    /// <param name="vyzva"></param>
    /// <returns>true nebo false podle toho, zda se uživatel rozhodne pro Ano nebo Ne</returns>
    public bool DotazPokracovani(string vyzva)
    {
        string volba = "";
        bool platneZadani = false;
        while (!platneZadani)
        {
            Console.Write("{0} (A/N) ", vyzva);
            volba = Console.ReadKey().KeyChar.ToString().ToLower();
            Console.WriteLine();
            if (volba == "a")
                return true;
            else if (volba == "n")
                return false;
            else
                Console.WriteLine(neplatnaHodnota);
        }
        return false;
    }
}
Editováno 11.6.2018 4:32
 
Odpovědět
11.6.2018 4:29
Avatar
Longino
Člen
Avatar
Longino:23.7.2018 13:30

Ahoj, díky moc za články, jsou dobře psány a srozumitelné. Chtěl bych se zeptat jestli se vstup uživatele (např. Zadej číslo:) má psát do nové samotné třídy nebo to můžu psát do Program.cs?

 
Odpovědět
23.7.2018 13:30
Avatar
Miroslav Mazal:16.8.2018 16:41

Ahoj. Jak mám rozumět datovému typu. Je tu napsáno: [modifikátor přístupu] [návratový typ] JmenoMetody, ale v dalším článku je třeba public Kostka() . Znamená to, že návratový typ není povinný? A pokud nebudu mít návrat žádné hodnoty, musím tam napsat void, anebo to je jen pojistka, aby se něco nějakou chybou nevrátilo?

 
Odpovědět
16.8.2018 16:41
Avatar
Marek Uhlik
Člen
Avatar
Odpovídá na Miroslav Mazal
Marek Uhlik:16.8.2018 17:07

Neznamená, protože public Kostka() není funkce, ale konstruktor.
Je povinný, a ano musíš.

 
Odpovědět
16.8.2018 17:07
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 10 zpráv z 216.