NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 4 - Hrací kostka v C# - Zapouzdření a konstruktor

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
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
Bohumír Maštalíř:20.11.2023 13:59

Na 3.lekci, kdy by se měli probírat postupně úplné základy OOP, se mi zdá poněkud překomplikované používat Random, přetížení , override ad.

Avatar
Jarda
Člen
Avatar
Odpovídá na Bohumír Maštalíř
Jarda:31.3.2024 14:29

Ahoj, musim se tu kluku trochu zastat a trochu si pridat. Nektere veci mohly byt v lekcich drive, jine zase pozdeji ale urcite se mi uci lepe na jednom souvislem prikladu nez kdyz se skace od bojovnika k databazi zoo a kalendari.

Avatar
Jiří Božoň:1.6.2024 18:19

Ahoj,
Kostka sestistenna = new Kostka();
Kostka desetistenna = new Kostka(10); Tohle mi v programu fungovalo, přesně dle tutoriálu, než jsem přidal this a provedl všechny následující úpravy dle tutoriálu. Pak mi VS začal psát: CS 0111 "Typ Kostka už definuje člen z názvem Kostka se stejnými typy parametrů. CS0121 Volání je nejednoznačné mezi následujícími metodami nebo vlastnostmi: Kostka.Kostka(int) a Kostka.Kostka(int).
Nevíte jak to spravit?

Odpovědět
Lépe je hledat způsoby, než důvody.
Avatar
David Novák
Tvůrce
Avatar
Odpovídá na Jiří Božoň
David Novák:3.6.2024 20:22

Ahoj Jirko, stáhni si vzorovou aplikaci pod třetí lekcí a porovnej ji se svým projektem, chybu tak snadno najdeš.

Avatar
Pavel Mikuška:18. července 16:06

Naopak ven vystavíme metodu ZmenDatumNaro­zeni(), která dosadí nové datum narození do proměnné datumNarozeni a zároveň provede potřebný přepočet věku a přehodnocení plnoletosti. Použití objektu je bezpečné a aplikace zůstává stabilní.

To vážne? Rozumiem tomu, ale nech sa akokoľvek snažím to brať iba ako "príklad", tak v kurze programovania (kde sa vyžaduje dávka logiky) je to neskutočne hlúpy príklad.
Dátum narodenia sa nemení! Adresa áno. Ľudia sa raz za čas sťahujú.

Editováno 18. července 16:07
Avatar
Adrián Ferenčík:5. září 18:18

Jako docela se divím tomu, že když se Vám zdají zdejší výklady málo, tak raději marníte energii Vašimi zprávami, než aby jste hledali další materiály!

Nikdy nikdo nikde neřekl, že musíte čerpat pouze z těchto výkladů. Některé části vysvětlí víc, než kterákoliv kniha, k některým je třeba pro podrobnost otevřít nějaké knihy a některé výklady jsou jenom jako nadnesení tématu a dávají nám prostor k hledání informací a řešení.

Ale o tom přeci programování celé je!!!

Není to o tom, že mám v hlavě dvě miliardy věcí a jen je tupě buším do VS, ale o hledání řešení a informací, proto se tímto chci zastat tvůrců a poděkovat jim za jejich práci. Je málo lidí, kteří se u své práce a soukromí chtějí věnovat ostatním a učit je. Proto si zaslouží úctu a zastání.

Odpovědět
Změna je život.
Avatar
Odpovídá na David Novák
Adrián Ferenčík:9. září 23:11

Dejve....škoda času. Spíš by bylo top, kdyby existovala skupina na discordu a ti, kteří máme placený kurz byť po lekcích se tam klidně sejdeme u videocallu a vysvětlíte nám to víc

Odpovědět
Změna je život.
Avatar
Adrián Ferenčík:12. září 17:38

Troch jsem se snažil vstřebat lekce, které jsem nepochopil tak dobře, jak jsem si myslel...
Je tam asi nějaká chyba, ale funguje. Kdyby měl někdo nápad na zlepšení, budu rád za každou inspiraci a radu.

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

namespace ObjektovaKalkulacka
{
    class Operace
    {
        /// <summary>
        /// 1. číslo
        /// </summary>
        public float cislo1;
        /// <summary>
        /// 2. číslo
        /// </summary>
        public float cislo2;

        /// <summary>
        /// Volba operace
        /// </summary>
        public char volba;

