Mellékleteink: HUP | Gamekapocs
Keres

Könyvajánló: Programtervezési minták

Budai Péter, 2004. december 17. 12:18
Ez a cikk több évvel ezelőtt születetett, ezért előfordulhat, hogy a tartalma már elavult.
Frissebb anyagokat találhatsz a keresőnk segítségével:

Az objektumorientált programozás tervezési módszereit összefoglaló első átfogó referencia 1995-ben jelent meg. A Kiskapu Kft. jóvoltából a szakkönyv immár magyarul is olvasható, ezáltal a programozást tanulók hatalmas segítséget kaptak, és immár pótolhatják azokat az ismereteket, amelyek szakmájuk gyakorlásához elengedhetetlenek.

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Programtervezési minták -- újrahasznosítható elemek objektumközpontú programokhoz, Kiskapu kft., 2004, 421 oldal, 5980 forint

Programozás elmélet
Felhasználói szint: haladó

Az objektumorientált programozás valódi alapjai

A szoftverfejlesztés fejlődésében jelentős mérföldkövet jelentett az objektumorientált megközelítés elterjedése. Igaz, hogy minden alkalmazás elkészíthető hagyományos procedurális, és objektumorientált eszközökkel is, de a korábbi technológiákkal mindez lényegesen több időt, energiát és szakértelmet igényelt, különösen nagyobb rendszerek esetében. Az objektumorientált tervezés és programozás (OOP) több általános problémára adott általános választ: segítségével a forráskód könnyedén modularizálható, a különválasztott kódrészletek egyszerűbben és biztonságosabban programozhatóak, a jól felépített osztályok és osztályhierarchiák könnyebben bővíthetőek, és akár újra is használhatóak egy eltérő probléma megoldására. Az OOP-nek hála ma már olyan méretű rendszerek is elkészíthetőek, amiket egyetlen ember, vagy akár fejlesztőcsoport is képtelen lenne átlátni.

Az OOP alapjainak elsajátítása nem igényel hatalmas időráfordítást, és a manapság elérhető programozási nyelvek mindegyike támogatja ezt a technológiát, még ha kicsit el is térnek egymástól -- a legtöbb nyelv saját megoldásokkal bővíti az OOP eszköztárát, de az alapelvek már több mint 15 éve változatlanok. Az OOP módszer használata során meg kell határozni a leprogramozandó rendszerben előforduló funkcionalitás közös pontjait, és el kell különíteni a szerteágazó szoftverrendszerek azon részeit, amelyek a rendszer többi részétől csak csekély mértékben függnek. Az ezáltal nyert, zárt modulokra bontott rendszer alkotóelemei külön-külön elkészíthetőek, akár anélkül, hogy a rendszer egészéről tudomásunk lenne. Egy modul fejlesztése szempontjából csak az a lényeges, hogy milyen funkcionalitást kell támogatnia, illetve hogyan kommunikál a külvilággal, és a többi modullal.

Mivel az OOP célja a tetszőleges méretű rendszerek fejlesztésének lehetővé tétele, illetve annak felgyorsítása, ezért célkitűzései között szerepel az is, hogy a hasonló működéssel vagy felépítéssel rendelkező forráskódrészleteket csak egyszer kelljen kifejleszteni. Ezáltal ha egy már meglévő forrásrészletre nagyban hasonlító kódra van szükség, akkor nem kell ugyanazt többször is megírnunk, helyette kiindulásként felhasználható a már meglévő implementáció. Az OOP eszközei tökéletesen alkalmasak arra, hogy bármilyen rendszer a forráskód szintjén modularizálható legyen általa, és a hasonló működési részeket tartalmazó elemeket közös nevezőre lehessen hozni. Hamar észrevehető, hogy a modularizálás, illetve a közös részek egységes megvalósítása a legtöbb esetben egymásnak ellentmond, ezért a program tervezése során meg kell találni az egyensúlyt a két alapvető szempont között. Az azonban gyakran problémát okoz a kezdő programozóknak, hogy az OOP általuk ismert valamennyi eszközével pontosan hogyan érhetik el ezeket a kitűzött célokat.


A magyar könyv borítója

