3. Třídy. Základní pojmy objektového programování. Třídy
|
|
- Barbora Vaňková
- před 10 lety
- Počet zobrazení:
Transkript
1 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 a činností, které od něj můžeme žádat. Každý objekt má určité rozhraní, prostřednictvím kterého komunikuje s jinými objekty. Pro začátek si můžeme představit, že když tvoříme program pomocí objektů, skládáme ho obdobně jako např. stavbu z Lega. Je pro nás důležité, aby bylo možno je spojit a celek byl funkční, ale jak jednotlivé objekty dojdou uvnitř k výsledkům nás nezajímá. Když vytváříme program v objektovém jazyce, nepopisujeme jednotlivé objekty, ale třídy objektů. Třída (class) je obecný popis vlastností a činností objektů. Například budeme chtít pracovat se studenty, vytvoříme třídu Student, která bude obecně popisovat všechny studenty, jejich vlastnosti (např. jméno, příjmení, datum narození, adresu, absolvované kurzy, známky atd.) a činnosti (vytvoření nového studenta, zapsání předmětu, změna adresy atd.). Pokud potom vytvoříme konkrétního studenta Jana Nováka vytvoříme instanci třídy. Těchto instancí může k jedné třídě existovat libovolné množství. Java nám poskytuje řadu tříd, uložených v standardních knihovnách, které nám ulehčí práci (např. třídy pro práci se soubory, textovými řetězci, třídy poskytující matematické funkce, třídy pro tvorbu grafického rozhraní atd.). Třída popisuje vlastnosti jednotlivých instancí prostřednictvím proměnných (ekvivalentní jsou označení datové členy nebo datové atributy). Naše třída Student bude mít např. proměnnou jméno, tato proměnná bude v každé instanci nabývat různé hodnoty (např. Jan, Pavel, Petra, Tereza, Pavel,...). Při definici proměnné musíme určit její datový typ, tj. jestli v proměnné bude uloženo číslo, řetězec textu, instance jiné třídy atd. Takováto proměnná se označuje jako proměnná instance. Můžeme si také nadefinovat proměnnou počet, která bude součástí třídy Student a bude sloužit pro evidenci počtu studentů. Takováto proměnná není součástí jednotlivých instancí, existuje pouze jednou a je přístupná všem instancím třídy, označujeme ji jako proměnnou třídy. Dále třída obsahuje metody popisující chování (činnosti) jednotlivých instancí (metody instance) nebo společné všem instancím (metody třídy). Zapouzdření je jedna ze základních vlastností objektů. Jde vlastně o skrytí detailů implementace při zachování funkčnosti dostupné jiným objektům. Část objektu, která je dostupná ostatním objektům, se nazývá rozhraní objektu. Dědičnost je dalším ze základních rysů objektového programování. Umožňuje nám lépe využít již vytvořené třídy. Pokud již existuje třída, která částečně splňuje naše požadavky, pouze potřebujeme přidat nějakou vlastnost nebo činnost, využijeme v rámci objektového programování právě dědičnost. Již existující třídy lze rozšiřovat a doplňovat tak, že novou třídu definujeme jako potomka (odvozenou 20
2 třídu, podtřídu, dceřinou třídu) stávající třídy (nadtřídy, rodičovské třídy, bázové třídy). Potomek zdědí všechny proměnné a metody nadřízené třídy. Např. máme třídu Tvar, která obecně popisuje společné vlastnosti a činnosti všech dvourozměrných tvarů. Můžeme vytvořit několik dalších tříd, které budou tyto vlastnosti přebírat a rozšiřovat např. Kruh, Čtverec a Trojúhelník. Grafické znázornění pomocí zjednodušeného zápisu z UML vidíme na obrázku č. 1. Tvar Kruh Čtverec Trojúhelník obrázek 1 Jednoduché znázornění dědičnosti pomocí UML Do nové třídy můžeme přidat další proměnné a metody. Třída Tvar bude obsahovat činnost nakresli. Všechny třídy, jejichž předkem je třída Tvar, budou tedy obsahovat metodu nakresli. V našem případě se ale obecná metoda nakresli pro jednotlivé podtřídy nehodí, potřebujeme již kreslit konkrétní tvary. Tato situace však neznamená, že dědičnost nelze použít. Využijeme další z objektových vlastností a to je polymorfismus tj. vytvoříme novou metodu stejného názvu ale jiného obsahu a tou původní metodu nakresli překryjeme (v angličtině se používá termín overriding). V jedné třídě může být definováno několik metod stejného jména, které se liší pořadím a počtem parametrů. Tomuto říkáme přetěžování (overloading) metod. Například pro kreslení kruhu můžeme chtít vytvořit metodu, která nakreslí kruh barvou, jaká je právě nastavena v systému, a jindy budeme chtít metodu, která nakreslí kruh námi zadanou barvou. Nemusíme hledat jiný název pro kreslení se zadanou barvou, i tato metoda se může jmenovat nakresli a bude mít navíc parametr pro určení barvy. Obecně lze vytvořit i třídu, která má více přímých předků, tento jev se nazývá vícenásobná dědičnost. Java však umožňuje pouze jednonásobnou dědičnost tj. třída v Javě může mít jen jednoho předka ( to ale neznamená, že tento předek nesmí mít svého předka atd.). V jazyce Java jsou všechny třídy potomkem třídy Object, jedině tato třída nemá v Javě předka. 21
3 Deklarace třídy v Javě Deklaraci třídy v Javě lze schématicky popsat následovně: [ package JménoBalíku; ] [ import JménoTřídy, ; ] public [final abstract] class jmeno [extends JménoRodičovskéTřídy] [implements JménoRozhraní ] { proměnné třídy; proměnné instancí; vnořené třídy; konstruktory; metody; případné neveřejné třídy; Klauzule package slouží pro zařazení třídy do určitého balíku (package). Pokud se tato klauzule neuvede, bude třída zařazena do tzv. nepojmenovaného balíku. Popis práce s balíky je nad rámec rozsahu těchto skript. Nepovinná klauzule import slouží pouze pro zjednodušení psaní odkazů na jednotlivé třídy. Např. pokud chci ve své třídě vytvořit instanci třídy java.util.random, mám dvě možnosti, jak se na tuto třídu odkázat: použít celé jméno java.util.random (přehlednější, jednoznačné, náročnější na psaní) zadat na začátku klauzuli import java.util.random a poté používat jméno Random V klauzuli import lze zadat více tříd a lze též použít i hvězdičky. Např. zápis import java.util.*; umožňuje zkráceně psát jména všech tříd z balíku java.util. Používání hvězdiček však může vytvářet velmi nepříjemné a těžko odhalitelné chyby v případě, že existují duplicity ve jménech objektů v různých balících. Překladač Javy automaticky při překladu doplní import třídy java.lang, tj. nemusíme pro používání prvků tohoto balíku uvádět příslušný import. Modifikátory tříd Před klíčovým slovem class lze použít klíčová slova public, final a abstract, jejichž význam a způsob použití si nyní vysvětlíme. Je-li třída definována jako public, může se na ni odkazovat jakákoli jiná třída. Pokud klíčové slovo public nepoužijeme, může být třída zpřístupňována pouze ostatními třídami z balíku. V jednom zdrojovém souboru může být nejvýše jedna třída, která je definovaná jako public. 22
4 Klíčové slovo final označuje třídu, od níž již nelze definovat potomky. Klíčovým slovem abstract označujeme třídu, od které nelze vytvářet žádné instance a která se používá jako předek pro další třídy (lze zde nadefinovat, co vše mají tyto třídy společné). Jedině abstraktní třída může obsahovat abstraktní metody. Je možná pouze kombinace public abstract. Definice a používání abstraktních tříd není součástí těchto skript. Jméno třídy by mělo začínat velkým písmenem. Pokud chceme novou třídu vytvořit jako potomka některé jiné třídy, uvedeme za jménem třídy klíčové slovo extends následované jménem třídy předka (třída musí mít pouze jednoho předka, pokud není uveden, automaticky se doplní jako předek třída Object 11 ). Pokud chceme aby naše třída implementovala rozhraní, použijeme klíčové slovo implements následované jménem jednoho či více rozhraní. Je možno uvést obojí tj. dědění i implementaci rozhraní. V definici třídy není ani jedna část povinná, viz náš úvodní příklad, který obsahoval pouze metodu main. Jestli bude námi vytvářená třída obsahovat proměnné, vnořené třídy nebo konstruktory a kolik v ní bude metod, závisí na logice toho, co tvoříme. Proměnné tříd a instancí Deklarace proměnných Proměnné mohou být buď primitivního typu nebo to jsou instance tříd. Vše co jsme si řekli o deklaraci primitivních typů, které používáme jako pomocné proměnné v metodách, platí i pro proměnné objektů, pouze s tím rozdílem, že před identifikátorem typu mohou být uvedeny některé modifikátory (public, protected, private, static, final). Modifikátory public, protected a private určují rozsah dostupnosti proměnné a může být uveden maximálně jeden z nich. Jestliže označíme proměnnou modifikátorem private, bude přístupná pouze ve třídě obsahující její definici. Proměnná deklarovaná jako private není dostupná ani potomkům této třídy. Proměnná označená jako protected je dostupná pro všechny třídy se stejného balíku a ve všech třídách vytvořených jako potomci této třídy, a to i v případě, že třída potomka je z jiného balíku. Proměnná označená jako public je dostupná z jakékoli třídy. Pokud není žádný z těchto modifikátorů uveden, je u proměnné definován implicitní (přátelský) přístup - proměnná je přístupná v jakékoli třídě, která je součástí stejného balíku a nepřístupná mimo něj. Je tedy rozdíl mezi deklarací s modifikátorem protected a bez modifikátoru. Modifikátor static určuje, že se jedná o proměnnou třídy. To znamená, že v dané třídě existuje právě jeden výskyt této proměnné a všechny instance této třídy jej sdílejí. Změna hodnoty této proměnné tedy znamená změnu pro všechny instance. Pokud tento modifikátor není uveden, jedná se o proměnnou instance. Každá vytvořená instance této třídy má svou kopii proměnné instance a její změna v jedné instanci se nedotkne ostatních instancí. 23
5 Modifikátor final označuje konstantu. Takto označené proměnné může být přiřazena hodnota pouze jednou. Jakékoli další přiřazení nové hodnoty je překladačem označeno jako chyba. Příklady: protected int pocet = 10; private float objem; public static final int MAXIMALNI_POCET = 100; protected String jmeno; Práce s proměnnými Pokud potřebujeme s proměnnou pracovat v rámci metod třídy ve které byla definována, odkazujeme se na ni pouze jejím jménem. Jestliže potřebujeme s proměnnou pracovat v jiné třídě, odkazujeme se na ni v závislosti na typu proměnné. Když je to proměnná třídy, tak jménem třídy, tečkou a jménem proměnné. Když je to proměnná instance, tak jménem instance, tečkou a jménem proměnné. Je však třeba si uvědomit, že pokud byla proměnná definována jako private, není přímý přístup k této proměnné mimo třídu vůbec možný. Metody Další část deklarace třídy je tvořena deklaracemi metod. Konstruktor je speciální metoda, o které si povíme později. Metoda je část spustitelného kódu. Metodě mohou být při volání předány parametry a metoda může vrátit hodnotu. Deklarace metody vypadá následovně: [ modifikátory ] typ_návratové_hodnoty jméno_metody ( [parametry] ) [ throws jméno_třídy ] Klauzule throws bude vysvětlena později v kapitole o výjimkách. Modifikátory metod Mohou být tyto: public, protected, private, static, abstract, final, native, synchronized. Modifikátory public, protected a private mají stejný význam jako u proměnných a také přístupnost metody bez uvedení jednoho z těchto modifikátorů je stejná jako u proměnných. Modifikátor static určuje, že metoda je metodou třídy tj. voláme ji jménem třídy a před jejím volání nemusí být vytvořena žádná instance této třídy. Pokud tento modifikátor není uveden, je metoda metodou instance. Metodu označenou jako static nelze u potomka třídy předefinovat. Metoda, která je definována s modifikátorem final, je metoda, kterou již nelze předefinovat. To tedy znamená, že žádný z potomků této třídy nesmí obsahovat metodu stejného jména se stejným počtem a pořadím parametrů. Modifikátor final však neznamená, že metoda nemůže být přetížena. Abstraktní metoda (s modifikátorem abstract) musí za deklarací končit středníkem, nesmí tudíž obsahovat žádnou implementaci, pouze deklaraci návratového typu a případně parametrů. Abstraktní 11 Úplné jméno je java.lang.object 24
6 metody mohou být deklarovány pouze v abstraktních třídách. Implementace této metody musí být uvedena u potomka abstraktní třídy, ve které je metoda uvedena. Není přípustná kombinace modifikátoru abstract s modifikátorem private ani static. Modifikátor native označuje metodu zapsanou v jiném programovacím jazyce. Modifikátor synchronized se používá k synchronizaci metod v rámci více vláken jednoho procesu. Typ návratové hodnoty V deklaraci metody musí být vždy uveden typ návratové hodnoty. Pokud metoda nevrací hodnotu, je typ označen jako void. Metoda, která má definován jiný typ návratové hodnoty než void, musí být ukončena příkazem return vracejícím hodnotu odpovídajícího typu. Vstupní parametry metody Za jménem metody uvádíme v kulatých závorkách seznam formálních parametrů. Počet parametrů není omezen, ale budete-li někdy psát metodu s více než pěti parametry, zamyslete se jestli do ní nesdružujete zbytečně mnoho činností. Při definování parametrů uvádíme jejich typ a uvnitř metody s nimi pracujeme jako s proměnnými. Jako oddělovač jednotlivých parametrů používáme čárku. U každého parametru musí být jeho typ uveden samostatně, zápis static int max (int a, b) není možný, je třeba uvést static int max (int a, int b). Skutečné hodnoty parametrů dosadíme při volání metody. Pokud metoda nemá žádné vstupní parametry, je třeba při deklaraci i při volání takovéto metody uvést za jejím jménem prázdné závorky. Příklad 1: metoda, která vrací hodnotu většího ze vstupních parametrů: static int max (int a, int b) { if (a > b) return a else return (b); System.out.println.( Konec metody ); //toto se neprovede V tomto příkladě jsme deklarovali metodu max (jméno metody by mělo začínat malým písmenem), která je metodou třídy, vrací hodnotu typu int a má dva parametry typu int. Vrácení většího z čísel je realizováno pomocí příkazu return. Příkazem return provádění metody končí. Nemá tedy smysl uvádět poslední řádek v našem příkladě. Také si všimněte, že hodnota výstupu z metody u příkazu return byla přiřazena pokaždé jinak, obě varianty (se závorkami i bez) jsou správné. Pokud je metoda max deklarována ve třídě Pokus a spouštíme ji v rámci jiné metody stejné třídy, může vypadat její volání následovně: System.out.println("Vetsi je :"+max(cislo1,cislo2)); nebo int vetsi = max(cislo1,cislo2); 25
7 Pokud je tato metoda volána z jiné třídy, vypadá její volání takto: System.out.println("Vetsi je :"+Pokus.max(cislo1,cislo2)); nebo int vetsi = Pokus.max(cislo1,cislo2); Metoda max je metodou třídy (modifikátor static), proto ji lze volat buď jen jménem nebo jménem třídy a jménem metody bez nutnosti vytvoření instance. Příklad 2: metoda pro jednoduchý tisk. static void tisk(string s){ System.out.println(s); Zde jsme definovali metodu tisk, jako metodu s návratovým typem void a jedním parametrem typu String. V této metodě nemusí být uveden příkaz return a metoda končí provedením všech příkazů v ní uvedených. Pokud uvedeme v takovéto metodě příkaz return, musí být prázdný tj. nesmí za ním být uveden žádný výraz. Volání této metody je v podstatě stejné jako volání v minulém příkladě, pouze s tím rozdílem, že se uvádí jako samostatný příkaz. Např.: tisk("ahoj"); Pokus.tisk ("Nejaky text"); Předávání hodnot parametrů Při předávání parametrů metodě je třeba si uvědomit, že primitivní typy jsou předávány jinak než referenční. Primitivní typy jsou předávány hodnotou, tj. po dobu činnosti procedury se vytvoří kopie původní hodnoty a s tou metoda pracuje. Po skončení činnosti metody je tato kopie zrušena, ale její hodnota není převedena do původní proměnné. Důsledky si ukážeme na následujícím příkladě. static int zvetsenioctyri (int i){ i += 4; return i; část metody main: int a, b =1; b = zvetsenioctyri(a); System.out.println("a = "+ a+" b = "+b); Výpis bude vypadat takto: a = 1 b = 5 Hodnota proměnné a je použita jako vstupní hodnota pro spuštění metody zvetsenioctyri, ale dál už se s ní nepracuje. Při spuštění metody se vytvoří lokální proměnná (zde pojmenovaná písmenem i) a její změna se do proměnné a nepromítne. Parametry referenčních typů jsou předávány odkazem, tzn. že se pracuje i v metodě se stejnými daty. Důsledek si nejlépe uvědomíme na příkladě: 26
8 public void pridej(stringbuffer s){ s.append ("konec");//pripoji do retezce text "konec" část metody main: retezec = new StringBuffer ("Zacatek "); pridej(retezec); System.out.println(retezec); Výpis bude vypadat takto 12 : Zacatek konec Přetěžování metod O přetížení metod se mluví v případě, že metody mají stejné jméno a liší se pouze typem, počtem nebo pořadím parametrů. Pozor metodu nelze přetížit pouze změnou typu návratové hodnoty. Obvykle se přetěžují metody v rámci jedné třídy, lze však přetížit i metody zděděné od předka. V předchozím příkladě jsme definovali metodu pridej s jedním parametrem typu String, která na konec řetězce přidá text "konec". Jestliže chceme vytvořit metodu, která na konec řetězce přidá text, který jí předáme jako parametr, nemusíme vymýšlet jiné jméno metody, stačí přetížit metodu pridej. K původní metodě pridej přibude tato: public void pridej(stringbuffer s1, String s2){ s1.append (s2);//pripoji do retezce text uloženy v s2 Která metoda bude použita, závisí na použití parametrů při volání. Část metody main: retezec = new StringBuffer ("Zacatek "); pridej(retezec); //jeden parametr, vyvola se puvodni pridej System.out.println(retezec); pridej (retezec, " dalsi text"); //dva parametry, vola se nova varianta pridej System.out.println(retezec); Výpis bude vypadat takto: Zacatek konec Zacatek konec dalsi text Konstruktory Konstruktory jsou metody volané při vytváření instancí. Platí pro ně několik specifických pravidel. Konstruktor se vždy jmenuje stejně jako třída a je to jediná metoda, která nemá, a ani nesmí mít návratovou hodnotu. To znamená, že neuvádíme návratový typ (ani void) a v kódu konstruktoru se nesmí objevit return s výrazem. Z významu konstruktoru jako metody pro vytvoření instance vyplývá, že je nesmysl použít modifikátor static. Modifikátory pro určení přístupnosti metody se používají. 12 V ukázce je použita třída StringBuffer a ne String, neboť třída String je read-only a nelze změnit hodnotu instance této třídy. 27
9 Konstruktor lze také přetížit, tj. vytvořit jich několik s různými parametry. Pokud není ve třídě žádný konstruktor vytvořen, překladač vytvoří implicitní konstruktor bez parametrů. Konstruktor nelze použít jinak, než při vytvoření instance (tj. pouze za příkazem new). Vytvoření instance Při vytváření instance je nutné definovat typ (tj. od které třídy vytvářím instanci) a jméno instance (pro jména instancí platí stejná pravidla jako pro jména proměnných). Například jsme si nadefinovali třídu Kruh a chceme vytvořit instanci. Nejdříve nadefinujeme proměnnou, která bude na instanci odkazovat: Kruh kr; Pak je nutné pomocí new vytvořit v paměti vlastní instanci a odkaz na ni (referenci) přiřadit do proměnné: kr = new Kruh(); Při vytváření instance se automaticky spouští konstruktor za slovo new se píše konstruktor a ne jméno třídy (konstruktor se ale vždy jmenuje stejně jako třída). Při vytváření instance samozřejmě nemusíme použít konstruktor bez parametrů, ale jakýkoliv z konstruktorů definovaných ve třídě. Deklaraci a vytvoření instance lze zapsat i jedním příkazem. Kruh kr = new Kruh(); Někdy Vám může připadat, že se vytváří instance objektu bez příkazu new. Např. výsledkem řádku String retezec1 = String.valueOf(3.7629) je nová instance retezec1 třídy String. V tomto případě proběhla operace new v rámci metody String.valueOf a odkaz na novou instanci se vrací jako návratová hodnota. Zrušení instance Ukázali jsme si, jak vytvořit instanci, logicky by mělo být možné také instanci zrušit. V Javě se o rušení nepotřebných instancí se nemusíme starat o uvolňování nepotřebných instancí se stará tzv. garbage collector (čistič paměti). Nepotřebná instance je instance, na kterou není odkaz z žádné referenční proměnné. Toho lze dosáhnout několika způsoby, nejčastější jsou následující: 28
10 skončí rozsah platnosti proměnné, do proměnné vložíme odkaz na jiné místo v paměti, původní instance je tedy bez reference a tato část paměti bude uvolněna: Kruh kr = new Kruh( );.. kr = new Kruh( ); do proměnné vložíme hodnotu null, která znamená, že proměnná neukazuje na žádnou instanci. Původní instance je tedy bez reference a paměť bude uvolněna. Kruh kr = new Kruh( );.. kr = null; V okamžiku, kdy zaniknou všechny odkazy na instanci, tato instance ještě nezaniká zaniká až při nejbližším průchodu garbage collectoru, který se spouští na pozadí v pravidelných intervalech. Pokud je potřeba při zániku instance provést nějakou speciální akci (tj. nejenom uvolnit paměť), je možné nadefinovat speciální metodu finalize(). Rozhraní Java povoluje pouze jednoduchou dědičnost, tj. každá třída má právě jednoho přímého předka a všechny třídy mají společného předka třídu Object. Jako kompenzaci nevýhod tohoto řešení Java zavádí použití rozhraní. Rozhraní definuje metody, které v něm nejsou implementovány, tj. deklarací rozhraní je jen hlavička rozhraní a hlavičky metod. Třída, která toto rozhraní implementuje, musí všechny metody implementovat. Může se tedy zdát, že rozhraní je totéž jako abstraktní třída, která má všechny metody abstraktní. Existuje však několik podstatných rozdílů: rozhraní nemůže deklarovat proměnné kromě konstant třída může implementovat více rozhraní třída implementující rozhraní zároveň dědí - buď od třídy Object nebo od třídy uvedené v deklaraci třídy jako předek Rozhraní implementujeme u tříd, kterým chceme vnutit zcela konkrétní činnost nezávisle na dědičné hierarchii. Stejné metody (metody se stejnou hlavičkou a činností) mohou mít tedy třídy, které jinak nemají společné předky (kromě třídy Object). V balíku java.lang je nadefinováno několik rozhraní. Například rozhraní Comparable obsahující jedinou metodu int compareto (Object o). Pokud nějaká třída implementuje toto rozhraní, říká o sobě, že dvě její instance lze porovnat a určit, která je větší nebo zda se rovnají. Toho se využívá např. v implementaci seznamů (viz dále) v metodě pro třídění (standardní metodou lze třídit pouze objekty, 29
11 které mají implementované toto rozhraní). Rozhraní Comparable mají implementovány například třídy String, Integer, Double, Character, File nebo Date. Jméno rozhraní se může objevit jako parametr v metodě (např. v metodě Collections.sort pro třídění seznamů je jako parametr uvedeno rozhraní Comparator). Při použití těchto metod se musí jako parametr uvést instance třídy, která příslušné rozhraní implementuje. Některé metody vracejí jako návratovou hodnotu instanci rozhraní. V tomto případě, může proměnná typu rozhraní využívat pouze metody definované v tomto rozhraní. 30
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
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ář
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
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í
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
Ú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
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
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,
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ů
1. ÚVOD... 3 2. ZÁKLADY JAZYKA...
Obsah 1. ÚVOD... 3 2. ZÁKLADY JAZYKA... 4 PROMĚNNÉ... 4 PRIMITIVNÍ DATOVÉ TYPY... 5 Deklarace proměnné promitivního typu...5 Konstanty... 6 Přetypování... 7 Přetečení... 7 VÝRAZY A OPERÁTORY... 8 Aritmetické
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
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;
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í
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
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
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ů
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ě
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é
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á
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,
Ú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í
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ý
9. Polymorfismus a rozhraní
Polymorfismus a rozhraní strana 73 9. Polymorfismus a rozhraní Tato kapitola navazuje na základní informace o objektech v kapitole 2, zde se budeme zabývat přetěžováním metod, polymorfismem a rozhraními.
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
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ů
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 =
Bridge. Známý jako. Účel. Použitelnost. Handle/Body
Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době
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
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ů
Č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
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
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
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ý
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
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................
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
Ú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
Třídy. Instance. Pokud tento program spustíme, vypíše následující. car1 má barvu Red. car2 má barvu Red. car1 má barvu Blue.
23. Třídy, generické třídy, instance, skládání, statické metody a proměnné. Zapouzdření, konstruktory, konzistence objektu, zpřístupnění vnitřní implementace, modifikátory public a private. Polymorfismus,
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í
Java - řazení objektů
Java - řazení objektů Kapitola seznamuje se základními principy řazení objektů Klíčové pojmy: Přirozené řazení, absolutní řazení, ideální porovnávatelná třída ŘAZENÍ OBJEKTŮ U objektů není příliš jasné,
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
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í
Polymorfismus. Časová náročnost lekce: 3 hodiny Datum ukončení a splnění lekce: 30.března
Polymorfismus Cíle lekce Cílem lekce je vysvětlit význam pojmu polymorfismus jako základní vlastnosti objektově orientovaného programování. Lekce objasňuje vztah časné a pozdní vazby a jejich využití.
Dynamicky vázané metody. Pozdní vazba, virtuální metody
Dynamicky vázané metody Pozdní vazba, virtuální metody Motivace... class TBod protected: float x,y; public: int vrat_pocet_bodu() return 1; ; od třídy TBod odvodíme: class TUsecka: public TBod protected:
Seminář Java IV p.1/38
Seminář Java IV Seminář Java IV p.1/38 Rekapitulace Deklarace tříd Proměnné, metody, konstruktory, modifikátory přístupu Datové typy primitivní, objektové, pole Dědičnost Řídící konstrukce Podmínky, cykly
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
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
Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.
13 Rozhraní, výjimky 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 rozhraním a výjimkám. Doba nutná k nastudování 2 2,5 hodiny
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
3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda
1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání
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,
Funkční objekty v C++.
Funkční objekty v C++. Funkční objekt je instance třídy, která má jako svou veřejnou metodu operátor (), tedy operátor pro volání funkce. V dnešním článku si ukážeme jak zobecnit funkci, jak používat funkční
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
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
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
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
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á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ě,
Objektově orientované programování v jazyce Python
Objektově orientované programování v jazyce Python Základní pojmy objektově orientovaného programování Objekt vychází z reálného světa. Má dva charakteristické rysy. Všechny objekty mají stav Všechny objekty
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
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
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,
Mnohotvarost (polymorfizmus)
Mnohotvarost (polymorfizmus) TYPY MNOHOTVAROSTI... 2 PŘETĚŽOVÁNÍ METOD, PŘETĚŽOVÁNÍ OPERACÍ... 3 PŘETÍŽENÍ OPERÁTORŮ... 4 ČASTO PŘETĚŽOVANÉ OPERÁTORY... 4 PŘEPISOVÁNÍ... 7 VIRTUÁLNÍ METODY... 10 SEZNAM
Třídy, polymorfismus. A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické
Třídy, polymorfismus A0B36PR2-Programování 2 Fakulta elektrotechnická České vysoké učení technické Polymorfizmus ~ vícetvarost Polymorfizmus základní vlastnost objektového přístupu základní princip polymorfismu:
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
7. Statické prvky třídy
Statické prvky třídy strana 61 7. Statické prvky třídy V úvodních kapitolách jsme popsali deklaraci a používání datových atributů a metod instance. Jsou to nejčastě ji používané součásti třídy, nicméně
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ů
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
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,
přetížení operátorů (o)
přetížení operátorů (o) - pro vlastní typy je možné přetížit i operátory (tj. definovat vlastní) - pro definici slouží klíčové slovo operator následované typem/znakem operátoru - deklarace pomocí funkčního
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á
Využití OOP v praxi -- Knihovna PHP -- Interval.cz
Page 1 of 6 Knihovna PHP Využití OOP v praxi Po dlouhé teorii přichází na řadu praxe. V následujícím textu si vysvětlíme možnosti přístupu k databázi pomocí různých vzorů objektově orientovaného programování
C++ přetěžování funkcí a operátorů. Jan Hnilica Počítačové modelování 19
C++ přetěžování funkcí a operátorů 1 Přetěžování funkcí jazyk C++ umožňuje napsat více funkcí se stejným názvem, těmto funkcím říkáme přetížené přetížené funkce se musí odlišovat typem nebo počtem parametrů,
Delphi - objektově orientované
Kapitola 6 Delphi - objektově orientované programování Objektově orientované programování (zkracováno na OOP, z anglického Object oriented programming) je metodika vývoje softwaru, založená na těchto myšlenkách,
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í
Programovací jazyk Pascal
Programovací jazyk Pascal Syntaktická pravidla (syntaxe jazyka) přesná pravidla pro zápis příkazů Sémantická pravidla (sémantika jazyka) pravidla, která každému příkazu přiřadí přesný význam Všechny konstrukce
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é
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í
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í
Windows je registrovaná obchodní známka firmy Microsoft v USA a v ostatních zemích.
Sun, Sun Microsystems, Java a všechny obchodní známky a loga obsahující Sun nebo Java jsou ochrannými známkami nebo registrovanými ochrannými známkami firmy Sun Microsystems, Inc. v USA a v ostatních zemích.
Programování II. Polymorfismus
Programování II Polymorfismus Osnova přednášky Vztah přetížení, překrytí a protected přístupu. Co je polymorfismus? Příklad. Přetížení, překrytí, protected Přetížení x překrytí Přetížením řešíme doplnění
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
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
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ů
Regulární výrazy. Vzory
Regulární výrazy Regulární výrazy jsou určeny pro práci s textovými řetězci, jsou součástí J2SDK až od verze 1.4, v předchozích verzích je potřeba použít některou z externích knihoven, např. knihovnu ORO
Objektově orientované programování v jazyce Python
Objektově orientované programování v jazyce Python Co to je objektově orientované programování Python není přímo objektově orientovaný jazyk, ale podporuje nejdůležitější části objektově orientovaného
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
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
Programování II. Abstraktní třída Vícenásobná dědičnost 2018/19
Programování II Abstraktní třída Vícenásobná dědičnost 2018/19 Osnova přednášky Polymorfismus - důsledky. Abstraktní třída. Vícenásobná dědičnost. Polymorfismus - důsledky Polymorfismus Polymorfismus je
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ší
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
2 Datové typy v jazyce C
1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,
24. listopadu 2013, Brno Připravil: David Procházka
24. listopadu 2013, Brno Připravil: David Procházka Dědičnost Základy objektového návrhu Časná a pozdní vazba Strana 2 / 22 Obsah přednášky 1 Časná a pozdní vazba 2 Rozhraní pro dědičnost 3 Konstruktory
DUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
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
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
PB161 Programování v jazyce C++ Přednáška 9
PB161 Programování v jazyce C++ Přednáška 9 Právo friend Přetěžování operátorů Nikola Beneš 16. listopadu 2015 PB161 přednáška 9: friend, přetěžování operátorů 16. listopadu 2015 1 / 30 Reklama PB173 Tematicky
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
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ů
Další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