Cocoa (Ukázka, strana 99)

Page 1

98

COCOA – ÚVOD DO PROGRAMOVÁNÍ NA PLATFORMĚ APPLE plicitně uvádět – nebo jméno atributu s prefixem „is“. V knihovnách Cocoa se sice výjimečně můžeme setkat i s prefixem „has“ (hasAlpha); to však má historické důvody a sami bychom takové atributy definovat spíše neměli.

5.6.3 Přístup k atributům s využitím tečkové konvence Z minulého bodu je zřejmé, že kdykoli a bez omezení můžeme pracovat s atributy instancí pomocí přístupových metod, popsaných v minulém bodu: MyClass *o=...; ... if ([o isEnabled]) [o setEnabled:NO]; [o setCount:[o count]+1]; ... Objective C 2.0 navíc přináší možnost k atributům přistupovat pomocí tečkové notace, jež je z pohledu programátora o něco pohodlnější – název atributu prostě od proměnné (resp. obecně výrazu, jehož hodnotou je ukazatel na objekt) oddělíme tečkou, a výsledek se může účastnit běžných výrazů jazyka C. Výše uvedený příklad bychom tedy mohli přepsat takto: MyClass *o=...; ... if (o.isEnabled) o.enabled=NO; o.count++; ... Povšimněme si zvláště velmi podstatného zjednodušení druhého z příkladů (inkrementace atributu count). Důležité je mít ale na paměti, že ačkoli se tento zápis na první pohled značně podobá přímému přístupu k instančním proměnným např. v Javě, jde o podobnost jen náhodnou, a Objective C i při tečkové notaci zachovává plně objektový přístup prostřednictvím zpráv a přístupových metod (takže např. zápis „o.count++“ nejprve pošle objektu o zprávu count, inkrementuje zjištěnou hodnotu, a výsledek zapíše zpět do objektu o pomocí zprávy setCount:). Ve starších verzích překladače než Objective C 2.0 ještě nebyla tečková konvence k dispozici. Programujeme-li pro takovéto prostředí, musíme tedy důsledně všude používat přístupových metod explicitně, jako v prvém příkladu tohoto bodu.

5.7 Metody tříd Připomeňme, že třída sama je objektem, a sama tedy dokáže přijímat a zpracovávat zprávy. Proto můžeme v rozhraní kromě deklarace zpráv určených pro instance této třídy deklarovat i zprávy určené pro třídu samotnou. Podobně v implementaci můžeme definovat „třídní“ metody – tedy takové, jež budou vyvolány v případě, že třída sama dostane zprávu, odpovídající hlavičce metody. V obou případech je deklarace i definice takřka stejná jako tomu bylo v případě instancí; jen znak „-“ na začátku deklarace zprávy či definice metody je nahrazen znakem „+“:

5. Objekty a Objective C

Ukázka elektronické knihy, UID: KOS180655


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.