NOVINKA - Vstup do světa AI s ONLINE víkendovým kurzem Práce s umělou inteligencí od A do Z. Přihlas se ještě dnes!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

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 Alesh
Werner Yuyong:29.3.2022 17:14

@Alesh dekuji,
porad mi to bohuzel zlobi.

Vlozil jsem

using HelloObjects

Ale jde mi to vlozit pouze do TELA/

Neumim v tom VS 2022 zobrazit / rozbalit ty zakladni zavorky, (zatim to ani nebylo potreba.)

Posilam screenshot.

 
Odpovědět
29.3.2022 17:14
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Werner Yuyong
Alesh:29.3.2022 17:17

no, ještě středník na konec příkazu, ten jsem neuvedl...

using HelloObjects;
Editováno 29.3.2022 17:18
 
Odpovědět
29.3.2022 17:17
Avatar
Werner Yuyong:29.3.2022 17:35

takze

using HelloObjects;

uz funguje :D
diky

 
Odpovědět
29.3.2022 17:35
Avatar
Jan Prokop
Člen
Avatar
Jan Prokop:6.5.2022 18:35

"Za úkol máte předělat si naši konzolovou kalkulačku do objektů." - Tady bych teda vážně potřeboval trochu navést. Jinak se musím poradit v rámci konzultace u kamaráda programátora.

 
Odpovědět
6.5.2022 18:35
Avatar
Alesh
Tvůrce
Avatar
Odpovídá na Jan Prokop
Alesh:6.5.2022 23:51

Však na konzultaci u kamaráda není nic špatného, klidně to s ním prober. ;-)
V podstatě jde o toto:
Ta původní kalkulačka je prostě jen kód nablitý do Main. Předělání do objektové podoby vlastně znamená to, že uděláš třídu Kalkulacka a v Main vytvoříš její instanci. Pak to může vypadat třeba tak, že kalkulačka bude mít metodu Spustit, ta ti vypíše takové to Vítej atd., vyzve k zadání čísel a operace. Posbíráš ty vstupy dovnitř objektu kalkulačky, zpracuje je, a nakonec ti vypíše výsledek. Můžeš udělat i ten dotaz, zda pokračovat dalším zadáním.
Prostě jde o to, že tu kalkulačku uděláš jako ten objekt, se kterým komunikuješ z toho hlavního programu. Čili nejdřív ji vytvoříš, ona ti něco vypíše, ty ji něco zadáš, ona něco spočítá, zeptá se, zda chceš zadat další. Je to jasnější?
Hele, já byl z toho taky zmatenej v této fázi výuky, ale až dojdeš dál, tak to pochopíš. Klidně se na tu kalkulačky v tuto chvíli vyprdni, pak se k ní třeba vrátíš, až se ti to v hlavě pospojuje, jak to vlastně funguje, resp. má fungovat. ;-)

 
Odpovědět
6.5.2022 23:51
Avatar
Jan Prokop
Člen
Avatar
Odpovídá na Alesh
Jan Prokop:7.5.2022 0:01

Ahoj, Aleši, díky za koment. Konzultace je za mne samozřejmě ideální stav a nebyla by první ani poslední, akorát mě to občas zdržuje od dalšího postupu. Tady naštěstí pomohlo jít zatím dál a hned v Praktickém cvičení na prvním příkladu jsem pochopil, co by se dalo s Kalkulačkou udělat.:) Baví mne to čím dál víc, jak se postupně zorientovávám.

 
Odpovědět
7.5.2022 0:01
Avatar
Vašek Slunčík:10.5.2022 23:48

Nepodařilo se mi podle textu zprovonit ani Zdraviče. VS hlásil, že Zdravič je mimo kontext. Musel jsem ručně doplnit - omluvte laický popis - všechna using a namespace. Na jednu stran mám radost, že jsem na to ke zdárnému výsledku přišel, na druhé straně ale mám pocit, že to jen nějak patlám a nechápu podstatu ovládání VS.

Odpovědět
10.5.2022 23:48
Já na to přijdu!
Avatar
Vašek Slunčík:11.5.2022 0:24

Jako jo, je to zbytečné volání metod, když vše by šlo udělat v jednom switchi, ale zkusil jsem si to zobecnit jak jen to šlo. Trochu vždy bojuji s tím co kde mít. Má kalkulačka jen počítat? Nebo i zobrazit text? Má řešit vstupy? Nebo to bude dělat jiný objekt?
Je to mé první programování objektů v C#, trochu jsem večer nadával, ale k půlnoci to dal a hrál si s tím :)

PROGRAM

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObjektovaKalkulacka;

    class Program
    {
        static void Main(string[] args)
        {
            Vstup vstup = new Vstup();
            Kalkulacka kalkulacka = new Kalkulacka();

            bool pokracovat = true;

            while (pokracovat)
            {
                int a = vstup.ZadejHodnotu("a", -999, 999);
                int b = vstup.ZadejHodnotu("b", -999, 999);
                int operace = vstup.ZadejHodnotu(kalkulacka.text, kalkulacka.operaceMin, kalkulacka.operaceMax);

                double vysledek = kalkulacka.Spocti(a, b, operace);
                Console.WriteLine("{0} {1} {2} = {3}", a, kalkulacka.vyraz, b, vysledek);

                if (vstup.ZadejHodnotu("Přeješ si pokračovat? 1 - ano, 2 ne", 1, 2) == 2)
                    pokracovat = false;
            }
        }
    }

