Obsah přednášky. dědičnost modifikátory (specifikátory) přístupu

Rozměr: px
Začít zobrazení ze stránky:

Download "Obsah přednášky. dědičnost modifikátory (specifikátory) přístupu"

Transkript

1 OOPR_08 1

2 Obsah přednášky dědičnost modifikátory (specifikátory) přístupu private, public, protected konstruktor v dědičnosti deklarace nových objektů rozšiřování & přepisování (zastiňování) metod pravidla pro přetypování proměnných třída Object a její metody přetěžované metody 2

3 Dědičnost dědičnost je další základní charakteristika objektově orientovaného programování dědění tříd patří k nejvíce využívaným, ale také k nejvíce zneužívaným rysům objektově orientovaného programování jak využívat a jak nepoužívat dědičnost 3

4 Specializace - Zobecnění dva navzájem protichůdné pojmy využívané při tvorbě hierarchických struktur specializace: osoby na OU zaměstnanci administrativa učitelé studenti denní interní externí bakalářský program magisterský program 4

5 Specializace - Zobecnění zobecnění obrácený postup, zkušenosti získané ze zvláštních objektů zobecňujeme na rozsáhlejší obecnou skupinu např. čtverec, trojúhelník, kruh rozdílné tvary, zobecnění ní speciální případy obecného geometrického tvaru osoby mající něco společného s OU 5

6 Dědičnost tříd hierarchie s UML Student Bakalář Magistr Doktorand Denní_bakalář Distanční_bakalář Denní_magistr Distanční_magistr 6

7 Dědičnost versus kompozice při tvorbě software rozlišujeme mezi relací is-a a relací has-a relace has-a reprezentuje skládání objektů: kompozice, agregace relace is-a reprezentuje dědičnost např. auto je dopravní prostředek, na rozdíl od auto má volant, auto má motor atd. výhodou dědičnosti je, že nové třídy mohou dědit z vytvořených knihoven tříd, což značně urychluje tvorbu programových systémů (znovupoužitelnost na úrovni kódu) 7

8 Prostředky pro realizaci dědičnosti v OOP Jedním z nástrojů umožňující realizaci popsaných vlastností je dědičnost tříd. Má-li nějaká množina instancí specifické vlastnosti, které je možno využít, a nebo respektovat, můžeme pro ni definovat zvláštní podtřídu, která zdědí všechny původní vlastnosti třídy a přidá ty, které popisují její speciální vlastnosti. Při zobecňování máme-li několik tříd, jejíchž instance vykazují nápadně podobné vlastnosti, můžeme jim definovat společnou nadtřídu, která bude na jednom místě definovat jejich společné vlastnosti. 8

9 Dědičnost v Javě Dědičnost v Javě má dvě formy: dědičnost tříd (class inheritance) dědičnost rozhraní (interface inheritance) dědičnost tříd podporuje základní formu znovupoužitelnosti kódu, což znamená, že podtřída zdědí metody nadtřídy a její datové atributy dědičnost také umožňuje využívat konstrukce polymorfismu (vícetvarosti) v polymorfismu mají různé metody uvnitř hierarchie tříd stejné názvy, ale odlišnou funkcionalitu. 9

10 Osoba Student jednoduchý příklad Osoba datové atributy: jméno pohlaví datumnarozeni metody konstruktory getvek dynamicky se měnící datový atribut tostring tisk Implicitně je každá deklarovaná třída podtřídou třídy Object 10

11 Student datové atributy obor studia metody konstruktory tostring Osoba Student jednoduchý příklad 11