        /// <summary>
        /// Výběr početní operace a výpočet výsledku
        /// </summary>
        /// <param name="cislo1">První číslo</param>
        /// <param name="cislo2">Druhé číslo</param>
        /// <param name="volba">Volba početní operace</param>
        public void VyberOperace(float cislo1, float cislo2, char volba)
        {
            float vysledek = 0;
            bool platnaVolba = true;
            switch (volba)
            {
                case '1':
                    vysledek = cislo1 + cislo2;
                    break;
                case '2':
                    vysledek = cislo1 - cislo2;
                    break;
                case '3':
                    vysledek = cislo1 * cislo2;
                    break;
                case '4':
                    vysledek = cislo1 / cislo2;
                    break;
                default:
                    platnaVolba = false;
                    break;
            }

            if (platnaVolba)
            {
                Console.WriteLine("Výsledek: " + vysledek);
            }
            else
                Console.WriteLine("Neplatná volba operace.");
        }

        /// <summary>
        /// Vypsání výsledku
        /// </summary>
        private float vypocet;

        public void Vysledek(float vypocet)
        {
            this.vypocet = vypocet;
        }

        public float VratVysledek()
        {
            return vypocet;
        }
    }

}


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

namespace ObjektovaKalkulacka
{   /// <summary>
    /// Třída pro dotaz na pokračování
    /// <summary/>
    class Pokracovat
    {
        /// <summary>
        /// Volba převedena na typ bool
        /// </summary>
        public bool volba;

        /// <summary>
        /// Volba pokračování
        /// </summary>
        /// <param ="vstup">Úprava bool na char</param>
        /// <param name="'n'">Volba nepokračovat</param>
        /// <param name="'a'">Volba pokračovat</param>
        public void ZeptejSeNaPokracovani()
            {
            bool platnaVolba = false;
            while (!platnaVolba)
            {
                char vstup = Console.ReadKey().KeyChar;
                Console.WriteLine();
                switch (char.ToLower(vstup))
                {
                    case 'a':
                        volba = true;
                        platnaVolba = true;
                        break;
                    case 'n':
                        volba = false;
                        platnaVolba = true;
                        break;
                    default:
                        Console.WriteLine("Neplatná volba, zadejte prosím a/n");
                        break;
                }
            }
        }
    }

}


Program

using ObjektovaKalkulacka;

Pokracovat pokracovat = new Pokracovat();  // Vytvoření instance třídy Pokračovat

// Hlavní smyčka programu
do
{
    Operace operace = new Operace();  // Vytvoření instance třídy Operace

    Console.WriteLine("Zadejte první číslo:");
    operace.cislo1 = float.Parse(Console.ReadLine()!);  // Načtení prvního čísla

   Console.WriteLine("Zadejte druhé číslo:");
    operace.cislo2 = float.Parse(Console.ReadLine()!);  // Načtení druhého čísla

    // Výběr operace
    Console.WriteLine("Zvolte si operaci:");
    Console.WriteLine("1 - sčítání");
    Console.WriteLine("2 - odčítání");
    Console.WriteLine("3 - násobení");
    Console.WriteLine("4 - dělení");
    operace.volba = char.Parse(Console.ReadLine()!);

    operace.VyberOperace(operace.cislo1, operace.cislo2, operace.volba);

    // Dotaz na pokračování
    Console.WriteLine("Chcete pokračovat? (A/N)");
    pokracovat.ZeptejSeNaPokracovani();

} while (pokracovat.volba);
Odpovědět
Změna je život.
Avatar
DarkCoder
Člen
Avatar
Odpovídá na Adrián Ferenčík
DarkCoder:12. září 23:09

Pár bodů k tvému kódu:

  • porušuješ zapouzdření
  • neošetřuješ výjimky u vstupů
  • porušuješ princip jedné odpovědnosti
  • definuješ nepoužívané metody
  • zbytečně komplikuješ funkcionalitu
  • neefektivně vytváříš instance
  • neošetřuješ dělení nulou
  • nadbytečně importuješ jmenné prostory
  • nekonzistence v očekávaných vstupech
  • zbytečná dokumentace trivialnich členů
  • nevyužíváš návratové hodnoty
  • Nízká modularita kódu
  • možnost záměny parametrů
  • nekonzistentni formátování kódu
Odpovědět
"I ta nejlepší poučka postrádá na významu, není-li patřičně předána." - DarkCoder
Nejnovější komentáře jsou na konci poslední stránky.
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 9 zpráv z 159.