Jak se vyhnout frustraci s Java eventy?

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #90 kdy: 05. 02. 2016, 18:05:53 »
Citace
A co tohle, je to me mistrovske dilo, ctete prosim pozorne:
to je skaredsi a horsi variant mojho riesenia.

* chcete videt zlatou prahu? pardon classcastexception?

            strom.fireSpadlaHruska.add(new IObserver<JabkoDelegat>() {
                @Override public void eventFired(JabkoDelegat delegat) {
                    System.out.println( delegat );
                }
            });

teda ste vobec nevyriesili problem s observable z java.util. (len si to myslite).

* dalej: verejne atributy v jave su "more than bad" practice. za to by vas aj v C# mlatili po prstoch
* prefixovat interfaces cez I je smrad z C#

Jj to je ta chybka kterou jsem si opravil, ted uz nemam cast exception a i Eclipse mi pekne ukazuje ze mi nesedi typ.

Teď ten public atribut. Nechápu co na tom může být v tomto případě špatného. Navíc je final, takže mi ho nikdo nepřepíše.


perceptron

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #91 kdy: 05. 02. 2016, 18:14:32 »

Citace
Jj to je ta chybka kterou jsem si opravil, ted uz nemam cast exception a i Eclipse mi pekne ukazuje ze mi nesedi typ.
ako ste to opravili?

Citace
Teď ten public atribut. Nechápu co na tom může být v tomto případě špatného. Navíc je final, takže mi ho nikdo nepřepíše.
v kazdom jazyku a kazdom projekte existuju konvencie

ked ich nedodrziavate ste prasa. bodka

dalsia vec: ak mate viacero eventov musite vyrabat viacero observable: napr fireSpadlaHruska.emit(new JabkoDelegat()); vam padne na kompilacii

dalsia vec: s generikami narabate velmi nevzdelane

jednoducho si myslite ze ste vymysleli lepsie riesenie ale nevymysleli

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #92 kdy: 05. 02. 2016, 18:29:52 »
Opravil jsem to tak, ze jsem napsal:

public void Add(IObserver<T> observer) namísto (IObserver observer)

K tomu public atributu, tak bych napsal akorát getter no, čím bych tomu pomohl. Vy zrejme nechápete co tím sleduju, poučme se tedy společně z tohoto pokrokového jazyka:

Kód: [Vybrat]
public delegate void ChangedEventHandler(object sender, EventArgs e);

public event ChangedEventHandler Changed;

Changed(this, e); //takto sa vyvolává událost

Changed += new ChangedEventHandler(ListChanged); // a takto jednuše se registruje


https://msdn.microsoft.com/en-us/library/aa645739%28v=vs.71%29.aspx

Takže ano, fireSpadlaHruska.emit(new JabkoDelegat()); se nezkompiluje, ale to je právě ten účel.

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #93 kdy: 05. 02. 2016, 18:36:24 »
A kdyz se eventa jmenuje "SpadlaHruska", tak tam prece nebudu cpat Jabko  :D :D :D to jenom vam na Slovensku je to jedno, protoze to hned seberete a date to kvasit. Ale kdyz pada hruska, tak tam musí být hruška  :D

Kit

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #94 kdy: 05. 02. 2016, 18:44:21 »
A kdyz se eventa jmenuje "SpadlaHruska", tak tam prece nebudu cpat Jabko  :D :D :D to jenom vam na Slovensku je to jedno, protoze to hned seberete a date to kvasit. Ale kdyz pada hruska, tak tam musí být hruška  :D

Když padá hruška, tak může spadnout do sudu ovoce - není nutné, aby to byl sud hrušek.


zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #95 kdy: 05. 02. 2016, 18:52:49 »
A kdyz se eventa jmenuje "SpadlaHruska", tak tam prece nebudu cpat Jabko  :D :D :D to jenom vam na Slovensku je to jedno, protoze to hned seberete a date to kvasit. Ale kdyz pada hruska, tak tam musí být hruška  :D
Na Moravě to děláme taky tak :)

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #96 kdy: 05. 02. 2016, 18:54:22 »
A kdyz se eventa jmenuje "SpadlaHruska", tak tam prece nebudu cpat Jabko  :D :D :D to jenom vam na Slovensku je to jedno, protoze to hned seberete a date to kvasit. Ale kdyz pada hruska, tak tam musí být hruška  :D

Když padá hruška, tak může spadnout do sudu ovoce - není nutné, aby to byl sud hrušek.

