Deklarace a vytváření

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

Download "Deklarace a vytváření"

Transkript

1 OOPR_10 1

2 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 polymorfních typů Třída Registr pro uložení objektů typu rozhraní Procházení kolekcí (seznamem) a návrhový vzor Iterátor 2

3 Deklarace a vytváření Deklarace a vytváření polí Pole jsou objekty, které zabírají místo v operační paměti Vytváří se dynamicky pomocí klíčového slova new int c[] = new int[ 12 ]; je ekvivalentní zápisu: int c[]; // declaruje proměnnou pole c = new int[ 12 ]; // vytváří pole Pole můžeme vytvářet také jedním příkazem: String b[] = new String[ 100 ]; String[] b = new String[100]; 3

4 Deklarace a vytváření implicitní atribut (funkce) length vrací deklarovanou kapacitu pole double pole[] = new double[4]; for( int i = 0; i < pole.length; i++) pole[i] = i * i; 4

5 Rozšířený příkaz for J2SE 5.0 rozšířila příkaz for, jenž iteruje přes prvky pole nebo kolekce, bez použití proměnné pro čítač. Syntaxe příkazu: for (typ parametr : jméno_pole) příkaz typ parametru musí souhlasit s typem prvků pole příkaz prochází implicitně všemi prvky pole, což může někdy způsobit problém 5

6 // Předání argumentů z příkazového řádku. public class InitArray { public static void main( String args[] ) { // kontrola počtu argumentů if ( args.length!= 3 ) System.out.println( "Error: Please re-enter the entire command, including\n" + "an array size, initial value and increment." ); else { // získání prvního argumentu z příkazové řádky int arraylength = Integer.parseInt( args[ 0 ] ); int array[] = new int[ arraylength ]; // create array Předávání argumentů z příkazového řádku java InitArray // získání dalších argumentů int initialvalue = Integer.parseInt( args[ 1 ] ); int increment = Integer.parseInt( args[ 2 ] ); // výpočet hodnoty pro každý prvek pole for ( int counter = 0; counter < array.length; counter++ ) array[ counter ] = initialvalue + increment * counter; System.out.printf( "%s%8s\n", "Index", "Value" ); // zobrazení indexu a hodnoty pole for ( int counter = 0; counter < array.length; counter++ ) System.out.printf( "%5d%8d\n", counter, array[ counter ] ); // end else // end main // end class InitArray 6

