Objektumorientált programozás
Az objektumorientált programozás tudás mára már elengedhetetlen a programozók számára. A legtöbb munkahelyen valamilyen keretrendszert alkalmaznak, amihez szükséges az osztályok, objektumok, öröklődés, kivételkezelés és hasonló fogalmak alapos ismerete. De mit is jelent valójában az objektumorientált programozás és hogyan érdemes elsajátítani? Cikkemben ezekre a kérdésekre fogok fényt deríteni.
Mi az az objektumorientált programozás?
A szoftverfejlesztés kezdeti időszakaiban a strukturált programozás volt a mérvadó, ami egy idő után már kevésnek bizonyult, mert a programozók nem tudták hatékonyan megoldani az ügyféloldalon felmerülő igényeket. Egy komolyabb szoftverrel szemben támasztott fontos követelmények voltak például a karbantarthatóság, újrafelhasználhatóság, hordozhatóság, szabványosság és nem utolsó sorban a bővíthetőség. Éppen ezért egy olyan új programozási technikára volt szükség, amivel gyorsabban megoldhatóak a problémák és hatékonyan megvalósíthatóak a szoftverekkel szemben támasztott követelmények. Így született meg az objektumorientált programozási technika.
Az objektumorientált programozás során a megoldandó feladatot egy elemzéssel indítjuk, amelyben az információkat és a tárolt adatokat jól elkülöníthető és szorosan összetartozó csoportokba soroljuk, amelyekből majd megtervezzük az osztályokat. Ezt követően meg kell határoznunk az osztályok közötti ismertségi és a tartalmazási kapcsolatokat.
Az így létrejött osztályszerkezet definiálja majd a rendszerben résztvevő objektumokat és azok funkcionalitását. Az objektumok az osztályok konkrét megvalósult példányai, amelyek könnyedén leképezhetőek a valós életre, mivel illeszkednek a környező világ építőköveihez. Ezáltal a programozói gondolkozás kevésbé hasonlít a gépi gondolatmenetre, sokkal közelebb áll az emberi gondolatmenethez, ami már kezdetek óta fontos célkitűzés volt a programnyelvek megalkotásakor. Ezzel a megközelítéssel a nagyobb programok bonyolultsági szintje csökkenthető, valamint növelhető a hatékonyságuk és a megbízhatóságuk.
Vegyük példának a naprendszerünket és alkossuk meg annak objektumorientált modelljét!
- Első lépésben gondoljuk végig, milyen adatokat kell tárolnunk a modellünkben! Ilyen adatok lehetnek például: az égitest neve, átmérője, abszolút fényessége, holdjainak száma, naprendszerben elfoglalt pozíciója.
- Keressük meg a legkisebb egységet, amiből fel tudjuk építeni a teljes rendszert! Ez az egység az
Égitest
. Hiszen aNap
és aBolygók
is égitestek, valamint vannak közös tulajdonságaik, amik a név és az átmérő. Tehát definiálnunk kell egyÉgitest
osztályt ezekkel a tulajdonságokkal. - A
Nap
és aBolygó
is rendelkezik az égitestek tulajdonságaival, tehát ezek közös őse azÉgitest
osztály (szülői viszony, öröklődés). ANap
még ezen felül rendelkezik az abszolút fényességgel, aBolygó
pedig a holdak számával és a naprendszerben elfoglalt pozíciójával. Tehát még további két osztályt kell definiálnunk ezekkel a tulajdonságokkal. A leszármazott osztályok öröklik a szülők tulajdonságait, sőt felül is definiálhatják és kibővíthetik azokat. - Most, hogy megvannak az osztályaink és a közöttük lévő kapcsolatok, hozzunk létre belőlük objektumokat!
- A
Nap
objektum neve: Nap, átmérője: 1 392 700 km, abszolút fényessége (magnitúdója): +4,83.
ABolygó
objektum neve: Föld, átmérője: 12 742 km, holdjainak száma: 1, naprendszerben elfoglalt helye: 3. - Mindkét létrejött objektum használja az
Égitest
osztályban definiált adatokat és tovább bővítik a saját adataikkal.
A példából jól látható, hogy az osztályok úgynevezett mintaként szolgálnak a belőlük létrehozott konkrét objektumokhoz. Ez a kis ízelítő remélem, jó volt ahhoz, hogy lásd, milyen gondolatmenetet igényel az objektumorientált programozás.
Természetesen a fenti példában sokkal több adattal és kapcsolattal is dolgozhattunk volna, de annyira mélyen nem szerettem volna belemenni a részletekbe. A célom csupán a logika bemutatása volt, amiből látható a strukturált és az objektumorientált programozási szemlélet közötti alapvető különbség.
Hogyan érdemes objektumorientált programozást tanulnod?
Én azt javaslom, hogy elsőnek meg kell ismerkedned a kiválasztott programnyelv alapjaival, majd ezt követően kell ráépítened az objektumorientált programozási ismereteket. Nem érdemes egyszerre tanulnod mindkettőt, mert nagyon hamar elveszhetsz benne, ami csak elveheti a kedved az egésztől.
Keress egy jó elméleti könyvet, amiből elsajátíthatod a szükséges anyagrészeket, majd gyakorolj annyit, amennyit csak tudsz! Érdemes kreatív feladatokat keresni, hiszen minél változatosabb a feladatok környezete, annál jobban segítik a tananyag elsajátítását. Ha elakadsz egy témakörrel, akkor kérj segítséget, hogy minél hamarabb folytathasd a programozás tanulását!
Melyik nyelvet válaszd?
Ez a válasz nem olyan egyszerű, hiszen függ attól, hogy mi a célod vele. Én azt javaslom, hogy ha már objektumorientált programozásba vágsz, akkor a C++, a C# vagy a Java programnyelvek valamelyikét válaszd, hiszen ezek felhasználása eléggé széleskörű a vállalati szektorban. Mivel a Java a leguniverzálisabb és világszinten is a legelterjedtebb objektumorientált programnyelv, ezért kezdőként nagyon ajánlom az elsajátítását.
Milyen programozás könyvekből érdemes tanulnod?
Akármelyik tankönyvet vagy szakkönyvet választod, azt már most állíthatom, hogy nem lesz sok gyakorló feladat benne. Legalábbis annyi biztosan nem, ami elegendő ahhoz, hogy az adott témaköröket magabiztosan elsajátítsd. Ha ezt te is így érzed, akkor mindenképpen azt javaslom, hogy próbáld ki a saját kiadványaimat, amiket pontosan azért készítettem, hogy a kezdő programozóknak legyen elegendő gyakorló feladatuk.
Ha egyedül szeretnél tanulni, akkor javaslom neked a Hogyan készülj fel 3 hónap alatt az egyetemi vizsgára JAVA nyelven? című e-könyvemet, ami az alapoktól kedve egy 13 hetes ütemtervvel segít neked, hogy milyen témaköröket és milyen sorrendben kell megtanulnod ahhoz, hogy sikerélményed legyen. Persze ha nem egyetemi vizsgára készülsz és 3 hónapnál több időt szánsz a programozás tanulásra, akkor neked nem kell 13 hét alatt teljesítened, inkább csak irányadónak szolgáljon a számodra.
12 éves tanári múlttal a hátam mögött úgy döntöttem, hogy összeállítom a saját kétkötetes Programozz Te is mesterfokon! feladatgyűjteményemet, ami megoldja azt a régóta fennálló problémát, hogy milyen feladatokat oldjanak meg a kezdő programozók annak érdekében, hogy a tudásuk a lehető legmélyebb legyen. Munkafüzeteimben összesen 16 fejezeten, 330 gyakorló feladaton, 100 feleletválasztós kérdésen és 16 keresztrejtvényen keresztül vezetlek végig a legfontosabb programozás témakörökön. Közben pedig garantálom, hogy a kreatív feladatoknak köszönhetően a gyakorlás végig élvezetes marad. A munkafüzetek elméleti tananyagot nem tartalmaznak, de a 160 elméleti kérdéssel precízen le tudod ellenőrizni az elméleti tudásod, amit bármelyik másik könyvből vagy akár az internetről is össze tudsz szedni.
A Programozz Te is mesterfokon! Munkafüzet I. kötetet a legalapvetőbb programozási témakörök elsajátításához készítettem, amely az alábbi fejezeteken vezet végig:
- elemi feladatok (változók, konstansok, elágazások, ciklusok),
- egydimenziós tömbök (számtömbök és karaktertömbök),
- függvények (saját függvények, rekurzív függvények),
- mutatók (parancssori paraméterek, cím szerinti átadás, dinamikus memóriakezelés),
- kétdimenziós tömbök (mátrixok bejárása, egyszerűbb játékok),
- struktúrák (felhasználói típus, struktúra tömbök),
- fájlkezelés (fájlműveletek, bináris fájlok),
- láncolt listák (egyirányú, kétirányú és összetett listák),
- bináris fák (bináris fák bejárása, építése).
A Programozz Te is mesterfokon! Munkafüzet II. kötetemet kifejezetten az objektumorientált ismeretek gyakorlására állítottam össze, amely az alábbi témaköröket érinti:
- objektumorientált alapismeretek (egységbe zárás, osztályok, objektumok),
- öröklődés (absztrakt osztály, interfész, felüldefiniálás, felültöltés, többalakúság),
- nyelvi alapelemek (Stringek, csomagolóosztályok, Enum),
- idő- és dátumkezelés (idő- és dátumkezelő osztályok, időzónák),
- kivételkezelés (kivételek lekezelése, saját kivételosztályok),
- fejlett adatszerkezetek (halmazok, listák, leképezések, generikus adatszerkezetek),
- adatfolyamok (bemeneti és kimeneti adatfolyamok).
A munkafüzetek szerkezetéből jól látható, hogy ha kezdőként indulsz neki egy objektumorientált programozási nyelvnek, akkor mindkét kötetre szükséged lesz. Az elsőben megtanulod az alapokat, a másodikból pedig tovább építkezel az objektumorientált témakörökkel. Így biztosan könnyebb lesz a tanulás és garantált lesz a sikerélmény is.
Kitől kérj segítséget?
Ismerősöktől, barátoktól, kollégáktól, bárkitől, akiben megbízol és hiszed, hogy a tudásával képes segíteni neked. Ma már nagyon sok online tanfolyam is elérhető, de ezekről mindenképpen kérd ki egy programozó ismerősöd véleményét, hiszen nagyon sok a sokat ígérő de keveset adó tanfolyam, amit kezdőként nehéz kiszűrni.
Ha pedig nincs ilyen ismerősöd vagy nem szeretnél sokat kockáztatni, akkor keress engem személyesen vagy online. Segítségemmel magabiztos programozás tudásra tehetsz szert és garantálom, hogy az objektumorientált programozás tanulás minden perce élvezetes lesz számodra.
A bejegyzés kulcsszavai
- Objektumorientált programozás, Objektumorientált Java programozás
- Programozási nyelvek