Sajnálatos módon a mai programozóképzés gyakran megáll az OOP alapkoncepcióinak tárgyalásánál, és a nagyobb rendszerek hatékony programozásának problémáival nem kíván foglalkozni -- ezáltal a konkrét fejlesztési gyakorlattal nem rendelkező programozók hatalmas erőfeszítések árán készítik el alkalmazásaikat és rendszereiket első munkahelyükön, ami az első egy-két évben megfelelő mentor, vagy munkahelyi segítség nélkül nehezen bővíthető, és mások számára teljességgel átláthatatlan forráskód létrehozását eredményezi. Az OOP eszközeinek és alapfogalmainak ismerete (osztály, példány, öröklődés, többalakúság, egységbezárás, stb.) önmagában kevés, ha nem egészül ki megfelelő tervezéselméleti háttérrel vagy gyakorlattal. Sokan nem is értik, mire jó az OOP, hiszen nem láttak még nagy rendszereket fejlődni, és a rendelkezésükre álló tankönyvek és tanárok nem világítják meg a valódi célokat, hanem kizárólag az eszközökkel és egyszerű példákkal foglalkoznak.

Egy klasszikus alapmű magyar fordítása

Az objektumorientált programozás tervezési módszereit összefoglaló első átfogó referencia 1995-ben jelent meg angolul az Addison-Wesley kiadásában. A könyvet létrehozó szerzőcsapatot a legtöbben csak "a négyek" névvel illetik, ők azok, akik az 1991-ben megrendezésre került OOPSLA (Object-Oriented Programming, Systems, Languages & Applications) konferencián elsőként számoltak be a tervezési módszerek összefoglalására tett erőfeszítéseik eredményeiről. Az általuk összegyűjtött programtervezési minták az OOP eszközei segítségével adnak választ a programtervezés során felmerülő leggyakoribb kérdésekre, és a módszerek ismeretével a kevesebb gyakorlattal rendelkező programozók is kedvezőbb esélyekkel vághatnak bele egy nagy rendszer fejlesztésébe. A Kiskapu kft. 2004-ben jelentette meg a szakkönyv magyar változatát, ezáltal a Magyarországon programozást tanulók hatalmas segítséget kaptak, és immár -- önerőből -- pótolhatják azokat az ismereteket, amelyek szakmájuk megfelelő gyakorlásához elengedhetetlenek.

A könyv három részre osztható: az első rész általános bevezetőként szolgál, és bemutatja az OOP programozók gyakori hiányosságait, és igyekszik megoldást nyújtani rájuk. A második rész egy esettanulmány, ami egy elsőre talán egyszerűnek tűnő szövegszerkesztő alkalmazás kicsit sem egyszerű tervezési problémáival foglalkozik. A harmadik szekció pedig a programtervezési minták tényleges gyűjteménye, referenciája. A könyv leginkább C++ kódrészletekkel és UML-diagrammokkal támasztja alá az elméleti mondanivalót, de előfordul benne -- a manapság talán már ismeretlennek mondható -- Smalltalk nyelven írt programrészlet is. Mivel az OOP megvalósítása szinte valamennyi napjainkban használt programozási környezetben közel azonos, ezért a könyv nem csak C++ programozók számára nyújt segítséget, bár megköveteli a nyelv alapszintű ismeretét a példák megértéséhez.

A könyvben 23 tervezési minta részletes és igényes bemutatása található meg; a szerzők mindegyiknél megfogalmazzák a minta használatának céljait, feladatait, kiemelik felhasználhatóságának körülményeit, és kifejtik a minta használatának következményeit is -- ezáltal könnyen képet alkothatunk arról, hogy érdemes-e az adott mintát a programunkban alkalmazni, és az milyen előnyökkel, illetve hátrányokkal jár a rendszer egészére nézve. A mintákhoz minden esetben C++ példakódot is találnunk. A könyvben törekedtek arra is, hogy a mintákat együtt is képesek legyenek használni az olvasók, ezért a minták közti kapcsolatokról, és azok közös felhasználásáról is szó esik. A mintákról azt is megtudhatjuk, hogy milyen, már létező programrészekben kerültek felhasználásra -- ezek azonban nagy segítséget nem jelentenek, mivel többségük legalább tíz éve elavult, és a mai ember számára többnyire ismeretlenek, vagy teljesen érdektelenek.

A mintákat az írók a létrehozási, szerkezeti és viselkedési kategóriákba sorolták. A létrehozási minták az adott helyzetben megfelelő objektumpéldányok létrehozásának eszközeit mutatják be, a szerkezeti minták a bővíthetőség és az újrahasznosíthatóság figyelembevételével tesznek javaslatokat az osztályok konkrét felépítésére és azok együttes szervezésére, a viselkedési minták pedig arra nézve adnak tanácsokat, hogy hogyan érdemes a rendszer vezérlési folyamatait az objektumok szemszögéből megtervezni.

A cikk több oldalból áll:
Facebook
Adatvédelmi okokból az adott hír megosztása előtt mindig aktiválnod kell a gombot! Ezzel a megoldással harmadik fél nem tudja nyomon követni a tevékenységedet a HWSW-n, ez pedig közös érdekünk.