• 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 »

mirek

Quote from: leniocka on  16.11.2009, 03:53:53
uz sa tesim  :banana_guitar: ta bakalarka ma dost chytila, takze som rada, ze v tom budem moct pokracovat :) myslite, ze blueJ nejak pomohol pri vyucbe? naozaj sa chapu zaciatocnikom tie suvislosti lepsie alebo to este neviete zhodnotit?

no - ked som mal v lete opakujucich tretiakov (tvoji spoluziaci niektori), tak sme pouzivali object test bench vo visualku. a aj ked na zaciatku trosku frflali, lebo nerozumeli, ze na co, tak potom  pochopili.

co sa tyka bluej, tak este neviem - anketa uz bola, ale zabudol som polozit tu otazku. takze hadam na konci sa opytat nezabudnem ;) ale trufnem si povedat, ze to priblizilo prave metodiku - zacat s objektmi (objects first approach).
So say we all!

leniocka

mne sa to pacilo, lebo mne trvalo par tyzdnov, kym som pochopila o com to je  ;D

mirek

Quote from: leniocka on  16.11.2009, 04:05:42
mne sa to pacilo, lebo mne trvalo par tyzdnov, kym som pochopila o com to je  ;D

no hej - ked uz vies programovat, tak ta taky nastroj iba zdrzuje. ale pre tych, ktori s programovanim zacinaju (tentokrat s objektovym), je to velmi fajna pomocka ako pochopit, o com to oop vlastne je.
So say we all!

leniocka

no, asi som to zle napisala... mne trvalo dlhsie pochopenie OOP, kedze som v tom nevidela objekty a na strednej som mala 2 roky pascal + v 1. rocniku Ccko a na cvikach sme robili tie battleships a nevedela som si to dat dokopy s textovou formou... ale po par tyzdnoch mi doslo co a jak, no s takym nastrojom by som to zrejme pochopila skor

Agamemnon

Quote from: mirek on  16.11.2009, 01:39:59
Quote from: sshadoww on  16.11.2009, 01:34:53
pozrel som si tie cvika a su podla mna tak dobre spravene ze aj ked som 4tak a mam kopec inej prace nedalo mi neskusit si spravit tu hru

bolo by fajn mat v Backpack aj take nieco ako: -  public List getList()  :puf:

myslim ze mirek odviedol fakt dobru pracu   :)

diky za pochvalu ;) az sa nemozem neusmievat, ze aj ti, co uz nemusia, si to radi prejdu ;) len potvrdzujes, ze sme sa vydali dobrym smerom ;) a ak sa tu este objavis, tak skus porovnat - ako to bolo, ked ste to riesili vy (vtedy este nebola taka paradna ta kniznica) a ako to je teraz.

ku backapku - ano - mohlo to tam byt, ale nie je - viacmenej je to zamer typu - vyrieste si to po svojom. lebo jedno riesenie moze byt pomocou navrhovanej metody getList() a druhe moze byt napriklad upravou triedy a implementovanim rozhrania (teraz neviem, ako sa vola), pomocou ktoreho budes moct z backpack-u spravit kolekciu a aplikovat na nu foreach. takze - toto je naozaj na riesiteloch, ako sa s tym popasuju.

sa to volá, že Iterator design pattern :)
All code is crap.

42

mirek

Quote from: leniocka on  16.11.2009, 04:50:51
no, asi som to zle napisala... mne trvalo dlhsie pochopenie OOP, kedze som v tom nevidela objekty a na strednej som mala 2 roky pascal + v 1. rocniku Ccko a na cvikach sme robili tie battleships a nevedela som si to dat dokopy s textovou formou... ale po par tyzdnoch mi doslo co a jak, no s takym nastrojom by som to zrejme pochopila skor

jaj - jasne ;) no - ked som ja tento predmet absolvoval pred rokmi, tak som tiez nevedel objektovo programovat. a tiahlo sa to so mnou do konca mojho studia. az na diplomovke som si povedal, ze nieco objektovo spravim, ale uz nepamatam, do akej miery to bolo naozaj objektove ;) takze verim, ze taketo nastroje k tomu pochopeniu oop len pomahaju. sak v podstate - za tym ucelom vznikli ;)
So say we all!

