• Welcome to TUKE FÓRUM - Fórum pre študentov Technickej Univerzity v Košiciach.
 

Objektové programovanie

Started by tino8, 28.09.2009, 05:12:18

« predchdzajce - alie »

Agamemnon

podľa mňa ani jedno nebude robiť to, čo by asi aniy chcel...
javu tak dobre nepoznám, ale v c# by boli problémy...

jednak - nemôžeš zmeniť počet itemov v liste, ktorý práve iteruješ pomocou foreach (ekvivalent pre for(Item item : list))... vyhodí exception...
ani tá vec s for (int i = 0; i<batoh.size(); i++) nie je úplne okay... problém by bol napr. v prípade list {0,1,1,2,3}, ak by si sa pokúsil odstrániť 1... skúste si to prepísať po krokoch... list nie je navonok pole, to si treba uvedomiť... ak zmažem položku v liste, všetky ostatné sa posunú...

toto sú dohady... a hlavne ako by sa to správalo v c#... ale java je veľmi podobné...

All code is crap.

42

dEVIANT

#301
Quote from: Agamemnon on  19.12.2009, 22:22:18
jednak - nemôžeš zmeniť počet itemov v liste, ktorý práve iteruješ pomocou foreach (ekvivalent pre for(Item item : list))... vyhodí exception...
ani tá vec s for (int i = 0; i<batoh.size(); i++) nie je úplne okay... problém by bol napr. v prípade list {0,1,1,2,3}, ak by si sa pokúsil odstrániť 1... skúste si to prepísať po krokoch... list nie je navonok pole, to si treba uvedomiť... ak zmažem položku v liste, všetky ostatné sa posunú...


Presne s týmto som mal problém,vyhadzovalo IndexOfBoundException či tak nejak...strašne mi to liezlo na nervy a nevedel som čo s tým. Neviem, či to je presne to čo myslíš ty, ale ja som to niekde vyriešil pomocou break (napr. v metóde execute príkazu Use pri kontrolovaní inventára a použití napr. druhého prvku zo štyroch,kde v jeho metóde use som odstraňoval predmet z miesnostni alebo batohu. Bez breaku hodilo exception) , a niekde som to ani nevyriešil  :D Čo odporúčaš použiť ty?  
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

tino8

#302
Tak tie listy velmi dobre nepoznam, preto ked mi pri tom for nevyhadzovalo ziadne chyby a ani raz sa mi nestalo ze by sa nedalo nieco dostranit tak som myslel ze to je dobre...

btw ako sa moze stat ze pri liste mi ulozi nieco v podobe {0,1,1,2} ak na pridavanie do listu pouzivam iba metodu myList.add(xyz);

a ten exception co spomina deviant... to znamena ak dobre chapem ze napr mas pole[4] a cyklus ktory polom prechadzanapr (i=0;i<5;i++).... cyklus presahuje pocet prvkov pola


karamel je cukr co se uz neuzdravi!

dEVIANT

#303
Quote from: tino8 on  20.12.2009, 00:38:02

a ten exception co spomina deviant... to znamena ak dobre chapem ze napr mas pole[4] a cyklus ktory polom prechadzanapr (i=0;i<5;i++).... cyklus presahuje pocet prvkov pola

No vezmi si, že máš to 4prvkové pole...použiješ tretí prvok...a ten ti odstráni napr 4tý predmet z listu. A cyklus pôjde zase do <5...ciže pri i=4 vyhodí exception. Tak si tú chybu predstavujem ja, a hádam to tak aj je :D...

Btw. skúsenejší by tu mohli hodiť lepšiu alternatívu toho listu. OP sa mi veľmi zapáčilo a určite sa cez sviatky tomu chystám ďalej venovať...fakt zatiaľ asi naj predmet v štúdiu.
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

radix

premenna na pocet prvkou listu v pripade odstranenia sa znizi--

tino8

jj radix ma pravdu... chybu budes mat v podmienke. nepouzil si nahodou o 1 viac ako ma byt? lebo v liste sa indexuje tak isto ako v poly od 0


karamel je cukr co se uz neuzdravi!

Brand

Chlapci, co spekulujete :). V BackpackImpl je predsa metoda public Item getItem(String itemName) s takymto kodom:

public Item getItem(String itemName)
    {
        for (Item item : this.items)
        {
            if (itemName.trim().equalsIgnoreCase(item.getName()))
            {
                return item;
            }
        }
        return null;
    }

potom v metode public Item remove(String itemName) staci mat toto a nic neriesite :) :

public Item remove(String itemName)
    {
        Item item = null;
        if (getItem(itemName) != null)
        {
            item = getItem(itemName);
            this.items.remove(getItem(itemName));
        }
        return item;
    }

dEVIANT

Quote from: Brand on  20.12.2009, 04:53:34
Chlapci, co spekulujete :). V BackpackImpl je predsa metoda public Item getItem(String itemName) s takymto kodom:

public Item getItem(String itemName)
    {
        for (Item item : this.items)
        {
            if (itemName.trim().equalsIgnoreCase(item.getName()))
            {
                return item;
            }
        }
        return null;
    }

potom v metode public Item remove(String itemName) staci mat toto a nic neriesite :) :

public Item remove(String itemName)
    {
        Item item = null;
        if (getItem(itemName) != null)
        {
            item = getItem(itemName);
            this.items.remove(getItem(itemName));
        }
        return item;
    }

Hmm ta ty si strašny pán!!...teba chcem za učitela... :ohmigod:
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

P.a.i.n.

v zadaní je jedná z podmienok "test úspešného scenára"...............je to niečo ako TestParser?

dEVIANT

Quote from: P.a.i.n. on  20.12.2009, 05:10:40
v zadaní je jedná z podmienok "test úspešného scenára"...............je to niečo ako TestParser?

Podľa mňa hej...ja čo som robil zadania som furt skúšal save súbor so scenárom, či sa po načítani úspešne odohrá a ukončí hra...

Ale zas unit test pre parser by mal obsahovať aj veci ako "    vychod" ..." vYcHod" ...."vychod     a"..."severka" ..."paldop..e"...a tak no  :D :D
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

gladiatus

mohli by ste mi niekto PLS poradiť ako spraviť SAVE tak, že pri opakovanom ukladaní hry mi prepíše existujúci súbor...........SAVE vytvorený mám ale problém je v tom, že mi nechce prepísať ten existujúci súbor  ak:

Payne

Tak co sa tyka poslednej konverzacie:

1. v Jave je mozne aj pocas interacie kolekciou menit pocet poloziek, odstranovat (v urcitych pripadoch aj menit a pridavat)
2. IndexOutOfBoundException je o niecom inom ako pises, keby si mal problem s kolekciou, tak to kadze CME
3. Agamemnonov priklad s tymy cislami je cisto bludny, lebo ty nikdy nebudes mat rovnake objekty v batohu (ked teda nemas chybu v programe)
4. rieseni je viacero od tych primitivnych (vyssie spominanych) az po mazanie pocas iteracie a to bud nie moc stastne (tym breakom, ktory sice pojde v tomto pripade ale nieje to dobre riesenie) az po kopirovanie referencii a ich nasledne mazanie
inak s tym breakom to pojde len preto lebo nemozes mat rovnake objekty v batohu, resp. nemozes mazat ich viac naraz, ekby take daco bolo treba tak to nepojde...

Brand

Quote from: dEVIANT on  20.12.2009, 05:03:33
Quote from: Brand on  20.12.2009, 04:53:34
Chlapci, co spekulujete :). V BackpackImpl je predsa metoda public Item getItem(String itemName) s takymto kodom:

public Item getItem(String itemName)
    {
        for (Item item : this.items)
        {
            if (itemName.trim().equalsIgnoreCase(item.getName()))
            {
                return item;
            }
        }
        return null;
    }

potom v metode public Item remove(String itemName) staci mat toto a nic neriesite :) :

public Item remove(String itemName)
    {
        Item item = null;
        if (getItem(itemName) != null)
        {
            item = getItem(itemName);
            this.items.remove(getItem(itemName));
        }
        return item;
    }

Hmm ta ty si strašny pán!!...teba chcem za učitela... :ohmigod:

ako sorry, len som chcel poradit, nic v zlom, je to celkom jednoduche a pochopitelne riesenie.

mirek

Quote from: Brand on  20.12.2009, 17:26:31
ako sorry, len som chcel poradit, nic v zlom, je to celkom jednoduche a pochopitelne riesenie.

