NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: OOP (objekty) - dotaz

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Lulík
Člen
Avatar
Lulík:12.1.2016 18:36

Zdravím,
Potřebuji vytvořit automaticky objekty určité třídy. Dejme tomu pomocí rekurze nebo cyklů to je jedno, spíše nechápu jak je mohu vytvořit, jelikož nevím dopředu kolik jich bude a tak nevím jak je mám pojmenovat.
Můžete mi prosím poradit?

Jinak se jedná o příklad binárního stromu, kde mám dvě třídy Uzel a Strom. Strom má prázdný konstruktor a metodu nastavStrom([]) přes, kterou se má nastavit/vytvořit binární strom dále tato metoda má argument, kde jsou uloženy hodnoty pro každý uzel. Třída Uzel vytváří samotný uzel, který má ukazatele na levého a pravého potomka.

Tedy v main třídě vytvořím objekt dle třídy Strom například "strom" poté na něm zavolám metodu "strom.nastav­Strom(pole)" a pomocí této metody by se měli vytvořit další objekty dle třídy Uzel, podle toho kolik hodnot je v poli.

Doufám, že jsem to popsal tak nějak správně.
Předem děkuji za každou radu.

 
Odpovědět
12.1.2016 18:36
Avatar
Lulík
Člen
Avatar
Odpovídá na Lulík
Lulík:12.1.2016 21:52

Tak jsem asi něco vykouzlil. Vytvořil jsem pole typu třídy Uzel :D, jak složité.
Ale ještě bych měl otázku pokud budu mít vytvořený objekt v main třídě a vytvořím si strom tedy budou v paměti existovat objekty typu Uzel. Mohu k nim nějak přistupovat? Nenapadá mě jak, ale v paměti existují přeci.

Prosím kdybych to nějak komplikoval nebo pochopil špatně prosím nakopněte mě do zadnice budu Vám za to vděčný.

Ještě jednou děkuji.

 
Nahoru Odpovědět
12.1.2016 21:52
Avatar
Odpovídá na Lulík
Štefan Pružinský:12.1.2016 22:12

Ahoj,
ak máš objekty uložené v poli, môžeš k ním pristupovať prostredníctvom ich indexu. V prípade, že máš v dispozícii len referenciu na daný objekt, ale nemáš jeho index v poli, môžeš ho zistiť pomocou metódy IndexOf() volanej na triede Array:

int index = Array.IndexOf(myArray, myUzel); // Array.IndexOf(pole, objekt)

V prípade, že počet prvkov vopred nepoznáš, by bolo užitočné použiť generickú kolekciu List, ktorá má dynamický počet prvkov. Viac informácií o List-e: http://www.itnetwork.cz/…zani-polozek
Dúfam, že Ti moja rada aspoň trochu pomohla.:)

Nahoru Odpovědět
12.1.2016 22:12
Najefektívnejším spôsobom debuggingu je modlitba. :)
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 3 zpráv z 3.