Avatar
Ľuboš Čurgó
Redaktor
Avatar
Ľuboš Čurgó:

Ahojte, zacinam z oop a nejako nechapem jednej veci. Teoreticky by podla tohto kodu malo nastat to ze ked zavolam v maine metodu Insert tak by sa mala z class Add odkazat na metodu Vloz v class Read a vlozit do artributu slovo hodnotu "nazdar". Ale miesto toho je tam stale hodnota "ahoj". Moze mi niekto prosim vysvelit preco, a ako toto obísť?

class Read
    {
        string slovo = "ahoj";

        public void Vloz()
        {
            slovo = "nazdar";
        }
class Add
    {
        Read read = new Read();
        public void Insert()
        {
            read.Vloz();
        }
static void Main(string[] args)
        {
            Add add = new Add();
            add.Insert();
            Console.ReadKey();

        }
Editováno 13.4.2013 13:07
 
Odpovědět 13.4.2013 13:05
Avatar
Odpovídá na Ľuboš Čurgó
Michael Olšavský:

Ten kód je správně. Funguje. Ale ten návrh je trošku mimo. Proč máš třídu ve třídě, ještě k tomu ve třídě Read vkládání... Vůbec se mi nelíbí. OOP je zde mimochodem od toho, aby přiblížilo programování trochu blíže reálnějšímu světu. Od kdy při čtení vkládáš text a při vkládání ho čteš a zároveň zdezačínáš volat metody.

Editováno 13.4.2013 13:24
 
Nahoru Odpovědět 13.4.2013 13:24
Avatar
Ľuboš Čurgó
Redaktor
Avatar
Ľuboš Čurgó:

je to iba ako ukazka kodu, na ktorej chcem vediet preco to nerobi to co by malo. A trieda Read a Add su neni v sebe len mi chyba na konci } preco to tak vyzera.

 
Nahoru Odpovědět 13.4.2013 13:35
Avatar
Odpovídá na Ľuboš Čurgó
Michael Olšavský:

Já to zkoušel a funguje to, jak si chtěl.

 
Nahoru Odpovědět 13.4.2013 13:36
Avatar
Ľuboš Čurgó
Redaktor
Avatar
Ľuboš Čurgó:

Myslel som to takto, z toho prveho kodu sa to asi tazko pochopi.. Proste ked zavolam v maine metodu Vypis() tak chcem aby mi vypisalo artribut z hodnotou "nazdar" a nie "ahoj".

class Add
    {
        Read read = new Read();
        public void Insert()
        {
            read.Vloz();
        }
    }
    class Read
    {
        string slovo = "ahoj";

        public void Vloz()
        {
            slovo = "nazdar";
        }

        public void Vypis()
        {
            Console.WriteLine(slovo);
        }
    }
 static void Main(string[] args)
        {
            Add add = new Add();
            Read read = new Read();
            add.Insert();
            read.Vypis();
            Console.ReadKey();
 
Nahoru Odpovědět 13.4.2013 13:40
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Ľuboš Čurgó
David Čápka:

Před vypiš musíš v tom případě volat vlož. Jinak to pojmenování tříd je hrozné, uč se spíše na třídách typu Clovek, Auto a podobně, co se dá představit, tohle tě jen plete.

Nahoru Odpovědět 13.4.2013 13:45
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Ľuboš Čurgó
Redaktor
Avatar
Odpovídá na David Čápka
Ľuboš Čurgó:

A nestaci ked sa zavola metoda insert v maine a ta sa sama odkaze na tu metodu vloz?

 
Nahoru Odpovědět 13.4.2013 13:50
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Ľuboš Čurgó
David Čápka:

Ale ty máš 2 instance toho read. Vypis voláš na jiné, než na které voláš Insert. new Read tam máš 2x, se podívej. Opravdu si to přepiš na jiný příklad.

Nahoru Odpovědět  +1 13.4.2013 13:52
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Ľuboš Čurgó
Redaktor
Avatar
Odpovídá na David Čápka
Ľuboš Čurgó:

aha na to som uplne zabudol, ono je jedno jak to mam pomenovane, je to len na ukazku. Dakujem :]

 
Nahoru Odpovědět 13.4.2013 13:54
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 9.