O virtuální konferenci Decisions jsem zde již několikrát psal, ale o Decisions Fall 2010 jsem se příliš nezajímal, protože jarní Decision Spring pro mě byla spíše zklamáním.
Nicméně program AX bloku (1.11.2011) nevypadá špatně (například Agilní vývoj softwaru v AX nebo Performance Monitoring), na záznamy se určitě podívám.
pátek 22. října 2010
čtvrtek 21. října 2010
Dědění od třídy Object
Třída Object stojí na vrcholu hierarchie tříd a každá třída od ní je - přímo či nepřímo - odvozena. Tak to alespoň tvrdí Strom aplikační hierarchie,
Object definuje několik finálních metod (např.
Zkuste si vytvořit novou třídu, zkonstruovat její instanci a zavolat její metodu
Chování, které byste asi očekávali od začátku, je nutné vynutit explicitním uvedením
Řešení pomocí
Zajímavé je, že z pohledu Stromu aplikační hierarchie a DictClass tříd vypadají třídy s i bez
Zajímavých dopadů by se našlo jistě více, mě napadají tyto:
DictClass.extend()
nebo MSDN. Object definuje několik finálních metod (např.
handle()
) a čtyři překrytelné (equal()
, toString()
, wait()
a xml()
). Znamená to tedy, že každý objekt obsahuje tyto metody? Překvapivě… nikoli.Zkuste si vytvořit novou třídu, zkonstruovat její instanci a zavolat její metodu
toString()
. Takový kód vůbec nejde zkompilovat! Pokud tuto instanci přiřadíte do proměnné typu Object, přiřazení je sice korektní a Object obsahuje metodu toString()
, takže kompilace proběhne v pořádku, nicméně volání metody vyhodí runtime výjimku.Object o = new MyClass();
o.toString(); //runtime chyba
Metodu toString()
můžete ve své třídě sami naimplementovat a kód bude pochopitelně fungovat. Ale pozor - zde vytváříte nové metody, nepřekrýváte ty ze třídy Object. To má dva zřejmé efekty - zaprvé nemá smysl snažit se volat super()
(to platí i pro konstruktor(!)) a za druhé můžete vytvořit metodu stejné signatury jako má některá z finálních metod třídy Object.Chování, které byste asi očekávali od začátku, je nutné vynutit explicitním uvedením
extends Object
v classDeclaration
vaší třídy. Pak můžete na jejích instancích volat všechny metody zděděné z Object, překrytelné metody se objeví v kontextové nabídce (viz obrázek), můžete volat jejich implementaci ve třídě Object pomocí super()
a tak dále.Řešení pomocí
extends Object
používají zřejmě veškeré systémové třídy (tzn. třídy v
uvedené v System Documentation) a také některé třídy definované v X++, například RunBase.
Zajímavé je, že z pohledu Stromu aplikační hierarchie a DictClass tříd vypadají třídy s i bez
extends Object
zcela stejně. Popsané chování je také zcela v rozporu s MSDN dokumentací, která například říká: "Methods in the Object class can be called for any object.", tedy "Metody ve třídě Object mohou být volány pro libovolný objekt.".Zajímavých dopadů by se našlo jistě více, mě napadají tyto:
- Nelze vytvářet generickou funkcionalitu předpokládající, že všechny objekty v Axaptě mají určitou metodu (třeba
equal()
), protože to prostě není nijak zaručeno - Pokud není třída výslovně deklarována jako potomek Object, může implementovat i finální metody a ty budou zavolány (!!!). Takto lze například vracet libovolně zvolené číslo v
handle()
- a znamená to, že ani na finální metody třídy Object se nelze stoprocentně spolehnout.
extends Object
.
čtvrtek 7. října 2010
Nová podoba community.dynamics.com
Právě před chvílí jsem se přihlásil na community.dynamics.com a nestačil jsem se divit. Celý web se totiž od včerejšího večera podstatně změnil a to nejen vizuálně, ale i po funkční stránce. Například fórum (schované pod položkou Ask The Community) už umí RSS. (Původně jsem tu psal, že není možné zobrazit náhled příspěvku, ale platí to jen pro plain text.)
Obecně mi přijde, že je stránka více zaplácaná spoustou "related" obsahu, a ve výsledku se na ní vejde méně informací (na výpisu příspěvků na fóru je to obvzlášť patrné), ale snad je to jen věc zvyku.
Obecně mi přijde, že je stránka více zaplácaná spoustou "related" obsahu, a ve výsledku se na ní vejde méně informací (na výpisu příspěvků na fóru je to obvzlášť patrné), ale snad je to jen věc zvyku.
sobota 2. října 2010
Microsoft Newsgroups definitivně končí
Pokud navštěvujete Microsoftí Usenet pravidelně, jistě víte, že již dříve bylo oznámeno zrušení všech newsgroups a jejich nahrazení webovými fóry. Vzápětí opravdu zmizela řada skupin, ale ty týkající se Axapty se stále držely. Nicméně všechno jednou končí a v několika příštích dnech budou uzavřeny.
Náhradou jsou samozřejmě fóra na community.dynamics.com, která už jsou celkem zaběhlá, na druhou stranu bych tam uvítal členění na application/development, jak tomu je na Usenetu (kde je skupin naopak zbytečně moc, viz třeba localization). Obecně mi přijde přechod od léta vyvíjených klientů k nějakému nepříliš propracovanému webovému rozhraní jako ztráta, ale chápu, že už to byl pro Microsoft tak trochu relikt. Naštěstí jsem si už na komunitní fórum zvykl, ale chvilku mi to trvalo (asi tak rok :)).
K webovému fóru dám jeden tip - pod tlačítkem More options si můžete mimo jiné nastavit zobrazování jen nepřečtených vláken.
Náhradou jsou samozřejmě fóra na community.dynamics.com, která už jsou celkem zaběhlá, na druhou stranu bych tam uvítal členění na application/development, jak tomu je na Usenetu (kde je skupin naopak zbytečně moc, viz třeba localization). Obecně mi přijde přechod od léta vyvíjených klientů k nějakému nepříliš propracovanému webovému rozhraní jako ztráta, ale chápu, že už to byl pro Microsoft tak trochu relikt. Naštěstí jsem si už na komunitní fórum zvykl, ale chvilku mi to trvalo (asi tak rok :)).
K webovému fóru dám jeden tip - pod tlačítkem More options si můžete mimo jiné nastavit zobrazování jen nepřečtených vláken.
Přihlásit se k odběru:
Příspěvky (Atom)