Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET. Zároveň využij akce až 50 % zdarma při nákupu e-learningu. Více informací:
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í.
Avatar
N-nojmi
Člen
Avatar
N-nojmi:23.4.2013 19:00

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
Tvůrce
Avatar
Odpovídá na N-nojmi
Petr Nymsa:23.4.2013 19:32

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:23.4.2013 19:34

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:23.4.2013 19:45

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
One of the most common causes of failure is the habit of quitting when one is overtaken by temporary defeat.
Avatar
N-nojmi
Člen
Avatar
Odpovídá na David Čápka
N-nojmi:23.4.2013 19:47

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:23.4.2013 19:49

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
One of the most common causes of failure is the habit of quitting when one is overtaken by temporary defeat.
Avatar
N-nojmi
Člen
Avatar
Odpovídá na David Čápka
N-nojmi:23.4.2013 19:50

Děkuju za radu ;)

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:23.4.2013 19:52

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

Nahoru Odpovědět
23.4.2013 19:52
One of the most common causes of failure is the habit of quitting when one is overtaken by temporary defeat.
Avatar
Petr Nymsa
Tvůrce
Avatar
Odpovídá na N-nojmi
Petr Nymsa:23.4.2013 19:52

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:23.4.2013 20:00

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
Tvůrce
Avatar
Odpovídá na N-nojmi
Petr Nymsa:23.4.2013 20:04

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
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.