Přehled probírané látky

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

Download "Přehled probírané látky"

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

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

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

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

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

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

Objektově 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. 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í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

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

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

RMI Remote Method Invocation

RMI 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 Ú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) Ú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

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

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

1. Téma 12 - Textové soubory a výjimky

1. 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í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

Programovací jazyk Java

Programovací 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í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

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

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

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

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

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

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

Reflexe RTTI Runtime Type Identification

Reflexe 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íce

Více o konstruktorech a destruktorech

Ví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í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

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

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

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

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

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

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

Návrhové vzory design patterns význam a použití

Ná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íce

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

Infrastruktura 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í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

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

Zá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# 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íce

17. Projekt Trojúhelníky

17. 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í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

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

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 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íce

7. Datové typy v Javě

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

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

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

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

Algoritmizace a programování

Algoritmizace 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íce

Sprá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 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íce

Algoritmizace a programování

Algoritmizace 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í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

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

Datové struktury. alg12 1

Datové 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í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

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

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

5 Rekurze a zásobník. Rekurzivní volání metody

5 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 Č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íce

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Tabulka 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íce

2) 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.

2) 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í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

Zápis programu v jazyce C#

Zá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í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

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

7. Dynamické datové struktury

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

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

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

IAJCE 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íce

Java a Caché IV: Manipulace s objekty

Java 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í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

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

Pokroč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++ 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í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

Algoritmizace a programování. Terminálový vstup a výstup

Algoritmizace 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íce

Kolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín

Kolekce 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íce

Objektově orientované programování

Objektově 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íce

Jazyk C++ I. Šablony 2

Jazyk 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íce

NA CO SI DÁT POZOR V JAVASCRIPTU? Angular.cz

NA 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í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

OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

OBJEKTOVĚ 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íce

Michal Podzimek 6. 11. 2013

Michal 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íce

Java Výjimky Java, zimní semestr

Java 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íce

Regulární výrazy. Vzory

Regulá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íce

Dalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.

Další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íce

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

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 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í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

Problém identity instancí asociačních tříd

Problé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í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

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

UJO Framework. revoluční architektura beans. verze 0.80 http://ujoframework.org/

UJO 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íce

Tabulková 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ř. 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íce

Soubor jako posloupnost bytů

Soubor 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í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

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

Webové 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

Webové 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í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

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

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