Author Topic: OOP  (Read 114515 times)

xxx3

  • Hero Member
  • *****
  • Posts: 1010
    • View Profile
Re: OOP
« Reply #250 on: 15.11.2011, 03:16:44 »
niekto ochotny by sem mohol dat 9. cviko, kedze nam s Kapom odpadlo

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #251 on: 15.11.2011, 03:26:48 »
takze Quizova otazka ya jeden puntik xDD ->

ako spravit metodu addItem z 9 cvika ??

daj celé znenie úlohy a možno ti poradím... takto nemám šancu :) čo má tá metóda robiť, etc... nejaký popis ku nej
All code is crap.

42

esperian

  • Hero Member
  • *****
  • Posts: 873
    • View Profile
Re: OOP
« Reply #252 on: 15.11.2011, 03:32:16 »
Implementujte telo metódy void addItem( Item item ) rozhrania Room, ktorá zabezpečí pridanie predmetu do miestnosti.

edit// dik moc pokusim sa o nieco  ;)
« Last Edit: 15.11.2011, 03:50:26 by esperian »

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #253 on: 15.11.2011, 03:41:43 »
Implementujte telo metódy void addItem( Item item ) rozhrania Room, ktorá zabezpečí pridanie predmetu do miestnosti.

hmm, napr. niečo takéto:

Code: [Select]

class RoomImpl implements Room {
  private List<Item> items;
 
  ...
 
  public void addItem(Item item) {
    // sem môžu prísť nejaké testy - napr. či sa predmet už nenachádza v liste, či sa predmet vôbec môže nachádzať v miestnosti a pod...
    // ale nemusia byť, keďže v podstate toto nebude verejná trieda a pristupovať ku nej budeš len ty...
    items.Add(item);
  }
}


ak to nie je čisto v jave, tak sa ospravedlňujem... s javou som nerobil už niekoľko rokov a toto píšem z hlavy :) možno som to pomiešal trochu s c#
All code is crap.

42

Eriik

  • Newbie
  • *
  • Posts: 33
    • View Profile
Re: OOP
« Reply #254 on: 15.11.2011, 06:17:08 »
ako by asi mal fungovať príkaz RESTART ? stačí nanovo vytvoriť všetky miestnosti a backpack a tie staré proste nejako zmiznú ? :D alebo to treba robiť inak ?

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #255 on: 15.11.2011, 13:19:29 »
ako by asi mal fungovať príkaz RESTART ? stačí nanovo vytvoriť všetky miestnosti a backpack a tie staré proste nejako zmiznú ? :D alebo to treba robiť inak ?

ach, radosti garbage collectora... :)

mal by si: zrusit stare itemy, miestnosti, inventar, vsetko v nom... stav hry, poziciu hraca, etc, etc...
a vytvorit vsetko znovu...

teoreticky: ak urobis len to, ze vytvoris vsetko znovu, tak by to malo stacit a GC po istom case stare veci z pamate odstrani... vzdy ale existuje riziko, ze mas niekde zabudnutu nejaku referenciu a pod., a vdaka nej ti tie veci ostanu v hre, a pripadne ti ju mozu aj ovplyvnovat
All code is crap.

42

AnvilOfFury

  • Full Member
  • ***
  • Posts: 220
    • View Profile
Re: OOP
« Reply #256 on: 15.11.2011, 19:56:05 »
Včera vraj nebolo cviko s mirekom, na dnes to už náhodou neplatí?
Keep information to yourself - Knowledge is power. Think job security. Never provide documentation.
Use Real Tools - No "fancy-pancy" IDEs. Real developers only use vi.
Compiled = Ship It - User acceptance testing is an absolute waste of time.

bodon14

  • Newbie
  • *
  • Posts: 18
    • View Profile
Re: OOP
« Reply #257 on: 15.11.2011, 21:05:08 »
Caute predam kompletne zadanie na OOP ...cena dohodou... moj mail je bodon14@azet.sk...

BlackBerry

  • Jr. Member
  • **
  • Posts: 73
    • View Profile
Re: OOP
« Reply #258 on: 15.11.2011, 22:23:01 »
Chcel by som spytat ci mozem menit scenar ktory som odovzdal...nie cely...len neake veci tam chcem doplnit

ppeess

  • Guest
Re: OOP
« Reply #259 on: 15.11.2011, 22:52:11 »
Chcel by som spytat ci mozem menit scenar ktory som odovzdal...nie cely...len neake veci tam chcem doplnit

Mozes .....

visvk

  • Newbie
  • *
  • Posts: 10
    • View Profile
