Přehled probírané látky
|
|
- Jindřich Janda
- před 8 lety
- Počet zobrazení:
Transkript
1 OOPR_04 1
2 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 objekty) agregace objektů (volná vazba mezi objekty) grafické složené objekty křížek, obdélník výčtové typy (enumeration) 2
3 Asociace mezi třídami Asociace relace, vazba mezi třídami. Jednosměrná, obousměrná. Řešení pomocí datových atributů, které odkazují na odpovídající třídu. 3
4 Asociace mezi třídami Ucet zakaznik: Osoba Osoba Ucet zakaznik: Osoba Osoba mujucet: Ucet public class Ucet { private Osoba zakaznik;... public class Osoba { private Ucet mujucet;... 4
5 Skládání vazba mezi objekty Obecný vztah mezi třídami se nazývají asociace. asociace mezi třídami Ucet a Zakaznik Skládání upřesnění asociace. Skládání je prostředek k organizování jevů a konceptů ve smyslu komponentů jiných jevů a konceptů. Existuje několik způsobů skládání jevů do složených jevů. Kompozice, agregace, lokalizace. 5
6 Asociace vztah mezi třídami asociace (a to jednostranná, nebo oboustranná). U jednostranné asociace zná jen jedna třída rozhraní druhé třídy, u oboustranné zná každá třída rozhraní svého partnera. Průchodnost, směrování (směr šipky) navigability. 6
7 Skládání objektů kompozice je typem velmi těsné vazby mezi objekty vyskytuje se např. mezi stromem a jeho listy, mezi autem a jeho jednotlivými součástmi (kola, karoserie, volant, motor... ), dřevěný panáček (hlava, krk, ruce, trup, nohy). agregace (referenční kompozice) je volnou vazbou mezi objekty vyskytuje se např. mezi počítačem a jeho periferními zařízeními, rezervace a odkazy na hotel, pokoj a hosta. 7
8 Skládání objektů používané termíny: celek nebo složený objekt části (složeného objektu). 8
9 Sémantika kompozice Myš Tlačítka celek část kompozice Kompozice je silnější formou skládání objektů. V kompozici nemohou části existovat mimo celek. V kompozici každá část patří pouze jednomu celku. 9
10 Kompozice shrnutí Části patří jen a pouze jednomu celku (kompozici). Celek nese výhradní odpovědnost za použití všech svých částí znamená to zodpovědnost za jejich tvorbu a zničení. Za předpokladu, že odpovědnost za části přejde na jiný objekt, může celek tyto části uvolnit. Je-li celek zničen, musí zničit rovněž všechny svoje součásti, nebo převést odpovědnost za ně na nějaký další objekt. 10
11 Příklad kompozice objekt Křížek Třída Krizek má datový atribut typu Bod označuje střed křížku a primitivní typ délka délka ramene křížku. Krizek 1 1 celek část Bod (stred) 11
12 public class Krizek { private Bod stred; private int delka = 3; Poznámky public Krizek() { stred = new Bod(); public Krizek(Bod bod, int delka) { //stred = bod; - normalni prirazeni // pouziti kopirivaciho konstruktoru tridy Bod stred = new Bod(bod); this.delka = delka; // kopirovaci konstruktor public Krizek(Krizek kr) { stred = new Bod(kr.getStred()); delka = kr.getdelka(); //modifikacni a pristupove metody public Bod getstred() { return stred;
13 public int getdelka() { return delka; public void setstred(bod bod) { stred = bod; public void setdelka(int delka) { this.delka = delka; Poznámky public void vykresli() { for(int i = 0; i < getdelka() * 2 + 1; i++){ //vodorovne getstred().vykresli( - getdelka() + i, 0); //svisle getstred().vykresli(0, - getdelka() + i); getstred().pauza(20); public void smaz() { for(int i = 0; i < getdelka() * 2 + 1; i++){ //vodorovne getstred().smaz( - getdelka() + i, 0); //svisle getstred().smaz(0, - getdelka() + i); getstred().pauza(20);
14 public void posun(int dx, int dy) { this.smaz(); this.getstred().posunsouradnic(dx, dy); this.vykresli(); Poznámky public void posunsouradnic(int dx, int dy) { this.getstred().posunsouradnic(dx, dy);
15 public class KrizekTest { public static void main(string[] args) { Bod bod = new Bod(100, 120, Color.blue); Krizek krizek = new Krizek(bod, 40); krizek.vykresli(); bod.pauza(1500); krizek.posun(200, 100); Poznámky Krizek krizeka = new Krizek(new Bod(150, 200, "cervena"), 20); krizeka.vykresli();
16 Příklad kompozice Obdelnik je složen ze objektů třídy Bod případ pevné vazby, Obdelnik = celek, Body = části. Objekty částí (instance třídy Bod) jsou deklarovány přímo v konstruktoru. Pokud jsou předávány odkazy objektů třídy Bod do konstruktoru třídy Obdelnik, je doporučeno použít kopírovací konstruktor. 16
17 public class Obdelnik { private Bod levyhorni; private Bod pravydolni; Poznámky //konstruktory public Obdelnik() { levyhorni = new Bod(); pravydolni = new Bod(); public Obdelnik(Bod a, Bod b) { //levyhorni = a; //pravydolni = b; levyhorni = new Bod(a); pravydolni = new Bod(b); public Obdelnik(Obdelnik ob) { levyhorni = new Bod(ob.getLevyHorni()); pravydolni = new Bod(ob.getPravyDolni()); // pristupove metody public Bod getlevyhorni() { return levyhorni;
18 public String tostring() { return "Obdelnik levyhorni: " + getlevyhorni().tostring() + " pravydolni: " + getpravydolni().tostring(); Poznámky public int getdelkax() { return getpravydolni().getx() getlevyhorni().getx(); // return Math.abs(getPravyDolni().getX() getlevyhorni().getx());
19 public void vykresli() { // kreslí vodorovné strany obdelníka for(int i = 0; i <= getdelkax(); i++) { getlevyhorni().vykresli(i, 0); getpravydolni().vykresli(-i, 0); getpravydolni().pauza(20); Poznámky // kreslí svislé strany obdelníka for(int i = 0; i <= getdelkay(); i++) { getlevyhorni().vykresli(0, i); getpravydolni().vykresli(0, -i); getlevyhorni().pauza(20); public void smaz() { // maže vodorovné strany obdelníka for(int i = 0; i <= getdelkax(); i++) { getlevyhorni().smaz(i, 0); getpravydolni().smaz(-i, 0); getpravydolni().pauza(20);
20 public void posun(int dx, int dy) { this.smaz(); this.posunsouradnic(dx, dy); this.vykresli(); Poznámky public void posunsouradnic(int dx, int dy) { getlevyhorni().posunsouradnic(dx, dy); getpravydolni().posunsouradnic(dx, dy);
21 Objekt celek, objekt(y) části V objektu celek pracujeme s objekty částí, nezasahujeme přímo do vnitřních atributů objektů části správný postup: public void posun(int dx, int dy) { levyhorni.posun(dx,dy); pravydolni.posun(dx,dy); špatný postup!!! public void posun(int dx, int dy) { levyhorni.setx(levyhorni.getx() + dx); levyhorni.y = levyhorni.y + dy; pravydolni.sety(pravydolni.getx() + dx); pravydolni.y = pravydolni.y + dy; 21
22 Grafické znázornění vazeb mezi objekty Obdelnik a Bod x hodnotax levyhorni y hodnotay pravydolni x hodnotax y hodnotay obdelnik boda bodb 22
23 Třída Obdelnik_A Přímo při deklaraci datových atributů jsou vytvářeny jejich instance (objekty) Konstruktor bez parametrů je prázdný 23
24 public class Obdelnik_A { private Bod levyhorni = new Bod(10, 20); private Bod pravydolni = new Bod(); // konstruktory tridy Obdelnik public Obdelnik_A() { // levyhorni = new Bod(); pravydolni= new Bod(); // je jiz provedeno drive public Obdelnik_A(Bod a, Bod b) { // objekty jsou jiz vytvorene, pouze kopirujeme datove atributy levyhorni.setbod(a); pravydolni.setbod(b); public void posun(int dx1, int dy1, int dx2, int dy2) { levyhorni.posun(dx1,dy1); pravydolni.posun(dx2,dy2); public String tostring() { String tx= String.format("\n%s %s %s %s", "Obdelnik levyhorni: ", levyhorni.tostring(), " pravydolni: ", pravydolni.tostring()); return tx; public void tisk() { System.out.println(this.toString()); Poznámky Třída Obdelnik_A 24
25 UML diagram kompozice 25
26 Sémantika agregace Agregace je relací typu celek / část (skládající se z mnoha dílčích částí). V tomto typu relace používá jeden objekt (celek) služby dalšího objektu (části). Celek: bývá dominantní v relaci, řídí chod relace. Část: poskytuje služby, reaguje na požadavky celku (je pasivní). 26
27 Sémantika agregace P o citac Tiskarn a * celek nebo agregát agregace část k Počítači může být připojeno více tiskáren, ale i žádná Tiskárna může být připojena max. k jednomu počítači, nebo žádnému počítači danou Tiskárnu může postupně používat více Počítačů Tiskárna je v podstatě na Počítači nezávislá 27
28 Shrnutí agregace Celek (agregát) bývá závislý na částech, ale může existovat nezávisle na nich (občas také existuje). Části mohou existovat nezávisle na celku. Chybí-li některé části, je celek v jistém smyslu neúplný. Části mohou být sdíleny více celky. 28
29 Příklad kompozice (agregace) objektů tříd Zaměstnanec a Datum Třída Zaměstnanec přebírá již vytvořené objekty třídy Datum ve svém konstruktoru Date -day -month -year 2 1 Employee -firstname -secondname 29
30 public class Date { private int month; // 1-12 private int day; // 1-31 based on month private int year; // any year Poznámky // constructor: call checkmonth to confirm proper value for month; // call checkday to confirm proper value for day public Date( int themonth, int theday, int theyear ) { month = checkmonth( themonth ); // validate month year = theyear; // could validate year day = checkday( theday ); // validate day System.out.printf( "Date object constructor for date %s\n", this ); // end Date constructor // utility method to confirm proper month value private int checkmonth( int testmonth ) { if ( testmonth > 0 && testmonth <= 12 ) // validate month return testmonth; else // month is invalid { System.out.printf( "Invalid month (%d) set to 1.", testmonth ); return 1; // maintain object in consistent state // end else // end method checkmonth 30
31 // utility method to confirm proper day value based on month and year private int checkday( int testday ) { int dayspermonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; Poznámky // check if day in range for month if ( testday > 0 && testday <= dayspermonth[ month ] ) return testday; // check for leap year if ( month == 2 && testday == 29 && ( year % 400 == 0 ( year % 4 == 0 && year % 100!= 0 ) ) ) return testday; System.out.printf( "Invalid day (%d) set to 1.", testday ); return 1; // maintain object in consistent state // end method checkday // return a String of the form month/day/year public String tostring() { return String.format( "%d/%d/%d", month, day, year ); // end method tostring 31
32 // copy constructor public Date(Date date) { month = checkmonth( date.getmonth( )); // validate month year = date.getyear( ); // could validate year day = checkday( date,getday( ) ); // validate day Poznámky System.out.printf( Copy constructor for date %s\n", this ); // end Copy constructor public int getday() { return day; public int getmonth() { return month; public int getyear() { return year; // end class Date 32
33 public class Employee { private String firstname; private String lastname; private Date birthdate; private Date hiredate; Poznámky // constructor to initialize name, birth date and hire date public Employee( String first, String last, Date dateofbirth, Date dateofhire ) { firstname = first; lastname = last; birthdate = new Date(dateOfBirth); //kompozice hiredate = new Date(dateOfHire); //kompozice // birthdate = dateofbirth; // agregace // hiredate = dateofhire; // agregace // end Employee constructor // convert Employee to String format public String tostring() { return String.format( "%s, %s Hired: %s Birthday: %s", lastname, firstname, hiredate, birthdate ); // end method toemployeestring // end class Employee 33
34 public class EmployeeTest { public static void main( String args[] ) { Date birth = new Date( 7, 24, 1949 ); Date hire = new Date( 3, 12, 1988 ); Employee employee = new Employee( "Bob", "Blue", birth, hire ); Poznámky System.out.println( employee ); Employee e1 = new Employee( John, Frost, new Date(12, 4, 1981), new Date(11, 18, 1950)); System.out.println(e1); // end main // end class EmployeeTest 34
35 Grafické znázornění vazeb mezi objekty firstname value lastname value birthday hireday month value day value year value employee birth month value day value year value hire 35
36 Rozdíl mezi prázdným řetězcem a null jsou dvě různé věci: prázdný řetězec je ale platný řetězec dotaz pomocí if (s == ) příkaz žádný řetězec (proměnná nikam neukazuje ukazuje na null) dotaz pomocí if (s == null) příkaz 36
37 Výčtové typy Výčtový typ zavedl Pascal, aby umožnil typovou kontrolu proměnných a konstant, které mohly nabývat pouze omezeného počtu hodnot (dny v týdnu, světové strany atd.) Jejich všechny možné hodnoty je možné vyjádřit výčtem. Java 5.0 zavádí výčtové typy jako nový druh třídy, která je oproti uživatelově definici doplněna překladačem o další atributy a metody. 37
38 Nejjednodušší definice příklad s náhodnými čísly deklarace přímo uvnitř třídy private enum Status { CONTINUE, WON, LOST ; Status gamestatus; // object declaration // possible values CONTINUE, WON, LOST gamestatus = Status.CONTINUE; while ( gamestatus == Status.CONTINUE ) gamestatus = Status.LOST; 38
39 package statik; public enum Chut {VYBORNA, DOBRA, SPATNA, ODPORNA public enum Barva { HERCE, PIKY, KRIZE, KULE Poznámky Deklarace jednoduché třídy výčtového typu public enum Hodnota { dve, tri, ctyri, pet, sest, sedm, osm, devet, deset, kluk, dama, kral, eso 39
40 Činnost překladače Překladač definuje třídu jako potomka třídy Enum (java.lang.enum). U výčtových typů je implicitní konstruktor soukromý a dvouparametrický (standardně veřejný a bezparametrický) první parametr je název definované konstanty druhý parametr je její pořadí. Překladač definoval statický atribut $VALUES, jenž je vektorem a obsahuje odkazy na definované výčtové typy. 40
41 Činnost překladače Překladač definoval metodu values(), která vrací kopii vektoru $VALUES. Překladač definoval metodu valueof(string), která vrací odkaz na instanci, jejíž název převzala jako parametr. 41
42 Nově definované metody public final String name() vrací název příslušné výčtové konstanty public final int ordinal() vrací pořadí definice konstanty. Konstanta definovaná jako první má pořadí 0, poslední n
43 Výčtové typy - příklad Deklarujeme třídu Jablko s výčtovými typy Barva a Chuť. Výčtové typy deklarované uvnitř třídy se dají použít pouze v té třídě. Výčtové typy deklarujeme samostatně, protože je pak můžeme používat ve více třídách (ne pouze Jablko, ale i JablkoTest). 43
44 package vycet; public enum Barva {ZELENA, CERVENA, ZLUTA, SVETLE_CERVENA Poznámky Výčtový typ Barva 44
45 package vycet; public enum Chut {VYBORNA, DOBRA, SPATNA, ODPORNA Poznámky Výčtový typ Chuť 45
46 public class Jablko { private Barva barva; private int velikost; private Chut chut; Poznámky // alternativni deklatrace uvnitr tridy //private enum Barva {ZELENA, CERVENA, ZLUTA, SVETLE_CERVENA; //private enum Chut {VYBORNA, DOBRA, SPATNA, ODPORNA; public Jablko(){ this(barva.zluta, 0, Chut.DOBRA); public Jablko(Barva barva, int velikost, Chut chut){ this.barva = barva; this.velikost = velikost; this.chut = chut; public int getvelikost(){ return velikost; public Chut getchut(){ return chut; public Barva getbarva(){ return barva; 46
47 public String tostring(){ String t = String.format("\n%s barva %s poradi %d velikost %d chut %s" + " poradi: %d", "Jablko: ",barva.name(),barva.ordinal(), getvelikost(),chut.name(), chut.ordinal()); return t; Poznámky public void tisk(){ System.out.println(this.toString()); 47
48 package vycet; import javax.swing.joptionpane; public class JablkoTest { Poznámky public static void main(string[] args) { Jablko j = new Jablko(); j.tisk(); Jablko j1 = new Jablko(Barva.valueOf("ZELENA"), 12, Chut.valueOf("VYBORNA")); Chut c; j1.tisk(); Jablko j2 = new Jablko(Barva.SVETLE_CERVENA, 15, Chut.ODPORNA); j2.tisk(); int k = j2.getchut().ordinal(); System.out.println("Poradi chuti: "+k); String t = j2.getchut().name(); System.out.println("Chut objektu j2 textove: "+t); c = j.getchut(); System.out.printf("Objekt j chut poradi: %d textove: %s", c.ordinal(), c.name()); 48
49 String nazev = JOptionPane.showInputDialog("Zadejte barvu jablka:"); Poznámky nazev = nazev.touppercase(); Barva b = Barva.valueOf(nazev); System.out.printf("\nZadana barva: %s poradi: %d", b.name(),b.ordinal()); 49
50 Jablko: barva ZLUTA poradi 2 velikost 0 chut DOBRA poradi: 1 Poznámky Jablko: barva ZELENA poradi 0 velikost 12 chut VYBORNA poradi: 0 Jablko: barva SVETLE_CERVENA poradi 3 velikost 15 chut ODPORNA poradi: 3 Poradi chuti: 3 Chut objektu j2 textove: ODPORNA Objekt j chut poradi: 1 textove: DOBRA Zadana barva: ZELENA poradi: 0 50
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í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í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í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í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í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íceObjektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc.
Objektově orientované programování 1 XOBO1 Autor: Doc. Ing. František Huňka, CSc. 1 Seznam kapitol 1 Základní pojmy...3 1.1 Úvod do tříd a objektů...3 1.2 Vývojové prostředí...7 1.3 Jednotný modelovací
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í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í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í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í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íceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
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í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í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íce1. Téma 12 - Textové soubory a výjimky
1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se
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íceProgramovací jazyk Java
1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška
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í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í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í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í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í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í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íceReflexe RTTI Runtime Type Identification
Vaše jistota na trhu IT Reflexe RTTI Runtime Type Identification Rudolf PECINOVSKÝ rudolf@pecinovsky.cz Vaše jistota na trhu IT Opakování Shrnutí či téma Co je to reflexe/rtti Termínem Reflexe označujeme
VíceVíce o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
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í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íceObsah 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íceObsah 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í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í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í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 význam a použití
OOPR_06 1 Obsah přednášky Refaktorování Návrhové vzory význam, použití Návrhový vzor přepravka (Messenger) Testování programů testovací třída JUnit Návrhový vzor singleton jedináček Návrhový vzor výčtový
VíceInfrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů
Infrastruktura UML v UML Karel Richta listopad 2011 Richta: B101TMM - v UML 2 Superstruktura UML Směr pohledu na systém dle UML Diagramy popisující strukturu diagramy tříd, objektů, kompozitní struktury,
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í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íceZáklady jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní
Základy jazyka C# 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 Obsah přednášky Architektura.NET Historie Vlastnosti
Více17. Projekt Trojúhelníky
Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským
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íceANT. Aplikační programování v Javě (BI-APJ) - 1 Ing. Jiří Daněček Katedra softwarového inženýrství Fakulta informačních technologií ČVUT Praha
ANT Aplikační programování v Javě (BI-APJ) - 1 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ší budoucnosti
Více7. Datové typy v Javě
7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů
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í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í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íceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
VíceSpráva paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016
Správa paměti Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, B36OMO 10/2016, Lekce 2 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start
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í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í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íceDatové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
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í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í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íce5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
VíceČipové karty Lekařská informatika
Čipové karty Lekařská informatika Následující kód je jednoduchou aplikací pro čipové karty, která po překladu vytváří prostor na kartě, nad kterým jsou prováděny jednotlivé operace a do kterého jsou ukládány
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íce2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
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íceZápis programu v jazyce C#
Zápis programu v jazyce C# Základní syntaktická pravidla C# = case sensitive jazyk rozlišuje velikost písmen Tzv. bílé znaky (Enter, mezera, tab ) ve ZK překladač ignoruje každý příkaz končí ; oddělovač
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í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. Dynamické datové struktury
7. Dynamické datové struktury Java poskytuje několik možností pro uložení většího množství dat (tj. objektů či primitivních datových typů) v paměti. S nejjednodušší z nich, s polem, jsme se již seznámili.
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í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íceIAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);
Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());
VíceJava a Caché IV: Manipulace s objekty
1 z 6 11.1.2007 11:13 přihlašovací jméno heslo Registrace Přihlásit články odkazy aktuality CZJUG konference o portálu přidejte se o nás Vyhledávání Text: najdi Oborový filtr J2ME J2SE J2EE Enterprise
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í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ícePokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné
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í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íceKolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín
Kolekce ArrayList napsal Pajclín Tento článek jsem se rozhodl věnovat kolekci ArrayList, protože je to jedna z nejpoužívanějších. Tento článek není kompletním popisem třídy ArrayList, ale budu se snažit
VíceObjektově orientované programování
10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh
VíceJazyk C++ I. Šablony 2
Jazyk C++ I Šablony 2 AR 2013/2014 Jazyk C++ I Třídy template class TVektor { T *a; int n; static int PocInstanci; public: TVektor(int _n = 0) : n(_n) { a = new T[n]; PocInstanci++; } ~TVektor()
VíceNA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz
NA CO SI DÁT POZOR V JAVASCRIPTU? Milan Lempera @milanlempera Víťa Plšek @winsik Angular.cz STRICT MODE volitelně aktivovatelná omezenější varianta JS 'use strict'; a = 11; // strict mode pro celý soubor
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íceOBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH FRANTIŠEK HUŇKA ČÍSLO OPERAČNÍHO PROGRAMU: CZ.1.07 NÁZEV OPERAČNÍHO PROGRAMU: VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST
VíceMichal Podzimek 6. 11. 2013
Testování Test NG Michal Podzimek 6. 11. 2013 1 Úvod public class SimpleTest { @BeforeClass public void setup() { // code that will be invoked // when this test is instantiated @Test public void afasttest()
VíceJava Výjimky Java, zimní semestr
Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní
VíceRegulární výrazy. Vzory
Regulární výrazy Regulární výrazy jsou určeny pro práci s textovými řetězci, jsou součástí J2SDK až od verze 1.4, v předchozích verzích je potřeba použít některou z externích knihoven, např. knihovnu ORO
VíceDalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.
1. Zapouzdření Cíl látky Tento blok nejdříve přiblíží zásadu zapouzdření a odpoutání kódu a po té na relacích, jako jsou asociace, agregace a kompozice, vysvětlí jak lze objektový zdrojový kód zapouzdřovat
VíceDatové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi
OOPR_11 1 Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi primitivními a obalovými typy 4. Třídy odkazující
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íceProblém identity instancí asociačních tříd
Problém identity instancí asociačních tříd Autor RNDr. Ilja Kraval Ve školeních a také následně po jejich ukončení se stále častěji objevují dotazy, které se týkají tzv. identity instancí asociační třídy.
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í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íceUJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/
UJO Framework revoluční architektura beans verze 0.80 http://ujoframework.org/ Pavel Pone(c), září 2008 Historie rok 2004 upravené objekty z frameworku Cayenne nevýhodou byla špatná typová kontrola rok
VíceTabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.
Tabulková data budeme pracovat s CSV soubory položky oddělené středníkem, např. Číslo zákazníka;příjmení;jméno;datum narození 17;Novotná;Bohdana;25.11.1982 22;Kender;David;24.12.1986 29;Čihák;Jan;18.3.1969
VíceSoubor jako posloupnost bytů
Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení
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í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íceWebové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML
Obsah přednášky Webové služby a XML Miroslav Beneš Co jsou to webové služby Architektura webových služeb SOAP SOAP a Java SOAP a PHP SOAP a C# Webové služby a XML 2 Co jsou to webové služby rozhraní k
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íceDatové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi
Datové struktury obsah přednášky 1. Úvod 2. Třídy Type-wrapper (obalový typ) pro primitivní typy automatické převody 3. Automatické převody mezi primitivními a obalovými typy 4. Třídy odkazující sama na
Více