Programozás s 2 Objektum Orientált Programozás Alapok utolsó változtatás s 2008.04.12.
Alapok A programokat valamilyen "programozási nyelv"-en en írjuk A programozási nyelv formális (szintaktikai) és s tartalmi (szemantikai) szabályok gyűjtem jteménye Főbb programozási modellek (paradigmák) procedurális objektum orientált funkcionális
Paradigmák összehasonlításasa Procedurális programozás a program 'eljárások', 'függv ggvények', 'subrutinok' sorozata. Ezek egymást és s magukat is hívhatjh vhatják modularitás, változv ltozók, adatstrukturák k használata, program könyvtk nyvtárak (lib) a program állapotának (változ ltozók, proc. regiszterek, stb) változv ltozása vezérli rli 'imperatív v programozás'
Paradigmák összehasonlítása sa II. Objektum orientált programozás A program "objektumok"-ra lebontva működikm Objektum a programban egy egyedileg azonosít- ható struktura. Elsősorban sorban ez tartalmaz adatokat és módszereket (pl. változv ltozók, függvf ggvények, eljárások) Tisztán n objektum orientált: minden objektumokban van
Paradigmák összehasonlítása sa III. Logikai/descriptív v programozás logikai kapcsolatokra épül visszalépéses ses programvégrehajt grehajtás Mesterséges inteligencia programozás s kedvenc nyelve(i) Esemény orientált programozás A program futást (nem determisztikusan beérkez rkező) külső események - pl. felhasználói i input, hardvere, kommunikáci ció - szabják k meg
Paradigmák összehasonlítása sa IV. Funkcionális programozás matematikai függvf ggvényeken alapul, nem használ állapotokat és s változtathatv ltoztatható objektumokat Ilyen nyelvek pl. : APL, Mathematica, Haskell,Lisp, ML, F#, Scheme
Objektum Orientált Programozás Alaptulajdonságok (OOP) Magába foglalás s (encapsulation) Adat elrejtés az objektumok adatai "kívülr lről" l" nem láthatl thatóakak Modularitás Az objektumok a program építőkövei túlterhelés - "overload": ugyanazon néven n többfée e feladat végrehajtv grehajtása. A fordítás s során n a fordító dőnti el melyiket kell használnia.
OOP II. 1. operátorokra: Pl. a + jel a következk vetkező kifejezésekben 1+2 (egész számok), a+b (a, b valós s szám), A + B (vektorok, vagy mátrixok) m trixok), "vagy "+"karakterláncok" 2. függvényekre: pl. sqrt(int), sqrt(float), sqrt(double) 3. constructorokra: (default constructor, stb) Polimorfizmus ugyanazon néven n más m és s más m s feladatok felülírás "overriding" Leszármaztatott osztályokban ugyanaz a metódus mást m jelent. Feloldása futási időben.
OOP - alapfogalmak Osztály leírja az objektumokat 1. Mezők vagy változók vagy tulajdonságok 2. Metódusok vagy operáci ciók vagy függvények ezek lehetnek: 1. mások számára láthatl thatóak, ak, ("interface") 2. csak az osztály, barátai számára láthatl thatóak, ak, ill. 3. ugyanez a leszármaztatott osztályokra Objektum az osztály egy adott megvalósítása.
OOP - alapfogalmak Mező - a mezők értékeinek összessége adott pillanatban az objektum állapota. Módszerek - az objektum működése m és képességei Módszerek meghívása vagy üzenetek küldése Leszármaztat rmaztatás vagy Öröklődés objektumok hierarchiája. A leszármaztatott objektum a szülő objektum tulajdonságait örökli, illetve írja felül. l.
Programozási nyelvek Procedurális nyelvek pl: ADA, BASIC, Fortran, C, F, M, Matlab, Pascal, Perl, PHP,Python Sok OOP képes k nyelvben is lehet procedurális programokat készk szíteni Objektum Orientált programozásra (is) alkalmas nyelvek a legtöbb mai nyelvben/nyelvek újabb változataiban v van valami OOP lehetőség Pl.: Objective C, C++, C#, Java, Fortran, Pascel (Delphi), Perl,, PHP, Python, Smalltalk Megjegyzés: Lehet OOP-t t csinálni procedurális nyelven is, csak nehézkes
Programok készk szítésese technikai lépésekl 1. "Forrásk skód" megírása 2. gép g p számára érthető kód d előáll llítása. Ez lehetséges program értelmezőkkel (Interpreterekkel) forrásk skód d menet közbeni k értelmezése közbenső kód d (p-kód) létrehozl trehozása (fordítás), amit egy közbensk zbenső kód motor/értelmez rtelmező futtat fordítóprogram (compiler) linker párossal p (manapság g IDE-ben) a fordítóprogram OBJekt fájlokat f hoz létre. l Ezek már m r gépi g kódú k (a mikroporcesszoron végrehajthatv grehajtható) ) utasításokat sokat tartalmazó fájlok, de vannak benne külsk lső,, nem feloldott hivatkozások. Ebben vannak debug informáci ciók k is. Nem futtatható A linker feloldja a függf ggő hivatkozásokat és összekapcsolja az egyes OBJ fájlokat és s a könyvtk nyvtárakat (lib-eket) egy végrehajthatv grehajtható programmá.. Ennek a végén v n lehetnek debug informáci ciók, de azok nem töltt ltődnek be futtatáskor, csak, ha debugger-t t használunk. lunk. 3. program futtatása
Metodikák Programozási metodikák "Waterfall modell" a lépések l egymás s után n jönnek, j nincs visszalépés, s, USA "high risc projects" követelmények feláll llítása követelmények analízise a megoldás s megtervezése szoftver keretek létrehozl trehozása a kód k d megírása tesztelés telepítés s a felhasználókn knál utómunk munkák
Iteráci ciós s fejlesztés Metodikák k II. folyamatos javítása az egyes elkész szült részeknekr Inkrementális fejlesztés kezdetben kicsi és s egyre növekvn vekvő rendszer készítése, se, ahogy a tervezés s előrehalad az egyes programrészek különbk nböző idő alatt készülhetnek és s ezeket integrálj lják össze későbbk
"Agile programming" Metodikák k III. 'megrendelők', programozók, dokumentum készítők k együtt dolgoznak elsősorban sorban verbális kommunikáci ció a fontos, nem az írott rövid néhány n ny hetes fejlesztési si szakaszok közben is változhat v a célc motivált egyének együttm ttműködése
Metodikák k IV. ISO12207 a szoftverek kiválaszt lasztásának, megvalósításának és élettartama során nyomkövet vetésének nemzetközi zi szabványa (USA IEEE 12207) Programozási módszerek m (egyszerűsítés) s) felülr lről l lefelé (top-down) - javasolt lentről l felfelé (bottom-up) strukturált - feltétlen tlenül program helyesség g bizonyítás