12 import java.util.calendar; public class Osoba { private String jmeno; private String pohlavi; private int roknarozeni; Poznámky public Osoba() { jmeno="neuvedeno"; pohlavi="neuvedeno"; roknarozeni = 0; public Osoba(String jmeno, String pohlavi, int r) { this.jmeno = jmeno; this.pohlavi= pohlavi; roknarozeni = r; public int getvek(){ Calendar c = Calendar.getInstance(); int aktrok = c.get(1); return aktrok - roknarozeni; public String tostring() { return String.format(" %s: %s %s: %s %s: %d\n", "jmeno",jmeno,"pohlavi",pohlavi,"vek",this.getvek()); public void tisk() { System.out.println(this.getClass().getName()+this.toString()); public String getjmeno() { return jmeno; public String getpohlavi() { return pohlavi; 12

13 public class Student extends Osoba { private String obor; Poznámky public Student() { super(); obor="neuveden"; public Student(String jmeno, String pohlavi, int roknar, String obor) { super(jmeno, pohlavi, roknar); this.obor= obor; public String tostring() { return String.format("%s %s: %s\n",super.tostring(), "obor",obor); public String getobor() { return obor; 13

14 public class OsobaTest { Poznámky public static void main(string[] args) { Osoba o1 = new Osoba("Jana", "zena", 1980); Osoba o2 = new Osoba("David", "muz", 1984); Osoba o3; Student s3; Student s1 = new Student("Iveta","zena", 1979, "informatika"); Student s2 = new Student("Josef","muz",1986,"matematika"); o1.tisk(); o2.tisk(); s1.tisk(); s2.tisk(); o3 = s1; //System.out.println("Jmeno: "+o3.jmeno+" pohlavi: "+ // o3.pohlavi+ " vek: "+o3.getvek()); // k pristupu k datovym atributum je nutno pouzit // pristupove metody System.out.println("Jmeno: "+o3.getjmeno()+" pohlavi: "+ o3.getpohlavi()+ " vek: "+o3.getvek()); //System.out.println("Obor: "+o3.getobor()); // nelze pouzit System.out.println("o3.tisk()"); o3.tisk(); //funguje s3 = (Student) o3; //nutno provest pretypovani - upcasting System.out.println("s3.tisk()"); s3.tisk(); 14

15 simple.osoba jmeno: Jana pohlavi: zena vek: 26 Poznámky simple.osoba jmeno: David pohlavi: muz vek: 22 simple.student jmeno: Iveta pohlavi: zena vek: 27 obor: informatika simple.student jmeno: Josef pohlavi: muz vek: 20 obor: matematika Jmeno: Iveta pohlavi: zena vek: 27 o3.tisk() simple.student jmeno: Iveta pohlavi: zena vek: 27 obor: informatika s3.tisk() simple.student jmeno: Iveta pohlavi: zena vek: 27 obor: informatika 15

16 Modifikátory přístupu private datové atributy, z vně třídy nepřístupné konstruktory, z vně třídy nepřístupné metody modifikátor private umožňuje přístup k datovým atributům a metodám pouze uvnitř dané třídy. Ty nejsou děděny do podtříd. 16

17 Modifikátory přístupu public veřejně přístupné metody, konstruktory, datové atributy v návrhovém vzoru přepravka modifikátor public umožňuje přístup k datovým atributům a metodám z objektů dané třídy a objektů jejich podtříd. 17

18 Přístup protected modifikátor protected mezistupeň ochrany mezi public a private modifikátor protected je přístupný členům nadtřídy (datové atributy a metody) členům podtřídy členům jiných tříd ve stejném balíčku přístup podtřídy ke členům nadtřídy klíčové slovo super a tečka (.) 18

19 Modifikátory přístupu modifikátor public a protected se nemění v podtřídách, v podtřídách je umožněn přístup pomocí jmen když podtřída redefinuje metodu nadtřídy, metoda nadtřídy může být zpřístupněna na z podtřídy pomocí klíčového slova super ( super.tostring(); ) metody podtřídy nemají přímý přístup k private členům nadtřídy, musí k tomu použít jiné než private metody nadtřídy, zděděné podtřídou 19

20 Modifikátory přístupu v podtřídě nemůžeme k datovým atributům deklarovaným jako private přistupovat přímo využít modifikátor protected (problém umožní také přímý přístup všem třídám v balíčku) využít veřejné ejné (public) přístupové metody 20

21 Modifikátor protected Použití modifikátoruprotected pro datové atributy (instanční proměnné) Výhody podtřídy mohou modifikovat přímo datové atributy (tečková notace) Výkonnost aplikace se trochu zvýší Nevýhody Sníží se režie přístupových a modifikačních funkcí Žádná kontrola vstupních dat podtřída může přiřadit nepovolenou hodnotu atributy nadtřídy Implementační závislost metody podtřídy jsou pravděpodobněnji více závislé na implementaci nadtřídy změny implementace nadtřídy mohou vyústit ve změnu podtřídy Vede to ke křehkému software 21

22 Rezervace jízdenek Datum den: int mesic: int rok: int Rezervace tostring() tisk() Osoba jmeno: String pohlavi: String RezervaceLetenek let: String sedadlo: String RezervaceJizdenek vlak: String vagon: int sedadlo: int 22

23 import java.util.calendar; public class Datum { private int den; // 1-31 private int mesic; // 1-12 private int rok; private Calendar kalendar = Calendar.getInstance(); Poznámky // kalendar.get(1) = rok, kalendar.get(2) +1 = mesic, kalendar.get(5) = den //konstruktory public Datum( int den,int mesic, int rok) { this.mesic = mesickontrola( mesic ); this.rok = kontrolarok(rok); this.den = denkontrola( den); public Datum() { mesic = kalendar.get(2) + 1; den = kalendar.get(5); rok = kalendar.get(1); public Datum(int den) { mesic = kalendar.get(2) + 1; this.den = denkontrola(den); rok = kalendar.get(1);

24 public Datum(int den, int mesic) { this.mesic = mesickontrola(mesic); this.den = denkontrola(den); rok = kalendar.get(1); Poznámky public Datum(int den, String mesic, int rok) { this.mesic = mesickontrola(mesic); this.den = denkontrola(den); this.rok = kontrolarok(rok); public Datum(int den, Mesic mesic, int rok) { this.mesic = mesic.ordinal() + 1; //System.out.println("mesic: " + this.mesic); this.den = denkontrola(den); this.rok = rok; // kopirovaci konstruktor public Datum(Datum d) { mesic = d.getmesic(); den = d.getden(); rok = d.getrok();

25 // pristupove a modifikacni metody... private int mesickontrola( int mesic) { if ( mesic > 0 && mesic <= 12 ) return mesic; else { System.out.printf( "Neplatny mesic (%d) nastaveni na 1.", mesic ); return 1; Poznámky private int mesickontrola(string mesic) { String[] mesice = {"leden", "unor", "brezen", "duben", "kveten", "cerven", {"leden", "unor", "brezen", "duben", "kveten", "cerven", "cervenec", "srpen", "zari", "rijen", "listopad", "prosinec"; for(int i = 0; i < mesice.length; i++) if(mesic == mesice[i]) return i+1; System.out.printf("neplatny mesic (%s) + nastaveni na leden ", mesic); return 1;

26 private int denkontrola( int den ) { int dnuvmesici[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; Poznámky // kontrola rozsahu dne v mesici if ( den > 0 && den <= dnuvmesici[ getmesic() ] ) return den; // kontrola prestupny rok if ( getmesic() == 2 && getden() == 29 && ( getrok() % 400 == 0 ( getrok() % 4 == 0 && getrok() % 100!= 0 ) ) ) return den; System.out.printf( "Neplatny den (%d) nastaveni na 1.", den ); return 1;

27 public int kontrolarok(int r) { if(r>=1900 && r <= 2100) return r; else return kalendar.get(1); public String tostring() { return String.format( "%d/%d/%d", getden(), getmesic(), getrok()); public void tisk(){ System.out.println(toString()); Poznámky public enum Mesic { LEDEN, UNOR, BREZEN, DUBEN, KVETEN, CERVEN, CERVENEC, LEDEN, UNOR, BREZEN, DUBEN, KVETEN, CERVEN, CERVENEC, SRPEN, ZARI, RIJEN, LISTOPAD, PROSINEC

28 public class Rezervace { Datum datum; Osoba zakaznik; Poznámky public Rezervace(Datum datum){ this.datum = datum; public void setzakaznik(osoba o){ zakaznik = osoba; public Osoba getzakaznik(){ return zakaznik; public String tostring(){ return String.format("Zakaznik: %sdatum: %s", zakaznik.tostring(), datum.tostring()); public void tisk(){ System.out.print(this.toString());

29 public class RezervaceLetenek extends Rezervace { private String let; private String sedadlo; Poznámky public RezervaceLetenek(Datum d, String l, String s){ super(d); let = l; sedadlo = s; public String getlet(){ return let; public String getsedadlo() { return sedadlo; public String tostring() { return String.format("%s \nlet: %s sedadlo: %s\n", super.tostring(),getlet(),getsedadlo());

30 public class RezervaceJizdenek extends Rezervace { private String vlak; private int vagon; private int sedadlo; Poznámky public RezervaceJizdenek(Datum d, String v, int vg, int s){ super(d); vlak = v; vagon = vg; sedadlo = s; public String getvlak(){ return vlak; public int getvagon(){ return vagon; public int getsedadlo(){ return sedadlo; public String tostring(){ return String.format("%s\nVlak: %s vagon: %4d, + sedadlo: %3d\n", super.tostring(),vlak, vagon, sedadlo);

31 public class RezervaceTest { public static void main(string[] args) { 1 RezervaceJizdenek jizdenka = new RezervaceJizdenek(new Datum(25), 2 "Pendolino",506,28); 3 4 Osoba osoba = new Osoba("Adam","muz"); 5 jizdenka.setzakaznik(osoba); 6 7 RezervaceLetenek letenka = new RezervaceLetenek( 8 new Datum(16, Mesic.UNOR, 2014), "Ok 225","14A"); 9 osoba = new Osoba("Alena","zena"); 10 letenka.setzakaznik(osoba); 11 // tisk rezervace jizdenky 11 // tisk rezervace jizdenky 12 jizdenka.tisk(); 13 // tisk rezervace letenky 14 letenka.tisk(); System.out.println("Let: "+letenka.getlet()); //chybny pristup - informace z nadtridy pouze 19 // prostrednictvim pristupovych metod 20 System.out.println("Jmeno zakaznika: " + letenka.zakaznik.jmeno); 21 // spravne 22 System.out.println("Jmeno klienta: " + 23 letenka.getzakaznik().getjmeno()+"\n"); Poznámky

32 24 // kvalifikace promenne rezervace 25 Rezervace rezervace; 26 rezervace = jizdenka; // pretypovani na predka 27 rezervace.tisk(); 28 rezervace = letenka; // pretypovani na predka 29 rezervace.tisk(); 30 System.out.println("Jmeno: " + rezervace.getzakaznik().getjmeno()+ 31 " pohlavi: "+rezervace.getzakaznik().getpohlavi()); 32 //metoha getlet() není definovana pro tridu Reservace; 33 //System.out.println("Let: "+rezervace.getlet()); RezervaceLetenek letenkax; 36 letenkax = (RezervaceLetenek) rezervace; 37 System.out.println("Let: "+letenkax.getlet()); 37 System.out.println("Let: "+letenkax.getlet()); Poznámky

33 Zakaznik: jmeno: Adam pohlavi: muz Datum: 25/7/2013 Vlak: Pendolino vagon: 506, sedadlo: 28 Poznámky Zakaznik: jmeno: Alena pohlavi: zena Datum: 16/2/2014 Let: Ok 225 sedadlo: 14A Let: Ok 225 Jmeno klienta: Alena Zakaznik: jmeno: Adam pohlavi: muz Datum: 25/7/2013 Vlak: Pendolino vagon: 506, sedadlo: 28 Zakaznik: jmeno: Alena pohlavi: zena Datum: 16/2/2014 Let: Ok 225 sedadlo: 14A Jmeno: Alena pohlavi: zena Let: Ok 225

34 Třídy a podtřídy Hierarchie dědičnosti Vztahy dědičnosti: stromová hierarchická struktura Každá třída se stává nadtřídou nebo dodává data/ chování (metody) jiným třídám podtřídou dědí data/ chování (metody) z jiných tříd (bezprostředně z jedné) 34

35 Třídy podtřídy Jedním z problémů dědičnosti je, že podtřída může zdědit metody, které nepotřebuje, nebo nemusí mít. Podtřída často potřebuje upravit zděděnou metodu. V těchto případech podtřída redefinuje (override, zastiňuje) metodu nadtřídy se svoji vhodnou implementací. 35

36 Třída Object a další třídy každá třída v Javě, kromě třídy java.lang.object má nadtřídu. Třída Object nemá žádnou nadtřídu a tvoří kořen hierarchie tříd. Třída Object poskytuje svým podtřídám pouze metody ve skutečnosti každá javovská třída dědí metody třídy Object přímo (explicitně uvede klíčové slovo extends) nebo nepřímo (neuvede klíčové slovo extends a dědí také) 36

37 Třída Object a další třídy pokud nová třída neuvede, že je podtřídou jiné třídy, je implicitně podtřídou třídy Object 37

38 Třída Object Metoda clone Popis metoda protected, bez argumentů, vytváří kopii objektu na který je zavolána; v dané třídě se předpokládá redefinování této metody jako public, která by měla implementovat rozhraní Clonable (balíček java.lang). Implicitní implementace této metody provádí tzv. shallow copy equals finalize getclass metoda porovnává dva objekty a vrací true v případě rovnosti a false při nerovnosti; object1.equals(object2); metoda předpokládá redefinici ve třídách použití metoda protected, je volána garbage collectorem ke konečnému uklízení, nemá parametry, vrací void, zřídka kdy používaná metoda vrací informace o dané třídě, jméno třídy dostaneme pomocí metody getname() 38

39 Třída Object Metoda Popis hashcode hashovací tabulka je datová struktura, která přiřazuje objekt klíč k objektu hodnota, hashcode je hodnota vrácená metodou hashcode, která se používá ke stanovení místa, kde bude uložena odpovídající hodnota notify notifyall wait tostring metody využívané pro multithreading (aktivní objekty) tato metoda vrací řetězcovou reprezentaci objektu 39

40 // CommissionEmployee class represents a commission employee. public class CommissionEmployee extends Object { private String firstname; private String lastname; private String socialsecuritynumber; private double grosssales; // gross weekly sales private double commissionrate; // commission percentage // five-argument constructor public CommissionEmployee( String first, String last, String ssn, double sales, double rate ) { // implicit call to Object constructor occurs here firstname = first; lastname = last; socialsecuritynumber = ssn; setgrosssales( sales ); // validate and store gross sales setcommissionrate( rate ); // validate and store commission rate // end five-argument CommissionEmployee constructor Poznámky Konstruktor se nedědí, ale třída CommissionEmployee volá konstruktor třídy Object implicitně Prvním úkolem konstruktoru podtřídy je volat přímý konstruktor nadtřídy, explicitně nebo implicitně, aby se zdědily datové atributy nadtříd a byly správně inicializované // set first name public void setfirstname( String first ) { firstname = first; // end method setfirstname 40

41 Konstruktor v podtřídách vytvoření objektu podtřídy řetězec volání konstruktorů konstruktor podtřídy volá konstruktor nadtřídy implicitně nebo explicitně pravidla hierarchie dědičnosti posledním volaným konstruktorem v řetězci je konstruktor třídy Object tělo konstruktoru původního objektu (kde vše začalo) podtřídy ukončuje provádění jako poslední 41

42 Příklad hierarchie tříd 42

43 public class Zaznam { Poznámky private int klic; public Zaznam() { klic = 0; public Zaznam(int klic) { this.klic = klic; public String tostring() { return String.format("%5d\n",klic); //vyuziva se ve vsech nadtridach public void tisk() { System.out.println(this.getClass().getName()+this.toString()); public int getklic() { return klic; 43

44 public class Kniha extends Zaznam { Poznámky private String autor; private String nazev; public Kniha() { super(); autor = "neuveden"; nazev= "neuveden"; public Kniha(int klic, String autor, String nazev) { super(klic); this.autor = autor; this.nazev= nazev; public String tostring() { return String.format("%s %s: %s %s: %s\n",super.tostring(), "autor",autor,"nazev",nazev); public String getautor() { return autor; public String getnazev() { return nazev; 44

45 public class Osoba extends Zaznam { private String jmeno; private String pohlavi; Poznámky public Osoba() { super(); jmeno="neuvedeno"; pohlavi="neuvedeno"; public Osoba(int klic, String jmeno, String pohlavi) { super(klic); this.jmeno = jmeno; this.pohlavi= pohlavi; public String tostring() { return String.format("%s %s: %s %s: %s\n",super.tostring(), "jmeno",jmeno,"pohlavi",pohlavi); public String getjmeno() { return jmeno; public String getpohlavi() { return pohlavi; 45

46 public class Student extends Osoba { private String obor; Poznámky public Student() { super(); obor="neuveden"; public Student(int klic, String jmeno, String pohlavi, String obor) { super(klic, jmeno, pohlavi); this.obor= obor; public String tostring() { return String.format("%s %s: %s\n",super.tostring(), "obor",obor); public String getobor() { return obor; 46

47 public class Pracovnik extends Osoba { private String pozice; private int plat; Poznámky public Pracovnik() { super(); pozice= "neuvedena"; plat = 0; public Pracovnik(int klic, String jmeno, String pohlavi, String pozice, int plat) { super(klic, jmeno, pohlavi); this.pozice= pozice; this.plat= plat; public String tostring() { return String.format("%s %s: %s %s: %6d\n", super.tostring(),"pozice",pozice,"plat",plat); public String getpozice() { return pozice; public int getplat() { return plat; 47

48 public class ZaznamTest { public static void main(string args[]) { Zaznam z, z1; Osoba o; Pracujici p1; Kniha k = new Kniha(15,"Nemcova","Babicka"); Pracujici p = new Pracujici(44,"Jana","zena","ucetni",20000); k.tisk(); p.tisk(); z = p; System.out.println("Zaznam tisk & pracujici\n"); z.tisk(); //System.out.println("plat: "+z.getplat()); System.out.println("Zaznam tisk & pracujici P1\n"); p1= (Pracujici)z; p1.tisk(); System.out.println("Zaznam tisk & pracujici OSOBA\n"); o = (Osoba)z; //pretypuje se jako Pracujici o.tisk(); Poznámky 48

49 Poznámky zaznam.kniha 15 autor: Nemcova nazev: Babicka zaznam.pracujici 44 jmeno: Jana pohlavi: zena pozice: ucetni plat: Zaznam tisk & pracujici zaznam.pracujici 44 jmeno: Jana pohlavi: zena pozice: ucetni plat: Zaznam tisk & pracujici P1 zaznam.pracujici 44 jmeno: Jana pohlavi: zena pozice: ucetni plat: Osoba klic: 44 jmeno: Jana pohlavi: zena Zaznam tisk & pracujici OSOBA zaznam.pracujici 44 jmeno: Jana pohlavi: zena pozice: ucetni plat:

50 Přetěžování metod Přetěžování metod Několik metod má stejné jméno Každá metoda má jinou množinu parametrů Počet parametrů Typ parametrů 50

51 // Overloaded method declarations. Poznámky public class MethodOverload { // test overloaded square methods public void testoverloadedmethods() { System.out.printf( "Square of integer 7 is %d\n", square( 7 ) ); System.out.printf( "Square of double 7.5 is %f\n", square( 7.5 ) ); // end method testoverloadedmethods // square method with int argument public int square( int intvalue ) { System.out.printf( "\ncalled square with int argument: %d\n", intvalue ); return intvalue * intvalue; // end method square with int argument // square method with double argument public double square( double doublevalue ) { System.out.printf( "\ncalled square with double argument: %f\n", doublevalue ); return doublevalue * doublevalue; // end method square with double argument // end class MethodOverload 51

52 // Application to test class MethodOverload. Poznámky public class MethodOverloadTest { public static void main( String args[] ) { MethodOverload methodoverload = new MethodOverload(); methodoverload.testoverloadedmethods(); // end main // end class MethodOverloadTest Called square with int argument: : 7 Square of integer 7 is 49 Called square with double argument: Square of double 7.5 is

Obsah přednášky. dědičnost modifikátory (specifikátory) přístupu

Obsah přednášky. dědičnost modifikátory (specifikátory) přístupu OOPR_08 1 Obsah přednášky dědičnost modifikátory (specifikátory) přístupu private, public, protected konstruktor v dědičnosti deklarace nových objektů rozšiřování & přepisování (zastiňování) metod pravidla

Více

OOPR_05. Případové studie

OOPR_05. Případové studie OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára

Více

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9 Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java) Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích

Více

Přehled probírané látky

Přehled probírané látky OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,

Více

OOPR_05. Případové studie

OOPR_05. Případové studie OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára

Více

Principy objektově orientovaného programování

Principy objektově orientovaného programování Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

Dědičnost (inheritance)

Dědičnost (inheritance) Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)

Více

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.

Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue. 23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Abstraktní třída a rozhraní

Abstraktní třída a rozhraní Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě

Více

11. Dědičnost. Dědičnost strana 103

11. Dědičnost. Dědičnost strana 103 Dědičnost strana 103 11. Dědičnost V této kapitole si vysvětlíme jeden ze základních pojmů objektově orientovaného programování dědičnost (inheritance). S ní souvisejí i následující témata: předek a potomek

Více

Třídy a dědičnost. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Třídy a dědičnost. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické Třídy a dědičnost A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické Dnešní témata Dědičnost Kompozice Typ String Třídy a dědičnost Dopravní prostředek Vzdušný Pozemní Vodní

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ

4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ 4. ZÁKLADNÍ POJMY Z OBJEKTOVĚ ORIENTOVANÉHO PROGRAMOVÁNÍ OBJEKT Program v Javě je staticky strukturován na třídy, jejichž instance (objekty) za běhu dynamicky programu vznikají a zanikají. Objekt je nejprve

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

Více

Seminář Java IV p.1/38

Seminář Java IV p.1/38 Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33 Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Programování v C++ 1, 6. cvičení

Programování v C++ 1, 6. cvičení Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické

Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Třídy, polymorfismus A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Polymorfizmus ~ vícetvarost Polymorfizmus základní vlastnost objektového přístupu základní princip polymorfismu:

Více

Deklarace a vytváření

Deklarace a vytváření OOPR_10 1 Obsah přednášky Deklarace a tvorba polí, jejich použití Rozšířený příkaz cyklu for Třída Registr a datovým atributem typu pole Třídy Zásobník a Fronta Třída Registr pro uložení objektových a

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

3. Třídy. Základní pojmy objektového programování. Třídy

3. Třídy. Základní pojmy objektového programování. Třídy 3. Třídy Základní pojmy objektového programování Jak už víme, je Java objektovým programovacím jazykem. V úvodu této kapitoly si objasníme základní pojmy objektové teorie. Objekt představuje souhrn dat

Více

Seminář Java II p.1/43

Seminář Java II p.1/43 Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii

Více

PŘETĚŽOVÁNÍ OPERÁTORŮ

PŘETĚŽOVÁNÍ OPERÁTORŮ PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako

Více

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39 Programování v C# Hodnotové datové typy, řídící struktury Petr Vaněček 1 / 39 Obsah přednášky Referenční datové typy datové položky metody přístupové metody accessory, indexery Rozhraní Pole 2 / 39 Třídy

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e);

TŘÍDY POKRAČOVÁNÍ. Události pokračování. Příklad. public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); TŘÍDY POKRAČOVÁNÍ Události pokračování public delegate void ZmenaSouradnicEventHandler (object sender, EventArgs e); class Bod private int x; private int y; public event ZmenaSouradnicEventHandler ZmenaSouradnic;

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

Programování v C++ 1, 5. cvičení

Programování v C++ 1, 5. cvičení Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20

Předmluva k aktuálnímu vydání Úvod k prvnímu vydání z roku Typografické a syntaktické konvence... 20 Obsah 5 Obsah Předmluva k aktuálnímu vydání 15 1 Úvod k prvnímu vydání z roku 2000 16 Typografické a syntaktické konvence................ 20 2 Základní pojmy 21 2.1 Trocha historie nikoho nezabije................

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

Objektově orientované programování

Objektově orientované programování Objektově orientované programování Jan Faigl Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Přednáška 7 A0B36PR1 Programování 1 Jan Faigl, 2015 A0B36PR1 Přednáška 7: Objektově

Více

OOP - Objektově Orientované Programování

OOP - Objektově Orientované Programování OOP - Objektově Orientované Programování Programovat lze klasicky neobjektově - tedy s využitím jen primitivních typů a statického kontextu - tj. statických atributů, statických metod, statických inicializátorů

Více

Mnohotvarost (polymorfizmus)

Mnohotvarost (polymorfizmus) Mnohotvarost (polymorfizmus) TYPY MNOHOTVAROSTI... 2 PŘETĚŽOVÁNÍ METOD, PŘETĚŽOVÁNÍ OPERACÍ... 3 PŘETÍŽENÍ OPERÁTORŮ... 4 ČASTO PŘETĚŽOVANÉ OPERÁTORY... 4 PŘEPISOVÁNÍ... 7 VIRTUÁLNÍ METODY... 10 SEZNAM

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

IRAE 07/08 Přednáška č. 1

IRAE 07/08 Přednáška č. 1 Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní

Více

Projekty pro výuku programování v jazyce Java

Projekty pro výuku programování v jazyce Java JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

Programování v C++ 2, 4. cvičení

Programování v C++ 2, 4. cvičení Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva

Více

24. listopadu 2013, Brno Připravil: David Procházka

24. listopadu 2013, Brno Připravil: David Procházka 24. listopadu 2013, Brno Připravil: David Procházka Dědičnost Základy objektového návrhu Časná a pozdní vazba Strana 2 / 22 Obsah přednášky 1 Časná a pozdní vazba 2 Rozhraní pro dědičnost 3 Konstruktory

Více

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků

Více

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní

Více

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

public class Karel { private int position; public boolean issmiling; public int getposition() { return position; Objekty, třídy a hierarchie tříd Interface a abstraktní třídy Dědičnost Message passing Class diagramy a příklady systémů modelovaných pomocí OOP Volba správného přístupu Rozdíl mezi asociací, agregací

Více

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007 Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků

Více

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

IB111 Programování a algoritmizace. Objektově orientované programování (OOP) IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

Konstruktory. Konstruktor je speciální metoda, pro vytváření a inicializaci nových objektů (instancí). Název metody je totožný s názvem třídy.

Konstruktory. Konstruktor je speciální metoda, pro vytváření a inicializaci nových objektů (instancí). Název metody je totožný s názvem třídy. OOPR_02 1 Osnova přednášky Třída Konstruktor Volání konstruktorů z konstruktorů Kopírovací konstruktor Vstup dat pomocí třídy Scanner Vstup dat s využitím třídy JOptionPane Objekt, zpráva, metoda Třídně

Více

NMIN201 Objektově orientované programování 1 / :36:09

NMIN201 Objektově orientované programování 1 / :36:09 NMIN201 Objektově orientované programování 1 / 26 8.10.2013 15:36:09 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat

Více

Vytváření a použití knihoven tříd

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce

Více

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)

Více

Programovací jazyk Java

Programovací jazyk Java 1 z 7 14.1.2015 22:57 Programovací jazyk Java 2. přednáška Obsah Zápisy literálů znakových hodnot a řetězců Idenfitikátory, komentáře Řídicí struktury Vytváření a rušení objektů, zapouzdření, konstruktory

Více

Návrhové vzory Design Patterns

Návrhové vzory Design Patterns Návrhové vzory Design Patterns doc. Ing. František Huňka, CSc. Ostravská univerzita PřF 1 Definice vzoru Každý vzor popisuje problém, který nastává opakovaně v našem prostředí, a potom popisuje podstatu

Více

Objektové programování

Objektové programování Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k

Více

Základní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce

Základní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce Vektor a Matice Základní pojmy Matice(řádky, sloupce) Matice(4,6) sloupce řádky (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (4,1) (4,2) (4,3)

Více

NPRG031 Programování II 1 / :25:46

NPRG031 Programování II 1 / :25:46 NPRG031 Programování II 1 / 26 28. 2. 2018 11:25:46 Objekty Svět se skládá z objektů! konkrétní x abstraktní hmatatelné x nehmatatelné (letadlo) x (chyba v programu) Objekty mohou obsahovat jiné objekty

Více

Java - řazení objektů

Java - řazení objektů Java - řazení objektů Kapitola seznamuje se základními principy řazení objektů Klíčové pojmy: Přirozené řazení, absolutní řazení, ideální porovnávatelná třída ŘAZENÍ OBJEKTŮ U objektů není příliš jasné,

Více

Zapouzdření. Tomáš Pitner, upravil Marek Šabo

Zapouzdření. Tomáš Pitner, upravil Marek Šabo Zapouzdření Tomáš Pitner, upravil Marek Šabo Co je zapouzdření Naprosto zásadní vlastnost objektového přístupu, možná nejzásadnější Jde o spojení dat a práce s nimi do jednoho celku - objektu Data jsou

Více

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!

Příklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni! Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného

Více

Programování v C++ 3, 3. cvičení

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC

OMO. 4 - Creational design patterns A. Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC OMO 4 - Creational design patterns A Singleton Simple Factory Factory Method Abstract Factory Prototype Builder IoC Ing. David Kadleček, PhD. kadlecd@fel.cvut.cz, david.kadlecek@cz.ibm.com 1 Creational

Více

Jazyk C# (seminář 3)

Jazyk C# (seminář 3) Jazyk C# (seminář 3) Pavel Procházka KMI October 8, 2014 Motivace Největší využití v programování okenních aplikací a GUI knihoven. Data reprezentujeme pomocí objektů (tříd), máme tedy ucelený pohled na

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

9. přednáška - třídy, objekty

9. přednáška - třídy, objekty třída String a její použití kolekce, typované kolekce 9. přednáška - třídy, objekty Algoritmizace (Y36ALG), Šumperk - 9. přednáška 1 Třída String Objekty knihovní třídy String jsou řetězy znaků Od ostatních

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Třída jako zdroj funkcí

Třída jako zdroj funkcí Třída jako zdroj funkcí Třída v jazyku Java je programová jednotka tvořená množinou identifikátorů, které mají třídou definovaný význam Základem uživatelského programu v jazyku Java je třída, ve které

Více

Návrh softwarových systém. Návrh softwarových systémů

Návrh softwarových systém. Návrh softwarových systémů Návrh softwarových systém ů - Java 8 Jiří Šebek Návrh softwarových systémů (B6B36NSS) Co je nového? Default interface methods Lambda expressions Method references and repeatable annotations Streams Functional

Více

Třída. Atributy. Operace

Třída. Atributy. Operace Class Diagrams Třída Atributy Operace Třída Třída je jakýsi prototyp objektů. Za třídou si můžeme představit množinu jejích instancí. Každý objekt dané třídy má stejnou množinu atributů (proměnných) a

Více

Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy

Objekt. základní prvek v OOP. má vlastnosti. má metody. vznikne vytvoření nové instance definován pomocí třídy 3. ročník Objekt základní prvek v OOP má vlastnosti charakterizují objekt (barva, počet osob) má metody definují to, co objekt umí (vypni motor, připoj se) vznikne vytvoření nové instance definován pomocí

Více

14.4.1. Typický prvek kolekce pro české řazení

14.4.1. Typický prvek kolekce pro české řazení 14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

Více

Datové abstrakce v programovacích jazycích

Datové abstrakce v programovacích jazycích Datové abstrakce v programovacích jazycích Motivace Strukturovat rozsáhlé programy Dovolit separátní překlad Možné formy strukturování: Podprogramy původní forma abstrakce -abstrakce výpočtů Moduly kontejnery

Více

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat. 1. Odkrokujte následující program a s použitím notace z přednášky sledujte stav paměti

Více

Reflexe. Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha

Reflexe. Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Reflexe Aplikační programování v Javě (BI-APJ) - 8 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha Evropský sociální fond Praha & EU: Investujeme do vaší

Více

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members)

Osnova přednášky. Programové prostředky řízení Úvod do C# II. Přístup ke členům. Členy (Members) Osnova přednášky Programové prostředky řízení Úvod do C# II. Členy (Members) Jmenné prostory (Namespaces) Třídy (Classes) Struktury (Structs) Pavel Balda Západočeská univerzita v Plzni, FAV, KKY 2 Členy

Více

7.3 Diagramy tříd - základy

7.3 Diagramy tříd - základy 7.3 Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo Datové typy v Javě Tomáš Pitner, upravil Marek Šabo Úvod k datovým typům v Javě Existují dvě základní kategorie datových typů: primitivní a objektové Primitivní v proměnné je uložena přímo hodnota např.

Více

DPKOM_06 Dědičnost entit a zpětná volání posluchači

DPKOM_06 Dědičnost entit a zpětná volání posluchači DPKOM_06 Dědičnost entit a zpětná volání posluchači 1 Obsah přednášky Jedna tabulka pro hierarchii tříd Tabulka pro konkrétní třídu Tabulka pro podtřídu Neentitní základní třídy Události zpětného volání

Více

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19

Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19 Programování II Abstraktní třída Vícenásobná dědičnost 2018/19 Osnova přednášky Polymorfismus - důsledky. Abstraktní třída. Vícenásobná dědičnost. Polymorfismus - důsledky Polymorfismus Polymorfismus je

Více

10 Balíčky, grafické znázornění tříd, základy zapozdření

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému

Více

Diagramy tříd - základy

Diagramy tříd - základy Diagramy tříd - základy - popisuje typy objektů a statické vztahy mezi nimi Objednávka Zákazník -datumpřijetí -předplacena -číslo -cena +vyřiď() +uzavři() {if Objednávka.zákazník.charakteristika = 'nejistý'

Více