Avatar
N-nojmi
Člen
Avatar
N-nojmi:

zdravím, jsem začátečník, takže prosím buďte jemní :D

Jak přidám více knih do Listu knihovny metodou přidej?
Doufám, že jsem podal otázku správně....

public Kniha Pridej()
        {
            Kniha kniha1 = new Kniha("Farma zvířat", "George Orwell", 152);
            Seznam.Add(kniha1);
            return kniha1;

        }
Odpovědět 23.4.2013 19:00
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na N-nojmi
Petr Nymsa:

Můžeš mít parametr metody jako pole, poté to pole proiterovat a naházet to do listu nebo použít klíčové slovo params, to ti dovolí vložit neomezený počet hodnot, ovšem params už patří možná trochu do pokoročilích věcí. Na druhou stranu nic těžkého to není. Koukni se sem http://www.itnetwork.cz/…y-podrobneji

Nahoru Odpovědět 23.4.2013 19:32
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Jsem začátečník v OOP, nešlo by to vysvětlit jednodušeji ?

Nahoru Odpovědět 23.4.2013 19:34
Není hloupých lidí, jen lidí co málo používají google...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na N-nojmi
David Čápka:

Metoda přidej v knihovně by měla brát parametr typu Kniha. Ona by vůbec měla něco brát, když něco přidává :) Zavolat si ji potom můžeš několikrát a předat ji různé knihy, které do knihovny přidá.

Nahoru Odpovědět 23.4.2013 19: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
N-nojmi
Člen
Avatar
Odpovídá na David Čápka
N-nojmi:

Dobrá, takže v Program.cs vytvořím knihy, ty pak volat v metodě např. vedecka.Pridej(kni­ha1) ?

Takhle to myslíš ?

Nahoru Odpovědět 23.4.2013 19:47
Není hloupých lidí, jen lidí co málo používají google...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na N-nojmi
David Čápka:

Ano, přesně tak :) Obvykle se to u tříd, co v sobě mají nějakou kolekci (např. list) takhle dělá, že se připraví metoda, co bere v parametru prvek a ten vkládá do toho vnitřního listu.

Kdybys chtěl doslova, aby ta metoda knih přidala více najednou, musela by brát místo jedné knihy pole knih nebo třeba list knih.

Nahoru Odpovědět 23.4.2013 19:49
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
N-nojmi
Člen
Avatar
Nahoru Odpovědět 23.4.2013 19:50
Není hloupých lidí, jen lidí co málo používají google...
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na N-nojmi
David Čápka:

Můžeš si to pak také cvičně zkusit, udělat kromě Pridej také PridejVice.

Nahoru Odpovědět 23.4.2013 19: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
Petr Nymsa
Redaktor
Avatar
Odpovídá na N-nojmi
Petr Nymsa:

Teď koukám že tu metodu máš úplně špatně. Tato metoda ti přidá vždy tu samou a jednu knihu. Navíc je potřeba, aby ti metoda vracela knihu , kterou jsi tam právě poslal ? Myslím že ne :).
Přečti si několik prvních článků o OOP a měl by jsi to pochopit. Každopádně, každá metoda může a většinou by měla přijímat určité parametry. Zde je příklad pro metodu která ti sečte dvě čísla a vrátí ti výsledek. Parametry máme dva, int cislo1 a int cislo2. Návratová hodnota metody je int

public int Secti(int cislo1, int cislo2)
{
   int vysledek=cislo1+cislo2;
   return vysledek;
}

Zatím ti ukážu jak přidat jednu knihu. Když to pochopíš, už víš jak přidat více knih. Tedy pošleš pole knih a proiteruješ je cyklem.

public void PridatKnihu(Kniha novaKniha)
{
   Seznam.Add(novaKniha);
}

Bylo by dobré aby metoda měla ošetřeno zda kniha už není přidaná

public bool PridatKnihu(Kniha novaKniha)
{
   if(!Seznam.Contains(novaKniha)
   {
      Seznam.Add(novaKniha);
      return true;
   }
   else return false;
}

Nyní ti metoda vrací bool, aby jsi jednoduše zjistil zda se byla kniha přidána nebo ne. Jak jsem řekl na začátku, pročti si seriál o OOP ne celý, ale kus, udělej několik prográmků a až to pochopíš jdi dál :)

//EDIT
sdraco byl rychlejší :) zde máš takový ucelený příklad

Editováno 23.4.2013 19:53
Nahoru Odpovědět 23.4.2013 19:52
Pokrok nezastavíš, neusni a jdi s ním vpřed
Avatar
N-nojmi
Člen
Avatar
N-nojmi:

Nebo-li mohu to vyřešit i tak že napíšu do třídy Knihovna.cs

public Kniha Pridej()
         {

             Seznam.Add(kniha1);
             return kniha1;

         }

a knihy si vytvořím v Program.cs kde jim přidám parametry a následně je budu volat např.
vedecka.Pridej(kni­ha1);
vedecka.Pridej(kni­ha2);
.... atd ?

Nahoru Odpovědět 23.4.2013 20:00
Není hloupých lidí, jen lidí co málo používají google...
Avatar
Petr Nymsa
Redaktor
Avatar
Odpovídá na N-nojmi
Petr Nymsa:

Ne. Ta metoda musí mít vstupní parametr. Takto ti i ten program spadne. Za druhé, k čemu vracet knihu kterou jsi právě přidal. Máš v tom úplný guláš, šup, jdi si přečíst první články ;). Podívej se potom na můj příspěvek o řádky výš :)

Nahoru Odpovědět  +1 23.4.2013 20:04
Pokrok nezastavíš, neusni a jdi s ním vpřed
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 11 zpráv z 11.