Že už z tvých příspěvků tak nějak vím o tvém hnidopichsmu, tak ti určitě vadí, že objekt třídy strom informuje o tom, že padá hruška, což nemůže vědět. Takže tipuju že kdyby se eventa jmenovala "utrhlaSeMiHruska" tak už by se ti to líbilo.

Kit

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #97 kdy: 05. 02. 2016, 19:01:47 »
Když padá hruška, tak může spadnout do sudu ovoce - není nutné, aby to byl sud hrušek.

Že už z tvých příspěvků tak nějak vím o tvém hnidopichsmu, tak ti určitě vadí, že objekt třídy strom informuje o tom, že padá hruška, což nemůže vědět. Takže tipuju že kdyby se eventa jmenovala "utrhlaSeMiHruska" tak už by se ti to líbilo.

Je to spíš ukázka možnosti využití polymorfismu, na který se často zapomíná. I když v Javě hodíš hrušku (objekt) do sudu s ovocem (kolekce), tak přesto neztrácí vlastnosti hrušky - nevoláš metody ovoce, ale hrušky.

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #98 kdy: 05. 02. 2016, 19:20:28 »
Nicméně teprve teď když se učím Javu začínám zjišťovat, že vůbec neumím OOP. A teď je otázka, jestli to je dobře nebo špatně, pro Javu, protože v .NETech mě to tolik nepřišlo.

zboj

  • *****
  • 1 507
    • Zobrazit profil
    • E-mail
Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #99 kdy: 05. 02. 2016, 19:41:18 »
Nicméně teprve teď když se učím Javu začínám zjišťovat, že vůbec neumím OOP. A teď je otázka, jestli to je dobře nebo špatně, pro Javu, protože v .NETech mě to tolik nepřišlo.
OOP je v Javě dost zkriplené.

karkulka

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #100 kdy: 05. 02. 2016, 19:46:06 »
Nicméně teprve teď když se učím Javu začínám zjišťovat, že vůbec neumím OOP. A teď je otázka, jestli to je dobře nebo špatně, pro Javu, protože v .NETech mě to tolik nepřišlo.

Pro javu z toho nevyplyva vubec nic. Je dobre nebo spatne pro finstinu, ze z ni nerozumim ani slovo?

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #101 kdy: 05. 02. 2016, 19:59:33 »
Nicméně teprve teď když se učím Javu začínám zjišťovat, že vůbec neumím OOP. A teď je otázka, jestli to je dobře nebo špatně, pro Javu, protože v .NETech mě to tolik nepřišlo.

Pro javu z toho nevyplyva vubec nic. Je dobre nebo spatne pro finstinu, ze z ni nerozumim ani slovo?

A co takhle spíše pro čínštinu?

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #102 kdy: 05. 02. 2016, 20:07:13 »
Jako zkouším se zorientovat teď v netty. V tom se prostě nedá pořádně vyznat. To je OOP peklo. Měl by vzniknout nový termín: OOP-DesignPatterns-Hell a jako typicého představitele na wikipediích zmiňovat Javu. Funkce je tam ztracena v abstraktních třídách a rozhraních a asi by to k tomu vyloženě chtělo mít mapu vytisknutou na A1 a pověšenou na zdi.

Zelenac

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #103 kdy: 05. 02. 2016, 20:18:30 »
Pracoval jsem už na rojektu většího rozsahu, vyvíjený od roku 2005 v Javě 1.5, byla to třívrstvá architektura. A neměl jsem v tom takový guláš jako v tom Netty, a to si nemyslím, že Netty vykonává složitější funkci. Ono rozdíl bude v tom, že ten projekt psal normální kluk, co tehdá dokončil VŠ, a byl to takový jeden z jeho prvních projektů, takže používal selské konstrukce. Nikde nepoužívá nějakou husto-krutou promyšlenou abstraktní kompoziční architekturu, takže všechno mělo tak nějak hlavu a patu, tipnul bych si že tam nebyla použita jediná abstraktní třída, eventy byly ten klasický javovský Observer-Observable s následným parsováním.

Re:Jak se vyhnout frustraci s Java eventy?
« Odpověď #104 kdy: 05. 02. 2016, 20:35:27 »
Už jste přišel na to, že vůbec neumíte OOP – je zajímavé, že vám to ale nebrání kritizovat z pohledu OOP kde co. Mimochodem, u Netty je nejdůležitější efektivita běhu výsledného programu a to, aby to správně (a efektivně) využíval i programátor, který nezná detaily síťové komunikace, její implementace v Javě a nemusí řešit detaily vícevláknového programování. Je to jako kdybyste OOP C++ posuzoval podle aplikace, která pro optimalizaci používá části napsané v assembleru…