1. gyakorlat
A gyakorlat anyaga
A követelmények elérhetőek a CooSpace felületén is, a Programozás I. gyak. IB204L-X
(ahol X a gyakorlatod sorszáma) színtérre kattintva, a Követelmények
menüpontban.
Követelmények
A foglalkozásokon való részvétel követelményei és a távolmaradás pótlásának lehetősége
Kötelező megjelenni minden gyakorlaton. Kettőnél több igazolatlan hiányzás esetén (az első két hetet kivéve) a kurzus nem teljesítettnek minősül. Az igazolatlan hiányzások nem eshetnek a zárthelyi dolgozatok időpontjára. A hiányzásokat a TVSZ 8.10.9. pontja szabályozza, ezek az irányadóak.
Az igazolás módja a foglalkozásokon való távollét esetén
A távolmaradás időpontjára szóló orvosi igazolás, melyet a gyakorlatvezetőnek kell bemutatni a távolmaradás okának megszünését követő első tanórán vagy a gyakorlatvezető fogadóóráján.
A félévközi ellenőrzések (beszámolók, zárthelyik) száma, témaköre és időpontja, pótlásuk és javításuk lehetősége
A félév során 5 zárthelyi dolgozat kerül megírásra: 3 db 15 perces röpdolgozat (3*10 pont) és 2 db 90 perces zárthelyi dolgozat (2*35 pont).
Röpdolgozatok
3 darab 10 pontos röpdolgozat, melyek a gyakorlatok első 15 percében kerülnek megíratására.
- röpdolgozat időpontja: 4. héten, gyakorlaton
- röpdolgozat időpontja: 6. héten, gyakorlaton
- röpdolgozat időpontja: 11. héten, gyakorlaton
Zárthelyi dolgozatok
2 darab 35 pontos, számítógép előtt megírandó dolgozat, melyek a gyakorlat idejében kerülnek megíratásra.
- zárthelyi időpontja: 9. héten, gyakorlaton
- zárthelyi időpontja: 14. héten, gyakorlaton
Pótlás
Azok pótolhatnak, akik igazoltan nem tudták megírni valamelyik zárthelyi dolgozatot.
- Röpdolgozatok pótlásának időpontja: gyakorlatvezetővel egyeztetve.
- Zárthelyi dolgozatok pótlásának időpontja: a szorgalmi időszak utolsó hetében, gyakorlaton.
Javítás
Azok javíthatnak, akik nem érték el valamelyik részteljesítésből a minimumot. A javító az egész félévi anyagból van összeállítva. Érvényteleníti az addig megírt zárthelyi dolgozatokat, röpdolgozatok. Elérhető maximális pontszám: 50
- Időpontja: a szorgalmi időszak utolsó hetében, gyakorlaton.
Évközi teljesítések szorgalmi időszak utáni javítása, pótlása nem lehetséges.
A félév teljesítésének követelményei
- Legalább 50%-os röpdolgozat összpontszám
- Legalább 50%-os zh összpontszám
Az osztályzat kialakításának módja
- Röpdolgozatok: max. 30 pont
- ZH-k: max. 70 pont
- Összesen: max. 100 pont
A számonkéréseken kívül a hallgatóknak lehetőségük van pluszpontok szerzésére is, az órán való aktív részvétellel, szorgalmi feladatok megoldásával, szorgalmi projekt elkészítésével. Ezek csak és kizárólag az elégséges szint elérése után érvényesek.
Szorgalmi projekt
A hallgató a félév folyamán egy szabadon választható szorgalmi projektet készíthet, amellyel legfeljebb 15 plusz pontot szerezhet, a megoldás minőségétől függően. A lehetséges feladatok listája elérhető itt A választott feladatot a gyakorlatvezetővel egyeztetni kell. A szorgalmi feladattal szerezhető pontszámok csak akkor élnek, ha a hallgató legalább 70 pontot gyűjt a félév során.
A feladat beadásának határideje: 13. hét, a gyakorlatvezetővel egyeztetve.
Ponthatárok A gyakorlati pontozás a következőképpen alakul:
- 0-49 elégtelen (1)
- 50-62 elégséges (2)
- 63-75 közepes (3)
- 76-88 jó (4)
- 89-100 jeles (5)
A számonkérés során felhasználható segédletek
A számonkérések során semmilyen segédlet nem használható.
Egyéb A nem hivatalos egyetemi címről (...@stud.u-szeged.hu) küldött levelek semmisnek minősülnek és azokra nem válaszolunk.
Feladatok
- Java JDK telepítése saját számítógépre.
Kapcsolódó linkek
A Java használatával, telepítésével kapcsolatos, gyakori problémák és megoldásuk angol nyelven. Ha valakinek ezektől eltérő problémája van, az keresse meg a gyakorlatvezetőjét e-mailben.
Java nyelvről röviden
- Az Oracle angol nyelvű bevezetője
- Platformfüggetlen programozási nyelv.
- JVM: Java Virtual Machine - Java virtuális gép
- A Java virtuális gép minden architektúrán különbözik
- Bájtkód: Egy olyan bájtsorozat, amely a JVM által végrehajtható utasításokat tartalmaz
- JIT: Just In Time - Futás idejű "fordítás"
- a nyelv felépítésének koncepciója
- a C-vel ellentétben a Java forrásfájlok tartalmazhatnak Unicode, pl.: UTF-8 karaktereket is
A kép forrása, ahol bővebben olvashatsz a Java virtuális gép működéséről
JRE/JDK
JRE - azaz Java Runtime Environment - beszerzése külön itt lehetséges. Ez biztosítja a Java alkalmazások futtatásának minimális követelményeit, mint például a JVM (Java Virtual Machine) vagy például a böngészők számára a Java beépülő modult és a Java Web Startot is.
A JDK - azaz Java Development Kit - beszerzése itt lehetséges. A JDK tartalmazza a Java alkalmazások futtatásához, valamint azok készítéséhez, fordításához szükséges programozói eszközöket is (tehát a JRE-t nem kell külön letölteni, a JDK tartalmazza). Így otthonra is a JDK telepítését javasoljuk.
Első Java nyelvű programunk
A kapcsolódó Oracle oldal.
A fájl elérhető a /pub/Programozas-I/nappali/gyakorlat/01/HelloWorld.java
útvonalon.
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); //Kiírja, hogy Hello World! } }
Láthatjuk, hogy a main
függvény visszatérési értéke void
. Ez C-ben egy int
volt, amely a program lefutásának helyességéről árulkodott. Javaban a hibakezelés teljesen más koncepción alapul, amit a későbbi órákon részletesen ismertetünk.
Fordítás, futtatás
Fordítás
Az elkészült fájlt mentsük el HelloWorld.java
néven. Fontos, hogy mindig olyan néven mentsük el a fájlt, ami a publikus osztályunk neve. Most már csak a fordítás, majd futtatás van hátra. Az elkészült programokat a parancssorból a javac
nevű fordítóval fordítjuk le, a következőképp: javac FájlNeve.java
, jelen esetben javac HelloWorld.java
(A Java fordítóról, kapcsolóiról bővebben olvashatsz ezen az oldalon). Normál esetben a parancs kiadása után semmilyen válasz sem érkezik, csak visszakapjuk a kurzort egy idő után.
A fordítás befejezése után látnunk kell a HelloWorld.java
fájl mellett egy HelloWorld.class
nevű fájlt is. Ez a fájl tartalmazza az elkészült Java bájtkódot, amelyet aztán hordozhatunk, és bármely gépen futtathatjuk, ahol van egy Java virtuális gép (azaz a célszámítógépen telepítve van a JRE).
Futtatás
Az elkészült alkalmazás futtatása a java
paranccsal történik, melynek használata a következő: java FoOsztaly arg1 arg2 arg3 ... argN
, jelen esetben java HelloWorld
. Fontos, hogy a HelloWorld
után nem szerepel a .class
kiterjesztés, a JRE automatikusan odateszi. A parancs hatására a JRE megkeresi a megadott osztályt a fájlrendszeren, majd miután betöltötte, a benne található main()
metódust kezdi el futtatni. Ha nem találja a binárist, vagy nincs benne main
, hibával kilép.
Megjegyzés A fordítás után elkészült
.class
kiterjesztésű fájlba belenézhetünk a JDK-ban szereplőjavap
paranccsal, vagy akár vissza is fejthetjük őket, így a C-vel ellentétben (ahol a fordítás végső eredménye egy bináris fájl), itt erre is figyelnünk kell a későbbiekben.
Kommentek, javadoc
Egyszerű kommentek
- Hagyományos,
/*
és*/
közé írt komment, ismerős lehet C-ből. - Egysoros komment, amely a kiírástól a sor végéig kommentet fog jelenteni:
// komment
Javadoc kommentek
Segítségével a forráskódba írt kommentekből HTML alapú dokumentáció generálható. Egy példa a generált HTML oldalra.
Sokféle generátor létezik, a legismertebb a Java JDK-ban is meglévő javadoc nevű alkalmazás, melyről bővebben itt olvashatsz, de ezen kívül számtalan alternatíva létezik: Doc-O-Matic, Doc++, Doxygen
Használata egyszerű, a hagyományos kommentezés helyett a /**
és */
közé írjuk a kommenteket, majd ezekben használhatunk különféle speciális hivatkozásokat, melyek az elkészült dokumentációban speciálisan jelennek meg. Néhány példa:
@author
- szerző@version
- verzió@param
- paraméter@throws
- kivételek, amiket dobhat az adott függvény/osztály@return
- visszatérési érték@see
- hivatkozás más osztályokra
Az összes speciális hivatkozás és leírásuk elérhető ezen a linken.
/** * Hello World program. * @author Elso Hallgato * @author Masodik Hallgato * @version 1.0 */ public class HelloWorld { /** * A main fuggveny * * @param args a parancssori parameterek. * @author Elso Hallgato * @version 1.0 */ public static void main(String[] args) { System.out.println("Hello World!"); } /** * Osszeadas * * @param a az elso szam. * @param b a masodik szam. * @author Masodik Hallgato * @version 0.8 * @return a szamok osszege. */ public static int add(int a, int b) { return a+b; } }
Az elkészült forráskódból elkészíthetjük a dokumentációt a beépített javadoc
paranccsal, a jelenlegi példában javadoc HelloWorld.java
, majd az elkészült fájlok közül nyissuk meg az index.html
fájlt.
Beolvasás az alapértelmezett inputról
Az alábbiakban bemutatjuk, hogy hogy kell az alapértelmezett bemenetről beolvasni egy szöveget, számot. Ennek célja, hogy az olvasó elkezdhessen interaktív alkalmazásokat készíteni. Nem célunk, hogy minden részletet megismertessünk, elmagyarázzunk, a részletes ismertetés egy későbbi gyakorlaton lesz.
import java.util.Scanner; public class Beolvasas { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Hello! Hogy hívnak?"); String nev = sc.nextLine(); System.out.println("Hello " + nev + "! Hany eves vagy?"); int kor = sc.nextInt(); System.out.println("Hello " + nev + ", aki " + kor + " eves."); } }
Fejlesztői környezetek, az Eclipse használata
Az Eclipse egy integrált fejltesztői környezet, amely arra szolgál, hogy megkönnyítse a programozást. Számos módon egyszerűsíti munkánkat: ez magába foglalja a programozás alapjaiból ismert szintaxis-színezést, és sok mást is, mint például hibakeresést, vagy az egy gombnyomással történő futtatást. Számos hasonló fejlesztői környezet is létezik, mint például a NetBeans vagy az IntelliJ.
Indításkor mindig a workspace választó ablak nyílik meg, ebben kiválaszthatjuk, hogy mely könyvtárban szeretnénk dolgozni. Az adott workspace-en belül könnyen és gyorsan el tudjuk érni projektjeinket és ezeken belüli fájljainkat. Ettől persze még lehetséges a workspace-en kívüli fájlok megnyitása is, illetve később másik wokspace kiválasztása.
Indítás után egy részekre tagolt felületet kapunk. Ezen részek számunkra lefontosabbjait tekintjük most át.
A Package Explorer jeleníti meg a kiválasztott workspace tartalmát. Ez annyit jelent, hogy itt láthatjuk sorban a projektjeinket, illetve az azokban felhasznált fájlokat. Minden projektben lesz egy src
mappánk, amely a projekt létrehozásakor generálódik. Ebbe írjuk a tényleges programkódot. Itt csomagokban tárolhatunk fájlokat. A gyakorlatban a csomagok is egyszerű könyvtárak, ne ijedjünk meg tőlük. Az src
mappa mellett láthatunk egy JRE System Library
nevű fájlt. Ez a futtató környezetet tartalmazza, ettől sem kell megijedni.
Alul található egy sáv, melyen több funkciót is elérhetünk. Ebből jelenleg nekünk legfontosabb a konzol, amely a default kimenetet jelenti. Tehát ha kiírunk egy szöveget a már látott módon, akkor azt itt láthatjuk majd.
A középső nagy terület a munkaterület, ahol a tényleges programozást végezhetjük. Ehhez természetesen meg kell nyitnunk egy fájlt, amiben dolgozhatunk.
Új programot általában új projektben szoktunk készíteni. Két ugyanolyan nevű projekt nem lehet egy workspace-en belül.
Ha van egy új projektünk, akkor a tényleges programozáshoz fájlokat kell készítenünk, amiben dolgozhatunk. Ezt jelen esetben úgy tehetjük, ha osztályokat hozunk létre az src
mappán belül. Ha nem adunk meg csomagot, akkor az osztály a default package csomagba kerül, amely úgy tekinthető, hogy egyszerűen az src
mappában van. Egy csomagban csak egy ugyanolyan nevű osztály létezhet.
Ha bepipáljuk a main függvény generálását, akkor rögtön futtatható osztályt generálunk. Ebből csupán egy sor hozzáadásával készíthető Hello World program. Az Eclipse további segítséget is nyújt, Ctrl + Space billentyűkombinációval automatikusan ki is egészíti megkezdett parancsainkat vagy neveinket.
Futtatni a felső eszköztáron található kis zöld körrel, illetve Ctrl + F11 billentyűkombinációval tudunk.
Amennyiben valami hibát vétünk, a futtatás nem lehetséges. Ezt már korábban is láthatjuk, mivel az Eclipse piros aláhúzással jelzi a hibásan írt neveket, illetve az egyéb hibákat: pl. hiányzó pontosvessző. Ha hosszabb kódunk van, segítséget nyújthatnak a hibák megtalálásában az oldalt elhelyezett piros jelek, amelyekre kattintva a hibás kódrészre ugorhatunk.
Ha nem szintaktikai hibát vétünk, viszont valami egyéb olyan műveletet végzünk, amely az Eclipse szerint nagy valószínűséggel helytelen vagy értelmetlen, akkor ezt sárga aláhúzással jelzi. Ettől még tudjuk futtatni a programot, de az ilyen eseteket érdemes átvizsgálni. Ilyenek lehetnek: felesleges változók (amiket létrehozunk, de nem használjuk semmire), halott kódrészletek (olyan kódrészletek, amelyek nyilvánvalóan nem fognak sosem lefutni, lásd a példákat).
boolean igaz = true; if (igaz) { // mukodes } else { // halott kod }
Példa halott kódra.
public static int add(int a, int b) { return a+b; System.out.println("Ez egy halott kodreszlet."); }
Példa halott kódra.
A képen azért panaszkodik az Eclipse, mert a deklarált változóval nem csináltunk semmit, tehát feleslegesnek ítéli.
Online fejlesztői eszközök
Manapság már számos online fejlesztői eszköz közül válogathatunk, amelyek eltérő lehetőségeket, funkciókat kínálnak. Ezek használata hasznos lehet, ha esetleg vendégségben vagyunk vagy olyan számítógép előtt ülünk, ahol nincs Java és nem is telepíthetünk (pl.: nincs adminisztrátori jogosultságunk), esetleg gyorsan, akár tabletről, telefonról szeretnénk egy kódot kipróbálni. Néhány online fejlesztőkörnyezet, melyből válogathatunk: IdeOne, CompileJava, TutorialsPoint Java compiler, CodeChef, Browxy, JDoodle. Otthoni, mindennapos használatra azonban nem javasoljuk őket, mert ezek az eszközök számos limitációval rendelkezhetnek.
Feladatok
- Írj egy programot, ami százszor kiír egy tetszőleges szöveget, valamint azt, hogy hányadiknál jár éppen!
- Írj egy programot, ami kiírja a parancssori argumentumokat, és azok számát!
Kapcsolódó linkek
A gyakorlat anyaga
Az UML modellezés alapjait nézzük meg, bővebben az UML osztálydiagrammal foglalkozunk. Ez a gyakorlati oldal csak vázlatszerűen tárgyalja a témát, az előadáson (és az előadásanyagban) ennél jóval részletesebb tananyag áll rendelkezésre. Az előadás anyaga elérhető a /pub/Programozas-I/nappali/eloadas/
útvonalon. Az előadáson kívül érdemes lehet megnézni Tarczali Tünde: UML diagramok a gyakorlatban című jegyzetét, illetve további kapcsolódó anyagok találhatóak a Kapcsolódó anyagok menüpontban. Az UML-ről egy általános összefoglalót találhatunk a Rendszerfejlesztés II. kurzus tananyagában, amely elérhető a /n/pub/Rendszerfejlesztes-I/gyakorlat/nappali/05/rf-uml.ppt
oldalán
Alapok
- UML - Unified Modeling Language (Egységesített Modellező Nyelv)
- Hivatalos oldal, amelyen elérhető a nyelv teljes specifikációja és dokumentációja
- Wikipédia leírás az UML-ről magyar, illetve angol nyelven
- Előnyei
- Nyílt szabvány
- A szoftverfejlesztés ciklusainak mindegyikét támogatja
- Hatalmas tapasztalati tudásra épít
- Sok eszköz és sok cég támogatja, fejleszti a szabványt
- Használhatjuk szoftverrendszer elemeinek
- vizualizálására
- specifikálására
- létrehozására
- dokumentálására
- Modell: egy teljes rendszer leírása
- Diagram: a rendszer egy részének, valamely szemszögből való vizuális leírása
- Két nagy részre bontható alapvetően
- Statikus modellek, például:
- Osztálydiagram, leírás
- Objektumdiagram
- Csomagdiagram
- Komponensdiagram
- Dinamikus modellek, például:
- Állapotdiagram
- Szekvenciadiagram
- Használati eset (use case) diagram
- Statikus modellek, például:
Az objektum
Az objektum egy entitás ábrázolása (ez lehet valós - lámpa, autó - vagy pedig elvont - matematikai függvény, zombi - amely rendelkezik állapottal, viselkedéssel, identitással.
Állapot
Egy az objektum lehetséges létezési lehetőségei közül (a tulajdonságok aktuális értéke által meghatározva). Ez időben változó lehet, pl.: egy lámpa ami ki van kapcsolva, egy későbbi időpontban be lehet kapcsolva.
Egy programban ez gyakorlatilag változókat fog jelenteni, amelyek valamely típusbeli konkrét értékkel rendelkeznek (pl.: egy lámpa objektum aktuális tulajdonsága egy boolean
típusú változó, amely True
vagy False
értékeket vehet fel, és ez jelöli azt, hogy az adott lámpa be van-e kapcsolva; egy autó objektum egy tulajdonsága lehet, hogy éppen mekkora sebességgel halad, amelyet reprezentálhatunk egy int
típusú változóval, és adott autó konkrétan az int
értéktartományon belül egy adott értékkel halad, amely természetesen változhat, és jellemzően változik is.
Viselkedés
Az objektum viselkedése annak leírása, hogy az objektum hogy reagál más objektumok kéréseire. Az objektum kérésre csinál valamit, ami akár az állapotát is megváltoztathatja.
Egy programban ez gyakorlatilag metódusokat fog jelenteni, pl.: lámpa objektum bekapcsol()
, kikapcsol()
nevű metódusai, melyek megváltoztatják az állapotát; autó objektum gyorsit()
, lassit()
nevű metódusai, melyek a pillanatnyi sebességet változtatják meg.
Identitás
Minden objektum egyedi, még akkor is, ha éppen ugyanabban az állapotban vannak, és ugyanolyan viselkedést képesek megvalósítani.
Ez gyakorlatilag azt jelenti, hogy hiába van két, azonos gyártó által gyártott, ugyanolyan típusú, színű autó objektum, melyek pillanatnyilag éppen ugyanakkora sebességgel haladnak, ez a két autó objektum akkor is különböző.
Osztályok
Fogalma
Az osztály gyakorlatilag egy adott objektumcsoport "formai" leírása. Egészen konkrétan objektumok csoportjának leírása, amelyeknek közösek az attribútumaik, operációik, más objektumokkal való kapcsolataik és szemantikus viselkedésük. Az osztály egy adott objektum típusát jelenti. Az osztályokat csoportosíthatjuk valamilyen logika szerint, akár hierarchikusan, csomagokba.
Megjegyzés
Az osztály egy adott objektum típusa, azaz az objektum egy osztály példánya. Van egy konkrét autó objektumunk, amelyet a Toyota gyártott, Corolla típusú, fekete színű és éppen 46 km/h-val halad. Ez pontosan egy osztály példánya lehet, jelen esetben az autó osztály példánya. Az autó osztály tárolja, hogy ki gyártotta (szöveges), milyen típusú (szöveges), milyen színű (szöveges), és éppen mennyivel halad (egész).
Osztálydiagram - class diagram
Az osztálydiagram az osztályoknak és azok kapcsolatainak összefoglaló diagramja. Az osztályok csomagokba kerülhetnek itt is. Ez a diagramtípus az egyik legalapvetőbb, és legtöbbet használt diagramtípus, amellyel modellezhetjük az osztályainkat, és az azok között lévő kapcsolatokat. Az osztálydiagramokról bővebben az előadáson esett szó, illetve olvashatunk ezen és ezen a linken.
UML osztálydiagram elemei
Egy UML osztálydiagram elemei az osztályok, és az osztályok közötti kapcsolatok.
Osztály
Az osztály jele a téglalap. A téglalapnak 3 része van: a felső részbe írjuk az osztály nevét, a középső részbe kerülnek az osztályhoz tartozó adattagok, általában típusmegjelöléssel. A nagy téglalap alsó részébe kerülnek az osztályhoz tartozó metódusok.
Kapcsolatok
Objektum-kölcsönhatásokat valósítanak meg. Alapvető kapcsolatok osztályok között: asszociáció, aggregáció (gyenge, erős), öröklődés. Ezen kapcsolatoknak különböző tulajdonságai lehetnek (név, irány, szerep, multiplicitás, stb).
Asszociáció
Osztályok közötti kétirányú összeköttetés, megadható az iránya (az üzenet iránya). A kapcsolatban résztvevő osztályok léte egymástól általában független, de legalább az egyik ismeri és/vagy használja a másikat. Gyakorlatilag az osztályokból létrejövő objektumok között van összefüggés.
Jele: a két osztály között húzott vonal, adott esetben nyíllal valamelyik végén.
Az asszociáció tulajdonságát az asszociációhoz húzott szaggatott vonallal jelölhetjük, ahogy az a fenti példán is látható. A fenti példán a Személy és a Lakás közötti kapcsolatnak van egy Lakik
tulajdonsága.
Aggregáció
Az aggregáció egy rész-egész kapcsolatot jelent, az asszociáció egy speciális, erősebb formája. Az egyik objektum fizikailag is tartalmazza, vagy birtokolja a másikat, mégpedig úgy, hogy a rész-objektum(ok) létezése az egész-objektumtól függ.
Jele: a két osztály között húzott vonal, egy rombusszal a tartalmazó oldalán
Gyenge aggregáció
Egy speciális asszociáció, amelynél a tartalmazó létezhet a tartalmazott nélkül is, pl.: alma és kukac.
Jele: a két osztály között húzott vonal, egy üres rombusszal a tartalmazó oldalán
Erős aggregáció - kompozíció
Ez egy erősebb fizikai tartalmazás, itt a részek élettartama szigorúan megegyezik az egészével, pl.: ember-fej, lakás-gerendaszerkezet.
Jele: a két osztály között húzott vonal, egy teli rombusszal a tartalmazó oldalán
Öröklődés
Egy olyan osztályok közötti kapcsolat, ahol az egyik osztály megosztja a struktúráját és/vagy viselkedését egy vagy több másik osztállyal. Öröklődéssel egy egész hierarchiát készíthetünk, a származtatott osztály örököl az ősosztály(ok)tól. Ez az újrafelhasználhatóság egyik alapeszköze. Az öröklődés relációnak nincs neve, multiplicitása.
Öröklődés során az attribútumokat (egy programban gyakorlatilag tagváltozókat) és operációkat a lehető legfelső szinten definiálni kell.
A származtatott (gyerek) osztály mindent örököl az őstől (attribútumokat, viselkedést, kapcsolatokat is), és kiegészítheti ezeket sajátokkal.
A származtatott osztály egy örökölt operációnak saját implementációt is adhat. Ezt nevezzük felüldefiniálásnak (overriding), ez a polimorfizmus alapja.
A tipikus öröklődési szintek száma (ős-gyerek viszony) 3-5 körül szokott lenni.
Többszörös öröklődés
Előfordulhat, hogy egy osztály nem csak egy, hanem több ősosztálytól is örököl, azaz az összes ősének az összes tulajdonságát és operációját megörökli, ezt nevezzük többszörös öröklődésnek. Ezzel azonban érdemes vigyázni, hiszen ha egy osztály sok másik osztályból öröklődik közvetlenül, akkor az osztály könnyen átláthatatlanná, kezelhetetlenné válhat.
Megjegyzés
A legtöbb objektum-orientált nyelvben, így Java-ban, és C#-ban sincs többszörös öröklődés, de pl. a C++, Python nyelvekben van.
Eszközök
- ArgoUML Letöltés
- BOUML Letöltés
- Violet UML Editor Letöltés vagy WebStart
- Gliffy Letöltés vagy WebStart
- Modelio Letöltés
Gyakorlati példák
Az Irinyi kabinet modellje
Feladatok
- Modellezd a bankkártyás fizetést! A modellben szerepeljenek a következő osztályok, valamint a közöttük lévő kapcsolatok: megoldás első, második
- Bank
- Számla
- Személy
- Kártya
- Terminál ( kétfajta: automata és POS )