[[oktatas:programozás|< Programozás]] ====== Objektum Orientált Tervezés ====== * **Szerző:** Sallai András * Copyright (c) 2014, Sallai András * Szerkesztve: 2024 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== A szoftver készítés folyamata ===== Az következő ábra bemutatja egy szoftver tervezésének menetét. {{:oktatas:programozás:oo_tervezes.png|}} ===== Fogalmak ===== ^ Általános ^ Konkrét ^ | Osztály | Objektum \\ példány \\ instancia | | Dolgozó | Jóska | Az osztály valamilyen szempontból összetartozó elemeket képvisel. Az objektum az osztály egy konkrét példánya. Egy osztály tulajdonságokból (attribútum) és viselkedésekből (műveletek) áll. * Osztály * tulajdonságok (attribútumok) * viselkedések (műveletek) ===== A Java osztályhierarchia részlet ===== Az osztályok hierarchiába szerveződnek. Minden osztály az Objekt ősosztályból származik, ez a gyökérosztály. {{:oktatas:programozás:java_objektum_hierachia.png|}} ===== Sarga Zrt példa ===== * + public - látható a külső objektumok számára * - private - csak az adott objektum számára elérhető * # protected - gyermek és barát osztályok számára elérhető {{:oktatas:programozás:sargazrt_osztalydiagram.png|}} A háttérben minden megalkotott és gyökér osztálynak kinevezett osztálynak is van egy [[https://docs.oracle.com/en/java/javase/20/docs/api/java.base/java/lang/Object.html|Object]] nevű őse. Ez a kapcsolat akkor is létrejön, ha nem jelöljük örökléssel. Vegyük például a Szemely osztályt: class Szemely { String nev; Integer kor; } A háttérben olyan, mintha ezt csináltuk volna: class Szemely extends Object { String nev; Integer kor; } {{:oktatas:programozas:szemely_object.png|}} Vegyünk egy Employee nevű osztályt, ahol szintén nem állítunk be öröklést: class Employee { Integer id; String name; String city; Double salary; LocalDate birth; } class Employee extends Object { Integer id; String name; String city; Double salary; LocalDate birth; } {{:oktatas:programozas:employe_object.png|}} ===== Iskola példa ===== {{:oktatas:programozás:iskola_osztalydiagram.png|}} ===== Tervezési stratégia ===== Az OOP programozás során egy-egy osztályt úgy alakítsunk ki, hogy egy osztály csak egy dologért legyen felelős. Angolul ezt Single Responsibility Principle, röviden SRP-nek nevezzük, magyarul egyedüli felelősség elve.