Diskuze – Lekce 2 - První objektová aplikace v C# - Hello object world
ZpětUpozorň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ů.


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
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
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
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"
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...
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;
}
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;
}
}
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?
Marek Uhlik:16.8.2018 17:07
Neznamená, protože public Kostka() není funkce, ale konstruktor.
Je povinný, a ano musíš.
Zobrazeno 10 zpráv z 216.