Něco málo historie
Příběh Cocoa začíná okouzlujícím kouskem historie. Jednou, dva týpci se jménem Steve rozběhli ve své garáži společnost, která se jmenovala Apple Computers.
Společnost rychle rostla, a tak najmuli zkušeného ředitele jménem John Sculley aby jim dělal CEO. Po několika neshodách John Sculley odsunul Steva Jobse na pozici kde neměl vůbec žádnou kontrolu nad společností. Steve Jobs odešel aby založil jinou polečnost, nazvanou NeXT Computer.
NeXT najali malý tým vynikajících inženýrů. Tento malý tým vyvinul počítač, operační systém, tiskárnu, továrnu a sadu vývojářských nástrojů. Každý kousek byl roky napřed před konkurenčními technologiemi, a lidé byli ohromeni a udiveni. Naneštěstí tito ohromení lidé nekoupili ani počítač ani tiskárnu. V roce 1993 byla továrna zavřena a NeXT Computer, Inc., se stal NeXT Software, Inc.
Operační systém a vývojářské nástroje se nadále prodávaly pod jménem NeXTSTEP. I když průměrný uživatel počítače nikdy neslyšel o NeXTSTEPu, byl velmi populární mezi vědci, investičními bankami a intelligence agencies. Toto byli lidé kteří vyvíjeli každý týden nové aplikace, a objevili že NeXTSTEP jim umožnil uskutečnit jejich nápady rychleji než jakákoli jiná technologie.
Co to bylo za operační systém? NeXT se rozhodl použít Unix jako jádro NeXTSTEPu, spoléhajíc na zdrojový kód pro BSD Unix z University of California v Berkeley. Proč Unix? Unix padal mnohem méně než Microsoft Windows nebo Mac OS a měl silné, spolehlivé síťové nástroje.
Apple uvolnil zdrojový kód k Unixové části Mac OS X pod jménem Darwin. Vývojářská komunita pokračuje ve vylepšování Darwinu. Více informací o Darwinu najdete na http://macosforge.org.
NeXT poté napsali pro operační systém window server. Window server přebírá události od uživatele a předává je aplikacím. Aplikace pak posílá příkazy pro vykreslování zpět window serveru aby aktualizoval to co uživatel vidí. Jednou z pěkných věcí na NeXT window serveru je, že příkazy pro vykreslování které přijímá jsou ty samé které mohou být zaslány tiskárně. Takže programátor musí napsat příkazy pro vykreslování pouze jednou, a pak je může použít buď pro kreslení na obrazovku nebo pro tisk na tiskárně. V dobách NeXTSTEPu psali programátoři kód který generoval PostScript. V prostředí Mac OS X píší programátoři kód který využívá framework CoreGraphics (také známý jako Quartz). Quartz umí vytvořit grafiku pro obrazovku, tiskárnu nebo vygenerovat PDF data. Portable Document Format je otevřeným standartem vytvořeným Adobe Corporation pro vektorovou grafiku.
Pokud jste někdy předtím používali Unixové stroje, jste provděpodobně obeznámeni s X window serverem. Mac OS X window server je kompletně odlišný, ale plní stejnou funkci jako X window server: získává události od uživatele, předává je aplikacím a zobrazuje data aplikací na obrazovku. Momentálně má X protokol slabou podporu vyhlazených fontů a průhlednosti. To je jeden z důvodů proč Mac OS X window server vypadá mnohem lépe než X window server.
NeXTSTEP přišel se sadou knihoven a nástrojů které umožnily programátorům elegantně pracovat s window manažerem. Knihovny byly nazvány frameworky. V roce 1993 byly frameworky a nástroje zrevidovány a přejmenovány na OpenStep, který byl později přejmenován na Cocoa.
Jak můžete vidět na obrázku 1.1, window server a vaše aplikace jsou Unixovými procesy. Cocoa umožňuje vaší aplikaci přijímat události z window serveru a vykreslit je na obrazovku.
Nástroje
Budete milovat Cocoa, ale pravděpodobně ne hned. Prvně se musíte naučit základy. Začněme nástroji které budete používat.
Všechny nástroje pro vývoj v Cocoa jsou součástí Mac OS X Developer Tools a dostanete je zdarma spolu s Mac OS X. I když díky těmto vývojářským nástrojům přibude ve vašem systému dalších tucet aplikací, budete primárně používat jen dvě z nich: Xcode a Interface Builder. O překlad vašeho kódu se na pozadí postará překladač GNU C (gcc) a s chybami vám pomůže GNU debugger (gdb).
Xcode sleduje všechny prostředky které vaše aplikace používá: kód, obrázky, zvuky atd.. Kód budete upravovat v Xcode a Xcode váš kód přeloží a spustí vaši aplikaci. Můžete Xcode použít také ke spuštění a ovládání debuggeru.
Interface Builder je nástroj pro tvorbu GUI. Umožňuje vám rozvrhnout okna aplikace a přidat do nich widgety. Avšak umí i mnohem více. Interface Builder vám umožňuje vývojáři vytvořit objekty a nastavit jejich atributy. Většina těchto objektů jsou prvky UI, jako třeba tlačítka nebo textová pole, ale některé budou instance tříd které sami vytvoříte.
Jazyk
Všechny příklady v této knize jsou napsány v Objective-C. Objective-C je jednoduchou nadstavbou jazyka C a ovládnutí tohoto jazyka vám zabere něco kolem dvou hodin pokud znáte C a nějaký objektově orientovaný jazyk jako je Java nebo C++.
Cocoa aplikace je možné vyvíjet i pomocí Ruby nebo Pythonu. Tato kniha se však tímto tématem nezabývá, ale lze najít spoustu informací na webu. Abyste však těmto informacím porozuměli, budete potřebovat pracovní znalost jazyka Objective-C.
Objective-C se nedávno dočkal velké revize. Všechen kód v této knize je napsán v Objective-C 2.0. Apple přidal do Objective-C 2.0 garbage collector, který je volitelný (opt-in); to znamená že si můžete vybrat zda jej použijete či ne. Kód v této knize je obojetný (dual mode); to znamená, že bude fungovat at už garbage collector použijete nebo ne.
O překlad Objective-C kódu se postará gcc, GNU C překladač. Tento překladač vám dovolí volně mísit kód napsaný v C, C++ a Objective-C v jednom souboru.
GNU debugger, gdb, budete používat k nastavení zarážek a prohlížení proměnných za běhu programu. Objective-C vás nechá udělat spoustu hloupostí; určitě proto oceníte decentní debugger.
Objekty, třídy, metody a zprávy
Všechno programování v Cocoa se děje pomocí objektově orientovaného návrhu. Tato část jen stručně shrnuje termíny používané v objektově orientovaném programování. Pokud jste nikdy předtím tuto techniku nepoužívali, pak vám doporučuji přečíst si The Objective-C Language. Tuto knihu v PDF formátu najdete na webu Apple (http://developer.apple.com/documentation/cocoa/conceptual/objectivec/Obj...).
Co je to objekt? Objekt je jako struktura v C: zabírá místo v paměti a obsahuje proměnné. Proměnné v objektu se nazývají proměnné instance. Takže když pracujeme s objekty, první otázka obvykle je: jak si vyhradíme místo na objekt? Jaké proměnné instance má objekt? Jak zrušíme objekt když s ním dále nepotřebujeme pracovat?
Některé proměnné instance objektu mohou být ukazatele na jiné objekty. Tyto ukazatele umožňují jednomu objektu aby věděl o těch ostatních.
Třídy jsou struktury které mohou vytvářet objekty. Třídy specifikují proměnné které má objekt mít a jsou zodpovědné za vyhrazení paměti pro objekt. Říkáme že objekt je instance třídy která jej vytvořila (obrázek 1.2).
Množství dalších frameworků zajišťuje věci jako je enkrypce, QuickTime a vypalování CD, ale tato kniha se soustředí na Foundation, AppKit a Core Data, protože se používají nejčastěji. Jakmile jednou tyto frameworky ovládnete, bude pro vás snadnější porozumět i těm ostatním.
Lze také vytvářet vlastní frameworky ze tříd které si sami napíšete. Obvykle tuto potřebu ucítíte když začnete opakovaně používat sadu tříd ve více aplikacích.
Jak používat tuto knihu
Když jsem začal psát tuto knihu, představoval jsem si že provázím přítele aktivitami které mu pomohou porozumět programování v Cocoa. Tato kniha slouží jako průvodce těmito aktivitami. Často po vás budu chtít abyste něco napřed udělali a detaily či teorii vám vysvětlím zpětně. Pokud se budete cítit zmateně, čtěte dále, na odpověď narazíte obvykle o odstavec nebo dva dál.
Pokud s pořád budete cítit ztraceni, můžete najít pomoc na webu téhle knihy: http://www.bignerdranch.com/products/. Stejně tak tam najdete chyby z knihy, tipy a příklady. Najdete tam i řešení k příkladům které si můžete stáhnout. Každá kapitola vás provede procesem přidávání nových vlastností do aplikace. Kniha ale neslouží jako kuchařka. Předkládá vám myšlenky a příklady pak tyto myšlenky demonstrují v akci. Nebojte se experimentovat.
Cocoa frameworky obsahují něco kolem 300 tříd. Všechny třídy mají dokumentaci dostupnou online (k té se dostanete přes menu Help v Xcode). Cocoa programátoři stráví spoustu času čtením těchto stránek. Ovšem pokud neporozumíte tomu jak Cocoa funguje, může být těžké najít to pravé místo kde začít. Pokaždé když narazíte v této knize na novou třídu, najděte si ji v dokumentaci. Možná neporozumíte všemu co tam najdete, ale určitě oceníte bohatství těchto frameworků. Poté co dočtete tuto knihu, stane se dokumentace vaším průvodcem.
Cocoa většinou plní svůj slib: běžné věci jsou jednoduché a ne tak běžné věci jsou možné. Pokud budete muset napsat větší množství kódu k dosažení poměrně jednoduché věci, pak se zřejmě ubíráte špatným směrem.
Typografické konvence
Aby tato kniha byla přehlednější, použil jsem několik typografických konvencí.
Jména tříd začínají v Objective-C vždy velkými písmeny a v této knize je také píšu tučným písmem s pevnou šířkou. Jména metod začínají v Objective-C malými písmeny a jsou také uvedeny tučným písmem s pevnou šířkou. Například "Třída NSObject má metodu dealloc".
Ostatní literály (včetně jmen proměnných instance) na které narazíte jsou uvedeny písmem s pevnou šířkou. Stejně tak jména souborů. Například "Přiřaďte hodnotu nil proměnné favoriteColor v souboru MyClass.m".
Pozn. překladatele: Moje konvence jsou stejné, až na to že nepoužívám tučné písmo.
Běžné chyby
Protože jsem viděl už opravdu hodně, hodně lidí jak pracuje s touto knihou, měl jsem možnost pozorovat chyby které se opakovaly pořád dokola. Zde jsou dvě chyby které se vyskytují nejčastěji: chyby v názvech a velikosti písmen a zapomenuté spojení.
Chyby s velikostí písma jsou problém, protože C a Objective-C jsou citlivé na velikost písma - překladač nezachází s Foo a foo jako se stejnou proměnnou. Pokud máte problém něco přeložit, zkontrolujte si že jste napsali všechna jména správně.
Když vytváříte aplikaci, používáte Interface Builder k propojení objektů. Zapomenutá spojení obvykle nezabrání v tom aby se aplikace přeložila a spustila, ale vyústí v nestandardní chování. Pokud se tedy vaše aplikace nechová správně, zkontrolujte propojení v Interface Builderu.
Je snadné při prvním překladu přehlédnout některé varovné zprávy. Protože Xcode používá inkrementální překlad, nemusíte vidět ty stejné varovné zprávy při dalším překladu, dokud nevyčístíte a znovu nesestavíte projekt. Pokud si tedy nevíte rady, zkuste projekt vyčistit a sestavit znovu.
Jak se učit
Na moje lekce chodí nejrůznější skupiny lidí: bystří a méně bystří, motivovaní i líní, zkušení i nováčci. Ti kdo si z lekcí odnesou nejvíce sdílí nevyhnutelně jednu vlastnost: neztrácí pozornost při vysvětlování dané tematiky.
Prvním trikem jak udržet pozornost je dostatek spánku. Doporučuji vám spát deset hodin denně při studiu nových věcí. Předtím než toto doporučení zamítnete, zkuste to. Probudíte se svěží a připravení se učit. Kofein neslouží jako náhrada za spánek.
Druhý trik je přestat přemýšet o sobě. Mnoho studentů si myslí "Sakra, tohle je na mě moc těžké. To jsem asi hloupej" když se učí něco nového. Protože hloupost je v naší kultuře tak nevyslovitelně strašná věc, straví studenti obvykle několik hodin vymýšlením argumentů proč nejsou hloupí a přesto mají problémy pochopit danou věc. Ve chvíli kdy se tímhle začnete zaobírat, ztratili jste svoji vůli se soustředit.
Míval jsem šéfa jménem Rock. Rock vystudoval astrofyziku na Cal Tech ale nikdy nedostal práci v níž by využil znalosti nebes. Jednou jsem se ho zeptal jestli nelituje svého vzdělání. Řekl "Vlastně mít vzdělání v astrofyzice se mi prokázalo velmi užitečným". "Některé věci ve světě kolem nás jsou prostě obtížné. Když s něčím zápasím, tak si občas pomyslím 'Sakra, tohle je těžký'. Tak jsem hloupej?', ale pak si vzpomenu že mám titul z astrofyziky na Cal Tech; Nemůžu být hloupej".
Předtím než se pustíte dál, ujistěte sami sebe že nejste hloupí a že některé věci jsou zkrátka těžké. Vyzbrojeni tímto bláznivým ujištěním a odpočinutou myslí jste připravení ovládnout Cocoa.
| Příloha | Velikost |
|---|---|
| img1_1.png | 12.67 KB |
| img_1_2.png | 17.23 KB |
| img_1_3.png | 17.43 KB |
Komentáře
obrazky
jsem mizerny grafik, tak se omlouvam za ty silene obrazky...
Překlad
obrazky jsou v pohode, ale ty preklepy jsou obcas strasne
ale jinak diky za zajimave cteni...
opraveno
proof reading ftw
Šílenče :)
Ty ses fakt rozhodnul to přeložit....
Jen bys možná mohl na začátek dát odstavec, kterým bys upozornil, že nepíšeš o sobě. Když jsem si přečet, že jsi programoval na WallStreet, tak ve mně hrklo a říkal jsem si, jestli bych Ti neměl začít vykat
:)
mno, ja jsem doufal ze to snad lidi pochopi z nazvu te knihy
ale asi ke druhe kapitole jeste pripisu do zavorky jmeno Aaron Hillegass 
Skvělé. Na toto jsem
Skvělé. Na toto jsem čekal hodně dlouho, takže přeji aby se ti překlad podařil celý
diky cela kniha ma 35
diky
cela kniha ma 35 kapitol, takze muj odhad je neco mezi pul rokem az rokem...
Jaká kniha
Možná se špatně koukám, ale v textu jsem nenašel o překlad jaké knihy se jedná?
A ještě bych měl dotaz, chci se začít učit vyvíjet aplikace pro iPhone. Můžete mi doporučit nějaké zajímavé knihy, které jsou pro to vhodné?
Všude čtu, že knihy od Aarona Hillegasse, případně P. Cochana, jsou super. Měli by jste tip přímo na konkrétní publikaci..
Ještě doplním, že jsem nikdy nevyvíjel pod MAC OS, takže Cocoa, Objective - C jsou mi neznámé.
@toncek
nazev knihy je primo v nadpise, cili "cocoa programming for mac os x", ktera je prave primo od aarona hillegasse. dalsi knizky muzete najit na amazon.com nebo google.com. momentalne zvazuji i paralelni preklad knizky o vyvoji na iphone, ale to jen fakt tak okrajove. pokud nemate zkusenost s cocoa, objective-c nebo platformou mac os x jako takovou, tak muj prvni dotaz je - mate doma mac? jestli ne, tak se asi moc daleko nepohnete. druha otazka je jestli mate nejake zkusenosti s programovanim, progamovaci jazyk C je dobry zaklad.
@goddard
Děkuji za název knihy.
Mac by mi měl přijít někdy v průběhu příštího týdne. Co se týče zkušeností s programováním, tak studuju IT na VŠ, takže algoritmizace není až takový problém. No a zkušenosti s jazyky - klasické C, jsem měl tuším 2 semestry, ale nikdy to nebyl můj oblíbený jazyk . S javou jsem na tom líp.
:)
kde studujes?
java nebo c/c++ uplne staci.
@goddard
VŠB
:)
tam studoval kamos, promoval minuly rok
@goddard
Já taky promoval minulý rok (Bc.), letos pokračuju v magisterském studiu.
Další díly překladu
Jsou, nejsou? Nenalezl jsem, hledám špatně?