Brand

Mr. B!

To PMD v Beansoch hadze ako error viac returnov v metodach... co je na tom ako zle? Mne to pride ako velmi velmi elegantne  :), ten styl, ktory nam to PMD vnucuje je pre nas povinny v tomto nasom zadani? Jasne, ze sa to da obist, ale nie je to take fajne ako dva returny  8)

mirek

Quote from: Brand on  16.11.2009, 23:22:41
Mr. B!

To PMD v Beansoch hadze ako error viac returnov v metodach... co je na tom ako zle? Mne to pride ako velmi velmi elegantne  :), ten styl, ktory nam to PMD vnucuje je pre nas povinny v tomto nasom zadani? Jasne, ze sa to da obist, ale nie je to take fajne ako dva returny  8)

a to pouzivas ktory zoznam pravidiel? ten, ktory je predvoleny po nainstalovani? lebo tam to pravidlo je. ale myslim, ze v pravidlach, ktore su zatial vypublikovane, toto pravidlo nie je. hod ockom :-P
So say we all!

Brand

dobreee :)

to som si teda nevsimol, ze ruleset nam poskytujete :), no ale dalsi problem, ako nastavit v NetBeans 6.7.1 pre Ubuntu Linux custom ruleset... podla uja Googla by som po nainstalovani pluginu do IDE mal mat v Tools polozku PMD... no a nemam  :P a aj ked dam prehladat cely File System, tak subor ruleset.xml ani nenajde... PMD mi normalne funguje pod klavesovou skratkou Ctrl+Alt+P .

Prosim help :)

mirek

Quote from: Brand on  17.11.2009, 18:16:34
dobreee :)

to som si teda nevsimol, ze ruleset nam poskytujete :), no ale dalsi problem, ako nastavit v NetBeans 6.7.1 pre Ubuntu Linux custom ruleset... podla uja Googla by som po nainstalovani pluginu do IDE mal mat v Tools polozku PMD... no a nemam  :P a aj ked dam prehladat cely File System, tak subor ruleset.xml ani nenajde... PMD mi normalne funguje pod klavesovou skratkou Ctrl+Alt+P .

Prosim help :)

ubuntu 9.10, netbeans 6.7.1. polozku pmd v tools mam, takze asi to mas potom blbo nainstalovane.

kazdopadne - tools > miscellanous > PMD > manage rulesets > Add RuleSet
So say we all!

dEVIANT

#160
No snáď bude toto už moj posledný problém pred dokončením. V tride History mám ArrayList<String> do ktorého sa z Parsera posielajú všetky príkazy nejako takto

