Author Topic: Objektové programovanie  (Read 140199 times)

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: Objektové programovanie
« Reply #300 on: 19.12.2009, 22:22:18 »
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

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: Objektové programovanie
« Reply #301 on: 20.12.2009, 00:08:58 »
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?  
« Last Edit: 20.12.2009, 00:13:15 by dEVIANT »
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

tino8

  • Hero Member
  • *****
  • Posts: 1093
    • View Profile
Re: Objektové programovanie
« Reply #302 on: 20.12.2009, 00:38:02 »
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
« Last Edit: 20.12.2009, 00:56:18 by tino8 »


karamel je cukr co se uz neuzdravi!

dEVIANT

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: Objektové programovanie
« Reply #303 on: 20.12.2009, 01:13:27 »

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.
« Last Edit: 20.12.2009, 01:15:53 by dEVIANT »
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

radix

  • Hero Member
  • *****
  • Posts: 3506
    • View Profile
Re: Objektové programovanie
« Reply #304 on: 20.12.2009, 01:38:29 »
premenna na pocet prvkou listu v pripade odstranenia sa znizi--

tino8

  • Hero Member
  • *****
  • Posts: 1093
    • View Profile
Re: Objektové programovanie
« Reply #305 on: 20.12.2009, 04:26:29 »
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

  • Sr. Member
  • ****
  • Posts: 317
    • View Profile
Re: Objektové programovanie
« Reply #306 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;
    }

dEVIANT

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: Objektové programovanie
« Reply #307 on: 20.12.2009, 05:03:33 »
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.

  • Newbie
  • *
  • Posts: 42
    • View Profile
Re: Objektové programovanie
« Reply #308 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?

dEVIANT

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: Objektové programovanie
« Reply #309 on: 20.12.2009, 06:42:17 »
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

  • Newbie
  • *
  • Posts: 32
    • View Profile
Re: Objektové programovanie
« Reply #310 on: 20.12.2009, 07:07:11 »
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

  • Sr. Member
  • ****
  • Posts: 408
    • View Profile
Re: Objektové programovanie
« Reply #311 on: 20.12.2009, 07:11:37 »
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

  • Sr. Member
  • ****
  • Posts: 317
    • View Profile
Re: Objektové programovanie
« Reply #312 on: 20.12.2009, 17:26:31 »
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

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektové programovanie
« Reply #313 on: 20.12.2009, 18:02:38 »
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

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: Objektové programovanie
« Reply #314 on: 20.12.2009, 19:41:30 »
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

  • Sr. Member
  • ****
  • Posts: 312
    • View Profile
Re: Objektové programovanie
« Reply #315 on: 21.12.2009, 22:21:37 »
staci ak budem mat v hre rozhrania Moveable a Useable ? ci treba este daco ?

Aniy

  • Hero Member
  • *****
  • Posts: 549
    • View Profile
    • AnimeXpo
Re: Objektové programovanie
« Reply #316 on: 21.12.2009, 23:21:21 »
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

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: Objektové programovanie
« Reply #317 on: 22.12.2009, 00:06:30 »
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

  • Sr. Member
  • ****
  • Posts: 312
    • View Profile
Re: Objektové programovanie
« Reply #318 on: 22.12.2009, 00:13:35 »
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

  • Sr. Member
  • ****
  • Posts: 317
    • View Profile
Re: Objektové programovanie
« Reply #319 on: 22.12.2009, 00:21:24 »
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
« Last Edit: 22.12.2009, 00:24:25 by Brand »

dEVIANT

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: Objektové programovanie
« Reply #320 on: 22.12.2009, 00:25:22 »
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

  • Sr. Member
  • ****
  • Posts: 312
    • View Profile
Re: Objektové programovanie
« Reply #321 on: 22.12.2009, 00:31:28 »
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

  • Hero Member
  • *****
  • Posts: 1311
  • Robím, čo môžem. Keď nerobím, nemôžem!
    • View Profile
Re: Objektové programovanie
« Reply #322 on: 22.12.2009, 00:35:50 »

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

  • Sr. Member
  • ****
  • Posts: 312
    • View Profile
Re: Objektové programovanie
« Reply #323 on: 22.12.2009, 00:47:39 »

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

  • Sr. Member
  • ****
  • Posts: 448
  • darkman ZX 128k
    • View Profile
    • domovská stránka
Re: Objektové programovanie
« Reply #324 on: 22.12.2009, 03:08:14 »
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!