Re: OOP
« Reply #260 on: 18.11.2011, 04:13:50 »
cavte mam problem pri spustani adventury, som v stadiu ked mam vyskusat spustenie hry,, ale pri Run mi vyhodi chybu
Exception in thread "main" java.lang.NullPointerException
   at adventure.GameImpl.start(GameImpl.java:51)
   at adventure.Main.main(Main.java:29)
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

ale funkcia start je dobre napisana, a aj loop je dobre napisany (aspon dufam), ked viete prosim poradte

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #261 on: 18.11.2011, 04:29:58 »
hmm... chybu máš v súbore GameImpl.java na riadku 51... objekt, ktorý sa tam snažíš použiť, nemá nastavenú hodnotu a je preto null...

- nabudúce pastni kód, keď chceš niečo konkrétne opraviť, s niečim pomôcť...
- nauč sa čítať výnimky... píše ti to, čo sa stalo (null pointer) a kde sa to stalo (GameImpl.java:51)... nvm, čo viac ešte chceš...
- nauč sa používať debugger

ak sa to nenaučíš, tak sa rovno odhlás z informatiky... (ak nie si informatik, tak sa ospravedlňujem a toto sa ťa netýka... predchádzajúce body áno)
« Last Edit: 18.11.2011, 04:31:36 by Agamemnon »
All code is crap.

42

razer08

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: OOP
« Reply #262 on: 18.11.2011, 23:12:54 »
vedel by mi nekto vysvetlit,ze ako urobim execute v triede explore?  ak:

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #263 on: 18.11.2011, 23:18:29 »
explore má vypísať podrobnosti o miestnosti, v ktorej sa nachádzaš, nie? alebo také niečo, ak si to dobre pamätám...

takže niečo takéto:
Code: [Select]
public void explore() {
  system.out.println(currentRoom.getExploreDescription());
}

- netuším, aké sú metódy v Room, takisto netuším, ako máš vyriešený prístup ku premennej currentRoom... takže ako to presne budeš zapisovať je na tebe - závisí od toho, ako to máš implementované
- nie som si istý zápisom na println, s javou už dlho nerobím...

dúfam, že je to pochopiteľné, čo som napísal
All code is crap.

42

razer08

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: OOP
« Reply #264 on: 18.11.2011, 23:25:43 »
explore má vypísať podrobnosti o miestnosti, v ktorej sa nachádzaš, nie? alebo také niečo, ak si to dobre pamätám...

takže niečo takéto:
Code: [Select]
public void explore() {
  system.out.println(currentRoom.getExploreDescription());
}

- netuším, aké sú metódy v Room, takisto netuším, ako máš vyriešený prístup ku premennej currentRoom... takže ako to presne budeš zapisovať je na tebe - závisí od toho, ako to máš implementované
- nie som si istý zápisom na println, s javou už dlho nerobím...

dúfam, že je to pochopiteľné, čo som napísal

ked napisem napr.  "preskumaj rybar",tak ma vypisat meno a opis predmetu

ppeess

  • Guest
Re: OOP
« Reply #265 on: 18.11.2011, 23:37:59 »
explore má vypísať podrobnosti o miestnosti, v ktorej sa nachádzaš, nie? alebo také niečo, ak si to dobre pamätám...

takže niečo takéto:
Code: [Select]
public void explore() {
  system.out.println(currentRoom.getExploreDescription());
}

- netuším, aké sú metódy v Room, takisto netuším, ako máš vyriešený prístup ku premennej currentRoom... takže ako to presne budeš zapisovať je na tebe - závisí od toho, ako to máš implementované
- nie som si istý zápisom na println, s javou už dlho nerobím...

dúfam, že je to pochopiteľné, čo som napísal

ked napisem napr.  "preskumaj rybar",tak ma vypisat meno a opis predmetu

kedze tam mas tuto medotu getExploreDescription() tak podla nazvu usudzujem ze iba opis predmetu.

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #266 on: 19.11.2011, 00:26:40 »
explore má vypísať podrobnosti o miestnosti, v ktorej sa nachádzaš, nie? alebo také niečo, ak si to dobre pamätám...

takže niečo takéto:
Code: [Select]
public void explore() {
  system.out.println(currentRoom.getExploreDescription());
}

- netuším, aké sú metódy v Room, takisto netuším, ako máš vyriešený prístup ku premennej currentRoom... takže ako to presne budeš zapisovať je na tebe - závisí od toho, ako to máš implementované
- nie som si istý zápisom na println, s javou už dlho nerobím...

dúfam, že je to pochopiteľné, čo som napísal

ked napisem napr.  "preskumaj rybar",tak ma vypisat meno a opis predmetu