Kód triedy Parser
boolean OK=ret.startsWith(list.get(i).getName());
           if(OK)
           {  History historiaaa = new History();
              historiaaa.addP(ret);


a potom mám 2 metódy void addP a returnArray nejako takto

Kód triedy History
public void addP(String ar) {
  prikazyH.add(ar);
  System.out.println(ar);
 
   
}
public void returnArray() {
    if (prikazyH.size() == 0) System.out.println("prazdna");
       else {
   for (int i=0;i<prikazyH.size();i++)
        System.out.println(prikazyH.get(i));
       }

}


cize pridám do listu príkaz z parsera...a následne ho pre istotu aj vypíšem na obrazku - // System.out.println(ar); // toto funguje...

vytvoril som si prikaz historia ktorý ma vypísať históriu a v metóde execute vyzerá takto

public GameState execute(Game game) {
      History hi = new History();
      hi.returnArray();
     
     return GameImpl.stav = GameState.PLAYING;
   }


a teraz kde je problém??no ten, že píšem príkazy, a keď dám potom zobraziť históriu tak mi stále vypíše "prázdna"  >:(

takýmto sposobom riešim aj napr. vypísanie inventára, itemy v miestnosti...a funguje...ale toto stále vypíše prázdnu históriu...
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

mirek

Quote from: dEVIANT on  17.11.2009, 22:37:43
vytvoril som si prikaz historia ktorý ma vypísať históriu a v metóde execute vyzerá takto

public GameState execute(Game game) {
       History hi = new History();
       hi.returnArray();
     
      return GameImpl.stav = GameState.PLAYING;
    }


a teraz kde je problém??no ten, že píšem príkazy, a keď dám potom zobraziť históriu tak mi stále vypíše "prázdna"  >:(

no - problem je v podstate jasny - ked sa chystas pracovat s historiou, tak ju vzdy vytvoris nanovo. a ked ju vytvoris, tak historia je samozrejme prazdna. ty teda vytvoris objekt historie, vlozis do neho novy prikaz a skoncil si. nasledne po strate referencie sa garbage collector neprple a zametie - zmaze tuto instanciu. a ked teda chces vypisat zoznam, tak opat - vytvoris novu instanciu s prazdnym zoznamom a cudujes sa, ze ten zoznam je prazdny. nuz - on bude ;)

hint - v pokynoch pre vypracovanie je uveden, ze treba historiu vypracovat ako jedinacika.\

este otazka - co je toto za riadok:
return GameImpl.stav = GameState.PLAYING;

ta premenna je verejna? lebo ak hej, tak to nie je dobre :-P
So say we all!

dEVIANT

Chápem...zmením vo vlaku do KE :D...dik

A k tomu riadku áno v GameImpl je public static GameState stav...prečo to nieje dobre?  :D hra funguje ako má...
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

tino8

myslim ze staci ak ti tu premennu nastavuje GameImpl (aspon ja som to tak robil).
lebo vsetky exekjuty :D ti vracaju GameState, a ak tam napises nieco take: status = xyz.execute(xyz); a v tomto pripade je status privatna premenna.


karamel je cukr co se uz neuzdravi!

dEVIANT

Quote from: tino8 on  18.11.2009, 01:49:30
myslim ze staci ak ti tu premennu nastavuje GameImpl (aspon ja som to tak robil).
lebo vsetky exekjuty :D ti vracaju GameState, a ak tam napises nieco take: status = xyz.execute(xyz); a v tomto pripade je status privatna premenna.

to áno...a keď podá mirek solidný dovod ( čo asi určite podá :D ),prečo to nemože byť verejná, tak sa to dá rýchlo zmeniť...
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

piton

encapsulation ;-) ale ten return vyzera velmi skaredo... asi tam bude aj ina chyba, nepoznam to vase nove rozhranie paradne(ani tvoj kod), ale mam pocit, ze zle nastavujes stav...
"Iba život, ktorý žijeme pre ostatných, stojí za to." - Albert Einstein

dEVIANT

Už to mám. Asi ta história nieje vypracovaná ako jedináčik ( ale to nikde v pokynoch k odovzdavaniu zadania to nieje  ;D takže to nieje povinné ), ale funguje to...čiže už len ošetriť výnimky na Save/Load a bude to All Completed.

No a ešte raz sa pýtam, že prečo ta premenná v GameImpl nemože byť public  ?

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

mirek

Quote from: dEVIANT on  18.11.2009, 04:53:00
Už to mám. Asi ta história nieje vypracovaná ako jedináčik ( ale to nikde v pokynoch k odovzdavaniu zadania to nieje  ;D takže to nieje povinné ),

myslis prvu ulohu v stvrtom kroku v 11. cviceni?

Quote from: dEVIANT on  18.11.2009, 04:53:00
No a ešte raz sa pýtam, že prečo ta premenná v GameImpl nemože byť public  ?

no - tu by som apeloval na prednasky, ale niekolkokrat to prizvukoval aj binas na cvikach (asi k nemu ale nechodis). ak odovzdas takto zadanie, tak ti ho binas nevezme. nadava sa tomu encapsulation, ako piton tiez podotkol.
So say we all!

psicho

encapsulation je sice fajn, ale aky vyznam ma ked celu aplikaciu pise jeden clovek ? :D toje ako keby som si dal zamky na kazde dvere v vlastnom dome v ktorom okrem mna nikto nebyva a malbysom ich stale zamknute a keby som sa xel z spalne dostat do kuchine tamito trvalo poldna bo X dveri by som musel odomkinat a zamikat :P
read my blog> www.codemazing.com <read my blog

piton

no hej, ale tu sa mas naucit objektovo orientovanemu pristupu...

// pri takom jednoduchom zadani ani rozhrania nemaju zmysel...
"Iba život, ktorý žijeme pre ostatných, stojí za to." - Albert Einstein

dEVIANT

Quote from: mirek on  18.11.2009, 05:33:33
myslis prvu ulohu v stvrtom kroku v 11. cviceni?

Done. Je to s tým Singletonom aj ľahšie a prehľadnejšie...

Quote from: mirek on  18.11.2009, 05:33:33
no - tu by som apeloval na prednasky, ale niekolkokrat to prizvukoval aj binas na cvikach (asi k nemu ale nechodis). ak odovzdas takto zadanie, tak ti ho binas nevezme. nadava sa tomu encapsulation, ako piton tiez podotkol.

Done.

Quote from: psicho on  18.11.2009, 17:01:26
encapsulation je sice fajn, ale aky vyznam ma ked celu aplikaciu pise jeden clovek ? :D toje ako keby som si dal zamky na kazde dvere v vlastnom dome v ktorom okrem mna nikto nebyva a malbysom ich stale zamknute a keby som sa xel z spalne dostat do kuchine tamito trvalo poldna bo X dveri by som musel odomkinat a zamikat :P

Asi nás chcú naučiť správnych návykom už na začiatku...
Nie je nič nákazlivejšie ako rozhodný a presvedčením sa vyznačujúci život.

leniocka

Quote from: psicho on  18.11.2009, 17:01:26
encapsulation je sice fajn, ale aky vyznam ma ked celu aplikaciu pise jeden clovek ? :D toje ako keby som si dal zamky na kazde dvere v vlastnom dome v ktorom okrem mna nikto nebyva a malbysom ich stale zamknute a keby som sa xel z spalne dostat do kuchine tamito trvalo poldna bo X dveri by som musel odomkinat a zamikat :P

v takom setteri vies osetrit aj pripustne hodnoty atributu a nemoze sa ti stat, ze tam das daco zle koli priamemu pristupu ;)

