Čtvrté cvičení Objektové programování Objektový model v Javě Instance, konstruktor Statické položky a metody
Objektové programování Nejblíže „lidskému“ vnímání světa Objekty mají vlastnosti – zachycují stav objektu schopnosti – popisují chování objektu dědičnost, zapouzdření, polymorfizmus abstrakce Java cv2
Objektový popis - příklad geometrické těleso obvod obsah obvod obsah strana obvod obsah poloměr čtverec kruh obvod obsah strana barva výplně barevný čtverec dědičnost Java cv2
Objektový model v Javě Objekt ~ třída (class) Vlastnost ~ položka Schopnost ~ metoda Př.: class Ctverec { //třída int strana; //položka int obvod() { //metoda return strana*4; } Java cv2
Instance objektu, konstruktor dynamicky vytvořený objekt určité třídy vytváření instancí typicky pomocí operátoru new Př.: Ctverec ctv = new Ctverec(); Java cv2
Konstruktor Konstruktor speciální metoda zavolaná při vytváření objektu jmenuje se stejně jako třída nevrací žádný výsledek může mít parametry jako každá jiná metoda třída může mít více konstruktorů implicitní konstruktor, pokud není žádný uveden Java cv2
Konstruktor – příklad Definice: Použití: class Ctverec { //třída int strana; //položka Ctverec (int delkaStrany) { //konstruktor strana = delkaStrany; } Ctverec () { //konstruktor strana = 1; int obvod() { //metoda return strana*4; Použití: Cverec ctv2 = new Ctverec(20); Java cv2
Přístup k vlastnostem objektu tečková konvence! Přístup k položkám ctv.strana; Přístup k metodám ctv.obvod(); Př.: Ctverec ctv = new Ctverec(); ctv.strana = 10; int obvodCtverce = ctv.obvod(); System.out.println(“Obvod:“+ obvodCtverce ); Java cv2
Statické položky a metody Nepatří instanci ale třídě Společné pro všechny instance dané třídy Př: class Ctverec { static int pocetInstanci; int strana; Ctverec () { pocetInstanci++; strana = 1; } Přístup ke statickým položkám: Ctverec.pocetInstanci; Java cv2
Řízení přístupu k objektu Úrovně přístupu (modifikátory) public – přístupné jakémukoliv objektu protected – přístupné potomkům (a třídám ze stejného balíku) private – přístupné pouze v rámci třídy Př: class Ctverec { //třída private int strana; //položka public Ctverec (int delkaStrany) { //konstruktor strana = delkaStrany; } public int obvod() { //metoda return strana*4; Java cv2