[[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.