psicho

Quote from: leniocka on  19.11.2009, 05:10:22
Quote from: psicho on  18.11.2009, 17:01:26
encapsulation je sice fajn, ale aky vyznam ma ked celu aplikaciu pise jeden clovek ? :D toje ako keby som si dal zamky na kazde dvere v vlastnom dome v ktorom okrem mna nikto nebyva a malbysom ich stale zamknute a keby som sa xel z spalne dostat do kuchine tamito trvalo poldna bo X dveri by som musel odomkinat a zamikat :P

v takom setteri vies osetrit aj pripustne hodnoty atributu a nemoze sa ti stat, ze tam das daco zle koli priamemu pristupu ;)

ale vazne ? toto si snad robis srandu :( a ja taketo veci preco neviem ? :( jaasom taky hlupucky...stale som vravel mamicke ze radsej som mal ist za zeriavnika do Ussteel


read my blog> www.codemazing.com <read my blog

mirek

Quote from: psicho on  18.11.2009, 17:01:26
encapsulation je sice fajn, ale aky vyznam ma ked celu aplikaciu pise jeden clovek ? :D toje ako keby som si dal zamky na kazde dvere v vlastnom dome v ktorom okrem mna nikto nebyva a malbysom ich stale zamknute a keby som sa xel z spalne dostat do kuchine tamito trvalo poldna bo X dveri by som musel odomkinat a zamikat :P

o tom ale predsa encapsulation nehovori. ona nehovori o stave objektu - o stave jeho clenskych premennych, ale o pristupe k nim. v tvojom kode nenapises viac riadkov, ked napises:

dvere1.odomknute = true;


oproti


dvere1.odomkni();


samozrejme - napises akurat viac metod, aby tato funkcionalita bola dostupna, ale nezaberie ti potom "odomykanie bytu" cely den. nuz - blby kontrapriklad si vybral :-P

a ty kodis profesionalne, nie? a to vo vasej firme pisete takto triedy? ze vsetko je vsade viditelne? drzite sa len principu - hlavne, ze to funguje?
So say we all!

mirek

Quote from: psicho on  19.11.2009, 15:40:05
ale vazne ? toto si snad robis srandu :( a ja taketo veci preco neviem ? :( jaasom taky hlupucky...stale som vravel mamicke ze radsej som mal ist za zeriavnika do Ussteel

isto si mal cvika s binasom...
So say we all!