Deklarace a vytváření
|
|
- Radim Horák
- před 4 lety
- Počet zobrazení:
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 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íceKTE / ZPE Informační technologie
4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší
VíceAbstraktní datové typy: zásobník
Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní
VíceOOPR_05. Případové studie
OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára
VíceSeznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí
Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků
Více14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.
Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání
VíceJava - řazení objektů
Java - řazení objektů Kapitola seznamuje se základními principy řazení objektů Klíčové pojmy: Přirozené řazení, absolutní řazení, ideální porovnávatelná třída ŘAZENÍ OBJEKTŮ U objektů není příliš jasné,
VíceOOPR_05. Případové studie
OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára
VíceABSTRAKTNÍ 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íceKonstruktory. Konstruktor je speciální metoda, pro vytváření a inicializaci nových objektů (instancí). Název metody je totožný s názvem třídy.
OOPR_02 1 Osnova přednášky Třída Konstruktor Volání konstruktorů z konstruktorů Kopírovací konstruktor Vstup dat pomocí třídy Scanner Vstup dat s využitím třídy JOptionPane Objekt, zpráva, metoda Třídně
VíceDatové 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íceDefinice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
Více11.5.2012. Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9
Obsah přednášky 9 Základy programování (IZAPR, IZKPR) Přednáška 9 Základy dědičnosti, přístupová práva Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 03 022, Náměstí Čs. legií
VíceAlgoritmizace a programování
Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu
VíceVýčtový typ strana 67
Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce
Více9. přednáška - třídy, objekty
třída String a její použití kolekce, typované kolekce 9. přednáška - třídy, objekty Algoritmizace (Y36ALG), Šumperk - 9. přednáška 1 Třída String Objekty knihovní třídy String jsou řetězy znaků Od ostatních
VíceZákladní pojmy. Matice(řádky, sloupce) Matice(4,6) sloupce
Vektor a Matice Základní pojmy Matice(řádky, sloupce) Matice(4,6) sloupce řádky (1,1) (1,2) (1,3) (1,4) (1,5) (1,6) (2,1) (2,2) (2,3) (2,4) (2,5) (2,6) (3,1) (3,2) (3,3) (3,4) (3,5) (3,6) (4,1) (4,2) (4,3)
Více8 Třídy, objekty, metody, předávání argumentů metod
8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceNávrhové vzory Design Patterns
Návrhové vzory Design Patterns doc. Ing. František Huňka, CSc. Ostravská univerzita PřF 1 Definice vzoru Každý vzor popisuje problém, který nastává opakovaně v našem prostředí, a potom popisuje podstatu
Více7. Dynamické datové struktury
7. Dynamické datové struktury Java poskytuje několik možností pro uložení většího množství dat (tj. objektů či primitivních datových typů) v paměti. S nejjednodušší z nich, s polem, jsme se již seznámili.
Více3. 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íceStromy. 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íceSoubor jako posloupnost bytů
Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení
Více7. Datové typy v Javě
7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů
Více4.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íceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceProgramování v Javě I. Leden 2008
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory
Víceint 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íceProgramování v Javě I. Únor 2009
Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory
VíceSeminář Java II p.1/43
Seminář Java II Seminář Java II p.1/43 Rekapitulace Java je case sensitive Zdrojový kód (soubor.java) obsahuje jednu veřejnou třídu Třídy jsou organizovány do balíků Hierarchie balíků odpovídá hierarchii
VíceKTE / 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íceKolekce, 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íceDatové struktury. alg12 1
Datové struktury Jedna z klasických knih o programování (autor prof. Wirth) má název Algorithms + Data structures = Programs Datová struktura je množina dat (prvků, složek, datových objektů), pro kterou
VíceVíce o konstruktorech a destruktorech
Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení
VíceAlgoritmizace a programování
Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém
VíceTří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íceProgramování v C++ 1, 5. cvičení
Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené
VíceZá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íceAbstraktní 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íceIAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);
Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());
VíceKonstruktory 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íceVyuž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íceAbstraktní třída a rozhraní
Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě
VíceJava 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íceboolean 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íce1. Téma 12 - Textové soubory a výjimky
1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se
Více8. 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íce3 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íceDSA, 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 Ří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íceObsah přednášky. dědičnost modifikátory (specifikátory) přístupu
OOPR_08 1 Obsah přednášky dědičnost modifikátory (specifikátory) přístupu private, public, protected konstruktor v dědičnosti deklarace nových objektů rozšiřování & přepisování (zastiňování) metod pravidla
VíceIRAE 07/08 Přednáška č. 1
Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní
VíceJava 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ícePrincipy objektově orientovaného programování
Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T
Více2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.
Informatika 10. 9. 2013 Jméno a příjmení Rodné číslo 1) Napište algoritmus pro rychlé třídění (quicksort). 2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceVytváření a použití knihoven tříd
Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce
VíceObsah přednášky. dědičnost modifikátory (specifikátory) přístupu
OOPR_08 1 Obsah přednášky dědičnost modifikátory (specifikátory) přístupu private, public, protected konstruktor v dědičnosti deklarace nových objektů rozšiřování & přepisování (zastiňování) metod pravidla
VícePočítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006
Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem
VíceTabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář
Vazba (binding) Tabulka symbolů Miroslav Beneš Dušan Kolář vazba = spojení mezi entitou a vlastností okamžik vazby (binding time) při návrhu jazyka při implementaci jazyka během překladu/spojování/zavádění
VíceProgramové 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ícePREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
VíceGenerické programování
Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =
VíceMě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ícePří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ícetypová konverze typová inference
Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie
VíceTeoretické minimum z PJV
Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov
Více17. Projekt Trojúhelníky
Projekt Trojúhelníky strana 165 17. Projekt Trojúhelníky 17.1. Základní popis, zadání úkolu Pracujeme na projektu Trojúhelníky, který je ke stažení na java.vse.cz. Aplikace je napsána s textovým uživatelským
VíceDefinice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky
JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance
Více7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd
7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená
VícePokud 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íceProgramování v C++ 2, 4. cvičení
Programování v C++ 2, 4. cvičení statické atributy a metody, konstruktory 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Přístupová práva
VíceTřídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické
Třídy, polymorfismus A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Polymorfizmus ~ vícetvarost Polymorfizmus základní vlastnost objektového přístupu základní princip polymorfismu:
Více1 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íce1. Programování proti rozhraní
1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní
VícePřehled probírané látky
OOPR_04 1 Přehled probírané látky asociace (relace) mezi třídami popis množiny spojení mezi objekty skládání objektů - upřesněný typ asociace, vazba mezi objekty kompozice objektů (velmi pevná vazba mezi
Více5 Rekurze a zásobník. Rekurzivní volání metody
5 Rekurze a zásobník Při volání metody z metody main() se do zásobníku uloží aktivační záznam obsahující - parametry - návratovou adresu, tedy adresu, kde bude program pokračovat v metodě main () po skončení
VíceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceStatické proměnné a metody. Tomáš Pitner, upravil Marek Šabo
Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)
VíceŠ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íce20. Projekt Domácí mediotéka
Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý
VíceSemin 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íceIterator & 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íceKolekce ArrayList. Deklarace proměnných. Import. Vytvoření prázdné kolekce. napsal Pajclín
Kolekce ArrayList napsal Pajclín Tento článek jsem se rozhodl věnovat kolekci ArrayList, protože je to jedna z nejpoužívanějších. Tento článek není kompletním popisem třídy ArrayList, ale budu se snažit
VíceTechnologie 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ícePaměť 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ů Datové struktury základní, primitivní, jednoduché datové typy: int, char,... hodnoty: celá čísla, znaky, jednoduché proměnné: int i;
VíceTextové 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íceAlgoritmizace a programování. Terminálový vstup a výstup
Algoritmizace a programování Terminálový vstup a výstup Verze pro akademický rok 2012/2013 1 Výpis hodnot Terminálový vstup a výstup budeme používat jako základní způsob interakce programu s uživatelem
Více6. 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íceZáklady jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní
Základy jazyka C# doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Obsah přednášky Architektura.NET Historie Vlastnosti
VíceJava - 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íceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
VíceÚvod do programovacích jazyků (Java)
Úvod do programovacích jazyků (Java) Michal Krátký Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2007/2008 c 2006 2008 Michal Krátký Úvod do programovacích
VíceProgramová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íceIRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33
Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt
VíceJava Výjimky Java, zimní semestr
Java Výjimky 1 Výjimky (exceptions) hlášení a ošetření chyb výjimka signalizuje nějaký chybový stav výjimka = instance třídy java.lang.throwable dvě podtřídy java.lang.error a java.lang.exception konkrétní
Více