aha, okej potom niečo takéto:

Code: [Select]
public void explore() {
  Item item = currentRoom.getItem(itemName);
  system.out.println(item.getDescription());
}

- itemName je ten parameter za príkazom (tj. rybar v preskumaj rybar)
- implementácia miestnosti Room má metódu getItem(string), ktorá vráti referenciu na predmet podľa jeho mena
- zvyšok platí to, čo v predchádzajúcom príklade - pre currentRoom, java metódy, etc...
« Last Edit: 19.11.2011, 00:28:18 by Agamemnon »
All code is crap.

42

razer08

  • Newbie
  • *
  • Posts: 37
    • View Profile
Re: OOP
« Reply #267 on: 20.11.2011, 14:53:43 »
explore má vypísať podrobnosti o miestnosti, v ktorej sa nachádzaš, nie? alebo také niečo, ak si to dobre pamätám...

takže niečo takéto:
Code: [Select]
public void explore() {
  system.out.println(currentRoom.getExploreDescription());
}

- netuším, aké sú metódy v Room, takisto netuším, ako máš vyriešený prístup ku premennej currentRoom... takže ako to presne budeš zapisovať je na tebe - závisí od toho, ako to máš implementované
- nie som si istý zápisom na println, s javou už dlho nerobím...

dúfam, že je to pochopiteľné, čo som napísal

ked napisem napr.  "preskumaj rybar",tak ma vypisat meno a opis predmetu

aha, okej potom niečo takéto:

Code: [Select]
public void explore() {
  Item item = currentRoom.getItem(itemName);
  system.out.println(item.getDescription());
}

- itemName je ten parameter za príkazom (tj. rybar v preskumaj rybar)
- implementácia miestnosti Room má metódu getItem(string), ktorá vráti referenciu na predmet podľa jeho mena
- zvyšok platí to, čo v predchádzajúcom príklade - pre currentRoom, java metódy, etc...

diky pekne :) uz to funguje  bp

swety

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: OOP
« Reply #268 on: 20.11.2011, 20:11:28 »
rozhrania v kniznici Jonesa asi nemozeme menit, ze?

ak si do GameImpl doplnim nejake metody ktore v Game nie su (napr. zobrazenie menu), aj tak ich nemozem volat napr. v Quit.execute(), ked je tam parametrom objekt typu Game.

chcel som to riesit pretypovanim a teda nieco v zmysle
Code: [Select]
(GameImpl)game.showMenu();
ale zjavne takto to nefunguje, takze to mam nakoniec riesene cez dalsiu premennu
Code: [Select]
GameImpl game2 = (GameImpl)game;
game2.showMenu();

je to takto korektne alebo "myslim zle"? lebo takto mam riesenych viac veci napr. aj prikaz PRIKAZY :)

a este jedna vec, PMD hlasi ze "   Pretypujte deklaráciu (namiesto typu 'ArrayList' použite rozhranie, ktoré tento typ implementuje)." pri deklaracii ArrayList<Command>, ale v scenari je pouzitie prave tohoto nie? ci nerozumiem chybe? :whacko:

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #269 on: 20.11.2011, 22:00:59 »
rozhrania v kniznici Jonesa asi nemozeme menit, ze?

ak si do GameImpl doplnim nejake metody ktore v Game nie su (napr. zobrazenie menu), aj tak ich nemozem volat napr. v Quit.execute(), ked je tam parametrom objekt typu Game.

chcel som to riesit pretypovanim a teda nieco v zmysle
Code: [Select]
(GameImpl)game.showMenu();
ale zjavne takto to nefunguje, takze to mam nakoniec riesene cez dalsiu premennu
Code: [Select]
GameImpl game2 = (GameImpl)game;
game2.showMenu();

je to takto korektne alebo "myslim zle"? lebo takto mam riesenych viac veci napr. aj prikaz PRIKAZY :)

a este jedna vec, PMD hlasi ze "   Pretypujte deklaráciu (namiesto typu 'ArrayList' použite rozhranie, ktoré tento typ implementuje)." pri deklaracii ArrayList<Command>, ale v scenari je pouzitie prave tohoto nie? ci nerozumiem chybe? :whacko:

- rozhrania, ktoré ste dostali, meniť nemôžete
- doplniť do implementácie môžeš čokoľvek...
- funguje to, pokiaľ je to objekt toho typu, ktorý danú vec implementuje
- pretypovanie máš zle:
Code: [Select]
((GameImpl)game).showMenu();
- to s premennou zmaž - použi pretypovanie

