Obsah přednášky. dědičnost modifikátory (specifikátory) přístupu
|
|
- Milada Mašková
- před 6 lety
- Počet zobrazení:
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í 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 Osoba Student jednoduchý příklad Student datové atributy obor studia metody konstruktory tostring Osoba -jmeno -roknarozeni -pohlavi +tostring() +tisk() -obor Student +tostring() 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: dvě úrovně První úroveň je na úrovni tříd. Druhá úroveň je na úrovni datových atributů a metod. První úroveň úroveň tříd. třídy modifikátor public znamená, že třída je viditelná všem třídám všude. bez modifikátoru (package-private) je viditelná jen v balíčku, kde je deklarovaná. 16
17 Modifikátory přístupu: dvě úrovně Druhá úroveň úroveň datových atributů a metod. modifikátor public znamená, že datový atribut nebo metoda je viditelná všem všude. bez modifikátoru (package-private), datový atribut, metoda je viditelná jen v balíčku, kde je deklarovaná. Stejné jako pro první úroveň. 17
18 Modifikátory přístupu: dvě úrovně Druhá úroveň úroveň datových atributů a metod existují ještě modifikátory private a protected. modifikátor private znamená, že datový atribut nebo metoda je viditelná pouze v rámci deklarované třídy. modifikátor protected znamená, že datový atribut nebo metoda je viditelná (přístupná) v rámci daného balíčku. 18
19 Modifikátory přístupu Package one Package two Alpha AlphaSub Beta Delta Jaký modifikátor musí mít třída Alpha aby byla viditelná ve třídě AlphaSub? 19
20 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. V podtřídě musíme využít k přístupu k datovým atributům get/ set metody s modifikátorem public. 20
21 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. 21
22 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 (.) 22
23 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 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 23
24 Modifikátor protected Použití modifikátoru protected 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 24
25 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 25
26 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);
27 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();
28 // 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", "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;
29 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;
30 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, SRPEN, ZARI, RIJEN, LISTOPAD, PROSINEC
31 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());
32 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());
33 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);
34 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 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
35 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()); Poznámky
36 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
37 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é) 37
38 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í. 38
39 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é) 39
40 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 40
41 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 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á getclass metoda vrací informace o dané třídě, jméno třídy dostaneme pomocí metody getname() 41
42 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 42
43 // 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 43
44 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í 44
45 Příklad hierarchie tříd -klic Zaznam -autor -nazev Kniha Osoba -jmeno -pohlavi Student -oborstudia Pracovnik -pozice -plat 45
46 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; 46
47 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; 47
48 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; 48
49 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; 49
50 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; 50
51 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 51
52 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:
53 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ů 53
54 // 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 54
55 // 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
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íceOOPR_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íce11.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íceGenerické 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íceDefinice 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) 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ícePř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ícetypová 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íce14.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íceOOPR_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íce11 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ícePrincipy 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íceTeoretické 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íceDě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íce1. 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íce11. 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íceDefinice 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íceTří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íceAbstraktní 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íceTří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íceVýč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íceKTE / 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íce20. 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íceDě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íce4. 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íceSeminář 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ícePočí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íceProgramová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íceMichal 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íceIRAE 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íceSeminář 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íce7. 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íceMichal 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íceDeklarace 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íce3. 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ícePŘ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
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íceTří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íceMichal 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íceMichal 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íceTŘÍ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íceZá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íceProgramová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íceObjektově 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íceProgramová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ícePB161 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ícePB161 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íceProgramová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íceOOP - 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íceDefinice 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ícePř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íceClass 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íceIRAE 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íceZapouzdř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íceSeznamy 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íceAbstraktní 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íceMichal 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íceProjekty 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íceVytvář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íceMnohotvarost (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ícePREPROCESOR 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íceNMIN201 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íceProgramová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íceStatické 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íce24. 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íceProgramovací 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íceIB111 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ícepublic 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íceKonstruktory. 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íceNPRG031 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íce9. 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ícePří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íceJazyk 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íceTří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íceJazyk 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íceNá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íceTří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íceZá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íceObjektové 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íce8 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íceJava - ř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íceDatové 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íceObjekt. 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íceProgramová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íce14.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íceOMO. 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íce7.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íce1. 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íce7.5 Diagram tříd pokročilé techniky
7.5 Diagram tříd pokročilé techniky Stereotypy - jeden ze základních prostředků rozšiřitelnosti UML - pro modelovací konstrukce neexistující v UML, ale podobné předdefinované v UML definované uživatelem
Více10 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íceTabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář
Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění
VíceNá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íce7.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íceDPKOM_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íceOsnova 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íceRMI Remote Method Invocation
2. cvičení RMI Remote Method Invocation 2007/09 ver.2.0 1 RMI co to je? vyvolání metody z jiné JVM lokalizace vzdáleného objektu komunikace se vzdálenými objekty přenos objektu v bytecode typicky klient
VíceAlgoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
VíceAlgoritmizace a programování. Terminálový vstup a výstup
Algoritmizace a programování Terminálový vstup a výstup Verze pro akademický rok 2012/2013 1 Výpis hodnot Terminálový vstup a výstup budeme používat jako základní způsob interakce programu s uživatelem
VíceDiagramy 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