Programovací jazyk Java

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

Download "Programovací jazyk Java"

Transkript

1 1 z :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 Organizace tříd do balíčků Statické metody a statické proměnné Proměnné z pohledu místa deklarace Statické a nestatické inicializační bloky Modifikátory přístupnosti tříd, proměnných a metod Dědičnost Předávání skutečných parametrů metodám Pole jako referenční datový typ Zápisy literálů znakových hodnot a řetězců char start = 's'; char ž = '\u017e'; // proměnná ž obsahuje znak ž. String kůň = "kůň"; String kůň = "K\u016F\u0148"; Idenfitikátory, komentáře Viz Identifikátory a komentáře Řídicí struktury Viz If, Switch, While, DoWhile, For, Break, Continue Ternární operátor: Syntaxe: L-hodnota = výraz? výraz1 : výraz2; Supluje if-then-else int minimum = a < b? a : b; Třída a vytvoření objektu Třída je základním stavebním kamenem programu v objektově orientovaném programovacím jazyce. Třída definuje datové složky (= atributy), ve kterých je uložen stav objektu a metody (tzn. podprogramy), které manipulují s atributy a tím mění stav objektu. Objekt je struktura, která je vytvořena podle vzoru třídy. Často se říká, že objekt je instancí třídy. Pro vytvoření objektu musíme deklarovat referenční proměnnou typu třída pomocí operátoru new nechat vytvořit v paměti objekt a získanou referenci na něj přiřadit do připravené proměnné. Podle jednoho vzoru (třídy) lze vytvořit libovolné množství objektů, které mají sice stejnou strukturu, ale jinak jsou na sobě navzájem nezávislé a tudíž mohou mít různé stavy (tzn. obsahy členských proměnných atributů). Příklad třídy: class Obdelnik { int sirka; int vyska; int obvod() { int pom; pom = 2 * (sirka + vyska); return pom; int obsah() { return (sirka * vyska);