7 import java.util.scanner; public class Pole { public static void main(string args[]) { int[] a, b; int[] c = new int [6]; String[] s = {"raz","dva","tri"; double[] d = {1.3, , , , 44.0; Přehled možností při práci s polem b= new int[4]; System.out.printf("%s:%9s\n","Index","Hodnota"); for (int i=0; i< s.length; ++i) System.out.printf("%5s:%9s\n",i,s[i]); // zadavani ciselnych hodnot Scanner vstup = new Scanner(System.in); System.out.println("Zadejte hodnoty pole:\n"); for (int i= 0; i< b.length; ++i) { System.out.printf("%4d: ",i+1); b[i] = vstup.nextint(); // tisk pole System.out.printf("%s\n","Hodnota"); for (int i : b) System.out.printf("%7d\n",i); int suma = 0; 7

8 for (int j: b) suma += j; // suma = suma + j double prumer = suma / b.length; System.out.printf("%20s::%.3f\n","Prumer pole b = ",prumer); prumer = (double) suma / b.length; System.out.printf("%20s::%.3f\n","Prumer pole b = ",prumer); // prirazeni a = b; System.out.printf("%s:%9s\n","Index","Hodnota"); for (int i=0; i< a.length; ++i) System.out.printf("%5s:%9d\n",i,a[i]); if (a == b) System.out.println("ANO"); else System.out.println("NE"); a[3] = -200; System.out.printf("%s:%9s\n","Index","Hodnota"); for (int i=0; i< b.length; i++) System.out.printf("%5s:%9d\n",i,b[i]); System.out.printf("%s:%9s\n","Index","Hodnota"); for (int i= b.length - 1; i >= 0; i--) System.out.printf("%5s:%9d\n",i,b[i]); System.out.printf("%s:%9s\n","Index","Hodnota"); for (int i= b.length - 1; i >= 0; i -= 2) // i=i-2 System.out.printf("%5s:%9d\n",i,b[i]); 8

9 Index: Hodnota 0: raz 1: dva 2: tri Zadejte hodnoty pole: 1: 12 2: 33 3: 58 4: 62 Hodnota Prumer pole b = ::41,000 Prumer pole b = ::41,250 Index: Hodnota 0: 12 1: 33 2: 58 3: 62 ANO Index: Hodnota 0: 12 1: 33 2: 58 3: -200 Index: Hodnota 3: : 58 1: 33 0: 12 Index: Hodnota 3: : 33 Výsledky programu 9

10 Obecná třída Register - struktura pole je vnitřní datový atribut třídy Registr top ukazatel na místo, kam se má vložit nový prvek do Registru (pole) můžeme vkládat libovolné primitivní a objektové typy třída Registr obsahuje všechny potřebné metody, další nutné metody můžeme doplnit velikost datového atributu pole se určí až za běhu programu prostřednictvím konstruktoru 10

11 Obecná třída Register - struktura pozor na problém indexů: číslování 0 (n-1) můžeme ponechat, anebo zvolit indexování 1 - n 11

12 // Trida Registr nejdulezitejsi metody public class Registr { private int pole[]; private int top; // konstruktor public Registr(int pocet) { pole = new int[pocet]; top = -1; Třída Register: - datové atributy - konstruktor - metody: - vložit() - tostring() - tisk() public void vlozit(int prvek) { if ((top + 1) < pole.length) { top += 1; pole[top] = prvek; else System.out.println("Registr je obsazeny"); public String tostring() { String t = String.format("%5s %9s\n","Index","Hodnota"); for (int i=0; i<=top; ++i) t = t+ String.format("%5d %9d\n",i, pole[i]); return t; public void tisk() { System.out.println(this.toString()); 12

13 Další metody třídy Register getprvek(i) na zadaný (0 top) index vrací prvek registru vyhledat(int prvek) vrátí index na kterém se nachází zadaný prvek, nebo -1 (prvek není v registru) odstranit(int prvek) odstraní z registru zadaný prvek - pokud v registru existuje, jinak se nic neprovede minimum vrátí minimální prvek uložený do registru 13

14 // trida Registr dalsi metody public class Registr { private int pole[]; private int top; // dalsi metody public int getprvek(int i) { int prvek=0; if (i>=0 && i< = top) prvek = pole[i]; else System.out.printf("%s %d %s\n","index",i,"mimo rozsah ); return prvek; Třída Register - metody: - getprvek() - vyhledat() public int vyhledat(int prvek) { int vysl = -1; for (int i=0; i<= top; i++) { System.out.println("Index: "+i); if (pole[i]== prvek) { vysl = i; break; return vysl; 14

15 // trida Registr dalsi metody public class Registr { private int pole[]; private int top; // dalsi metody public void odstranit(int prvek) { int v = vyhledat(prvek); if (v > -1 ) {for (int i=v; i< top; i++) pole[i] = pole[i+1]; top -= 1; System.out.println("Prvek odstranen"); else System.out.printf("%s %d %s\n","prvek",prvek,"neni v registru"); Třída Register metody: - odstranit() - minimum() public int minimum() { int min = pole[0]; for(int i=0; i<=top; i++) //for (int cislo: pole) if(pole[i] < min) min = pole[i]; return min; 15

16 Metoda pro vytvoření nového registru metoda novyreg(kvalif. argument) vytvoří nový objekt register, do kterého se zkopírují všechny celočíselné prvky vyhovující zadané podmínce možnost využít argument metody velikost nového registru je stejná jako u stávajícího registru použijeme vestavěný datový atribut length pro zapisování nových hodnot použijeme metodu vlozit 16

17 // vytvari novy Registr public class Registr { private int pole[]; private int top; // dalsi metody Třída Register - metoda: - novyreg() // misto pole[i] pouzijeme this.getprvek(i) public Registr novyreg(int cislo) { Registr nreg = new Registr(pole.length); // nreg má délku jako původní register for (int i=0; i<=top; i++) // požadovaná podmínka if(this.getprvek(i)> cislo) nreg.vlozit(this.getprvek(i)); return nreg; 17

18 public class RegisterTest { public static void main(string args[]) { Registr a = new Registr(5); a.vlozit(10); a.vlozit(15); a.vlozit(-44); a.tisk(); a.odstranit(15); a.tisk(); System.out.println("Minimalni prvek registru: " + a.minimum()); int b= a.getprvek(15); Třída RegisterTest - metoda: - novyreg() Registr b = new Registr(5); b.vlozit(15); b.vlozit(25); b.vlozit(33); Register c = b.novyreg(20); // Registr c; c = b.novyreg(20); c.tisk(); 18

19 Vytvoření třídy Zásobník s využitím pole Třída Zásobník má datový atribut pole a metody charakteristické pro zásobník 19

20 public class Zasobnik { private int top; private int a[]; public Zasobnik(int n) { a = new int[n]; top = -1; public void push(int prvek) { if (top+1 < a.length) { top++; a[top]= prvek; else System.out.println("Zasobnik je plny\n"); public int pop() { int prvek = 0; if (top >= 0) { prvek = a[top]; top--; else System.out.println("Zasobnik je prazdny\n"); return prvek; public boolean prazdny() { return (top < 0 ); public boolean plny() { return (top+1 == a.length); 20

21 public int velikost() { return top+1; public String tostring() { String t =""; t = String.format("%s\n%s%13s\n","Zasobnik vypis", "Index","Hodnota"); int p = top; for(int i = top; i>=0; i--) t += String.format("%5d%13d\n",i,a[i]); return t; public void tisk() { System.out.println(this.toString()); 21

22 Vytvoření třídy Fronta s využitím pole Třída Fronta má datový atribut pole a metody charakteristické pro frontu nutno vyřešit problém kruhového zápisu 22

23 public class Fronta { private int a[]; private int pocet, zapisuk, cteniuk; public Fronta(int n) { a = new int[n]; zapisuk = 0; pocet = 0; cteniuk = -1; public void zapis(int prvek) { if (pocet >= a.length) System.out.println("Fronta je plna - zapis neproveden"); else { pocet++; a[zapisuk] = prvek; zapisuk = ((zapisuk+1) % a.length); public int cteni() { int prvek = 0; if (pocet <= 0) System.out.println("Fronta je prazdna"); else { pocet--; cteniuk = (cteniuk + 1) % a.length; prvek = a[cteniuk]; return prvek; 23

24 public int velikost() { return pocet; public boolean prazdna() { return (pocet == 0); public boolean plna() { return (pocet == a.length); public int kapacita() { return a.length; public String tostring() { int index = cteniuk; String t=""; t = String.format("%s\n%s%13s\n","Fronta vypis", "Index","Hodnota"); for (int i=0; i< pocet; i++) { index = (index +1) % a.length; t += String.format("%5d%13d\n",index,+a[index]); return t; public void tisk() { System.out.println(this.toString()); 24

25 Modifikace třídy Registr Třída Registr modifikovaná pro ukládání objektů (ne primitivních typů) kvalifikace na objektový typ počáteční inicializace na null při vyhledání testovat, zda vrácený objekt není null odkazovat se na metody objektu uloženého objektu (ne se snažit vše provést přímo) 25

26 import java.util.calendar; public class Osoba { private String jmeno; private int roknarozeni; private int vaha; public Osoba() { jmeno = "neuvedeno"; roknarozeni = 0; vaha = 0; public Osoba(String jmeno, int roknarozeni, int vaha) { this.jmeno= jmeno; this.roknarozeni = roknarozeni; this.vaha = vaha; public void setjmeno(string jmeno) { this.jmeno = jmeno; public String getjmeno() { return jmeno; public void setroknarozeni(int roknarozeni) { this.roknarozeni = roknarozeni; public int getroknarozeni() { return roknarozeni; 26

27 public int getvek() { Calendar c = Calendar.getInstance(); int aktrok = c.get(1); return aktrok - this.getroknarozeni(); public void setvaha(int vaha) { this.vaha = vaha; public int getvaha() { return vaha; public String tostring() { return String.format("%5s %s %15s %4d %5s %d\n", "Jmeno",getJmeno(),"rok narozeni:",getroknarozeni(), "vaha:",getvaha()); public void tisk() { System.out.println(this.toString()); 27

28 // register pro zaznamy - recordy public class RegisterR { private Osoba pole[]; private int top; // konstruktor public RegisterR(int pocet) { top = -1; pole = new Osoba[pocet]; public void vlozit(osoba prvek) { if ((top + 1) < pole.length) { top += 1; pole[top] = prvek; else System.out.println("Registr je obsazeny"); public Osoba getprvek(int i) { Osoba prvek=null; if (i>=0 && i< pole.length) prvek = pole[i]; else System.out.printf("%s %d %s\n","index",i,"mimo rozsah"); return prvek; 28

29 public int vyhledat(string jmeno) { int vysl = -1; for (int i=0; i<= top; i++) if (pole[i].getjmeno()== jmeno) { vysl = i; break; return vysl; public int vyhledat(osoba prvek) { int vysl = -1; for (int i=0; i<= top; i++) if (pole[i]== prvek) { vysl = i; break; return vysl; //vysl muze byt i null public void odstranit(osoba prvek) { int v = vyhledat(prvek); if (v == -1) System.out.printf("%s %d %s\n","prvek",prvek, "neni v registru"); else this.odstranit(v); public void odstranit(string jmeno) { int v = vyhledat(jmeno); if (v == -1) System.out.printf("%s %s %s","jmeno:", jmeno,"neni v registru"); else this.odstranit(v); 29

30 public void odstranit(int v) { for (int i=0; i< top - v; i++) pole[v+i] = pole[v+i+1]; top -= 1; System.out.println("Prvek odstranen"); public String tostring() { String t = String.format("%5s %16s\n","Index","Hodnota"); for (int i=0; i<=top; ++i) t = t+ String.format("%5d ",i)+pole[i].tostring(); return t; public void tisk() { System.out.println(this.toString()); // pozor na pouziti zjednoduseneho for // prochazi implicitne celym polem public Osoba minvaha() { Osoba min = pole[0]; for (Osoba zaznam: pole) { if (zaznam!= null) if (zaznam.getvaha() < min.getvaha()) min = zaznam; return min; 30

31 public Osoba maxvek() { Osoba osobamax = pole[0]; for (int i=0; i<= top; i++) if (pole[i].getvek()> osobamax.getvek()) osobamax = pole[i]; return osobamax; 31

32 Index Hodnota 0 Jmeno Jana rok narozeni: 1979 vaha: 52 1 Jmeno Jakub rok narozeni: 1985 vaha: 82 2 Jmeno Michal rok narozeni: 1984 vaha: 78 3 Jmeno Dagmar rok narozeni: 1986 vaha: 66 4 Jmeno Silvie rok narozeni: 1977 vaha: 79 Nejstarsi clovek: Jmeno Silvie rok narozeni: 1977 vaha: 79 Nejlehci clovek: Jmeno Jana rok narozeni: 1979 vaha: 52 Prvek odstranen Michal z registru odstranen Index Hodnota 0 Jmeno Jana rok narozeni: 1979 vaha: 52 1 Jmeno Jakub rok narozeni: 1985 vaha: 82 2 Jmeno Dagmar rok narozeni: 1986 vaha: 66 3 Jmeno Silvie rok narozeni: 1977 vaha: 79 32

33 Třída Register pro ukládání polymorfních objektů Prvky datového atributu pole třídy Register nutno kvalifikovat na hierarchicky nejvyšší objekt (abstraktní třídu, rozhraní) Využívá se pozdní vazba 33

34 // register pro zaznamy public class RegisterZaznam { private Zaznam pole[]; private int top; public RegisterZaznam(int pocet) { top = -1; pole = new Zaznam[pocet]; public void vlozit(zaznam prvek) { if ((top + 1) < pole.length) { top += 1; pole[top] = prvek; else System.out.println("Registr je obsazeny"); public Zaznam getprvek(int i) { Zaznam prvek=null; if (i>=0 && i< pole.length) prvek = pole[i]; else System.out.printf("%s %d %s\n","index",i,"mimo rozsah"); return prvek; 34

35 public int vyhledat(int klic) { int vysl = -1; for (int i=0; i<= top; i++) if (pole[i].getklic()== klic) {vysl = i; break; return vysl; public int vyhledat(zaznam prvek) { int vysl = -1; for (int i=0; i<= top; i++) if (pole[i]== prvek) { vysl = i; break; return vysl; public void odstranit(osoba prvek) { int v = vyhledat(prvek); if (v == -1) System.out.printf("%s %d %s\n","prvek", prvek,"neni v registru"); else this.odstranit(v); public void odstranitklic(int klic) // zmena nazvu metody - shoda poctu a typu argumentu { int v = vyhledat(klic); if (v == -1) System.out.printf("%s %5d %s","klic:",klic, "neni v registru"); else this.odstranit(v); 35

36 public void odstranit(int v) { for (int i=v; i< top; i++) pole[i] = pole[i+1]; top -= 1; System.out.println("Prvek odstranen"); public String tostring() { String t = String.format("%5s %16s\n","Index","Hodnota"); for (int i=0; i<=top; ++i) t = t+ String.format("%5d %s%s",i,pole[i].tostring(),"\n"); return t; public void tisk() { System.out.println(this.toString()); 36

37 public class RegisterZaznamTest { public static void main(string args[]) { RegisterZaznam rz = new RegisterZaznam(6); Zaznam z = new Zaznam(19); rz.vlozit(z); rz.vlozit(new Kniha(22, Verne, Dva roky prazdnin )); Student s = new Student(44, Jan, muz, informatika ); rz.vlozit(s); rz.tisk(); Zaznam zaz; zaz = rz.vyhledat(22); zaz.tisk(); rz.odstranit(s); 37

38 Využití třídy Register s hierarchií tříd s rozhraním Hierarchie tříd implementují jedno rozhraní hierarchie hudebních nástrojů objekty ukládané do Registru jsou kvalifikovány jako objekty typu rozhraní - Nastroj 38

39 Diagram tříd UML 39

40 package muzika.nastroje; public interface Nastroj { void hrat(); String co(); void sladit(nastroj n); // nemá tělo 40

41 package muzika.nastroje; public class Smycce implements Nastroj { public void hrat() { System.out.println("Smycce.hrat"); public String co() { return "Smycce"; public void sladit(nastroj ns) { System.out.printf("Nastroj %s ladi s nastrojem %s\n", this.co(), ns.co()); 41

42 package muzika.nastroje; public class Bici implements Nastroj { public void hrat() { System.out.println("Bici.hrat"); public String co() { return "Bici"; public void sladit(nastroj ns) { System.out.printf("Nastroj %s ladi s nastrojem %s\n", this.co(), ns.co()); 42

43 package muzika.nastroje; public class Dechy implements Nastroj { public void hrat() { System.out.println("Dechy.hrat"); public String co() { return "Dechy"; public void sladit(nastroj ns) { System.out.printf("Nastroj %s neladi s nastrojem %s\n", this.co(), ns.co()); 43

44 package muzika.nastroje; public class Dreveny extends Dechy { public void hrat(){ System.out.println("Dreveny.hrat"); public String co(){ return "Dreveny"; 44

45 package muzika.nastroje; public class Zestovy extends Dechy { public void hrat(){ System.out.println("Zestovy.hrat"); public void sladit(nastroj n){ System.out.printf("Nastroj %s neladi s nastrojem %s\n", n.co(), this.co()); public String co(){ return "Zestovy"; 45

46 package muzika; import muzika.nastroje.*; // register pro zaznamy public class RegisterR { private Nastroj pole[]; private int top; // konstruktor public RegisterR(int pocet) { top = -1; pole = new Nastroj[pocet]; public void vlozit(nastroj prvek) { if ((top + 1) < pole.length) { top += 1; pole[top] = prvek; else System.out.println("Registr je obsazeny"); public Nastroj getprvek(int i) { Nastroj prvek=null; if (i>=0 && i< pole.length) prvek = pole[i]; else System.out.printf("%s %d %s\n","index",i,"mimo rozsah"); return prvek; 46

47 public int vyhledat(nastroj prvek) { int vysl = -1; for (int i=0; i<= top; i++) if (pole[i]== prvek) { vysl = i; break; return vysl; public void odstranit(nastroj prvek) { int v = vyhledat(prvek); if (v == -1) System.out.printf("%s %d %s\n","prvek",prvek, "neni v registru"); else this.odstranit(v); public void odstranit(int v) { Nastroj n = pole[v]; for (int i=0; i< top - v; i++) pole[v+i] = pole[v+i+1]; top -= 1; System.out.println("Prvek "+ n.co()+ " odstranen"); 47

48 public String tostring() { String t = String.format("%5s %16s\n","Index","Hodnota"); for (int i=0; i<=top; ++i) t = t+ String.format("%5d ",i)+pole[i].tostring(); return t; public void tisk() { System.out.println(this.toString()); public void ladit(nastroj i){ i.hrat(); public void laditvse(nastroj nst){ for(int j=0; j<=top; ++j) getprvek(j).sladit(nst); public int gettop(){ return top; 48

49 Průchod kolekcí - registrem Prvek Registru je kvalifikovaný na typ Nastroj pro průchod Registrem je použit standardní příkaz cyklu for (nevíme, zda je celý objekt řřídy Register obsazený) 49

50 package muzika; import muzika.nastroje.*; // pracuje s registrem deklarovanym pro Nastroj public class Music { public static void main(string args[]){ RegisterR r= new RegisterR(7); r.vlozit(new Dechy()); r.vlozit(new Bici()); r.vlozit(new Smycce()); r.vlozit(new Zestovy()); // Zestovy z= new Zestovy(); // r.vlozit(z); r.vlozit(new Dreveny()); for(int i=0; i<=r.gettop(); i++) r.getprvek(i).hrat(); r.laditvse(new Smycce()); Nastroj n = r.getprvek(2); n.hrat(); r.odstranit(n); for(int i=0; i<=r.gettop(); i++) r.getprvek(i).hrat(); 50

51 Dechy.hrat Bici.hrat Smycce.hrat Zestovy.hrat Dreveny.hrat Nastroj Dechy neladi s nastrojem Smycce Nastroj Bici ladi s nastrojem Smycce Nastroj Smycce ladi s nastrojem Smycce Nastroj Smycce neladi s nastrojem Zestovy Nastroj Dreveny neladi s nastrojem Smycce Smycce.hrat Prvek Smycce odstranen Dechy.hrat Bici.hrat Zestovy.hrat Dreveny.hrat 51

52 Procházením prvky zadané kolekce (seznamu) návrhový vzor Iterátor Častá operace procházení prvky kolekce, jejich zpracování (tisk, filtrace, další úprava) Doposud použití příkazu for, while Protože je to častý požadavek vytvořen návrhový vzor Iterátor Problém zjednodušení procházení seznamy objektů Kontext seznamy objektů a jejich procházení Řešení zavedení rozhraní se základními operacemi hasnext(), next(), remove() 52

53 Návrhový vzor Iterátor Klient může přistupovat ke struktuře kolekce prostřednictvím metod deklarovaných v rozhraní. Java k implementaci využívá mechanismus vnitřních ních tříd. Ve vnitřní třídě jsou implementovány metody rozhraní. Ve vnější třídě musí být deklarovaná metoda, která vrací objekt vnitřní třídy (Factory metoda). 53

54 Návrhový vzor Iterátor Uživatel pak pracuje s objektem vnitřní třídy, na který aplikuje metody deklarované v rozhraní. 54

55 // rozhrani deklarujici metody vnitrni tridy // ktera se pouziva pro prochazeni seznamem public interface MujIterator { // testuje existenci dalsiho prvku v kolekci (seznamu) boolean hasnext(); // vraci aktualni prvek kolekce (seznamu) // kazde pouziti metody next vraci dalsi prvek Nastroj next(); // odstrani aktualni prvek kolekce void remove(); // nahradi aktualni prvek kolekce prvkem (argumentem metody) void setprvek(nastroj prvek); // vraci index (poradi 0 n-1) aktualniho prvku int getindex(); // nastavi index (ukazatel) na zacatek (pozici 0) void reset(); 55

56 public class RegisterN { private Nastroj pole[]; private int top; public RegisterN(int pocet) { top = -1; pole = new Nastroj[pocet]; // konstruktor // vnitrni trida iterator private class IterReg implements MujIterator { int index = 0; public boolean hasnext(){ return (index <= gettop()); public Nastroj next(){ return pole[index++]; public void remove(){ odstranit(index-1); public void setprvek(nastroj prvek){ pole[index-1]= prvek; public void reset() { index = 0; public int getindex(){ return index; // konec vnitrni tridy IterReg 56

57 // pristupova metoda k vnitrni tride IterReg public MujIterator getiterreg(){ //standardni nazev iterator() return new IterReg(); public void vlozit(nastroj prvek) { if ((top + 1) < pole.length) { top += 1; pole[top] = prvek; else System.out.println("Registr je obsazeny"); public Nastroj getprvek(int i) { Nastroj prvek=null; if (i>=0 && i< pole.length) prvek = pole[i]; else System.out.printf("%s %d %s\n","index",i,"mimo rozsah"); return prvek; public int vyhledat(nastroj prvek) { int vysl = -1; for (int i=0; i<= top; i++) if (pole[i]== prvek) { vysl = i; break; return vysl; 57

58 public void odstranit(nastroj prvek) { int v = vyhledat(prvek); if (v == -1) System.out.printf("%s %d %s\n","prvek",prvek, "neni v registru"); else this.odstranit(v); public void odstranit(int v) { Nastroj n = getprvek(v); for (int i=0; i< top - v; i++) pole[v+i] = pole[v+i+1]; top -= 1; System.out.println("Prvek "+ n.co()+ " odstranen"); public String tostring() { String t = String.format("%5s %16s\n","Index","Hodnota"); for (int i=0; i<=top; ++i) t = t+ String.format("%5d ",i)+pole[i].tostring(); return t; 58

59 public void tisk() { System.out.println(this.toString()); void ladit(nastroj i){ i.hrat(); void laditvse(nastroj nst){ for(int j=0; j<=top; ++j) getprvek(j).sladit(nst); public int gettop(){ return top; 59

60 package muzika; import muzika.nastroje.*; public class MuzikaN { public static void main(string[] args) { RegisterN rn = new RegisterN(7); rn.vlozit(new Dechy()); rn.vlozit(new Bici()); rn.vlozit(new Smycce()); rn.vlozit(new Zestovy()); rn.vlozit(new Dreveny()); rn.laditvse(new Bici()); MujIterator itr = rn.getiterreg(); while(itr.hasnext()){ itr.next().hrat(); itr.reset(); // nastaveni ukazatele na zacatek String s; int p; while(itr.hasnext()) { s = itr.next().getclass().getname(); p = s.lastindexof('.'); p = p + 1; s = s.substring(p); if(s.equals("zestovy")) { itr.remove(); System.out.println("Zaznam odstranen"); break; 60

61 itr.reset(); while(itr.hasnext()){ itr.next().hrat(); itr.reset(); while(itr.hasnext()) { s = itr.next().getclass().getname(); p = s.lastindexof('.'); p = p + 1; s = s.substring(p); if(s.equals("bici")) { itr.setprvek(new Dreveny()); System.out.println("Zaznam prepsan"); break; itr.reset(); while(itr.hasnext()){ itr.next().hrat(); 61

62 itr.reset(); while(itr.hasnext()) { s = itr.next().getclass().getname(); p = s.lastindexof('.'); p = p + 1; s = s.substring(p); if(s.equals("smycce")) { int k = itr.getindex(); System.out.println("Zaznam Smycce na pozici: "+ k); break; 62

63 Nastroj Dechy neladi s nastrojem Bici Nastroj Bici ladi s nastrojem Bici Nastroj Smycce ladi s nastrojem Bici Nastroj Bici neladi s nastrojem Zestovy Nastroj Dreveny neladi s nastrojem Bici Dechy.hrat Bici.hrat Smycce.hrat Zestovy.hrat Dreveny.hrat Prvek Zestovy odstranen Zaznam odstranen Dechy.hrat Bici.hrat Smycce.hrat Dreveny.hrat Zaznam prepsan Dechy.hrat Dreveny.hrat Smycce.hrat Dreveny.hrat Zaznam Smycce na pozici: 3 63

Ú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

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

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

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

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

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

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

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

ABSTRAKTNÍ DATOVÉ TYPY (ADT)

ABSTRAKTNÍ DATOVÉ TYPY (ADT) ABSTRAKTNÍ DATOVÉ TYPY (ADT) hierarchie abstrakcí: nejvyšší úroveň ZOO DruhZvirat celá čísla, řetězce nejnižší úroveň bity Abstrahujeme od - reprezentace (implementace) dat - realizace (implementace) operací

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

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12.

Datové struktury. Obsah přednášky: Definice pojmů. Abstraktní datové typy a jejich implementace. Algoritmizace (Y36ALG), Šumperk - 12. Obsah přednášky: Definice pojmů o datový typ, o abstraktní datový typ Datové struktury Abstraktní datové typy a jejich implementace o Fronta (Queue) o Zásobník (Stack) o Množina (Set) Algoritmizace (Y36ALG),

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

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

Ú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

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

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

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

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

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

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

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

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

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

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy

Stromy. Příklady. Rekurzivní datové struktury. Základní pojmy Základní pojmy Stromy 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 Graf uzly hrany orientované / neorientované Souvislý

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

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

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

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

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

Více

Programování v Javě I. 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

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ; Pole Příklad: přečíst teploty naměřené v jednotlivých dnech týdnu, vypočítat průměrnou teplotu a pro každý den vypsat odchylku od průměrné teploty Řešení s proměnnými typu int: int t1, t2, t3, t4, t5,

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

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

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

Kolekce, cyklus foreach

Kolekce, cyklus foreach Kolekce, cyklus foreach Jen informativně Kolekce = seskupení prvků (objektů) Jednu již známe pole (Array) Kolekce v C# = třída, která implementuje IEnumerable (ICollection) Cyklus foreach ArrayList pro

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

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

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

Třídy a objekty -příklady

Třídy a objekty -příklady Třídy a objekty -příklady 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 Příklad 1 Kvadratická rovnice static void

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

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy Úvod do programování Michal Krátký 1,Jiří Dvorský 1 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programování, 2004/2005 Procesor Procesorem je objekt, který vykonává algoritmem popisovanou

Více

Abstraktní datové typy

Abstraktní datové typy Karel Müller, Josef Vogel (ČVUT FIT) Abstraktní datové typy BI-PA2, 2011, Přednáška 10 1/27 Abstraktní datové typy Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky,

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

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

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Využití OOP v praxi -- Knihovna PHP -- Interval.cz Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programová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

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

boolean hasnext() Object next() void remove() Kolekce

boolean hasnext() Object next() void remove() Kolekce 11. Kontejnery Kontejnery Kontejnery jako základní dynamické struktury v Javě Kolekce, iterátory (Collection, Iterator) Seznamy (rozhraní List, třídy ArrayList, LinkedList) Množiny (rozhraní Set, třída

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

8. přednáška: Soubory a proudy

8. přednáška: Soubory a proudy 8. přednáška: Soubory a proudy Soubor jako posloupnost bytů Ukládání/čtení primitivních typů Ukládání/čtení primitivních typů a objektů (řetězců) Ukládání/čtení objektů do souboru - serializace Obsah Algoritmizace

Více

3 KTE / ZPE Informační technologie

3 KTE / ZPE Informační technologie 3 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ň Komentáře

Více

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right)

DSA, První krok: máme dokázat, že pro left = right vrátí volání f(array, elem, left, right) Indukcí dokažte následující výrok: pokud lef t a right jsou parametry funkce f a platí left right, pak volání f(array, left, right) vrátí minimální hodnotu z hodnot všech prvků v poli array na indexech

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

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

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

Java Cvičení 01. CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics

Java Cvičení 01.  CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Java Cvičení 01 http://d3s.mff.cuni.cz CHARLES UNIVERSITY IN PRAGUE faculty of mathematics and physics Příklady - Porovnání Co kód vypíše? package cz.cuni.mff.java.example01.tests; public class Test01

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

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

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

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

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

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

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

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

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

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

Mělká a hluboká kopie

Mělká a hluboká kopie Karel Müller, Josef Vogel (ČVUT FIT) Mělká a hluboká kopie BI-PA2, 2011, Přednáška 5 1/28 Mělká a hluboká kopie Ing. Josef Vogel, CSc Katedra softwarového inženýrství Katedra teoretické informatiky, Fakulta

Více

Příkaz while. while (podmínka) { příkaz; } Příklad: int i=0; while (i < 10) { System.out.println(i); i++; } // vypíše čísla od 0 do 9

Příkaz while. while (podmínka) { příkaz; } Příklad: int i=0; while (i < 10) { System.out.println(i); i++; } // vypíše čísla od 0 do 9 5 Cykly - cyklus nebo také smyčka je řídicí struktura programu, která opakovaně provádí posloupnost příkazů - opakování i ukončení cyklu je řízeno nějakou podmínku - cyklus se skládá z posloupnosti příkazů

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

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

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

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

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

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

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

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

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

1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

1 2 3 4 5 6 součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů: Úloha č.: max. bodů: skut. bodů: 1 2 3 4 5 6 součet cvičení celkem 20 12 20 20 14 14 100 známka UPOZORNĚNÍ : a) Písemná zkouška obsahuje 6 úloh, jejichž řešení musí být vepsáno do připraveného formuláře.

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

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

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

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

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

Šablony, kontejnery a iterátory

Šablony, kontejnery a iterátory 11. března 2015, Brno Připravil: David Procházka Šablony, kontejnery a iterátory Programovací jazyk C++ Šablony Strana 2 / 31 Obsah přednášky 1 Šablony 2 Abstraktní datové struktury 3 Iterátory 4 Array

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

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25

Semin aˇr Java V yjimky Radek Ko ˇc ı Fakulta informaˇcn ıch technologi ı VUT Unor 2008 Radek Koˇc ı Semin aˇr Java V yjimky 1/ 25 Seminář Java Výjimky Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Výjimky 1/ 25 Výjimky Co a k čemu jsou výjimky výjimka je mechanizmus umožňující psát robustní, spolehlivé

Více

Iterator & for cyklus

Iterator & for cyklus Iterator & for cyklus for (Object o : foo) funguje pokud je foo pole nebo je foo iterovatelné jako to zařídit? implementovat interface java.lang.iterable Iterable má jednu metodu java.util.iterator iterator()

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

Technologie JavaBeans

Technologie JavaBeans Technologie JavaBeans 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 Historie Komponentový model Typy komponent

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

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů

ÚVODNÍ ZNALOSTI. datové struktury. správnost programů. analýza algoritmů ÚVODNÍ ZNALOSTI datové struktury správnost programů analýza algoritmů Datové struktury základní, primitivní, jednoduché datové typy: int, char,... hodnoty: celá čísla, znaky, jednoduché proměnné: int i;

Více

Textové soubory. alg9 1

Textové soubory. alg9 1 Textové soubory Textový soubor je posloupnost znaků členěná na řádky každý znak je reprezentován jedním bytem, jehož obsah je dán nějakým kódováním znaků členění na řádky je závislé na platformě a obvykle

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

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

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

Java - výjimky. private void vstup() throws IOException {... }

Java - výjimky. private void vstup() throws IOException {... } Java - výjimky Tato kapitola ukazuje na několika příkladech práci s výjimkami v Javě. Klíčové pojmy: Výjimka, hierarchie výjimek, zachytávání výjimek, blok try-catch, tvorba vlastních výjimek, propagace

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

Ú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

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

Programování v C++ 2, 8. cvičení Programování v C++ 2, 8. cvičení návrhový vzor iterátor 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 Shrnutí minule procvičené látky

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

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