- posledné nvm - nepastol si kód, ktorý ti hlási tú chybu + s javou nerobím, a nedokážem po pamäti povedať, čo je ArrayList (abstraktná trieda? trieda? rozhranie?)... a nechce sa im googliť... takže ak mi povieš, čo sú dané veci a ak pastneš chybný kód, tak ti poviem, čo je zle... :) teoreticky ten kód stačí, zvyšok si možno domyslím...
All code is crap.

42

swety

  • Newbie
  • *
  • Posts: 3
    • View Profile
Re: OOP
« Reply #270 on: 20.11.2011, 23:45:58 »
kod je v triede ParserImpl, ArrayList je importovany z java.util.ArrayList a chyba je na riadku s deklaraciou premennej tohto typu teda
Code: [Select]
private ArrayList<Command> commands;kde to neskor pouzivam ako
Code: [Select]
this.commands = new ArrayList<Command>();
commands.add(new Version());
a postupne pridavanie prikazov do listu, funguje vsetko OK iba ten PMD upozornuje... ale mozno to nie je to o com sa pise v scenari robil som to prvykrat a iba nasledoval chyby a upozornenia NetBeansu a teda bol som stastny ze to funguje  :D

za tie zatvorky v pretypovani vdaka  :beer1:

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #271 on: 21.11.2011, 00:06:46 »
kod je v triede ParserImpl, ArrayList je importovany z java.util.ArrayList a chyba je na riadku s deklaraciou premennej tohto typu teda
Code: [Select]
private ArrayList<Command> commands;kde to neskor pouzivam ako
Code: [Select]
this.commands = new ArrayList<Command>();
commands.add(new Version());
a postupne pridavanie prikazov do listu, funguje vsetko OK iba ten PMD upozornuje... ale mozno to nie je to o com sa pise v scenari robil som to prvykrat a iba nasledoval chyby a upozornenia NetBeansu a teda bol som stastny ze to funguje  :D

za tie zatvorky v pretypovani vdaka  :beer1:

aha, ono to po tebe chce, aby si premenné nedeklaroval ako konkrétnu triedu, ale ako abstratknú, alebo ako interface... v tomto prípade to znamená asi toľko:

ArrayList<Command> je konkrétna trieda...
ArrayList je interface (alebo abstr. trieda, ale to je jedno v tomto prípade)...

takže ono to chce po tebe niečo také:

Code: [Select]
// deklaruješ interace/abstr. triedu
private ArrayList commands;

...

// priradzuješ konkrétnu implementáciu
commands = new ArrayList<Command>();
All code is crap.

42

sulo

  • Sr. Member
  • ****
  • Posts: 284
    • View Profile
    • Web
Re: OOP
« Reply #272 on: 21.11.2011, 00:57:02 »
ArrayList je interface (alebo abstr. trieda, ale to je jedno v tomto prípade)...

ArrayList nie je rozhranie ani abstraktná trieda, ale niečo ako náhrada zápisu ArrayList<Object>.

PMD chce, aby bola premenná deklarovaná pomocou rozhrania List.

Code: [Select]
private List<Command> commands;
Priradenie implementácie je už potom tak, ako bolo spomenuté.

Code: [Select]
commands = new ArrayList<Command>();

Agamemnon

  • Hero Member
  • *****
  • Posts: 2942
  • Per aspera ad Astra
    • View Profile
Re: OOP
« Reply #273 on: 21.11.2011, 01:31:48 »
ArrayList je interface (alebo abstr. trieda, ale to je jedno v tomto prípade)...

ArrayList nie je rozhranie ani abstraktná trieda, ale niečo ako náhrada zápisu ArrayList<Object>.

PMD chce, aby bola premenná deklarovaná pomocou rozhrania List.

Code: [Select]
private List<Command> commands;
Priradenie implementácie je už potom tak, ako bolo spomenuté.

Code: [Select]
commands = new ArrayList<Command>();

dokonca... vďaka za opravu :)
All code is crap.

42

matus217

  • Jr. Member
  • **
  • Posts: 69
    • View Profile
Re: OOP
« Reply #274 on: 21.11.2011, 13:02:00 »
Nevie mi niekto poradit ? Mam vsetko co mame mat doteraz hotove, akurat sa trapim s tou PMD kontrolou ktora mi stale robi bordel. Mam Parser a v nom analyzujem zadany prikaz. Na zaklade toho tam mam tusim 2 podmienky a tie returnuju ten dany prikaz ktory naslo. Ak nic nenajde tak za cyklom ktory prechadza prikazy mam return null. Problem je ze PMD vypisuje, ze return by mal byt iba jeden, a ja mam 3. Ako by sa to dalo upravit ? Mam to vobec riesit alebo to mam ignorovat ? Vdaka.