Objektové datové typy

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

Download "Objektové datové typy"

Transkript

1 OOPR_03 1

2 Obsah přednášky Objektové datové typy Asociace mezi třídami Klíčové slovo final Třídní atributy a jejich využití Třídní metody Pravidla pro přetypování primitivních typů Metoda main Vytváření (generování) náhodných čísel Grafické prostředí - jednoduché grafické objekty. 2

3 Objektové datové typy Objektové datové typy = třídy Třídy knihoven a uživatelem definované třídy; standardní knihovna obsahuje cca 1500 tříd metody a atributy musí být vždy v deklaraci třídy kvalifikované musí být před nimi napsaný typ instance, primitivního typu 3

4 Vytvoření nové instance v instanční metodě a její vrácení Vytvoření nové instance v metodě a její vrácení operace s instancemi stejné třídy. Primitivní operace (součet, rozdíl) datových atributů a vrácení výsledku v nové instanci. Problém se vyskytuje v mnoha aplikacích. Vysvětlíme na součtu komplexních čísel třída Komp má datové atributy Re, Im odpovídající přístupové a modifikační metody metodu tostring() a tisk() 4

5 Vytvoření nové instance v instanční metodě public class Komp { private int re, im; public Komp(int re, int im) { this.re = re; this.im = im) public int getre() { return re; public Komp soucet(komp in) { int nre, nim; nre = getre() + in.getre(); nim = getim() + in.getim(); return new Komp(nRe, nim);... public class KompTest{ public staic void main(string[] args) { Komp k1 = new Komp(23, 12); Komp k2 = new Komp(-22, 14); Komp v = k1.soucet(k2); 5

6 Asociace mezi třídami Jednotlivé objekty nebo množiny stejných objektů (třídy) neexistují izolovaně, ale mají mezi sebou vazby relace. Relace umožňuje zachytit sémantický (významový) vztah mezi objekty nebo třídami objektů. Asociace popisuje relace (vztahy) mezi třídami. 6

7 Asociace mezi třídami Objektové datové typy - použití Vytvoříme dvě třídy, z nichž jedna bude mít asociaci na druhou. Třída Zakaznik, třída Ucet má asociaci na třídu Zakaznik. Vazba mezi třídami se realizuje prostřednictvím datového atributu dané třídy. Implementace vazby mezi třídami se realizuje buď v přímo v konstruktoru, nebo konkrétní metodou - setzakaznik(). Přímý přístup není možný kvůli modifikátoru private. 7

8 Diagram tříd a diagram objektů UML Zakaznik asociace Ucet «instantiate» «instantiate» «instantiate» zakaznik1 spojení link ucet3 asociace mezi třídami spojení / link mezi objekty (zabaznik1, ucet3) vazba instantiate mezi třídou a jejím objektem (instancí) 8

9 Syntaxe asociace název role název asociace Zakaznik vlastník vlastní 1 1 vlastněný účet Ucet násobnost / kardinalita název asociace název role (rolí) násobnost / kardinalita průchodnost / směrování 9

10 public class Osoba { private String jmeno; private String bydliste; Poznámky public Osoba() { this("", ""); public Osoba(String jmeno, String bydliste) { this.jmeno = jmeno; this.bydliste = bydliste; 10

11 public class Ucet { //odkaz na objektovy typ private Osoba vlastnik; private int stav; Poznámky public Ucet() { this(null, 0); // vlastnik = null; stav = 0; public Ucet(Osoba vlastnik, int castka) { this.vlastnik = vlastnik; stav = castka; public void vlozeni(int castka){ setstav(getstav() + castka); public void vyber(int castka) { setstav(getstav() castka); //stav -= castka; public void setvlastnik(osoba zakaznik) { vlastnik = zakaznik; 11

12 public class UcZkTest { public static void main(string args[]) { Osoba zakaznik1 = new Osoba("Josef","Olomouc"); Osoba zakaznik2 = new Osoba("Ivana","Karvina"); Ucet ucet1 = new Ucet(zakaznik1, 200); Ucet ucet2 = new Ucet(zakaznik1, 500); Ucet ucet3 = new Ucet(zakaznik2, 400); ucet2.setvlastnik(zakaznik2); //ucet2.vlastnik = zakaznik2; nelze realizovat Poznámky Datový atribut vlastnik má modifikátor private. Z jiné třídy je dostupný pouze pomocí přístupové metody. 12

13 Objektové datové typy - grafické vyjádření ucet1 Ucet -vlastnik -stav +vlozeni() +vyber() Zakaznik -jmeno -bydliste zakaznik1 ucet2 zakaznik2 ucet3 Ucet -vlastnik -stav +vlozeni() +vyber() Ucet -vlastnik -stav +vlozeni() +vyber() Zakaznik -jmeno -bydliste 13

14 Přímá inicializace datových typů Datové typy je možno inicializovat přímo v deklaraci: private int suma = 200; private String s1 = libovolný řetězec ; private boolean q12 = true; 14

15 Klíčové slovo final Význam klíčového slova final závisí na souvislostech a je v různých souvislostech různý. obecně představuje neměnnost, nerozšiřitelnost varianty: konstantní data konstantní argumenty prázdné konstanty konečné metody (spojitost s dědičností) konečné třídy (spojitost s dědičností) 15

16 Klíčové slovo final - konstantní data užitečnost konstanty: překladová konstanta, která nikdy nemění svoji hodnotu, hodnota inicializovaná až za běhu programu, kterou nechceme měnit, překladová konstanta, urychlí překlad (výpočty lze provádět již v době překladu), sníží zatížení běhu programu. v Javě smějí být konstanty pouze primitivních typů vyjádřeny s klíčovým slovem final private final int TYDEN = 7; 16

17 Klíčové slovo final - konstantní data private final int PRACTYDEN = 5; TYDEN má vždy hodnotu 7 PRACTYDEN má vždy hodnotu 5 Při použití klíčového slova final u odkazů na objekty způsobí, že odkaz (reference) bude neměnný!! Proměnná již nemůže ukazovat na jiný objekt! Datové atributy objektu měněny být mohou. 17

18 public class BodFinal { private final int x; private final int y; Poznámky public BodFinal() { this(0, 0); public BodFinal(int c) { this(c, c); public BodFinal(int x, int y) { this.x = x; this.y = y; public String tostring() { String t = String.format("\nX: %d Y: %d, getx(), gety()); return t; public void tisk() { System.out.println("Souradnice bodu "+this.tostring()); 18

19 public int getx() { return x; public int gety(){ return y; public void setx(int x){ //this.x = x; // can't assign a value to final variable x public void sety(int y){ //this.y = y; // can't assign a value to final variable y public void setbod(bodfinal a){ // x = a.x; can't assign a value to final variable x // y = a.y; can't assign a value to final variable y public BodFinal getbod(){ return this; Poznámky U metod označených final překladač vypíše chybová hlášení setx(), sety() a setbod() 19

20 Prázdné konstanty Prázdné konstanty: jsou datové složky deklarované jako final, kterým není přidělena žádná inicializační hodnota, musí být ale inicializované před použitím (v konstruktoru), umožňují, aby různé objekty měly různé hodnoty atributů final. 20

21 //Prazdne konstanty class Bod{... public class Kruh{ final int NULA = 0; // inicializovana konstanta final double POLOMER; //prazdna konstanta final Bod stred; //prazdna konstanta vzdy ukazuje na dany objekt Poznámky Prázdné konstanty public Kruh() { POLOMER = 25.5; stred = new Bod(); // inicializace v konstruktoru public Kruh(double r, Bod b) { POLOMER = r; stred = new Bod(b); // kopirovaci konstruktor // inicializace v konstruktoru public static void main(string[] args){ Kruh k1 = new Kruh(); Bod p = new Bod(26, 17); Kruh k2 = new Kruh(12.1, p); 21

22 Konstantní argumenty Možnost deklarovat argumenty příslušných metod jako final pak uvnitř metody nelze změnit hodnotu objektu. 22

23 public class KruhArg { public void operace(final Bod q){ //q = new Bod(); nelze menit Bod a = new Bod(); //q = a; nelze public void operacebez(bod q){ q = new Bod(24,44); q.posun(20,60); public int operacep(final int i){ //i++; nelze menit return i+1; // je mozne public Bod operacex(bod q){ //prekryti vstupniho argumentu q = new Bod(q); return q; Poznámky Konstantní argumenty public static void main(string[] args) { Bod a = new Bod(10, 20); KruhArg ka = new KruhArg(); ka.operace(a); Bod x = ka.operacex(a); a.tisk(); x.tisk(); if(a == x ) System.out.println("Jsou stejne"); else System.out.println("Nejsou stejne"); 23

24 Browser Javovských tříd java.util název paketu java.util.*; java.util.scanner; Scanner je název konkrétní třídy Základní třídy: String, System jsou uloženy v java.lang paketu, který je importován implicitně. Existuje speciální vztah mezi třídami umístěnými ve stejném adresáři na disku: Bod, BodTest Implicitně jsou takové třídy považovány za třídy jednoho paketu, uváděného jako default package. 24

25 Browser Javovských tříd Třídy ve stejném paketu jsou implicitně importovány do zdrojového kódu jiných tříd ve stejném paketu. Proto není třeba deklarace import, když jedna třída paketu používá jinou třídu stejného paketu. Deklarace import plně kvalifikuje jména použitých tříd z jiného paketu. 25

26 Lokální proměnné V deklaraci třídy jsou datové atributy a metody. Lokální proměnné jsou dočasné proměnné deklarované: uvnitř metod (v těle metod), nesmí se používat modifikátory přístupu (private, public) ani modifikátor static, platnost je pouze v rámci dané metody, před prvním použitím vyžadují přiřadit nějakou hodnotu tím se liší od datových atributů, při opuštění metody se lokální proměnné zruší, při příštím spuštění metody se znovu vytvoří. 26

27 Lokální proměnné public soucet(int A, int B, int C) { int pom = 0; pom = A + B + C; return pom; 27

28 Třídní a instanční proměnné Instanční proměnné jsou datové atributy objektu. Jejich hodnoty, reference se většinou liší. Třídní proměnné jsou proměnné třídy hodnoty stejné pro všechny objekty (instance) dané třídy. Klíčové slovo static je uvedeno před datovým / objektovým typem. Notace zápisu: private static int cislo; private static String nazev; 28

29 Třídní a instanční proměnné Třídní proměnné zabezpečí pouze jedno úložiště dané třídní proměnné pro všechny objekty dané třídy Třídní metoda není přidružena k žádnému konkrétnímu objektu třídy. Bez vytvoření objektu je možné přistupovat k třídním metodám dané třídy a jejich prostřednictvím k třídním atributům. 29

30 public class StaticTest { private static int i = 47; public static int geti(){ return i; public void seti(int j){ i = j; Poznámky StaticTest public static void main(string[] args) { StaticTest st1 = new StaticTest(); StaticTest st2 = new StaticTest(); st1.i++; StaticTest.i++; System.out.println("Hodnota i:"+st2.i); System.out.println("Hodnota i: "+st2.geti()); System.out.println("Hodnota i - trida prijemce: "+ StaticTest.getI()); Hodnota i:49 Hodnota i: 49 Hodnota i - trida prijemce: 49 30

31 Využití třídních (statických) proměnných V rámci dané třídy jako globální proměnné dostupné všem objektům dané třídy. Třída Bod: private static int krokx = 50; private static int kroky = 120; public void move() { x = x + krokx; y = y + kroky; 31

32 Atributy objektů & atributy třídy Atributy objektů (instancí) je možné inicializovat buď přímo v deklaraci, nebo později v konstruktoru. Atributy tříd (třídní atributy) možno inicializovat přímo v deklaraci, nebo prostřednictvím třídních přístupových a modifikačních metod. 32

33 Třídní & instanční metody Instanční metody aplikují se na objekty. Třídní metody (metody třídy) se aplikují na danou třídu, zajišťují (nastavují) hodnoty atributů třídy. definují se vložením klíčového slova static mezi identifikátory, mají platnost pro všechny instance (objekty) dané třídy, mohou být volány před vznikem instance dané třídy, 33

34 Třídní metody slouží k přípravě prostředí ve kterém vznikne objekt. slouží k definici metod, které nejsou vázány na žádnou instanci (objekt) - takto jsou definovány matematické funkce. 34

35 Třídní metody Metody třídy (Class methods) nezávisí na žádné instanci. V metodách třídy tedy nemůžeme: používat metody a atributy instancí přesněji atributy a metody instancí kvalifikované klíčovým slovem this, překladač totiž nemá žádnou informaci, která instance by se za klíčovým slovem this mohla v daném okamžiku skrývat. 35

36 public class BodStatic { private int x; private int y; private String jmeno; private static int krokx = 25; private static int kroky = -40; Poznámky public BodStatic(String j) { this(j, 0, 0); public BodStatic(String j, int c) { this(j, c, c); public BodStatic(String j, int x, int y) { this.x = x; this.y = y; jmeno = j; public String tostring() { String t = String.format("\n%11s %4s %4s %4d %4s %4d","Nazev bodu:", getjmeno(),"x:",getx(),"y:",gety()); return t; public void tisk() { System.out.printf(this.toString()); 36

37 public int getx() { return x; Poznámky public int gety(){ return y; public void setx(int x){ this.x = x; public void sety(int y){ this.y = y; public void setbod(bodstatic a){ setx(a.getx()); sety(a.gety()); public String getjmeno(){ return jmeno; public BodStatic getbodstatic(){ return this; public void posunx(){ x =+ krokx; public void posuny(){ y =+ kroky; public void posunxy(){ posunx(); this.posuny(); // pouziti (nepouziti) this nehraje roli 37

38 public class BodStaticTest { public static void main(string args[]){ BodStatic a, b, c; a = new BodStatic("a"); a.tisk(); b = new BodStatic("b",-10, 122); b.tisk(); c = b.getbodstatic(); c.tisk(); a.posunx(); a.tisk(); b.posuny(); b.tisk(); c.posunxy(); c.tisk(); Poznámky BodStaticTest 38

39 Metody třídy Math Metoda Popis Příklad abs(x) absolutní hodnota abs(-27.3) = 27.3 ceil(x) Zaokrouhlí x na celé číslo větší než x ceil(9.2) = 10.0 ceil(-9.2) = -9 cos(x) x je v radianech cos(0.0) = 1.0 exp(x) exponenciální funkce exp(1.0) = floor(x) zaokrouhlí x na celé číslo menší než x floor(9.2) = 9.0 floor(-9.8) = log(x) funkce přirozeného logaritmu log(math.e) = 1.0 max(x, y) vrací větší z x a y max(12.3, 14.2) min(x, y) vrací menší z x a y min(16.9, -33) pow(x, y) umocní x na y pow(2.0, 7.0) = sin(x) x je v radiánech sin(0.0) = 0.0 sqrt(x) druhá odmocnina sqrt(900.0) = 30.0 tan(x) x je v radiánech tan(0.0) =

40 Metody třídy Math Třída Math obsahuje konstanty Math.PI a Math.E 40

41 Přetypování primitivních typů Automatické přetypování argumentů (parametrů) metod Přinutí argumenty ke konverzi na vhodné typy při jejich předávání do metod např. System.out.println( Math.sqrt( 4 ) ); Vypočítá Math.sqrt( 4 ) Pak vyhodnotí System.out.println() Pravidla převodu Určují, jak převádět automaticky primitivní typy bez ztráty dat. 41

42 Tabulka možností automatického přetypování primitivních typů Typ double float long int char short bype boolean Možné přetypování None double float or double long, float or double int, long, float or double int, long, float or double (but not char) short, int, long, float, or double (but not char) None (boolean hodnoty nejsou v Javě považovány za čísla) 42

43 Main metoda Metoda main deklarovaná jako static Deklarací metody main jako static umožňuje JVM vyvolat metodu main bez vytváření instance této třídy. public static void main(string[] args) java ClassName arg1 arg2 // běh aplikace JVM nahrává specifikovanou třídu (ClassName) a vyvolává metodu main této třídy. Proto je metoda main třídní. 43

44 Třídní metody Podobně jako existuje třída Math, může existovat jinak uživatelsky deklarovaná třída s třídními metodami Tato třída slouží pouze jako schránka pro různé třídní metody 44

45 import javax.swing.joptionpane; // Class static pomocna trida slouzici jako schranka pro staticke metody public class Cs { // private konstruktor nedovoli vytvaret instance od dane tridy private Cs() { Poznámky Třída Cs // spocte delku usecky se zadanymi krajnimi body public static double delka(double x1, double y1, double x2, double y2) { double dx = x2 - x1; double dy = y2 - y1; if (dx < 0 dy < 0) return 0.0; else return Cs.prepona(dx,dy); // spocte delku pravouhleho trojuhelnika se zadanymi odvesnami public static double prepona(double x, double y) { return Math.sqrt(x*x + y*y); // vraci pouze nazev tridy zadane instance bez nazvu balicku public static String nazevtridy(object o) { // getclass() vraci class a getname() vraci retezec String trida = o.getclass().getname(); return Cs.pouzeNazev(trida); 45

46 // vraci pouze nazev tridy, bez nazvu balicku // balicek.trida - vraci od '.' do konce retezce public static String pouzenazev(string nazev) { int p = nazev.lastindexof('.'); p = p + 1; //retezce se pocitaji od nuly return nazev.substring(p); // dialogove okno se zpravou pro odpoved uzivatele // ANO, NE, STORNO vrati informaci jak uzivatel odpovedel // STORNO - uzavre dialog a ukonci program public static boolean souhlas(object dotaz) { return souhlas("dotaz", dotaz); // zobrazi dialogove okno a umozni uzivateli odpovedet // ANO, NE, STORNO public static boolean souhlas(string nadpis, Object dotaz) { int odpoved = JOptionPane.showOptionDialog( null, //rodicivska komponenta neni - vystredi na obrazovce dotaz, //otazka na kterou ma uzivatel odpovedet nadpis, //titulek okna 0, //nula - volitelny typ JOptionPane.QUESTION_MESSAGE, //typ zpravy Message type null, //icon new Object[] { "Ano", "Ne", "Storno", "Ano" // implicitni hodnota ); Poznámky Třída Cs 46

47 if ((odpoved == JOptionPane.CANCEL_OPTION) (odpoved == JOptionPane.CLOSED_OPTION)) { System.exit(0); return (odpoved == JOptionPane.YES_OPTION); // dialogove okno s vyzvou k zadani realne hodnoty, kterou vraci // pri zavreni okna, nebo cancel se ukonci aplikace vyzva - text, ktery se zibrazi doubleimpl - implicitni hodnota public static double zadej(object vyzva, double doubleimpl) { return Double.parseDouble( zadej(vyzva, ""+doubleimpl ).trim() ); // vraci cele cislo, nebo implicitni hodnotu public static int zadej(object vyzva, int intimpl) { return Integer.parseInt( zadej( vyzva, ""+intimpl). trim() ); // vraci retezec nebo implicitni hodnotu public static String zadej(object vyzva, String stringimpl) { String odpoved = JOptionPane.showInputDialog(null, vyzva, stringimpl); if (odpoved == null) System.exit(0); return odpoved; Poznámky Třída Cs 47

48 // zobrazi dialogove okno se zpravou a pocka, az je uzivatel odklepne public static void zprava( Object text) { int odpoved = JOptionPane.showConfirmDialog( null, // rodicovska komponenta neni - vystredi se na obrazovce text, //zprava sdelovana uzivateli "Zprava", //titulek okna JOptionPane.DEFAULT_OPTION, //volitelny typ OK JOptionPane.INFORMATION_MESSAGE //Message type ); if (odpoved == JOptionPane.CLOSED_OPTION) System.exit(0); Poznámky Třída Cs 48

49 public class IOTest { private IOTest() { Poznámky public static Osoba jmenonarozeni() { String jmeno = Cs.zadej("Zadejte sve jmeno:", "Adam"); int roknarozeni = Cs.zadej("Zadejte rok narozeni:", 1900); Cs.zprava("Vase jmeno: "+jmeno+"\nvas rok narozeni: "+roknarozeni); Osoba o1= new Osoba(); o1.setjmeno(jmeno); o1.setroknarozeni(roknarozeni); return o1; // celociselne deleni public static int celociselnedeleni() { int delenec = Cs.zadej("Delenec (cele cislo):", 0); int delitel = Cs.zadej("Delitel (cele cislo):", 1); int podil = delenec / delitel; int zbytek = delenec % delitel; Cs.zprava(delenec +" : "+delitel+ " = " +podil + " zbytek " + zbytek); return podil; 49

50 // deleni realnych cisel public static double realnedeleni() { double delenec = Cs.zadej("Delenec :", 0); double delitel = Cs.zadej("Delitel :", 1); double podil = delenec / delitel; double zbytek = delenec % delitel; Cs.zprava(delenec +" : "+delitel+ " = " +podil + "\nzbytek "+ zbytek); return podil; Poznámky 50

51 public class OsobaTest { public static void main(string[] args) { Cs.zprava("Start aplikace"); String jmeno = Cs.zadej("Jmeno","neuvedeno"); int rokn = Cs.zadej("Rok narozeni",1900); String ulice = Cs.zadej("Nazev ulice","nezadana"); int cislod = Cs.zadej("Cislo domu",0); String mesto = Cs.zadej("Mesto","nezadane"); Osoba o1 = new Osoba(jmeno, rokn, new Adresa(ulice, cislod, mesto)); int cislo = Cs.zadej("Cislo uctu",0); int stav = Cs.zadej("Pocatecni stav uctu",0); Poznámky OsobaTest Ucet u1 = new Ucet(cislo, stav); o1.setucet(u1); // neni mozne o1.ucet = u1; boolean q = true; 51

52 while (q) { String odp = Cs.zadej("Prehled operaci:\n"+ "v,v - vlozeni\n"+"w, W - vyber\n"+ "t,t - tisk ucet\n"+"p,p - tisk osoba\n"+ "k,k - konec operaci","k"); char ch = odp.charat(0); switch (ch) { case 'v': case 'V': int castka = Cs.zadej("Vkladana castka",0); o1.vlozeni(castka); break; case 'w': case 'W': int castka1 = Cs.zadej("Vybirana castka",0); o1.vyber(castka1); break; case 't': case 'T': o1.getucet().tisk(); break; case 'p': case 'P': o1.tisk(); break; case 'k': case 'K': q = false; break; default: boolean qx = Cs.souhlas("Zadali jste spatnou odpoved\n"+ "Chcete pokracovat?"); q = qx; break; Cs.zprava("Konec programu"); Poznámky OsobaTest 52

53 Jednoduché grafické objekty bod, čára Grafické prostředí tvoří třídy BaseCanvas.java a Gui.java. Třída Bod nutnost doplnit o další datové atributy a metody. 53

54 import java.awt.color; 1 public class Bod { 2 private int x; 3 private int y; 4 private Color barva; 5 private BaseCanvas obraz = Gui.getInstance().getCanvas(); 6 private Color barvapozadi = Color.white; 7 public Bod() { 8 this(0, 0, Color.red); 9 10 public Bod(int x, int y) { 11 this(x, y, Color.red); 12 Poznámky 13 public Bod(int x, int y, Color barva) { 14 this.x = x; 15 this.y = y; 16 this.barva = barva; public Bod(int x, int y, String barva) { 19 this.x = x; this.y = y; 20 this.barva = this.stringtocolor(barva); 21 54

55 22 // kopirovaci konstruktor 23 public Bod(Bod bod) { 24 x = bod.getx(); 25 y = bod.gety(); 26 barva = bod.getbarva(); Poznámky 55

56 import java.awt.color; public class Barva { public static Color cerna() { return Color.black; public static Color cervena() { return Color.red; public static Color modra() { return Color.blue; public static Color zelena() { return Color.green; public static Color zluta() { return Color.yellow;... Poznámky Barva.cervena() Color.red Barva.zluta() Color.yellow 56

57 28 public Color getbarva() { 29 return barva; public BaseCanvas getobraz() { 32 return obraz; 33 Poznámky Třída Bod 2. část 34 public Color getbarvapozadi() { 35 return barvapozadi; public void setbarva(color barva) { 38 this.barva = barva; public void vykresli() { 41 getobraz().putpixel(getx(), gety(), getbarva()); public void smaz() { 44 getobraz().putpixel(getx(), gety(), getbarvapozadi()); 45 57

58 47 public void vykresli(int x1, int y1) { 48 getobraz().putpixel(getx() + x1, gety() + y1, getbarva()); 49 Poznámky 50 public void smaz(int x1, int y1) { 51 getobraz().putpixel(getx() + x1, gety() + y1, getbarvapozadi()); public void posunsouradnic(int dx, int dy) { 55 setx(getx() + dx); 56 sety(gety() + dy); public void posunbod(int dx, int dy) { 59 this.smaz(); 60 this.posunsouradnic(dx, dy); 61 this.vykresli(); public String tostring(){ 65 return "X: " + getx() + " Y: " + gety() + 66 " barva: " + getbarva(); 67 58

59 68 public void tisk() { 69 System.out.println(toString()); 70 Poznámky 71 public void pauza(int doba) { 72 try { 73 Thread vlakno = new Thread(); 74 vlakno.sleep(doba); 75 catch(interruptedexception e) { 76 System.out.println("Chyba vlakno pauza"); public Color stringtocolor(string barva) { 80 switch(barva) { 81 case "cerna": return Color.black; 82 case "cervena": return Color.red; 83 case "modra": return Color.blue; 84 case "zelena": return Color.green; 85 case "ruzova": return Color.pink; 86 default: return Color.red;

60 89 public int delkax(bod bod) { 90 return Math.abs(getX() - bod.getx()); 91 Poznámky 92 public int delkay(bod bod) { 93 return Math.abs(getY() - bod.gety());

61 import java.awt.color; public class BodTest { public static void main(string[] args) { Bod boda = new Bod(100,110, Color.red); Bod bodb = new Bod(230, 400, "modra"); // vykresleni 4x boda boda.vykresli(); boda.vykresli(0, 1); boda.vykresli(0, 2); boda.vykresli(0, 3); boda.pauza(20); Poznámky // vykresleni 3x bodb bodb.vykresli(); bodb.posunsouradnic(1, 0); bodb.vykresli(); bodb.posunsouradnic(1, 0); bodb.vykresli(); bodb.pauza(20); boda.posunsouradnic(40, 50); // vykresleni svisle cary for(int i = 0; i < 200; i++) { boda.vykresli(0, i); boda.pauza(40); bodb.posunbod(30, 20);... 61

62 Případová studie: Generování náhodných čísel náhodná čísla v dané rozsahu testování jejich vhodnosti transformace na různé typy statistických rozložení Java třída Random z paketu java.util, nebo - statická metoda random() třídy Math paket java.lang produkuje čísla typu double v rozsahu 0.0 <= x <

63 Generování náhodných čísel vytvoření objektu a jeho použití Random nahodnecislo = new Random(); int nahodnahodnota = nahodnecislo.nextint(); metoda nextint() vytvoří náhodné číslo v rozsahu: mluvíme o takzvaných pseudonáhodných číslech. 63

64 Generování náhodných čísel házení kostkou int nahodnahodnota = nahodnecislo.nextint(2); //vrací hodnoty 0 a 1 int hod= nahodnecislo.nextint(6); //vrací hodnopty od 0 do 5 int hod = 1 + nahodnecislo.nextint(6); 64

65 // Shifted and scaled random integers. import java.util.random; // program uses class Random Poznámky public class RandomIntegers { public static void main( String args[] ) { Random randomnumbers = new Random(); // random number generator int face; // stores each random integer generated // loop 20 times for ( int counter = 1; counter <= 20; counter++ ) { // pick random integer from 1 to 6 face = 1 + randomnumbers.nextint( 6 ); System.out.printf( "%d ", face ); // display generated value // if counter is divisible by 5, start a new line of output if ( counter % 5 == 0 ) System.out.println(); // end for // end main // end class RandomIntegers 65

66 Poznámky Výsledky generování 66

67 // Roll a six-sided die 6000 times. import java.util.random; Poznámky public class RollDie { public static void main( String args[] ) { Random randomnumbers = new Random(); // random number generator int frequency1 = 0; // count of 1s rolled int frequency2 = 0; // count of 2s rolled int frequency3 = 0; // count of 3s rolled int frequency4 = 0; // count of 4s rolled int frequency5 = 0; // count of 5s rolled int frequency6 = 0; // count of 6s rolled int face; // stores most recently rolled value // summarize results of 6000 rolls of a die for ( int roll = 1; roll <= 6000; roll++ ) { face = 1 + randomnumbers.nextint( 6 ); // number from 1 to 6 67

68 // determine roll value 1-6 and increment appropriate counter switch ( face ) { case 1: ++frequency1; // increment the 1s counter break; case 2: ++frequency2; // increment the 2s counter break; case 3: ++frequency3; // increment the 3s counter break; case 4: ++frequency4; // increment the 4s counter break; case 5: ++frequency5; // increment the 5s counter break; case 6: ++frequency6; // increment the 6s counter break; // optional at end of switch // end switch // end for Poznámky System.out.println( "Face\tFrequency" ); // output headers System.out.printf( "1\t%d\n2\t%d\n3\t%d\n4\t%d\n5\t%d\n6\t%d\n", frequency1, frequency2, frequency3, frequency4, frequency5, frequency6 ); // end main // end class RollDie 68

69 Face Frequency Poznámky Výsledky programu Face Frequency

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

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

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

Ú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

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

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

Přehled probírané látky

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

Více

Paměť počítače. alg2 1

Paměť počítače. alg2 1 Paměť počítače Výpočetní proces je posloupnost akcí nad daty uloženými v paměti počítače Data jsou v paměti reprezentována posloupnostmi bitů (bit = 0 nebo 1) Připomeňme: paměť je tvořena řadou 8-mi bitových

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

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

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

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

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

Ú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

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

Ú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

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

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury, standardní metody Problematika načítání pomocí Scanner Některé poznámky k příkazům Psaní kódu programu Metody třídy Math Obalové třídy primitivních datových

Více

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

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

Více

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

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

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

Více

Generické programování

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

Více

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

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

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

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

Seminář Java II p.1/43

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

Více

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

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

Více

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

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

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

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

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

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

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 7 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ň - ternární

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

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

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

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

Více

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

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double

Desetinná čísla. pro celá čísla jsme používali typ int. pro desetinná čísla používáme typ double Čísla Desetinná čísla pro celá čísla jsme používali typ int pro desetinná čísla používáme typ double analogicky pro konverzi ze stringu na double se místo Convert.ToInt32 používá Convert.ToDouble Př. program,

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

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech

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

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

Konstruktory a destruktory

Konstruktory a destruktory Konstruktory a destruktory Nedostatek atributy po vytvoření objektu nejsou automaticky inicializovány hodnota atributů je náhodná vytvoření metody pro inicializaci, kterou musí programátor explicitně zavolat,

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

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

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

Více

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

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

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

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

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

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

Více

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

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady

4.4.2012. Obsah přednášky. Příkaz for neúplný. Příkaz for příklady. Cyklus for each (enhanced for loop) Příkaz for příklady Základy programování (IZAPR, IZKPR) Přednáška 5 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky Příkazy cyklu -

Více

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená

IAJCE Přednáška č. 7. řízení semaforu na křižovatce = přepínání červená/oranžová/zelená Výčtový typ Motivační příklad řízení semaforu na křižovatce = přepínání červená/oranžová/zelená const int CERVENA = 0; const int ORANZOVA = 1; const int ZELENA = 2; int prististav = CERVENA; while (true)

Více

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

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

Více

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

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku Podprogramy zásady: jednu věc programovat pouze jednou podprogram logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku // nacteni strany 1 double

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

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

5 Přehled operátorů, příkazy, přetypování

5 Přehled operátorů, příkazy, přetypování 5 Přehled operátorů, příkazy, přetypování Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně budou uvedeny detaily týkající se operátorů. Doba nutná k nastudování

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

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

Řídicí struktury. alg3 1

Řídicí struktury. alg3 1 Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení

Více

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty. Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné

Více

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

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

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

Více

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

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

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 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 formátovanému výstupu,

Více

Mnohotvarost (polymorfizmus)

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

Více

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

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

Více

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

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

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

Jak v Javě příkazy, operace a výrazy. BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické

Jak v Javě příkazy, operace a výrazy. BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické Jak v Javě příkazy, operace a výrazy BD6B36PJV 00 Fakulta elektrotechnická České vysoké učení technické Literály Konstanty Komentáře Přiřazovací příkaz Typové konverze Příkazy výstupu Formátovaný výstup

Více

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15 KAPITOLA 1 Úvod do programo vání v jazyce C++ 17 Základní pojmy 17 Proměnné a konstanty 18 Typy příkazů 18 IDE integrované vývojové

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,

Více

Java a XML. 10/26/09 1/7 Java a XML

Java a XML. 10/26/09 1/7 Java a XML Java a XML Java i XML jsou přenositelné V javě existuje podpora pro práci s XML, nejčastější akce prováděné při zpracování XML: načítání XML elementů generování nových elementů nebo úprava starého zápis

Více

7. Statické prvky třídy

7. Statické prvky třídy Statické prvky třídy strana 61 7. Statické prvky třídy V úvodních kapitolách jsme popsali deklaraci a používání datových atributů a metod instance. Jsou to nejčastě ji používané součásti třídy, nicméně

Více

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti

3. přednáška. Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti Obsah: Řídící struktury sekvence, if-else, switch, for, while, do-while. Zpracování posloupnosti 3. přednáška nalezení největšího prvku, druhého nejvyššího prvku, algoritmus shozeného praporku. Algoritmizace

Více

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení

Třída DrawingTool. Obrázek 1: Prázdné okno připravené pro kreslení Třída DrawingTool strana 1 1. Základ Třída DrawingTool Třída DrawingTool je určena k jednoduchému kreslení pomocí několika základních příkazů do grafického okna zadaných rozměrů (nastavení v konstruktoru),

Více

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem

Jazyk C++ 1. Blok 3 Objektové typy jazyka C++ Třída. Studijní cíl. Doba nutná k nastudování. Průvodce studiem Jazyk C++ 1 Blok 3 Objektové typy jazyka C++ Studijní cíl Ve třetím bloku bude představen a rozebrán nejdůležitější objektový typ jazyka C++ a to sice třída. Po absolvování bloku bude student schopen navrhovat

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

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

Seminář Java IV p.1/38

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

Více

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová

Programové konvence, dokumentace a ladění. Programování II 2. přednáška Alena Buchalcevová Programové konvence, dokumentace a ladění 2. přednáška Alena Buchalcevová Proč dodržovat programové konvence? velkou část životního cyklu softwaru tvoří údržba údržbu provádí většinou někdo jiný než autor

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

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false Logické operace Datový typ bool může nabýt hodnot: o true o false Relační operátory pravda, 1, nepravda, 0, hodnoty všech primitivních datových typů (int, double ) jsou uspořádané lze je porovnávat binární

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

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo

Neměnné objekty. Tomáš Pitner, upravil Marek Šabo Neměnné objekty Tomáš Pitner, upravil Marek Šabo Neměnné objekty Neměnný (immutable) objekt nemůže být po jeho vytvoření modifikován Bezpečně víme, co v něm až do konce života bude Tudíž může být souběžně

Více

1. Dědičnost a polymorfismus

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

Více

6. Příkazy a řídící struktury v Javě

6. Příkazy a řídící struktury v Javě 6. Příkazy a řídící struktury v Javě Příkazy v Javě Příkazy v Javě Řídicí příkazy (větvení, cykly) Přiřazovací příkaz = Řízení toku programu (větvení, cykly) Volání metody Návrat z metody - příkaz return

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

Úvod do programování v jazyce Java

Úvod do programování v jazyce Java Úvod do programování v jazyce Java Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci 5. říjen, 2011 Petr Krajča (UP) KMI/UP3J: Seminář I. 5.10.2011 1 / 17 Organizační informace email: petr.krajca@upol.cz

Více

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu: Čtvrtek 8 prosince Pascal - opakování základů Struktura programu: 1 hlavička obsahuje název programu, použité programové jednotky (knihovny), definice konstant, deklarace proměnných, všechny použité procedury

Více

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

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

Více