2 2 z :57 Příklad použití třídy: Obdelnik obd = new Obdelnik(); obd.vyska = 5; obd.sirka = 3; int obvod = obd.obvod()); Zapouzdření (encapsulation) Základní pojmy: Rozhraní třídy = množina informací, které o sobě třída zveřejňuje. Implementace je způsob, jak je třída naprogramována, tzn. jak jednotlivé metody dělají to, co dělají. Do rozhraní bychom měli zařazovat jen to, co ostatní části programu opravdu musí o třídě vědět. Můžeme například zamezit přímému přístupu k proměnným nebo přímému volání některých metod. Objekt by měl být černá skříňka s jasně zdokumentovaným rozhraním, tzv. jakýmsi návodem na použití: jak lze objekt vytvořit, co a jak s ním lze dělat. Zamezení přímého přístupu k proměnné se provádí uvedením modifikátoru přístupu (klíčového slova) private v deklaraci proměnné před názvem typu, např. private int delka; Zamezení přímého přístupu k metodě se provádí uvedením modifikátoru přístupu private v hlavičce metody před názvem návratového typu, např. private int getname(); Když se zapouzdření projeví jako příliš silné, lze téměř vždy povolit. Zpřísnit naopak nelze prakticky nikdy, neboť nevíme, kdo dříve povolené rozhraní již používá. Příklad třída se zapouzdřenou metodou a proměnnými: class Osoba { private int vyska; private double hmotnost; private double bmi; private void setbmi(int v, double m) { bmi = m / (v * v); void setudaje(int v, double m) { if ((v >= 0) && (m > 0)) { vyska = v; hmotnost = m; setbmi(v, m); Příklad povolené a nepovolené použití třídy Osoba v jiné třídě: Osoba o = new Osoba(); o.setudaje(180, 75); // lze o.vyska = -10; // nelze o.setbmi(-165, 2); // nelze Při pokusu o kompilaci hlásí překladač 2 chyby: vyska has private access in Osoba setbmi(int,double) has private access in Osoba Otázka: Které z následujících úprav lze provést ve třídě, jejíž rozhraní již bylo zveřejněno? odebrat veřejnou proměnnou odebrat soukromou (private) proměnnou odebrat veřejnou metodu odebrat soukromou (private) metodu změnit implementaci (tzn. tělo) veřejné metody změnit implementaci (tzn. tělo) soukromé (private) metody změnit rozhraní (tzn. hlavičku) veřejné metody, např. typy parametrů nebo návratový typ změnit rozhraní (tzn. hlavičku) soukromé (private) metody, např. typy parametrů nebo návratový typ přetížit veřejnou metodu přetížit soukromou (private) metodu Konstruktor Konstruktor je metoda, která v paměti vytvoří objekt jakožto instanci třídy, provede inicializaci proměnných (tzn. nastaví jejich počáteční hodnoty) a případně další akce spojené se vznikem objektu. Konstruktor vrací referenci (odkaz) na místo v paměti, kde je objekt umístěn. Název konstruktoru je shodný s názvem třídy, jejíž instanci tento konstruktor vytváří. Ve výše uvedeném příkladu jsme vytvářeli objekt o jako instanci třídy Osoba takto: Osoba o = new Osoba(); Osoba() je zde voláním speciální metody konstruktoru. Metodu Osoba() jsme sice neimplementovali, ale v takovém případě Java volá implicitní konstruktor, který vytvoří objekt a nastaví hodnotu všech číselných proměnných na 0, resp. 0.0 (typ boolean na hodnotu false, typ char na hodnotu '\u0000', referenční typy na hodnotu null). Můžeme se však rozhodnout vytvořit vlastní (explicitní) konstruktor, např. kvůli inicializaci proměnných instance určitými hodnotami nebo za účelem automatického provedení určitých akcí při vytváření instance. Jakmile jednou vytvoříme libovolný konstruktor s parametry, pak překladač nevytvoří implicitní konstruktor! Budeme-li tedy současně potřebovat konstruktor bez parametrů, musíme si jej vytvořit sami (viz níže).

3 3 z :57 Vytvoření vlastního konstruktoru class Usecka { private int d; // proměnná instance private final static int IMPLIC_DELKA = 5; Usecka () { // konstruktor d = 5; Usecka (int delka) { // konstruktor d = delka; void zadejdelku (int delka) { // metoda instance d = delka; int delka () { // metoda instance return d; void vytvorobjekty() { // metoda instance Usecka prvni = new Usecka(); Usecka druha = new Usecka(3); System.out.println("Delka prvni usecky je " + prvni.delka() + "."); System.out.println("Delka druhe usecky je " + druha.delka() + "."); prvni.zadejdelku(1); System.out.println("Delka prvni usecky je nyni " + prvni.delka() + "."); Metoda vytvorobjekty() vypíše Delka prvni usecky je 5. Delka druhe usecky je 3. Delka prvni usecky je 1. Využití this pro přístup k proměnným Klíčové slovo this můžeme použít uvnitř metody pro přístup k proměnným instance, mají-li stejný název jako formální parametry metody Konstruktor z předchozího příkladu by tedy mohl vypadat také takto: class Usecka { private int d; Usecka (int d) { this.d = d; Využití this pro přístup ke konstruktoru Klíčové slovo this má ještě speciální využití v přetížených konstruktorech. Pomocí něj (bez tečky, ale se závorkami) může konstruktor vyvolat jiný konstruktor stejné třídy. Volání this() se vztahuje na ten konstruktor, jehož parametry vyhovují co do počtu a pořadí typů. mám-li konstruktor s parametrem Usecka (int delka) { // konstruktor d = delka; pak namísto Usecka () { d = IMPLIC_DELKA; mohu použít Usecka () { this(implic_delka); Vztahy mezi metodami ve třídě Metody instance mohou libovolně volat další metody instancí téže třídy. To znamená, že metody jedné třídy jsou na stejné úrovni a neexistuje mezi nimi žádný hierarchický vztah. Konstruktor třídy může volat všechny metody téže třídy a může volat i libovolný jiný konstruktor téže třídy. Metoda smí konstruktor volat pouze prostřednictvím operátoru new. Rušení objektů Objekty vytváříme pomocí new. Jak je ale zrušit? Nepotřebné objekty automaticky ruší garbage collector. Jak se pozná, že je objekt nepotřebný? Neexistuje na něj žádný odkaz z existujících referenčních proměnných. Zneplatnit odkaz můžeme například takto: Obdelnik obd = new Obdelnik (3, 5); obd = new Obdelnik (7, 10); nebo takto: Obdelnik obd = new Obdelnik (3, 5); obd = null;

4 4 z :57 Organizace tříd do balíčků Třídy a rozhraní organizujeme do balíčků (packages), podobně jako související soubory na pevném disku organizujeme do adresářů. V balíčku jsou vždy umístěny související třídy. Co znamená související? třídy, jejichž objekty spolupracují Člověk, Úřad třídy na podobné úrovni abstrakce Chovatel, DomácíZvíře třídy ze stejné části reality ChovatelPsů, Pes Balíčky obvykle organizujeme do hierarchií, např.: svet svet.chovatelstvi svet.chovatelstvi.psi svet.chovatelstvi.morcata POZOR!!! Třídy podbalíčku (např. svet.chovatelstvi.psi) nejsou současně třídami rodičovského balíčku (svet.chovatelstvi). Hierarchie balíčků má význam spíše pro srozumitelnost a logické členění. Příslušnost třídy k balíčku deklarujeme syntaxí package názevbalíčku;, kterou uvádíme obvykle jako první deklaraci ve zdrojovém souboru třídy (rozhraní). Příslušnost k balíčku musíme současně potvrdit správným umístěním zdrojového souboru do adresářové struktury. Např. zdrojový soubor třídy Pes umístíme do podadresáře svet\chovatelstvi\psi. Neuvedeme-li příslušnost k balíčku, stane se třída součástí implicitního balíčku to však nelze pro jakékoli větší a/nebo znovupoužívané třídy či dokonce programy doporučit. Balíčky pojmenováváme podle svého URL a dodržujeme hierarchii vycházející z URL. Používáme opačný zápis oproti klasickým URL, za doménou pokračujeme dalšími upřesňujícími názvy (např. podle projektů a jejich částí). Názvy píšeme malými písmeny. Ve cvičeních tomto předmětu budeme pojmenovávat balíčky podle tohoto vzoru cz.mendelu.pef.pjj.xnovak.cv1, cz.mendelu.pef.pjj.xnovak.du1, cz.mendelu.pef.pjj.xnovak.projekt. Chceme-li v programu použít třídu z jiného balíčku, než aktuálního a java.lang, musíme před hlavičku třídy vložit příkaz pro import: import názevbalíčku.názevtřídy; např. import java.io.file; import cz.mendelu.pef.pjj.xnovak.cv1.zamestnanec; případně můžeme jedním příkazem načíst všechny třídy balíčku: import import java.io.*; import cz.mendelu.pef.pjj.xnovak.cv1.*; Shrnutí ukázka celé třídy: package cz.mendelu.pef.pjj.xnovak.cv2; import cz.mendelu.pef.pjj.xnovak.cv1.*; import java.io.file; class Xyz { Statické metody a statické proměnné Pokud v hlavičce metody uvedeme klíčové slovo static, vznikne statická metoda, která bude patřit třídě a nikoliv jejím instancím. Zatímco metody instance voláme obj.metoda(), metody třídy voláme Třída.metoda(). Metody třídy lze volat i v okamžiku, kdy neexistuje ani jedna instance třídy. Pokud v hlavičce proměnné uvedeme klíčové slovo static, vznikne statická proměnná, která bude patřit třídě a nikoliv jejím instancím. Zatímco k proměnným instance přistupujeme obj.proměnná, k proměnným třídy přistupujeme Třída.proměnná. Ve statických metodách lze přímo volat pouze jiné statické metody a přímo přistupovat pouze ke statickým proměnným. V metodách instance lze přímo volat statické metody i metody instance a přímo přistupovat ke statickým proměnným i proměnným instance. V rámci dané třídy však není třeba při volání metody třídy nebo při použití proměnné třídy uvádět název třídy (tzn. používáme jen metoda(), resp. proměnná). V téže třídě nelze deklarovat statickou proměnnou stejného jména, jako má proměnná instance. V téže třídě nelze definovat statickou metodu stejného jména, jako má metoda instance (při stejných typech parametrů metod). Příkladem statické metody je metoda main, která je po spuštění programu volána jako první: public static void main(string[] args) { Poznámka: Parametr této metody (args) je pole řetězců zadaných při spouštění programu jako parametry na příkazový řádek (např. java Vynasob 28 34). (V NetBeans je lze zadat v Project Properties Run Arguments). Příklad využití soukromého konstruktoru a statické metody ke kontrole instancí třídy (tzv. singleton): public class TiskovaFronta { static TiskovaFronta tf; private TiskovaFronta(){ static TiskovaFronta getinstance() { if (null == tf) tf = new TiskovaFronta(); return tf; void tisk(object o) { System.out.println(o.toString());

5 5 z :57 public class Uloha { public static void main(string[] args) { TiskovaFronta m; m = new TiskovaFronta(); //Chyba při kompilaci: "TiskovaFronta() has private access in TiskovaFronta" m = TiskovaFronta.getInstance(); //Správný způsob získání instance. m.tisk("text"); Proměnné z pohledu místa deklarace V Javě neexistují žádné globální proměnné. Každá proměnná někomu patří, buď třídě (statická proměnná) nebo instanci. Proměnné třídy deklarujeme ve třídě (mimo těla metod) s klíčovým slovem static. Proměnné instance deklarujeme rovněž ve třídě (mimo těla metod). Třetí možností je deklarace proměnné přímo v těle metody. Taková proměnná je viditelná pouze v této metodě. Pokud je deklarována v bloku, je její viditelnost omezena pouze na tento blok. Proměnné tedy dělíme na proměnné třídy (= statické), proměnné instance a lokální proměnné (metod nebo jejich podčástí bloků). public class Prom { static int i = 5; int j = 8; public static void tisk () { System.out.println(i); System.out.println(j); // Chyba při kompilaci: Z metody třídy nelze přímo přistupovat k proměnné instance. public static void main (String[] args) { char i = 'a'; tisk(); // vytiskne 5 System.out.println(i + " " + Prom.i); // Vytiskne "a 5". Lokální proměnná i překryla proměnnou třídy stejného názvu, proto je k proměnné třídy nutno přistupovat přes název třídy. for(int k = 0; k < 10; k++) { System.out.println(k); System.out.println(k); // Chyba při kompilaci: Platnost proměnné k je omezena pouze na příkaz for. Statické a nestatické inicializační bloky K inicializaci třídy (resp. instance) použít jeden nebo více statických (resp. nestatických) bloků. Syntaxe: class X { static int a; int b; static { a = 5; { b = 7; Statický inicializační blok vyvolává třída a to pouze jednou, při svém zavedení. Jedná se o tyto situace: je vyvolána metoda nebo konstruktor deklarovaný danou třídou, je proveden přístup k nekonstantní členské proměnné třídy nebo konstantě rozhraní, je proveden přístup ke členské proměnné třídy s modifikátorem final nebo static, která je inicializována hodnotou vypočítanou za běhu programu. Nestatický inicializační blok vyvolávají všechny konstruktory třídy (nejprve proběhnou příkazy bloku, teprve poté příkazy konstruktoru). Modifikátory přístupnosti třídy Před klíčovým slovem class může být uveden identifikátor public. Ten označuje veřejnou třídu, která je přístupná i mimo svůj balík. Bez tohoto modifikátoru je třída přístupná pouze ve svém balíku. Veřejná třída musí být uložena v souboru stejného názvu (např. public class Student { v souboru Student.java) Modifikátory přístupnosti proměnných a metod Java definuje čtyři stupně přístupu k metodám, které se nastavují pomocí modifikátorů v hlavičce metody: public přístupné odkudkoliv, protected přístupné v rámci balíčku a potomků třídy (ty mohou být v jiných balíčcích), implicitní (bez modifikátoru) přístupné v rámci balíčku, private viditelné pouze v rámci třídy. Podrobněji ZDE. V zájmu bezpečnosti a zapozdřenosti je vhodné postupovat od nejvyššího zapouzdření a v případě potřeby zviditelňovat. Opačně totiž prakticky nelze (např. zapouzdřit již zveřejněnou metodu).

6 6 z :57 Dědičnost Dědičnost představuje možnost přidat k základní třídě (též bázové, rodičovské, supertřídě nebo rodiči, případně předkovi) další vlastnosti a vytvořit tak odvozenou třídu (zděděnou třídu nebo potomka či dceřinou třídu). Odvozená třída bývá specializovanější, než základní. Někdy není na první pohled jasné, zda použít dědičnost (tedy oddědit potomka od rodiče), nebo pouze využít kompozici (tzn. použít ve třídě instance jiných tříd). Zde je vhodné použít tzv JE test. Pokud se dá říci, že nová třída JE současně původní třídou (přesněji její speciálnější, konkrétnější verzí), pak je možné použít dědění. Pokud se však jako vhodnější jeví použití slova MÁ, je třeba použít kompozici. Relace dědění je vyznačena klíčovým slovem extends. Následující příklad ukazuje vytvoření třídy Zamestnanec s využítím tříd Datum a Osoba. Třída Osoba umí evidovat jméno osoby. Třída Datum umí evidovat datum. U zaměstnance potřebujeme evidovat jméno, datum narození a datum nástupu do zaměstnání. JE test: Zamestnanec JE (také) Osoba, proto třídu Zamestnanec oddědíme od třídy Osoba. Zamestnanec však MÁ nějaké datum narození a nějaké datum nástupu, proto třídu Datum využijeme formou kompozice (použijeme její instance). class Datum { private int den, mesic, rok; Datum(int den, int mesic, int rok) { this.den = den; this.mesic = mesic; this.rok = rok; Datum(Datum d) { this(d.den, d.mesic, d.rok); String tostring() { StringBuffer b = new StringBuffer(100); b.append(den).append(".").append(mesic).append(".").append(rok); return b.tostring(); class Osoba { String jmeno; Osoba(String jmeno) { this.jmeno = new String(jmeno); String tostring() { return jmeno; class Zamestnanec extends Osoba{ Datum narozeni, nastup; Zamestnanec(String jmeno, Datum narozeni, Datum nastup) { super(jmeno); this.narozeni = new Datum(narozeni); this.nastup = new Datum(nastup); String tostring() { StringBuffer b = new StringBuffer(200); b.append(jmeno).append(", narozen: ").append(narozeni.tostring()); b.append("\nnastoupil: ").append(nastup.tostring()); return b.tostring(); Jelikož je však dědičnost potenciálním zdrojem různých problémů, je doporučováno používat ji pouze v případech, kdy je mezi nadtřídou a podřídou jasný vztah specializace/generalizace, a všude jinde místo dědičnosti spíše kompozici. Viz např. Předávání skutečných parametrů metodám Parametry primitivních datových typů se předávají výhradně hodnotou. To znamená, že metoda si vytvoří kopie skutečných parametrů a s těmi pak pracuje. Metoda nemůže změnit obsah skutečných parametrů. Parametry typu objekt nebo pole se metodám předávají také hodnotou, avšak je třeba počítat s tím, že touto hodnotou je odkaz neboli reference na objekt/pole. Metoda si tedy vytvoří kopii adresy objektu/pole v paměti a může trvale změnit datové složky objektu nebo prvky pole. Pole jako referenční datový typ Java obsahuje dva neprimitivní datové typy: pole a objekty. Proměnné těchto typů jsou označovány jako referenční. Referenční proměnné typu pole nebo objekt po své deklaraci nereprezentují žádná data. Jak pole, tak objekty vznikají dynamicky pomocí speciálního příkazu a zanikají, jakmile na ně neexistuje žádný odkaz. Poznámky: Pro konkrétní hodnotu referenční proměnné používáme název odkaz. Hodnota neplatného (neexistujícího) odkazu je hodnota konstanty null. Deklarace pole Skládá se ze dvou částí: z typu pole a jména proměnné. Při deklaraci se neudává velikost pole. Pole jsou totiž alokována dynamicky, takže velikost pole se určuje až při žádosti o jeho vytvoření. Příklad deklarace referenční proměnné pole typu int: int[] poleint; Protože deklarace nepřiděluje paměť, je třeba ji před prvním použitím pole přiřadit pomocí operátoru new: poleint = new int[20]; Přidělení paměti je však možné již při deklaraci: int[] poleint = new int[20]; Délka pole

7 7 z :57 Délku pole zadanou při jeho vytvoření není nutné si pamatovat. Můžeme ji kdykoliv zjistit pomocí proměnné length. Tuto konstantu vlastní automaticky každé pole. K prvkům pole se přistupuje běžným způsobem (přes hranatou závorku a index prvku). Počáteční prvek má vždy index 0. for (int i = 0; i < poleint.length; i++) { poleint[i] = i + 1; System.out.print(poleInt[i] + " "); Inicializované pole Pole nemusíme vytvářet jen pomocí new. Pokud potřebujeme mít pole naplněné určitými hodnotami, můžeme pole vytvořit pomocí statického inicializátoru. int[] prvocisla = {1, 2, 3, 5, 7, 11; Konstanta length v tomto případě vrací hodnotu 6, prvky pole jsou indexovány čísly 0 až 5. Hodnoty jednotlivých prvků pole lze dále měnit, nelze však pole rozšiřovat o další prvky. Dvourozměrné pole Příklad deklarace: int[][] a = new int[5][4]; Počet řádků (zde 5) získáme pomocí a.length, počet sloupců (zde 4) i-tého řádku pomocí a[i].length. Každý řádek může mít jiný počet prvků (sloupců). Dvourozměrné pole s různou délkou řádků public class Pole5 { public static void main(string[] args) { int[][] a = new int[4][]; for (int i = 0; i < a.length; i++) { a[i] = new int[i + 1]; for (int j = 0; j < a[i].length; j++) { a[i][j] = i * 10 + j; System.out.print(a[i][j] + " "); System.out.println(); Inicializace dvourozměrného pole I vícerozměrné pole lze vytvořit pomocí statického inicializátoru: int[][] b = {{ 1, 2, 3,{11, 12, 13,{21, 22, 23; int[][] c = {{ 1, 2, 3,{11, 12,{21; Troj- a vícerozměrná pole Vytvářejí se analogicky. V případě, že se pole vytváří postupně, nelze přeskakovat rozměry: int[][][] d = new int[5][5][5]; // OK int[][][] e = new int[5][5][]; e[0][1] = new int[8]; // OK int[][][] f = new int[5][][5]; // chyba f[0][][1] = new int[8]; // chyba T h e E n d

Úvod do programování - Java. Cvičení č.4

Úvod do programování - Java. Cvičení č.4 Úvod do programování - Java Cvičení č.4 1 Sekvence (posloupnost) Sekvence je tvořena posloupností jednoho nebo více příkazů, které se provádějí v pevně daném pořadí. Příkaz se začne provádět až po ukončení

Více

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

14.4.2010. Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod. Základy programování (IZAPR) Přednáška 7 Ing. Michael Bažant, Ph.D. Katedra softwarových technologií Kancelář č. 229, Náměstí Čs. legií Michael.Bazant@upce.cz Obsah přednášky 7 Parametry metod, předávání

Více

Úvod do programovacích jazyků (Java)

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

Více

8 Třídy, objekty, metody, předávání argumentů metod

8 Třídy, objekty, metody, předávání argumentů metod 8 Třídy, objekty, metody, předávání argumentů metod Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost třídám a objektům, instančním

Více

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd

7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd 7. přednáška - třídy, objekty třídy objekty atributy tříd metody tříd Algoritmizace (Y36ALG), Šumperk - 7. přednáška 1 Třída jako zdroj funkcionality Třída v jazyku Java je programová jednotka tvořená

Více

Seminář Java II p.1/43

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

Více

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

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

Více

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

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

Více

3. Třídy. Základní pojmy objektového programování. Třídy

3. Třídy. Základní pojmy objektového programování. Třídy 3. Třídy Základní pojmy objektového programování Jak už víme, je Java objektovým programovacím jazykem. V úvodu této kapitoly si objasníme základní pojmy objektové teorie. Objekt představuje souhrn dat

Více

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

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech 7 Formátovaný výstup, třídy, objekty, pole, chyby v programech Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost formátovanému výstupu,

Více

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

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

Více

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

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

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Struktura programu Vytvoření nové aplikace Struktura programu Základní syntaktické elementy První aplikace Verze pro akademický rok 2012/2013 1 Nová aplikace NetBeans Ve vývojovém

Více

Výčtový typ strana 67

Výčtový typ strana 67 Výčtový typ strana 67 8. Výčtový typ V této kapitole si ukážeme, jak implementovat v Javě statické seznamy konstant (hodnot). Příkladem mohou být dny v týdnu, měsíce v roce, planety obíhající kolem slunce

Více

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006

Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů CZ.1.07/1.3.12/04.0006 Lekce 1 Jazyk Java Tento projekt je spolufinancován Evropským sociálním fondem

Více

1. Dědičnost a polymorfismus

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

Více

Programování v Javě I. Únor 2009

Programování v Javě I. Únor 2009 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Únor 2009 Radek Kočí Seminář Java Programování v Javě (1) 1/ 44 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 7 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň - ternární

Více

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

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

Více

typová konverze typová inference

typová konverze typová inference Seminář Java Programování v Javě II Radek Kočí Fakulta informačních technologií VUT Únor 2008 Radek Kočí Seminář Java Programování v Javě (2) 1/ 36 Téma přednášky Rozhraní: použití, dědičnost Hierarchie

Více

Teoretické minimum z PJV

Teoretické minimum z PJV Teoretické minimum z PJV Pozn.: následující text popisuje vlastnosti jazyka Java zjednodušeně pouze pro potřeby výuky. Třída Zavádí se v programu deklarací třídy což je část programu od klíčových slov

Více

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

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

Více

Programování v Javě I. Leden 2008

Programování v Javě I. Leden 2008 Seminář Java Programování v Javě I Radek Kočí Fakulta informačních technologií VUT Leden 2008 Radek Kočí Seminář Java Programování v Javě (1) 1/ 45 Téma přednášky Datové typy Deklarace třídy Modifikátory

Více

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

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

Více

IRAE 07/08 Přednáška č. 1

IRAE 07/08 Přednáška č. 1 Úvod do předmětu OOP Objekt Proč OOP? Literatura, osnova předmětu viz. cvičení Základní prvek OOP sw inženýrství = model reálných objektů (věcí) člověk, auto, okno (ve windows), slovník, = model abstraktní

Více

Generické programování

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

Více

Programování v C++ 1, 5. cvičení

Programování v C++ 1, 5. cvičení Programování v C++ 1, 5. cvičení konstruktory, nevirtuální dědění 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

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

Programování v C++ 3, 3. cvičení Programování v C++ 3, 3. cvičení úvod do objektově orientovaného programování 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled Dokončení spojového

Více

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

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

Více

Programování v C++ 1, 6. cvičení

Programování v C++ 1, 6. cvičení Programování v C++ 1, 6. cvičení dědičnost, polymorfismus 1 1 Fakulta jaderná a fyzikálně inženýrská České vysoké učení technické v Praze Zimní semestr 2018/2019 Přehled 1 2 3 Shrnutí minule procvičené

Více

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

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

Více

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33 Objekt jako proměnná Objekty a metody Objekt = proměnná referenčního typu vznik pomocí new, chování viz pole jako referenční proměnná minulý semestr Stack Heap objekt ref this 10 20 atr1 atr2 jinyobjekt

Více

Více o konstruktorech a destruktorech

Více o konstruktorech a destruktorech Více o konstruktorech a destruktorech Více o konstruktorech a o přiřazení... inicializovat objekt lze i pomocí jiného objektu lze provést přiřazení mezi objekty v původním C nebylo možné provést přiřazení

Více

Abstraktní třída a rozhraní

Abstraktní třída a rozhraní Abstraktní třída a rozhraní Někdy se může stát, zejména při psaní v hierarchické struktuře hodně nadřazených tříd, že tušíme, že bude ve zděděných třídách vhodné použít nějakou metodu. Tuto metodu ještě

Více

Úvod do programovacích jazyků (Java)

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

Více

7. Datové typy v Javě

7. Datové typy v Javě 7. Datové typy v Javě Primitivní vs. objektové typy Kategorie primitivních typů: integrální, boolean, čísla s pohyblivou řádovou čárkou Pole: deklarace, vytvoření, naplnění, přístup k prvkům, rozsah indexů

Více

Programovací jazyk Java

Programovací jazyk Java 1 z 8 Programovací jazyk Java Enumerace (výčty) Složitější definice výčtového typu Konstanty anonymních typů Výčtový typ a datové struktury Java packaging JAR archivy CLASSPATH Apache Ant 10. přednáška

Více

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

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

Více

Základy objektové orientace I. Únor 2010

Základy objektové orientace I. Únor 2010 Seminář Java Základy objektové orientace I Radek Kočí Fakulta informačních technologií VUT Únor 2010 Radek Kočí Seminář Java Základy OO (1) 1/ 20 Téma přednášky Charakteristika objektově orientovaných

Více

10 Balíčky, grafické znázornění tříd, základy zapozdření

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření 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 příkazům balíčkům, grafickému

Více

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

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

Více

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

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

Více

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

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

Více

20. Projekt Domácí mediotéka

20. Projekt Domácí mediotéka Projekt Domácí mediotéka strana 211 20. Projekt Domácí mediotéka 20.1. Základní popis, zadání úkolu V projektu Domácí mediotéka (Dome) se jednoduchým způsobem evidují CD a videa. Projekt je velmi jednoduchý

Více

Úvod do programovacích jazyků (Java)

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

Více

PREPROCESOR POKRAČOVÁNÍ

PREPROCESOR POKRAČOVÁNÍ PREPROCESOR POKRAČOVÁNÍ Chybová hlášení V C# podobně jako v C++ existuje direktiva #error, která způsobí vypsání chybového hlášení překladačem a zastavení překladu. jazyk C# navíc nabízí direktivu #warning,

Více

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

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

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Řídicí struktury jazyka Java Struktura programu Příkazy jazyka Blok příkazů Logické příkazy Ternární logický operátor Verze pro akademický rok 2012/2013 1 Struktura programu

Více

Principy objektově orientovaného programování

Principy objektově orientovaného programování Principy objektově orientovaného programování Třídy a objekty doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz C E T

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz

Vaše jistota na trhu IT. Balíčky. Rudolf Pecinovský rudolf@pecinovsky.cz Vaše jistota na trhu IT Balíčky Rudolf Pecinovský rudolf@pecinovsky.cz Problémy velkých aplikací Rozsáhlé aplikace používají velké množství názvů objektů a jejich zpráv, které různé části programu sdílí

Více

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo Statické proměnné a metody Tomáš Pitner, upravil Marek Šabo Úvod Se statickou metodou jsme se setkali už u úplně prvního programu - Hello, world! public class Demo { public static void main(string[] args)

Více

Konstruktory a destruktory

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

Více

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13 KAPITOLA 1 Na úvod o Javě 15 Počítačový program 15 Vysokoúrovňový programovací

Více

KTE / ZPE Informační technologie

KTE / ZPE Informační technologie 4 KTE / ZPE Informační technologie Ing. Petr Kropík, Ph.D. email: pkropik@kte.zcu.cz tel.: +420 377 63 4639, +420 377 63 4606 (odd. informatiky) Katedra teoretické elektrotechniky FEL ZČU Plzeň Největší

Více

Jazyk C# (seminář 6)

Jazyk C# (seminář 6) Jazyk C# (seminář 6) Pavel Procházka KMI 29. října 2014 Delegát motivace Delegáty a události Jak docílit v C# funkcionální práce s metodami v C je to pomocí pointerů na funkce. Proč to v C# nejde pomocí

Více

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

1. Téma 12 - Textové soubory a výjimky 1. Téma 12 - Textové soubory a výjimky Cíl látky Procvičit práci se soubory s využitím výjimek. 1.1. Úvod Program, aby byl programem, my mít nějaké výstupy a vstupy. Velmi častým případem je to, že se

Více

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

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

Více

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

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

Více

Objektově orientované programování

Objektově orientované programování 10. října 2011 Pragmatické informace Volitelný předmět, zápočet: zápočtový program(s dokumentací), aktivní účast na cvičení(body v CodExu), praktický test, zkouška: zkoušková písemka na objektový návrh

Více

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

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write(\nPrumerna teplota je {0}, tprumer); Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody

Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Pokročilé programování v jazyce C pro chemiky (C3220) Operátory new a delete, virtuální metody Dynamická alokace paměti Jazyky C a C++ poskytují programu možnost vyžádat si část volné operační paměti pro

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,

Více

Vytváření a použití knihoven tříd

Vytváření a použití knihoven tříd Vytváření a použití knihoven tříd doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Prostory jmen motivace spolupráce

Více

Řídicí struktury. alg3 1

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

Více

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

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

Více

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu

Class loader. každá třída (java.lang.class) obsahuje referenci na svůj class loader. Implementace class loaderu Seminář Java Zavádění tříd Radek Kočí Fakulta informačních technologií VUT Duben 2008 Radek Kočí Seminář Java Zavádění tříd 1/ 16 JVM zavádí třídy dynamicky Class loader objekt schopný zavádět třídy abstraktní

Více

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz

Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Ukazka knihy z internetoveho knihkupectvi www.kosmas.cz Upozornění pro čtenáře a uživatele této knihy Všechna práva vyhrazena. Žádná část této tištěné či elektronické knihy nesmí být reprodukována a šířena

Více

Z. Kotala, P. Toman: Java ( Obsah )

Z. Kotala, P. Toman: Java ( Obsah ) Z. Kotala, P. Toman: Java ( Obsah ) 13. Výjimky Výjimka (exception) je definována jako událost, která nastane během provádění programu a která naruší normální běh instrukcí. Výjimka je vyvolána například

Více

Soubor jako posloupnost bytů

Soubor jako posloupnost bytů Soubory Soubor je množina údajů uložená ve vnější paměti počítače, obvykle na disku Pro soubor jsou typické tyto operace. otevření souboru čtení údaje zápis údaje uzavření souboru Přístup k údajům (čtení

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Třídy v C++ Třídy v C++ Třídy jsou uživatelsky definované typy podobné strukturám v C, kromě datových položek (proměnných) však mohou obsahovat i funkce

Více

OOPR_05. Případové studie

OOPR_05. Případové studie OOPR_05 Případové studie 1 Přehled probírané látky příklad skládání objektů - čára příklad skládání objektů kompozice a agregace přetížené konstruktory pole jako datový atribut 2 Grafický objekt - čára

Více

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

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

Více

Mělká a hluboká kopie

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

Více

Programování II. Návrh programu I 2018/19

Programování II. Návrh programu I 2018/19 Programování II Návrh programu I 2018/19 Osnova přednášky Co víme? Objektový návrh programu. Příklad. Co víme? Třída Třída je popisem objektů se společnými vlastnostmi. class private:

Více

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

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

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

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

Více

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; Vícerozměrné pole type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik; M[2,3] := 3145; - počet indexů není omezen (v praxi obvykle nejvýše tři) - více indexů pomalejší přístup k prvku (počítá

Více

Dědění, polymorfismus

Dědění, polymorfismus Programování v jazyce C/C++ Ladislav Vagner úprava Pavel Strnad Dědění. Polymorfismus. Dnešní přednáška Statická a dynamická vazba. Vnitřní reprezentace. VMT tabulka virtuálních metod. Časté chyby. Minulá

Více

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

Algoritmizace a programování. Terminálový vstup a výstup Algoritmizace a programování Terminálový vstup a výstup Verze pro akademický rok 2012/2013 1 Výpis hodnot Terminálový vstup a výstup budeme používat jako základní způsob interakce programu s uživatelem

Více

Objektové programování

Objektové programování Objektové programování - přináší nové možnosti a styl programování - vytváří nový datový typ, který umí vše co standardní datové typy + to co ho naučíme - překladač se k tomuto typu chová stejně jako k

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

PB161 Programování v jazyce C++ Přednáška 7

PB161 Programování v jazyce C++ Přednáška 7 PB161 Programování v jazyce C++ Přednáška 7 Statické položky tříd Základy OOP Nikola Beneš 6. listopadu 2018 PB161 přednáška 7: static, základy OOP 6. listopadu 2018 1 / 21 Klíčové slovo static Znáte z

Více

"Václav Klaus". public class Clovek { protected String jmeno; protected int roknarozeni; public Clovek(String j, int rn) {

Václav Klaus. public class Clovek { protected String jmeno; protected int roknarozeni; public Clovek(String j, int rn) { 4. Třída versus objekt Co je třída a objekt? Třída (také poněkud nepřesně zvaná objektový typ) představuje skupinu objektů, které nesou stejné vlastnosti "stejné" je myšleno kvalitativně, nikoli kvantitativně,

Více

Tří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é 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íce

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

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

Více

Algoritmizace a programování

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

Více

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky

Definice třídy. úplná definice. public veřejná třída abstract nesmí být vytvářeny instance final nelze vytvářet potomky JAVA Třídy Definice třídy úplná definice [public] [abstract] [final] class Jmeno [extends Predek] [impelements SeznamInterfacu] {... // telo tridy public veřejná třída abstract nesmí být vytvářeny instance

Více

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

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

Více

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru

Více

Objekty strana 11. Abstrakce je základní objektovou vlastností. Skutečnost, kterou chceme do programu promítnout,

Objekty strana 11. Abstrakce je základní objektovou vlastností. Skutečnost, kterou chceme do programu promítnout, Objekty strana 11 2. Objekty Java je objektově orientovaný programovací jazyk přenositelný na různé platformy. Pracuje tedy s objekty. Co to vlastně jsou objekty? Jedná se o abstrakci z reality, každý

Více

Abstraktní datové typy: zásobník

Abstraktní datové typy: zásobník Abstraktní datové typy: zásobník doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Abstraktní datové typy omezené rozhraní

Více

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

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

Více

Chování konstruktorů a destruktorů při dědění

Chování konstruktorů a destruktorů při dědění Dědičnost V objektově orientovaném programování je dědičnost způsob, jak vytvořit novou třídu použitím již existujících definic jiných tříd. Takto vytvořené třídy přebírají vlastnosti a metody svého předka

Více

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

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

Více

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo

Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo Viditelnost (práva přístupu) Tomáš Pitner, upravil Marek Šabo Viditelnost Přístup ke třídám i jejim prvkům lze (podobně jako např. v C++) regulovat. Přístupem se rozumí jakékoli použití dané třídy, prvku

Více

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

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

Více

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí

Seznamy a iterátory. Kolekce obecně. Rozhraní kolekce. Procházení kolekcí Kolekce obecně Seznamy a iterátory doc. Ing. Miroslav Beneš, Ph.D. katedra informatiky FEI VŠB-TUO A-1007 / 597 324 213 http://www.cs.vsb.cz/benes Miroslav.Benes@vsb.cz Kolekce ::= homogenní sada prvků

Více