VSTUP

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObjektovaKalkulacka
{
    internal class Vstup
    {
        public int ZadejHodnotu(string nazevPrvku, int min, int max)
        {
            string text = String.Format("Zadej {0}:", nazevPrvku);
            int zadanaHodnota = 0;
            bool zadaniOK = false;
            Console.WriteLine(text);

            while (!zadaniOK)
            {
                while (!int.TryParse(Console.ReadLine(), out zadanaHodnota))
                    Console.WriteLine("Chybné zadání, zkus znovu. " + text);

                if (zadanaHodnota >= min && zadanaHodnota <= max)
                    zadaniOK = true;
                else
                    Console.WriteLine("Zadání mimo rozsah {0} - {1}, zkus znovu. " + text, min, max);

            }
            return zadanaHodnota;
        }
    }
}
KALKULACKA
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ObjektovaKalkulacka;

internal class Kalkulacka
{
    public string text = "Vyber operaci: 1 - sečíst, 2 - odečíst, 3 - násobit, 4 dělit";
    public int operaceMin = 1;
    public int operaceMax = 4;
    public string vyraz = "";

    public double Spocti(int a, int b, int operace)
    {
        double vysledek = 0;
        switch(operace)
        {
            case 1:
                vysledek = this.Secist(a, b);
                break;
            case 2:
                vysledek = this.Odecist(a, b);
                break;
            case 3:
                vysledek = this.Nasobit(a, b);
                break;
            case 4:
                vysledek = this.Delit(a, b);
                break;
            default:
                // náhoda v budoucnu je blbec
                break;
        }
        return vysledek;
    }

    private double Secist(int a, int b)
    {
        vyraz = "+";
        return a + b;
    }

    private double Odecist(int a, int b)
    {
        vyraz = "-";
        return a - b;
    }

    private double Nasobit(int a, int b)
    {
        vyraz = "x";
        return a * b;
    }

    private double Delit(int a, int b)
    {
        double c = 0;
        vyraz = "nelze dělit";
        if (b != 0)
        {
            vyraz = "/";
            double aa = a;
            c = aa / b;
        }

        return c;
    }
}
Odpovědět
11.5.2022 0:24
Já na to přijdu!
Avatar
Pavel Rössner:10.6.2022 21:50

Musel jsem si text přečíst opakovaně a plně jsem ho pochopil až po pročtení několika následujících lekcí. Lekce je jinak pěkná, ale pro úplné začátečníky by místy potřebovala detailnější vysvětlení.

 
Odpovědět
10.6.2022 21:50
Avatar
Antonín Pohl:9.7.2022 14:41

Tak přispěju taky svým prvním OOP výtvorem :)
CALCULATOR:

namespace Kalkulacka_s_while
{
    internal class Calculator
    {
        public float a;
        public float b;
        public string Pokracovat;
        public void Pozdrav()
        {
            Console.WriteLine("Vítejte v kalkulačce!");
        }
        public void ZadejCisla()
        {
            Console.WriteLine("Zadej první číslo:");
            float a = float.Parse(Console.ReadLine());
            Console.WriteLine("Zadej druhé číslo:");
            float b = float.Parse(Console.ReadLine());
        }
        public void ZvolOperaci()
        {
            Console.WriteLine("Zvol si operaci:");
        }
        public void Scitani()
        {
            Console.WriteLine("Součet: {0}", a + b);
        }
        public void Odcitani()
        {
            Console.WriteLine("Rozdíl: {0}", a - b);
        }
        public void Nasobeni()
        {
            Console.WriteLine("Součin: {0}", a * b);
        }
        public void Deleni()
        {
            Console.WriteLine("Podíl: {0}", a / b);
        }
        public void Podekuj()
        {
            Console.WriteLine("Děkuji za použití kalkulačky!");
        }
    }
}

PROGRAM:

namespace Kalkulacka_s_while
{
    class Program
    {
        static void Main(string[] args)
        {

            Calculator calculator = new Calculator();
            calculator.Pozdrav();
            calculator.Pokracovat = "ano";
            while (calculator.Pokracovat == "ano")
            {
                Console.WriteLine("Zadej první číslo:");
                calculator.a = float.Parse(Console.ReadLine());
                Console.WriteLine("Zadej druhé číslo:");
                calculator.b = float.Parse(Console.ReadLine());
                calculator.ZvolOperaci();
                Console.WriteLine("1 - sčítání");
                Console.WriteLine("2 - odčítání");
                Console.WriteLine("3 - násobení");
                Console.WriteLine("4 - dělení");
                int volba = int.Parse(Console.ReadLine());
                if (volba == 1)
                    calculator.Scitani();
                if (volba == 2)
                    calculator.Odcitani();
                if (volba == 3)
                    calculator.Nasobeni();
                if (volba == 4)
                    calculator.Deleni();
                Console.WriteLine("Přejete si pokračovat? ano/ne");
                calculator.Pokracovat = Console.ReadLine();
             }
            calculator.Podekuj();
            Console.ReadKey();
        }
    }
}

Za jakoukoliv zpětnou vazbu budu rád :)

Odpovědět
9.7.2022 14:41
Každý problém má řešení.
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.