ano - to tvoje riesenie je najelegantnejsie. v podstate v tej hre nenastane situacia, ze budes potrebovat zmazat viac predmetov - ci uz z batohu alebo z miestnosti. teda - nastane vtedy, ked budes pouzivat dva predmety (alebo viac), ktore po pouziti zmiznu. ale je to len o tom, ze zavolas metodu remove() dvakrat - raz pre jeden predmet a druhykrat pre druhy predmet. takze presne ako to riesis - v momente, ked prides na to, ze si dotycny predmet nasiel, netreba uz dalej zoznam iterovat a zbytocne zabavat procesor s niecim, co uz netreba riesit, ale staci ho uz len ukoncit (v tomto pripade vratit jeho referenciu)...
So say we all!

dEVIANT

Quote from: Brand on  20.12.2009, 17:26:31
Quote from: dEVIANT on  20.12.2009, 05:03:33
Quote from: Brand on  20.12.2009, 04:53:34
Chlapci, co spekulujete :). V BackpackImpl je predsa metoda public Item getItem(String itemName) s takymto kodom:

public Item getItem(String itemName)
    {
        for (Item item : this.items)
        {
            if (itemName.trim().equalsIgnoreCase(item.getName()))
            {
                return item;
            }
        }
        return null;
    }

potom v metode public Item remove(String itemName) staci mat toto a nic neriesite :) :

public Item remove(String itemName)
    {
        Item item = null;
        if (getItem(itemName) != null)
        {
            item = getItem(itemName);
            this.items.remove(getItem(itemName));
        }
        return item;
    }

Hmm ta ty si strašny pán!!...teba chcem za učitela... :ohmigod:

ako sorry, len som chcel poradit, nic v zlom, je to celkom jednoduche a pochopitelne riesenie.

Veď v pohode...mňa neber vážne...dík :D
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

stanulik

staci ak budem mat v hre rozhrania Moveable a Useable ? ci treba este daco ?

Aniy

Quote from: stanulik on  21.12.2009, 22:21:37
staci ak budem mat v hre rozhrania Moveable a Useable ? ci treba este daco ?
Treba aj jedno vlastné: {zdroj moodle :)}
#  implementovať aspoň jedno ďalšie rozšírenie hry - b u ď  z uvedených alebo vymyslieť svoje vlastné
# v hre navrhnúť a použiť aspoň jedno vlastné rozhranie


dEVIANT

Quote from: Aniy on  21.12.2009, 23:21:21
Quote from: stanulik on  21.12.2009, 22:21:37
staci ak budem mat v hre rozhrania Moveable a Useable ? ci treba este daco ?
Treba aj jedno vlastné: {zdroj moodle :)}
#  implementovať aspoň jedno ďalšie rozšírenie hry - b u ď  z uvedených alebo vymyslieť svoje vlastné
# v hre navrhnúť a použiť aspoň jedno vlastné rozhranie

Podľa mna stačí moveable, useable...
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

stanulik

Quote from: dEVIANT on  22.12.2009, 00:06:30
Quote from: Aniy on  21.12.2009, 23:21:21
Quote from: stanulik on  21.12.2009, 22:21:37
staci ak budem mat v hre rozhrania Moveable a Useable ? ci treba este daco ?
Treba aj jedno vlastné: {zdroj moodle :)}
#  implementovať aspoň jedno ďalšie rozšírenie hry - b u ď  z uvedených alebo vymyslieť svoje vlastné
# v hre navrhnúť a použiť aspoň jedno vlastné rozhranie

Podľa mna stačí moveable, useable...

tak myslim, ze to bude dobra otazka na mireka :)



a este mi PMD hlasi jednu chybu, ale neviem co s nou.. chyba: Avoid really long methods.  vypisuje mi to pri metode createRooms kde mam zadefinovane tie miestnosti, vychody a predmety v miestnostiach. neviem ako mam skratit tu metodu. dost blba hlaska  ;)

Brand

#319
S tym nic nespravis... iba keby si to rozdelil na viac metod, ale to by si potom musel mat tie izby ako globalne premenne... toto Ti odpustia, nechaj tak :)

Jo a musi byt aj vlastny interface... je mozne, ze si to nevsimne dotycny u koho to budete odovzdavat, kazdopadne Mirek sa pyta na to... a sa pyta aj na to, ci ste to robili sami :P

