Autor Zpráva
blizzboz
Profil
Pracujem na jednom rozsiahlom ajaxovom projekte na menšie veci je ideálna knižnica JQuery a funkcionálny štýl programovania ale keď sa na to nabaľuje ďalší a ďalší kód začína to byť neprehľadné. Potreboval by som nájsť nejaké elegantné riešenie pre OO v javascripte. Som zvyknutý programovať objektovo a v JS mi to dosť chýba. Niečo sa dá riešiť znásilňovaním jazyka ale stále to nie je plnohodnotná náhrada OOP tak ako som na ňu zvyknutý s Javy a C#. Poznáte nejaký JS framework ktorý by uľahčoval OOP v JS?

Potreboval by som hlavne:

Dedičnosť
Virtuálne metódy
Zapúzdrenie (private, protected)
Polymorfizmus
Statické metódy
Abstraktné metódy a triedy
Interfejsy

toto je pre mňa najdôležitejšie okrem toho by nebolo odveci keby ten framework podporoval aj properties a preťažovanie operátorov.

Rozmíšlam aj nad GWT ale nemám s ním zatiaľ žiadne skúsenosti a neviem či je to vhodné riešenie pre tento typ aplikácie. Nepoznáte nejaký iné riešenie keď sa staticky typovaný jazyk kompiluje do javascriptu?

Skúšal som ešte kompiler C# do JS - JSC ale nefungovalo mi to.
shaggy
Profil
blizzboz:
na menšie veci je ideálna knižnica JQuery a funkcionálny štýl programovania ale keď sa na to nabaľuje ďalší a ďalší kód začína to byť neprehľadné.
Na menšie? Na menšie projekty dávať jQuery je dosť nepraktické a ak tvoj kód začína byť pri veľkých projektoch neprehľadný, nie je problém v knižnici ;-)
Poznám pár ľudí, ktorí robia teraz robia priamo s nejakým jQuery MVC frameworkom (je určený pre .NET MVC) a ten kód, čo som videl nie je vôbec neprehľadný.

Ale ako by povedal František Hliva:
na js sa vybodni ten jazyk zaspal v 90tych rokoch.
Lopata
Profil
Podle mě to, co ty chceš je tak trochu znásilňování jazyka. Navíc to, že javascript nemá třídní dědičnost, neznamená, že dědičnost nemá vůbec. Zkus ale knihovnu JAK od Seznamu. Jejich vytváření tříd je docela dobré.
František Hliva
Profil
Lopata:
ja viem že javascript má dedičnosť ale neni to ideálne. táto knižnica ma celkom zaujala http://manual.qooxdoo.org/1.2.x/pages/core.html a dík za ten JAK idem to pozrieť

shaggy
prečítaj si ešte raz pozorne môj príspevok a potom reaguj.

„na js sa vybodni ten jazyk zaspal v 90tych rokoch. “

No bohužiaľ som nútený ho používať, inú alternatívu nemám.
Witiko
Profil
Co tohle?

http://www.prototypejs.org/
Lopata
Profil
To že je něco jiné nebo nezvyklé nebo nám neznámé neznamená, že to není ideální. To že javascript nechápeme nám přeci nedává důvod ho znásilňovat. Toto typické zcestné uvažování pak vede k mrtvým koťáktům a ke vzniku knihoven jako PHP.js.
Pokus se prostě akceptovat, že javascript je jiný jazyk, který funguje jinak. Ty se v podstatě snažíš do angličtiny zadrátovat pády, což je úplný nesmysl. Anglicky se také dá mluvit, ne...?
Witiko
Profil
František Hliva / shaggy:
na js sa vybodni ten jazyk zaspal v 90tych rokoch.
Cítím mírnou nadsázku. Poslední verze ECMAScriptu vyšla před necelým půl rokem (ačkoliv co do syntaxe nepřinesla nic moc nevého), ale předpokládám, že autor ví, že je ve vývoji ECMAScript Harmony.

Lopata:
To že javascript nechápeme
Kdo říká, že ho nechápeme. Jsou tu zkrátka lidé, kteří umí více jazyků, než jen slabě objektový ECMAscript a preferují silnější objektovost jazyka, než jakou nabízí, bez krkolomného zápisu. Já ji preferuji také a javascript myslím celkem "chápu"? Víš vůbec o tom, že Google uvolnil nástroj, ve kterém píšeš javascriptový kód jako standardní Javu (s pár omezeními), načež ji nástroj "zkompiluje" do javascriptového souboru? Google musí mít ve skříni hromady mrtvých koťat, protože přes tyto nástroje napsal kódy k veškerým svým webovým službám.
K takovému řešení všeobecně moc netíhnu, jelikož emulace jiných jazyků má za následek zákonitě horší výkon a nezahrnutí všech částí a funkcí jazyka původního a stejně tak pak nerad vložím do rukou "kompilátoru" úkol vytvořit z kódu Javy efektivní a validní kód. Ale celkově zlepšení v oblasti "quality of life" u OPP javascriptu jako takový zásah neberu a sám jej často v zjednodušené formě do svých kódů implementuji. Javascript většinu potřebných věcí již zahrnuje, jen je zápis většinou příšerně krkolomný.

nám přeci nedává důvod ho znásilňovat
Tak jak už jsem říkal, prototypy jsou v javascriptu nativně. Prototyp != třída, nicméně stejně frameworky simulující třídy skutečně nemusí javascript příliš "znásilňovat". S přetěžováním funkcí už to může být mírně horší, nicméně při rozumném frameworku půjde jen o jeden switch navíc na začátku funkce.
Jinak obecně - v korporátní sféře nikoho nezajímá, jestli je javascript znásilňován. Jediné, co je zde podstatné, jsou náklady na vývoj. Neetické? Kdo říká, že je kapitalismus ve své podstatě nějak zvlášť etický. Viz.:
"Možná, že směrem k javascriptu cítím nějakou lítost, ale... ta do obchodu nepatří." - Sam

Ty se v podstatě snažíš do angličtiny zadrátovat pády, což je úplný nesmysl.
Původně je angličtina měla. Až v moderní angličtině byly pády prakticky vypuštěny (až na např. akuzativ u zájmen). Jak si můžeš všimnout, ostatní odvozené germánské jazyky povětšinou stále ještě vesele deklinují.
Lopata
Profil
Witiko:
Už mlčím a chválím za Samův citát.
blizzboz
Profil
Moderátor Chamurappi: Přesunuto z Abstraktné triedy v Javascripte.

Ako v javascripte nasimulovať abstraktnú triedu? Tak aby sa z nej nedal vytvoriť objekt ale aby sa z nej dalo dediť?
Chamurappi
Profil
Reaguji na blizzboza:
Třeba tak, že ji uděláš privátní a zpřístupníš veřejně jen její prototype…?

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0