OOPR_05. Případové studie
|
|
- Leoš Macháček
- před 4 lety
- Počet zobrazení:
Transkript
1 OOPR_05 Případové studie 1
2 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
3 Grafický objekt - čára Třída čára datové atributy: počátek Bod + / - délka ve směru osy x + / - délka ve směru osy y Vlastní implementace zjištění hodnoty pro cyklus for getmax() orientace vykreslování -1, 0, 1 kontrola správnosti parametrů délka 3
4 public class Cara { private Bod pocatek; private int delkax; private int delkay; public Cara(Bod bod, int delkax, int delkay) { pocatek = new Bod(bod); delkax = delkax; delkay = delkay; public Bod getpocatek() { return pocatek; public int getdelkax() { return delkax; public int getdelkay() { return delkay; // maximalni hodnota pro cyklus public int getmax() { if(math.abs(getdelkax()) > Math.abs(getDelkaY())) return Math.abs(getDelkaX()); else return Math.abs(getDelkaY());
5 // orientace vykreslovani public int orientace(int cislo) { int vysledek; if(cislo == 0) vysledek = 0; else if(cislo < 0) vysledek = -1; else vysledek = 1; return vysledek; // kontrola delek public boolean kontrola() { if((getdelkax() == 0) (getdelkay() == 0)) return true; else if(math.abs(getdelkax()) == Math.abs(getDelkaY())) return true; System.out.println("Chyba delek cary"); return false;
6 public void vykresli() { int dx = orientace(getdelkax()); int dy = orientace(getdelkay()); int hranice = getmax(); if(kontrola()) { for(int i = 0; i < hranice; i++){ pocatek.vykresli(dx*i, dy*i);
7 import java.awt.color; public class CaraTest { public static void main(string[] args) { Bod bod = new Bod(120, 100, Color.blue); Cara cara1 = new Cara(bod, 40,0); cara1.vykresli(); Cara cara2 = new Cara(bod, 0, 40); cara2.vykresli(); Cara cara3 = new Cara(bod, -40, 0); cara3.vykresli(); Cara cara4 = new Cara(bod, 0, -40); cara4.vykresli(); Vykreslený obrázek čar Cara cara5 = new Cara(bod, 40, 40); cara5.vykresli(); Cara cara6 = new Cara(bod, -40, 40); cara6.vykresli(); Cara cara7 = new Cara(bod, 40, -40); cara7.vykresli(); Cara cara8 = new Cara(bod, -40, -40); cara8.vykresli();
8 Problém Chceme vytvořit aplikaci, kdy osoba má datum narození a účet (v bance). První (naivní) řešení: vytvoříme jednu třídu, která obsahuje vše výhody: relativně rychlé řešení nevýhody: při každé změně adresy nebo účtu musíme měnit výchozí třídu. Lépe datum narození a účet uložit do samostatných tříd. Propojení tříd budeme řešit pomocí kompozice a agregace. 8
9 Problém Samostatné třídy Osoba, Ucet a Datum. Datum bývá stabilnější a proto asociace Osoba Datum bude řešeno pomocí kompozice kopírovacího konstruktoru. Účet podléhá častější změně, a proto bude tato asociace řešena pomocí agregace. 9
10 Diagram tříd úkolu 10
11 import java.util.calendar; public class Datum { private int den; // 1-31 private int mesic; // 1-12 private int rok; private Calendar kalendar = Calendar.getInstance(); // kalendar.get(1) = rok, kalendar.get(2) +1 = mesic, kalendar.get(5) = den //konstruktory public Datum( int den,int mesic, int rok) { this.mesic = mesickontrola( mesic ); // kontrola mesic this.rok = kontrolarok(rok); // bez kontroly this.den = denkontrola( den); // kontrola den public Datum() { mesic = kalendar.get(2) + 1; den = kalendar.get(5); rok = kalendar.get(1); public Datum(int den) { mesic = kalendar.get(2) + 1; this.den = denkontrola(den); rok = kalendar.get(1); public Datum(int den, int mesic) { this.mesic = mesickontrola(mesic); this.den = denkontrola(den); rok = kalendar.get(1); Třída Adresa
12 public Datum(int den, String mesic, int rok) { this.mesic = mesickontrola(mesic); this.den = denkontrola(den); this.rok = kontrolarok(rok); public Datum(int den, Mesic mesic, int rok) { this.mesic = mesic.ordinal() + 1; //System.out.println("mesic: " + this.mesic); this.den = denkontrola(den); this.rok = rok; // kopirovaci public Datum(Datum d) { mesic = d.getmesic(); den = d.getden(); rok = d.getrok(); Třída Adresa
13 public int getden() { return den; public int getmesic() { return mesic; public int getrok() { return rok; public void setden(int den) { this.den = denkontrola(den); public void setmesic(int mesic) { this.mesic = mesickontrola(mesic); public void setrok(int rok) { this.rok = rok; Třída Adresa private int mesickontrola( int mesic) { if ( mesic > 0 && mesic <= 12 ) return mesic; else { System.out.printf( "Neplatny mesic (%d) nastaveni na 1.", mesic ); return 1;
14 private int mesickontrola(string mesic) { String[] mesice = {"leden", "unor", "brezen", "duben", "kveten", "cerven", "cervenec", "srpen", "zari", "rijen", "listopad", "prosinec"; for(int i = 0; i < mesice.length; i++) if(mesic == mesice[i]) return i+1; System.out.printf("neplatny mesic (%s) nastaveni na leden ", mesic); return 1; private int denkontrola( int den ) { int dnuvmesici[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ; // kontrola rozsahu dne v mesici if ( den > 0 && den <= dnuvmesici[ getmesic() ] ) return den; Třída Adresa // kontrola prestupny rok if ( getmesic() == 2 && getden() == 29 && ( getrok() % 400 == 0 ( getrok() % 4 == 0 && getrok() % 100!= 0 ) ) ) return den; System.out.printf( "Neplatny den (%d) nastaveni na 1.", den ); return 1; public int kontrolarok(int r) { if(r>=1900 && r <= 2100) return r; else return kalendar.get(1);
15 public enum Mesic { LEDEN, UNOR, BREZEN, DUBEN, KVETEN, CERVEN, CERVENEC, SRPEN, ZARI, RIJEN, LISTOPAD, PROSINEC Třída Adresa
16 public class Ucet { private int cislo; private int stav; // Konstruktory tridy Ucet public Ucet() { this(0, 0); public Ucet(int cislo, int stav) { this.cislo = cislo; this.stav = stav; Třída Ucet public void vlozeni (int castka) { setstav(getstav() + castka); public int vyber (int castka) { setstav(getstav() castka); //stav = stav - castka; return stav; // pristupove a modifikacni metody... public String tostring() { return String.format("Cislo uctu: %d stav uctu: %d", getcislo(), getstav()); public void tisk() { System.out.println(this.toString());
17 public class Osoba { private String jmeno; private Datum datumnarozeni; //kompozice private Ucet ucet; // agregace - referencni kompozice // deklarace konstruktoru public Osoba() { this("neuvedeno", new Datum(), new Ucet()); Třída Osoba public Osoba(String jmeno, Datum datum, Ucet ucet) { this.jmeno= jmeno; datumnarozeni = new Datum(datum); // kopirovaci konstruktor this.ucet = ucet; //agregace // pristupove a modifikacni metody public void setjmeno(string jmeno) { this.jmeno = jmeno; public String getjmeno(){ return jmeno; public void setdatum(datum datum) { datumnarozeni = new Datum(datum); public Datum getdatumnarozeni() { return datumnarozeni;
18 public String tostring() { String tx= String.format("\nJmeno: %s datum narozeni: %s" + "\nucet: %s", getjmeno(), getdatumnarozeni().tostring(), ucet.tostring()); return tx; public void tisk() { System.out.println(this.toString()); public void setucet(ucet ucet) { this.ucet = ucet; public Ucet getucet(){ return ucet; public void vlozeni(int castka){ getucet().vlozeni(castka); public int vyber(int castka) { return getucet().vyber(castka); public void tiskucet(){ System.out.println("Ucet: "+ucet.tostring()); public void tiskdatumnarozeni(){ System.out.println("Datum narozeni: "+ getdatumnarozeni().tostring());
19 public class OsobaTest { public static void main(string[] args) { Datum datum = new Datum(10, 12, 1999); Osoba o1 = new Osoba("Kamil",datum, new Ucet()); Ucet u1 = new Ucet(1,200); Osoba o2 = new Osoba("Petr",new Datum(6, Mesic.KVETEN, 1956), u1); Ucet u2 = new Ucet(2, 300); o1.setucet(u2); o2.setucet(u1); o1.tisk(); o2.tisk(); o1.vyber(300); o2.vlozeni(800); u1.tisk(); u1 = null; o1.tiskucet(); o2.tiskdatumnarozeni(); Třída Osoba
20 Jmeno: Kamil datum narozeni: 10/12/1999 Ucet: Cislo uctu: 2 stav uctu: 300 Jmeno: Petr datum narozeni: 6/5/1956 Ucet: Cislo uctu: 1 stav uctu: 200 Cislo uctu: 1 stav uctu: 1000 Ucet: Cislo uctu: 2 stav uctu: 0 Datum narozeni: 6/5/1956 Třída OsobaTest
21 Rozšiřování funkčnosti Ve třídě Ucet máme částku na účtu vedenou v primitivním datovém typu int (celé číslo). Není zcela vyhovující: 1. vedení i části za desetinnou čárkou 2. chceme další možnosti sčítání, odčítání, násobení, tisk, převody na euro Nutno vytvořit samostatnou třídu Koruny a vyřešit její napojení na Ucet a Osobu. 21
22 Rozšiřování funkčnosti Požadavky na řešení: sčítání, odčítání, částek vrací nový objekt třídy Koruny s požadovanou hodnotou, násobení s reálným číslem (může představovat úrok) vrací nový objekt třídy Koruny s výslednou hodnotou, metoda tostring() vrací hodnoty např. 12,65 Kc nebo 8,09 Kc, zadávání ve formě: new Koruny(30.91) nebo instancí třídy Koruny 22
23 Rozšiřování funkčnosti V jakém typu proměnné uchovávat částku: double int, int String long a pouze v haléřích pro výstup se převede na koruny a haléře 23
24 public class Koruny { private long halere; private static final int HALERU_DO_KORUNY = 100; //konstruktory public Koruny(double castka) { this.halere = Math.round(castka * HALERU_DO_KORUNY); public Koruny(Koruny koruny) { halere = koruny.gethalere(); public long getkoruny() { //vraci počet korun return gethalere() / HALERU_DO_KORUNY; public long gethalere() { // vraci castku v halerich return halere; public long getzbylehalere() { // vraci zbyle halere bez korun return gethalere() % HALERU_DO_KORUNY; public boolean iszero() { return gethalere() == 0;
25 public boolean equals(object obj) { if(!obj.getclass().equals(this.getclass())) return false; Koruny castka = (Koruny) obj; return this.gethalere() == castka.gethalere(); public Koruny plus(koruny castka) { return new Koruny(1.0 *(this.gethalere() + castka.gethalere()) / HALERU_DO_KORUNY); public Koruny minus(koruny castka) { return new Koruny((double) (this.gethalere() castka.gethalere()) / HALERU_DO_KORUNY); public Koruny nasobeni(double cislo) { return new Koruny((double) (Math.round(this.getHalere() * cislo)) /HALERU_DO_KORUNY);
26 public String tostring() { StringBuffer vysledek = new StringBuffer(""); if(gethalere() < 0) vysledek.append( - ); vysledek.append(math.abs(getkoruny())); vysledek.append(','); long zbylehalere = Math.abs(this.getZbyleHalere()); if(zbylehalere == 0) vysledek.append("00"); else { if(zbylehalere > 0 && zbylehalere < 10) vysledek.append( 0 ); vysledek.append(zbylehalere); vysledek.append(" Kc"); return vysledek.tostring(); public void tisk() { System.out.println(this.toString());
27 public class KorunyTest { public static void main(string[] args) { Koruny castka1 = new Koruny(3.5678); Koruny castka2 = new Koruny(7.08); Třída KorunyTest Koruny vysledek = castka1.plus(castka2); vysledek.tisk(); vysledek = castka1.minus(new Koruny(7.08)); vysledek.tisk(); Koruny castka3 = new Koruny(5.94); vysledek = castka3.nasobeni(1.28); vysledek.tisk();
28 Celková aplikace Student Účet Koruny Diagram tříd celé aplikace. 28
29 public class Ucet { private int cislo; private Koruny stav; Třída Ucet // Konstruktory tridy Ucet public Ucet(){ this(0, 0); public Ucet(int cislo, double castka) { this(cislo, new Koruny(castka)); public Ucet(int cislo, Koruny stav) { this.cislo = cislo; this.stav = stav; public void vlozeni (double castka) { // vyvola metodu vlozeni s parametrem Koruny this.vlozeni(new Koruny(castka));
30 public void vlozeni(koruny castka) { stav = stav.plus(castka); public Koruny vyber (double castka) { // vyvola metodu vyber s parametrem Koruny return this.vyber(new Koruny(castka)); Třída Ucet public Koruny vyber(koruny castka) { stav = stav.minus(castka); return getstav(); public Koruny getstav(){ return stav; public String tostring() { return String.format("Ucet cislo: %d stav uctu: %s", getcislo(), getstav().tostring());
31 public class Student { private String jmeno; private Ucet mujucet; public Student(String jmeno, Ucet ucet){ this.jmeno = jmeno; mujucet = ucet; // agregace public Ucet getucet() { return mujucet; public void setucet(ucet ucet) { mujucet = ucet; public void vlozeni(double castka) { // vyvola metodu vlozeni s parametrem Koruny this.vlozeni(new Koruny(castka));
32 public void vlozeni(koruny koruny) { this.getucet().vlozeni(koruny); public Koruny vyber(double castka) { // vyvola metodu vyber s parametrem Koruny return this.vyber(new Koruny(castka)); public Koruny vyber(koruny koruny) { return this.getucet().vyber(koruny); public String tostring() { return String.format("Jmeno: %s \n%s", getjmeno(), getucet().tostring()); public void tisk() { System.out.println(toString());
33 Deklarace tříd s přetíženými konstruktory Přetěžování konstruktorů je důležité. Pro přetěžování se využívá pseudoproměnná this, která v dané třídě znamená, že odkazuje sama na sebe. Takže pokud je v následujícím příkladu uvedeno v těle konstruktoru this(0, 0, 0); 33
34 Třída Time Prakticky uvedeme třídu Time s přetíženými konstruktory a validačními metodami, které ošetří možné chyby zadání nesprávného času. 34
35 public class Time { private int hodina; // 0-23 private int minuta; // 0-59 private int vterina; // 0 59 // konstruktory public Time() { this( 0, 0, 0 ); public Time( int h ) { this( h, 0, 0 ); public Time( int h, int m ) { this( h, m, 0 ); public Time( int h, int m, int v ) { // vyvola metodu settime k validaci casu settime( h, m, v ); // kopirovaci konstruktor public Time( Time time ) { this( time.gethodina(), time.getminuta(), time.getvterina() );
36 public void settime( int h, int m, int v ) { sethodina( h ); setminuta( m ); setvterina( v); public void sethodina( int h ) { hodina = ( ( h >= 0 && h < 24 )? h : 0 ); public void setminuta( int m ) { minuta = ( ( m >= 0 && m < 60 )? m : 0 ); public void setvterina( int v ) { vterina = ( ( v >= 0 && v < 60 )? v : 0 ); public int gethodina() { return hodina; public int getminuta() { return minuta; public int getvterina() { return vterina;
37 // prevede na String v universalnim casovem // formatu (HH:MM:SS) public String touniversalstring() { return String.format("%02d:%02d:%02d", gethodina(), getminuta(), getvterina() ); // prevede na String ve standardnim casovem formatu // (H:MM:SS AM nebo PM) public String tostring() { return String.format( "%d:%02d:%02d %s", ( (gethodina() == 0 gethodina() == 12)? 12 : gethodina() % 12 ), getminuta(), getvterina(), ( gethodina() < 12? "AM" : "PM" ) ); public void printu() { System.out.println(" "+this.touniversalstring()); public void prints() { System.out.println(" "+this.tostring());
38 public void tisk() { System.out.printf("%s %03d %2d %2d","Aktualni cas: ", gethodina(),getminuta(), getvterina());
39 public class TimeTest { public static void main(string[] args) { Time t1 = new Time(); // 00:00:00 Time t2 = new Time( 2 ); // 02:00:00 Time t3 = new Time( 21, 34 ); // 21:34:00 Time t4 = new Time( 12, 25, 42 ); // 12:25:42 Time t5 = new Time( 27, 74, 99 ); // 00:00:00 Time t6 = new Time( t4 ); // 12:25:42 System.out.println( "Vytvoreno s:" ); System.out.println( "t1: vsechny argumenty defaultni" ); t1.printu(); t1.prints(); System.out.println( "t2: specifikovana hodina; minuta a vterina defaultni"); t2.printu(); t2.prints(); System.out.println( "t3: specifikovana hodina a minuta; vterina defaultni"); t3.printu(); t3.prints();
40 System.out.println( "t4: specifikovana hodina, minuta a vterina"); t4.printu(); t4.prints(); System.out.println( "t5: specifikovany vsechny neplatne hodnoty" ); t5.printu(); t5.prints(); System.out.println( "t6: ma specifikovane hodnoty objekty t4" ); t6.printu(); t6.prints();
41 Pole jako datový atribut Třída Student má pole známek a pole oblíbených jídel. Pole známek obsahuje pouze celá číslo v rozsahu Pole oblíbených jídel je pole řetězců. Cíl blíže se seznámit s práci s poli. 41
42 import javax.swing.joptionpane; public class Student { private String jmeno; private int[] zkousky = {1, 3, 2, 2, 1; private String[] oblibenajidla; public Student() { jmeno = "nezadane"; oblibenajidla = new String[1]; oblibenajidla[0] = "nezadana"; public Student(String jmeno){ this.jmeno = jmeno; initoblibenajidla(); public String getjmeno() { return jmeno; public String[] getoblibenajidla(){ return oblibenajidla;
43 public int[] getzkousky() { return zkousky; public void setjmeno(string jmeno) { this.jmeno = jmeno; public void setoblibenajidla(string[] jidla) { oblibenajidla = jidla; public void setzkousky(int[] zkousky) { this.zkousky = zkousky; public String tostring() { return String.format("Jmeno: %s \noblibena jidla + %s\nzkousky %s\nprumer: %.2f", getjmeno(), jidlatostring(), zkouskytostring(), getprumer());
44 public String jidlatostring() { String s = ""; for(int i = 0; i < getoblibenajidla().length; i++) s += "\n" + (i + 1) + " " + oblibenajidla[i]; return s; public String zkouskytostring() { String s = ""; for(int i = 0; i < getzkousky().length; i++) s += "\n" + (i + 1) + " " + zkousky[i]; return s; public void tisk() { System.out.println(toString());
45 public void initoblibenajidla() { String odpoved = JOptionPane.showInputDialog("Pocet oblibenych jidel: "); int pocet = Integer.parseInt(odpoved); oblibenajidla = new String[pocet]; for(int i = 0; i < pocet; i++) { odpoved = JOptionPane.showInputDialog("Jidlo [" + (i+1) + "] "); oblibenajidla[i] = odpoved; public double getprumer() { double vysledek = 0; for (int i = 0; i < getzkousky().length; i++) vysledek += zkousky[i]; vysledek = vysledek / getzkousky().length; return vysledek; public String prumertostring() { return ""+ getprumer();
46 1 public class StudentTest { 2 public static void main(string[] args) { 3 Student student = new Student("Eva"); 4 student.tisk(); 5 String[] jidlo = {"cocka s vejci", "vepro knedlo zelo", 6 "michana zelenina"; 7 int[] vysledky = {3, 3, 2, 1 ; 8 student.setoblibenajidla(jidlo); 9 student.setzkousky(vysledky); 10 student.tisk();
47 Případová studie Karty K dispozici 52 karet, mají barvu a hodnotu. Deklarace třídy Karta se dvěma atributy výčtového typu. Uložení hodnot karet do pole. 47
48 public enum Barva { Krize, Herce, Kary, Piky 1 public class BarvaTest { 2 public static void main(string[] args) { 3 Barva bp = Barva.Piky; 4 Barva bh = Barva.Herce; 5 if(bp == Barva.Piky) System.out.println("ANO Piky"); 6 else System.out.println("Ne Piky"); Možnosti výčtových typů 7 // jedna moznost pruchodu vyctovymi hodnotami 8 for(barva bv: Barva.values()) 9 System.out.println("Barva: " + bv); 10 System.out.println(); // prazdny radek ve vypisu 11 // klasicka moznost pruchodu vyctovymi hodnotami 12 Barva[] pole = Barva.values(); 13 for(int i = 0; i < pole.length; i++) 14 System.out.println("Barva: " + pole[i]);
49 public enum Hodnota { Eso, Dve, Tri, Ctyri, Pet, Sest, Sedm, Osm, Devet, Deset, Kluk, Dama, Kral
50 public class Karta { private final Hodnota hodnota; // hodnota karty private final Barva barva; // barva karty // konstruktor public Karta( Hodnota kartahodnota, Barva kartabarva ) { hodnota = kartahodnota; // inicializace hodnoty karty barva = kartabarva; // inicializace barvy karty public Hodnota gethodnota() { return hodnota; public Barva getbarva() { return barva; public String tostring() { return String.format( "%s %s", gethodnota(), getbarva());
51 import java.util.list; import java.util.arrays; import java.util.collections; 1 public class BalicekKaret { 2 private Karta[] balicek = new Karta[52]; 3 private int count = 0; // pocet karet index pro pole 4 5 private List< Karta > list; // deklarace seznamu karet 6 7 // vytvoreni balicku karet = konstruktor 8 public BalicekKaret() { 9 for(barva barva: Barva.values()) { 10 for(hodnota hodnota: Hodnota.values()) { 11 balicek[count] = new Karta(hodnota, barva); 12 count++; list = Arrays.asList( balicek ); // vytvori List 16
52 17 public Karta[] getbalicek() { 18 return balicek; public void zamichanikaret() { 21 Collections.shuffle(list); public void tiskseznamukaret() { 24 // zobrazi 52 karet ve dvou sloupcich 25 for ( int i = 0; i < list.size(); i++ ) 26 System.out.printf( "%-20s%s", list.get( i ), 27 ( ( i + 1 ) % 2 == 0 )? "\n" : "" ); public void tiskkaret() { 30 for( int i = 0; i < getbalicek().length; i++) 31 System.out.printf( "%-20s%s", balicek[i], 32 ( ( i + 1 ) % 2 == 0 )? "\n" : "" ); 33 System.out.println();
53 public void michanikaret() { Random rnd = new Random(); int prvni, druhy, pocet; Karta karta; pocet = getbalicek().length -1; for(int i = 0; i < 10; i++) { prvni = rnd.nextint(pocet); druhy = rnd.nextint(pocet); System.out.println("prvni: " + prvni + " druhy: " + druhy); karta = balicek[prvni]; balicek[prvni] = balicek[druhy]; balicek[druhy] = karta;
54 public class BalicekKaretTest { public static void main(string[] args) { BalicekKaret balicek = new BalicekKaret(); balicek.tiskkaret(); balicek.zamichanikaret(); balicek.tiskseznamukaret();
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í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íceObsah přednášky. dědičnost modifikátory (specifikátory) přístupu
OOPR_08 1 Obsah přednášky dědičnost modifikátory (specifikátory) přístupu private, public, protected konstruktor v dědičnosti deklarace nových objektů rozšiřování & přepisování (zastiňování) metod pravidla
VíceObsah přednášky. dědičnost modifikátory (specifikátory) přístupu
OOPR_08 1 Obsah přednášky dědičnost modifikátory (specifikátory) přístupu private, public, protected konstruktor v dědičnosti deklarace nových objektů rozšiřování & přepisování (zastiňování) metod pravidla
Ví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í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í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íceDeklarace a vytváření
OOPR_10 1 Obsah přednášky Deklarace a tvorba polí, jejich použití Rozšířený příkaz cyklu for Třída Registr a datovým atributem typu pole Třídy Zásobník a Fronta Třída Registr pro uložení objektových a
Ví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í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í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í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í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í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í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í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í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í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í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íce14.4.1. Typický prvek kolekce pro české řazení
14.4. Co všechno by měl mít typický prvek kolekce 177 Poznámka: Třídy BigInteger, BigDecimal a Date budou vysvětleny v částech [15./183, [16./185 a [18.1./204. 14.4.1. Typický prvek kolekce pro české řazení
Ví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í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í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í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í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í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í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í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 Formátovaný výstup, třídy, objekty, pole, chyby v programech
7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,
Ví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í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í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í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í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í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í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í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í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í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í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íceObjektové datové typy
OOPR_03 1 Obsah přednášky Objektové datové typy Asociace mezi třídami Klíčové slovo final Třídní atributy a jejich využití Třídní metody Pravidla pro přetypování primitivních typů Metoda main Vytváření
VíceÚvod do programování - Java. Cvičení č.4
Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení
VíceJazyk C# (seminář 6)
Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí
Ví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í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íceMichal Krátký. Úvod do programovacích jazyků (Java), 2006/2007
Úvod do programovacích jazyků (Java) Michal Krátký 1 Katedra informatiky VŠB Technická univerzita Ostrava Úvod do programovacích jazyků (Java), 2006/2007 c 2006 Michal Krátký Úvod do programovacích jazyků
Ví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í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íceProgramovací jazyk Java
1 z 7 14.1.2015 22:57 Programovací jazyk Java 2. přednáška Obsah Zápisy literálů znakových hodnot a řetězců Idenfitikátory, komentáře Řídicí struktury Vytváření a rušení objektů, zapouzdření, konstruktory
VícePodmínky na zápočet. Java, zimní semestr
Podmínky na zápočet zápočtový test u počítače zápočtový program "rozumná" velikost téma do 12. 1. 2018 emailem cvičícímu domácí úkoly 225 bodů (max 450) docházka víc než 3 absence 315 bodů 1 Domácí úkoly
VíceProgramovací jazyk Java
1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška
VíceObsah přednášky. Postup při vytváření objektů. Postup při vytváření objektů. Alokace paměti. Inicializace hodnot atributů
Základy programování (IZAPR, IZKPR) Přednáška 7 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 Postup při vytváření
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í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í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í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ícePŘETĚŽOVÁNÍ OPERÁTORŮ
PŘETĚŽOVÁNÍ OPERÁTORŮ Jazyk C# podobně jako jazyk C++ umožňuje přetěžovat operátory, tj. rozšířit definice některých standardních operátorů na uživatelem definované typy (třídy a struktury). Stejně jako
Ví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í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í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íceIB111 Programování a algoritmizace. Objektově orientované programování (OOP)
IB111 Programování a algoritmizace Objektově orientované programování (OOP) OP a OOP Objekt Kombinuje data a funkce a poskytuje určité rozhraní. OP = objektové programování Vše musí být objekty Např. Smalltalk,
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ícePříklad : String txt1 = new String( Ahoj vsichni! ); //vytvoří instanci třídy String a přiřadí ji vnitřní hodnotu Ahoj vsichni!
Java práce s řetězci Trochu povídání.. Řetězce jsou v Javě reprezentovány instancemi tříd StringBuffer a String. Tyto třídy jsou součástí balíčku java.lang, tudíž je možno s nimi pracovat ihned bez nutného
Ví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íceProjekt Obrázek strana 135
Projekt Obrázek strana 135 14. Projekt Obrázek 14.1. Základní popis, zadání úkolu Pracujeme na projektu Obrázek, který je ke stažení na http://java.vse.cz/. Po otevření v BlueJ vytvoříme instanci třídy
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í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íceTabulková data. budeme pracovat s CSV soubory položky oddělené středníkem, např.
Tabulková data budeme pracovat s CSV soubory položky oddělené středníkem, např. Číslo zákazníka;příjmení;jméno;datum narození 17;Novotná;Bohdana;25.11.1982 22;Kender;David;24.12.1986 29;Čihák;Jan;18.3.1969
Více1. Téma 03 - Rozhodování
1. Téma 03 - Rozhodování Cíl látky Seznámit se a prakticky si vyzkoušet zápis rozhodování v jazyce Java 1.1. Úvod Jednou z nejčastěji používanou konstrukcí při programování je rozhodování. Právě této problematice
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í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íceTřídy a dědičnost. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické
Třídy a dědičnost A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické Dnešní témata Dědičnost Kompozice Typ String Třídy a dědičnost Dopravní prostředek Vzdušný Pozemní Vodní
Více6. PRÁCE S DATOVÝMI PROUDY
6. PRÁCE S DATOVÝMI PROUDY Balík java.io obsahuje třídy, které slouží pro zpracování datových výstupů a vstupů. Pro obvyklou práci se soubory zde můžeme najít třídy File a RandomAccessFile. Většina tříd
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ícepublic class Karel { private int position; public boolean issmiling; public int getposition() { return position;
Objekty, třídy a hierarchie tříd Interface a abstraktní třídy Dědičnost Message passing Class diagramy a příklady systémů modelovaných pomocí OOP Volba správného přístupu Rozdíl mezi asociací, agregací
VíceADT/ADS = abstraktní datové typy / struktury
DT = datové typy obor hodnot, které může proměnná nabývat, s operacemi na tomto oboru určen: obor hodnot + výpočetní operace např. INT = { 2 147 483 648 až +2 147 483 647} + {+,,*,/,} ADT/ADS = abstraktní
VíceOBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ
OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ URČENO PRO VZDĚLÁVÁNÍ V AKREDITOVANÝCH STUDIJNÍCH PROGRAMECH FRANTIŠEK HUŇKA ČÍSLO OPERAČNÍHO PROGRAMU: CZ.1.07 NÁZEV OPERAČNÍHO PROGRAMU: VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST
VíceAlgoritmizace a programování
Algoritmizace a programování Typy Základní (primitivní) datové typy Deklarace Verze pro akademický rok 2012/2013 1 Typy v jazyce Java Základní datové typy (primitivní datové typy) Celočíselné byte, short,
Více15. Projekt Kalkulačka
Projekt Kalkulačka strana 143 15. Projekt Kalkulačka 15.1. Základní popis, zadání úkolu Pracujeme na projektu Kalkulačka, který je ke stažení na java.vse.cz. Po otevření v BlueJ vytvoříme instanci třídy
VícePREPROCESOR POKRAČOVÁNÍ
PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,
VíceObjektově orientované programování 1 XOBO1. Autor: Doc. Ing. František Huňka, CSc.
Objektově orientované programování 1 XOBO1 Autor: Doc. Ing. František Huňka, CSc. 1 Seznam kapitol 1 Základní pojmy...3 1.1 Úvod do tříd a objektů...3 1.2 Vývojové prostředí...7 1.3 Jednotný modelovací
Ví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í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íceDědičnost (inheritance)
Dědičnost (inheritance) Úvod Umožňuje objektům převzít (zdědit) členy jiných objektů a pouze je rozšířit o Auto: lze odvodit Vztah je osobní auto, cisterna jsou auta Základní pojmy Bázová třída (rodič)
Ví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 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íce11 Diagram tříd, asociace, dědičnost, abstraktní třídy
11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,
Ví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íceObjekty, třídy, instance
Objekty, třídy, instance Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016 Objektové modelování, xx36omo 09/2016, Lekce 1 https://cw.fel.cvut.cz/wiki/courses/xxb36omo/start
VícePokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++
Pokročilé programování v jazyce C pro chemiky (C3220) Statické proměnné a metody, šablony v C++ Globální konstantní proměnné Konstantní proměnné specifikujeme s klíčovým slovem const, tyto konstantní proměné
VíceDalším příkladem může být například výstup dat na různá zařízení, souborů, grafických rozhraní, sítě atd.
1. Zapouzdření Cíl látky Tento blok nejdříve přiblíží zásadu zapouzdření a odpoutání kódu a po té na relacích, jako jsou asociace, agregace a kompozice, vysvětlí jak lze objektový zdrojový kód zapouzdřovat
Ví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í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íceProměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.
Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné
VíceProjekty pro výuku programování v jazyce Java
JIHOČESKÁ UNIVERZITA V ČESKÝCH BUDĚJOVICÍCH Pedagogická fakulta Katedra informatiky Akademický rok: 2006/2007 TEZE BAKALÁŘSKÉ PRÁCE Projekty pro výuku programování v jazyce Java Jméno: František Přinosil
VíceSeminář Java IV p.1/38
Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly
VíceÚ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í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í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íce