dEVIANT

Quote from: stanulik on  22.12.2009, 00:13:35
Quote from: dEVIANT on  22.12.2009, 00:06:30
Quote from: Aniy on  21.12.2009, 23:21:21
Quote from: stanulik on  21.12.2009, 22:21:37
staci ak budem mat v hre rozhrania Moveable a Useable ? ci treba este daco ?
Treba aj jedno vlastné: {zdroj moodle :)}
#  implementovať aspoň jedno ďalšie rozšírenie hry - b u ď  z uvedených alebo vymyslieť svoje vlastné
# v hre navrhnúť a použiť aspoň jedno vlastné rozhranie

Podľa mna stačí moveable, useable...

tak myslim, ze to bude dobra otazka na mireka :)



a este mi PMD hlasi jednu chybu, ale neviem co s nou.. chyba: Avoid really long methods.  vypisuje mi to pri metode createRooms kde mam zadefinovane tie miestnosti, vychody a predmety v miestnostiach. neviem ako mam skratit tu metodu. dost blba hlaska  ;)

A koľko máš tých miestnosti?...Ja som robil max 32...každej exity...v skoro každej jeden až dva predmety...a nevypísalo nič...
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

stanulik

Quote from: dEVIANT on  22.12.2009, 00:25:22
Quote from: stanulik on  22.12.2009, 00:13:35
Quote from: dEVIANT on  22.12.2009, 00:06:30
Quote from: Aniy on  21.12.2009, 23:21:21
Quote from: stanulik on  21.12.2009, 22:21:37
staci ak budem mat v hre rozhrania Moveable a Useable ? ci treba este daco ?
Treba aj jedno vlastné: {zdroj moodle :)}
#  implementovať aspoň jedno ďalšie rozšírenie hry - b u ď  z uvedených alebo vymyslieť svoje vlastné
# v hre navrhnúť a použiť aspoň jedno vlastné rozhranie

no miestnosti mam 38 :) a nechavam to tak :) chyba to az taka nie je :)
Podľa mna stačí moveable, useable...

tak myslim, ze to bude dobra otazka na mireka :)



a este mi PMD hlasi jednu chybu, ale neviem co s nou.. chyba: Avoid really long methods.  vypisuje mi to pri metode createRooms kde mam zadefinovane tie miestnosti, vychody a predmety v miestnostiach. neviem ako mam skratit tu metodu. dost blba hlaska  ;)

A koľko máš tých miestnosti?...Ja som robil max 32...každej exity...v skoro každej jeden až dva predmety...a nevypísalo nič...

dEVIANT

Quote from: stanulik on  22.12.2009, 00:31:28

no miestnosti mam 38 :) a nechavam to tak :) chyba to az taka nie je :)

No nie je...ale mňa by to "vnútorne sralo", že mi vyhadzuje tú chybu.

Mohol by si to spraviť aj tak, že si naukladaš roomy to Listu, a potom v inej metóde ich berieš podľa názvu a vkladáš do nich predmety...

čiže by to vyzeralo tak nejak : getRoom("Start").setExits(getRoom("Severka"),getRoom("Juzna buda"), null, null );

ale overené to nemám...ale malo by to fungovať či?

Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

stanulik

Quote from: dEVIANT on  22.12.2009, 00:35:50

No nie je...ale mňa by to "vnútorne sralo", že mi vyhadzuje tú chybu.

ale ta ja som clovek, ktoreho len tak nic nerozhadze, a taka somarina uz vobec nie  ;D
ja budem kludne spavat i s tou "chybou"  :D

mirek

Quote from: dEVIANT on  22.12.2009, 00:06:30
Quote from: Aniy on  21.12.2009, 23:21:21
Quote from: stanulik on  21.12.2009, 22:21:37
staci ak budem mat v hre rozhrania Moveable a Useable ? ci treba este daco ?
Treba aj jedno vlastné: {zdroj moodle :)}
#  implementovať aspoň jedno ďalšie rozšírenie hry - b u ď  z uvedených alebo vymyslieť svoje vlastné
# v hre navrhnúť a použiť aspoň jedno vlastné rozhranie

Podľa mna stačí moveable, useable...

samozrejme ze nestaci. moveable a usable su predpisane rozhrania a nie vlastne - vami vymyslene...
So say we all!