Recenze: OOP bez předchozích znalostí
Keogh, J. – Giannini, M.: OOP bez předchozích znalostí, průvodce pro samouky. Computer Press, Brno, 2006, ISBN 80-251-0973-9, 222 stran, náklad neuveden, cena 247 Kč (překlad z anglického originálu OOP Demystified, The McGraw-Hill Companies, Inc., 2004).
Vše nasvědčuje tomu, že objektově orientované programování (OOP) konečně vítězí v souboji s klasickými programovacími přístupy. Jedná se o techniku v principu jednoduchou, založenou na jednoduchém systémovém přístupu. Systémový přístup zde není frekventovanou frází, ale konstatováním skutečnosti, že jde o přístup důsledně založený na pohledu na reálný svět jako na systém složený ze vzájemně na sebe působících prvků. Je to přístup důsledně vycházející z poznatků teorie systémů.
Klasické programovací postupy v uplynulých desetiletích zcela ovládaly scénu a převážná většina programátorů je více méně rutinně ovládá. Přechod na OOP pro ně však znamená zásadní změnu přístupu, a to je problém, který se nepřekonává lehce. Ti, kterým se to již podařilo, jistě potvrdí, že vynaložené úsilí stálo za to.
Recenzovaná kniha se snaží tomuto přeškolovacímu procesu pomoci. Bez zaváhání lze prohlásit, že tak činí zdařile.
Téma je rozděleno do dvanácti kapitol, jež jsou doplněny pěti přílohami. Systémovost přístupu naznačuje první kapitola nazvaná Jak vnímáme svět. Následující kapitoly s názvy Co je třída, Zapouzdření, Metody a polymorfizmus, Dědičnost, Abstrakce a Určení a popis objektů jsou věnovány výkladu principů OOP. Kapitoly Modelování skutečného světa, Spolupráce, Modelování případu a Rozhraní se týkají postupů použití OOP při řešení úloh. Stručně se dotýkají některých principů metodik přesahujících vlastní rámec programování a zasahují do oblasti projektování, jinak též analýzy a návrhu. Poslední kapitola, Jazyky objektově orientovaného programování, je stručným přehledem v současnosti nejrozšířenějších jazyků, C++, Java a C#. Autoři se snaží zapojit čtenáře do aktivního ovládnutí látky. V příloze je proto uveden závěrečný test včetně odpovědí a odpovědi k testům zařazeným k jednotlivým kapitolám. Zbývající tři přílohy shrnují vše, co je třeba znát o třídách v již zmíněných základních jazycích OOP.
Kniha poměrně nevelkého rozsahu jednoduše a srozumitelně vysvětluje základní principy OOP. Text není přetížen mnohomluvnými odlehčujícími pasážemi. Příměry jsou výstižné. Výklad je konkretizován na jednom srozumitelném příkladu a jeho obměnách. Příklady jsou zaměřeny především na jazyky C++ a Java a jen v menší míře na méně rozšířený jazyk C#, dostupný pouze v souvislosti s MS Windows.
Původní anglický název knihy lépe vystihuje způsob zpracování tématu. Český název, atraktivnější, poněkud nadsazuje. Výklad předpokládá dobrou znalost klasických programovacích postupů. Jen tak může čtenář proniknout do základů tajů OOP. Stejně dobře však může kniha posloužit programátorovi, který již OOP ovládl v jiném programovacím jazyce a nyní se potřebuje přeorientovat na jazyk C++ nebo Java. Oba jazyky totiž nabízejí některé nástroje, které nejsou v jednodušších programovacích jazycích, jako je Simula, Smalltalk a další, zavedeny. Příkladem jsou abstraktní třídy, rozhraní apod. V tomto smyslu je kniha i jakýmsi průvodcem pro samouky.
Část knihy věnovaná metodikám projektování, grafickým nástrojům a podobným dílčím tématům je sice také čtivá a srozumitelná, pojednávaná témata jsou ale spíše náhodně vybraná. Při tvorbě složitějších programových systémů by programátor analytik měl disponovat mnohem obsáhlejšími a hlubšími znalostmi z této oblasti.
Čtenář dobře obeznámený s OOP by jistě na mnoha místech knihy mohl výklad zpřesnit a doplnit, problém osvětlit z jiného úhlu pohledu apod. Těžko by však mohl mít zásadní připomínky k jeho správnosti. Stručnost je velkou předností knihy, a nebylo by radno zjevný záměr autorů, tedy na co nejmenším prostoru říci vše podstatné, porušit.
Kniha je skutečně dobrá a recenzentovy výtky lze redukovat na několik poznámek.
Jde o knihu psanou za oceánem. Nereflektuje tedy ani naši evropskou zkušenost a nepřihlíží k naší počítačové historii. Smalltalk není v Evropě rozšířeným jazykem. Naopak Simula i poněkud méně objektový Pascal jsou jazyky dosud živé.
Pro čtenáře, který alespoň umí vyjmenovat základní principy OOP, bude užitečné doplnit, že díky odlišnostem jazyků C++ a Java spolu úzce souvisejí kapitoly Metody a polymorfizmus a kapitola Abstrakce. V první z nich, v odstavci nazvaném Vazby a následujících, se dozví vše potřebné o virtualitě. Téma virtuality bohužel nenalezne v rejstříku.
Poslední poznámka, související s překladem do češtiny, se vztahuje k názvu kapitoly Modelování případu. Ta se zjevně týká tzv. Use Case (česky výstižněji uživatelského diagramu), metody známé z metod analýzy a návrhu systémů. Jinak je kniha přeložena kvalitně, vesměs s použitím standardní terminologie.
Ke kvalitě publikace by dále přispěla větší péče nakladatele ve směru sjednocení terminologie ve vskutku velkém množství jím vydávaných titulů počítačové literatury. Zařazení publikace uváděné na zadní straně obálky míří přesně do vhodných čtenářských skupin. Kniha má již tradičně pouze formálně sestavený rejstřík, což je snad jediná vážnější výhrada k jinak zdařilé publikaci, kterou lze čtenářům inspirovaným naší recenzí doporučit.
Jiří Cendelín
|