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: Pokus o Objekově orientované programování

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Marek Novák
Člen
Avatar
Marek Novák:15.2.2023 13:57

Nejde mi spustit mnou vytvorřená metoda v halvním programu.

using System;
using System.Collec­tions.Generic;
using System.Linq;
using System.Securi­ty.Authentica­tion.Extended­Protection;
using System.Text;
using System.Threadin­g.Tasks;

namespace ConsoleApp6
{
internal class Program
{
static void Main(string[] args)
{
Kostka throw = new Kostka();
throw.Hod();
Console.ReadKey();
}
}
}

Zkusil jsem: Podařilo se mi úspěšně otestovat metodu jako samostaný kód v hlavním programu.

using System;
using System.Collec­tions.Generic;
using System.Linq;
using System.Securi­ty.Cryptograp­hy;
using System.Text;
using System.Threadin­g.Tasks;

namespace ConsoleApp6
{
internal class Kostka
{
public void Hod()
{
Random rnd = new Random();
int Hodnota = rnd.Next(1,7);
Console.Write­Line(Hodnota);
}
}
}
//Metoda funguje jako samostany program.

Chci docílit: Snažím se vytvořit virtuální kostku. Při spuštění programu generátor náhodných čísel vygenereuje čílso 1-6 a zobrazí ho na výstupu. Funkce není důležitá. Snažím se hlavně pochopit OOP. Nevím co mi tam mám špatně.

 
Odpovědět
15.2.2023 13:57
Avatar
Bugmaster
Člen
Avatar
Odpovídá na Marek Novák
Bugmaster:15.2.2023 21:27

Takhle na první pohled se mi tam nelíbí throw jako název proměnný. throw je totiž klíčový slovo. Tzn.: přejmenuj ji.

Jinak ti doporučuju: Určitě ti to píše nějakou chybovku. Přečti si jí a snaž se jí pochopit. Případně ji hoď do Googlu. Pochopit chybovky a ochota googlit jsou při programování nezbytnosti.

Editováno 15.2.2023 21:28
 
Nahoru Odpovědět
15.2.2023 21:27
Avatar
Marek Novák
Člen
Avatar
Marek Novák:15.2.2023 21:44

Díky, throw jsem opravil. Chybovky jsem zapomněl uvést.

CS1002 ; EXPECTED Program.cs 14
CS1525 Invalid expression term '.' Program.cs 15
CS1525 Invalid expression term '=' Program.cs 14
 
Nahoru Odpovědět
15.2.2023 21:44
Avatar
HONZ4
Člen
Avatar
Odpovídá na Marek Novák
HONZ4:18.2.2023 17:01

Ten příklad je trošku nesprávný. Není potřeba vytvářet při každém hodu nový Random. Použitím static se objekt vytvoří při startu programu a zůstane k dispozici po celou dobu existence programu. I takovou kostku bych dělal jako statickou.
Příklad by mohl vypadat takto:

using System;

public class Program
{
        public static void Main()
        {
          for(int i=0; i<20; i++) Console.WriteLine(Kostka.Hod()); //hodí 20x

          Console.ReadKey();
        }
}

internal static class Kostka
{
  private static Random rnd = new Random();
  public static int Hod() //vrátí hozenou hodnotu (je to vhodnější pro budoucí použití)
  {
    return rnd.Next(1,7);
  }
}

I když je asi pravda, že když se učíš tak takové věci neřešíš.

 
Nahoru Odpovědět
18.2.2023 17:01
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 4 zpráv z 4.