Triedy v C++ 1. Úvod do tried

Size: px
Start display at page:

Download "Triedy v C++ 1. Úvod do tried"

Transcription

1 1. Úvod do tried Používanie nového dátového typu ktorý budeme oht class trieda nás dovedie k využívaniu objektových vlastností jazyka C++. Tento nový typ programov OOP objektovo orientované programovanie výrazne zjednodušuje nielen programovanie samotné, ale i jeho najdôležitejšiu časť návrh. My sme sa už s používaním tried stretli. Napríklad string je tiež trieda a aby sme ju mohli využívať, potrebujem natiahnuť do programu príslušnú knižnicu pomocou kľúčového slova include. Najväčšou zmenou pri tvorbe tohto nového dátového typu je to,že trieda obsahuje nielen funkcie ale i dáta. Samotná trieda je ale len abstraktný predpis, ktorý určuje, ako sa bude správať premenná daného typu. Túto premennú nazývame objekt. Tak ako premenná typu int vznikne až počas jej deklarácie : int ncislo; tak i objekt vznikne až pri jeho deklarácii. To znamená, že ak vytvoríme triedu a pomenujeme ju napr. CSkola (je zvykom dať pred meno písmeno C a hneď vieme, že sa jedná o triedu.) tak samotný objekt (reálna premenná ktorá zaberá miesto v pamäti) vznikne pri jeho deklarácii CSkola skola; Je zvykom rozdeliť si programovanie triedy na deklaráciu triedy (vytvoríme názov objektu, deklarujeme jeho funkcie a premenné.) a jej definíciu (Pri definícii funkcií vytvárame jej telo píšeme sadu príkazov v bloku. ) do dvoch súborov. Názvy súborov je možné zvoliť ľubovoľne a je preto výhodné zvoliť si taký istý názov súborov aké je meno triedy. Deklarácie umiestňujeme do súboru s príponou.h a jej definíciu so súboru s príponou.cpp. Konečne vidíme, načo v priečinku projektu podpriečinky header a source.: Začnime deklaráciou v súbore CSkola.h: class CSkola //Funkcie CSkola(void); //konstruktor ~CSkola(void); //destruktor ; //Data Každá trieda musí mať dve základné funkcie: konštruktor a deštruktor. Funkcia konštruktor sa vykoná pri vzniku objektu a funkcia deštruktor pri jeho zániku. Obe funkcie musia mať rovnaký názov ako meno triedy. Funkcia deštruktor má pred menom vlnovku ~(tilda). Naproti 1

2 tomu pri definícii triedy (v súbore CSkola.cpp musíme naprogramovať, čo má funkcia robiť: Slovíčko public si vysvetlíme neskôr. #include "CSkola.h" #include <iostream> #include <string> using namespace std; CSkola::CSkola(void) //konstruktor triedy univerzal cout << "konstruktor triedy zakladny " << endl; CSkola::~CSkola(void) //destruktor triedy univerzal cout << "destruktor triedy zakladny " << endl; V našom prípade iba vypíšeme, že objekt vzniká (v konštruktore) resp. zaniká (v deštruktore). Všimnime si, že pred menom funkcie ešte musíme pripísať, kde je táto funkcia viditeľná (scope operátor :: ) v našom prípade je funkcia CSkola() viditeľná v triede CSkola. CSkola::CSkola(void) Na začiatku súboru CSkola.cpp musíme k programu pripojiť deklaráciu našej triedy pomocou include musíme natiahnuť knižnicu, v ktorej sme triedu zadeklarovali. Pozor táto knižnica nie je medzi ostatnými knižnicami, ale je v priečinku ktorý sme si zvolili ako priečinok projectu. Takto vytvorenú triedu môžeme použiť v hlavnom programe na vytvorenie objektu: #include "CSkola.h" #include <iostream> #include <string> using namespace std; int main(void) CSkola skola; int cislo = 0; cout << " Zadaj cele cislo na skoncenie "<< endl; cin >> cislo; return 0; Samozrejme musíme i v hlavnom programe zavolať knižnicu: #include "CSkola.h". Stalo sa ale, že knižnice <iostream> a <string> ako i namespace som vlastne zavolal dvakrát. V main.cpp i CSkola.cpp. Toto nie je dobré z hľadiska plytvania času a pamäte. Kde teda máme tieto knižnice includovať? Stačí to len raz a to práve v CSkola.h. Výsledok je takýto: CSkola.h: #include <iostream> #include <string> using namespace std; class CSkola 2

3 //Funkcie CSkola(void); //konstruktor ~CSkola(void); //destruktor ; //Data CSkola.cpp: main.cpp: #include "CSkola.h" CSkola::CSkola(void) //konstruktor triedy univerzal cout << "konstruktor triedy zakladny " << endl; CSkola::~CSkola(void) //destruktor triedy univerzal cout << "destruktor triedy zakladny " << endl; #include "CSkola.h" int main(void) CSkola skola; int cislo = 0; cout << " Zadaj cele cislo na skoncenie "<< endl; cin >> cislo; return 0; A základ programu je hotový. Je to síce prvé použitie triedy, ale táto trieda (CSkola) dokáže iba vzniknúť a zaniknúť. Pridajme k nej nejaké dáta a funkcie. Najprv deklarácia v hlavičkovom súbore (headri): class CSkola //Funkcie CSkola(void); //konstruktor ~CSkola(void); //destruktor void ZadajMeno(void); void VypisMeno(void); ; //Data string smenoskoly; int npocettried; A definícia v zdrojovom súbore: void CSkola::ZadajMeno(void) cout << "Zadaj meno skoly " << endl; cin >> smenoskoly; void CSkola::VypisMeno(void) 3

4 cout << "Meno skoly je: " << smenoskoly << endl; Takto vzniknuté súbory môžeme zavolať v hlavnom programe: #include "CSkola.h" int main(void) CSkola skola; skola.zadajmeno(); skola.vypismeno(); int cislo = 0; cout << " Zadaj cele cislo na skoncenie "<< endl; cin >> cislo; return 0; Všimnite si, že k funkciám i dátam triedy pristupujeme pomocou bodky (zatiaľ): skola.zadajmeno(); Spomínate si na slovo.length();? Aj typ string je trieda a length() je funkcia, ktorá zistí dĺžku slova. A keďže je to funkcia zátvorky sú nevyhnuté aj keď nezadávame žiadme argumenty (resp. zadávame void). Takisto samozrejme pristupujeme i k dátam triedy (funkcie i dáta patriace danej triede nazývame členské dáta a funkcie danej triedy). #include "CSkola.h" int main(void) CSkola skola; skola.zadajmeno(); skola.vypismeno(); cout << "Zadaj nove meno: "<< endl; cin >> skola.smenoskoly; cout << "Nove meno je: " << skola.smenoskoly << endl; int cislo = 0; cout << "Zadaj cele cislo na skoncenie "<< endl; cin >> cislo; return 0; To by bol zhruba úvod do dátového typu trieda. Úlohy: 1. Doplňte triedu CSkola o funkcie na zadávanie počtu tried v škole, o výpis tohto počtu. 2. Doplňte triedu CSkola o funkciu na zadávanie počtu žiakov v jednej triede (toto bude nová členská premenná) a o výpis celkového počtu žiakov v škole. 4

5 2. Používanie viacerých konštruktorov Doteraz sme pri vzniku objektu danej triedy použili jednoduchý konštruktor. Je výhodné pri deklarovaní nového objektu danej triedy hneď aj nastaviť niektoré jeho členské premenné. Na to využijeme konštruktory s predávanými parametrami (argumenty, ktoré vchádzajú do funkcie). Napr. zoberme si zjednodušenú verziu predchádzajúceho projektu s triedou CSkola. Main.cpp: #include "CSkola.h" int main(void) CSkola skola; system("pause"); return 0; CSkola.h: #include <iostream> #include <string> using namespace std; class CSkola //Funkcie CSkola(void); //konstruktor ~CSkola(void); //destruktor ; //Data string smenoskoly; int npocettried; CSkola.cpp: #include "CSkola.h" CSkola::CSkola(void) //konstruktor triedy univerzal CSkola::~CSkola(void) //destruktor triedy univerzal Ak v hlavnom programe deklarujeme nový objekt typu CSkola : Main.cpp: CSkola skola; Členské premenné nemajú zadané žiadne hodnoty. Skúsme si ich vypísať: Je vhodné preto v konštruktore definovať nejaké ich default hodnoty: 5

6 Ale to tiež nie je vhodné riešenie. Chceli by sme, aby objekt skola vznikol s menom, koré napr. sme načítali tesne pre jeho deklaráciou: Main.cpp: int main(void) string sslovo = " "; cout << "Zadaj meno skoly : " << endl; cin >> sslovo; CSkola skola(sslovo); cout << "Meno skoly je: " << skola.smenoskoly <<" jej pocet tried je: " << skola.npocettried << endl; system("pause"); return 0; Na to ale musí existovať v nami vytvorenej knižnici CSkola ďalší konštruktor: CSkola.h: class CSkola //Funkcie CSkola(void); //konstruktor CSkola(string sword); //konstruktor so zadanim mena ~CSkola(void); //destruktor void ZadajMeno(void); void VypisMeno(void); ; //Data string smenoskoly; int npocettried; CSkola.cpp: #include "CSkola.h" CSkola::CSkola(void) //konstruktor triedy univerzal smenoskoly = "Neznama"; //default hodnota npocettried = 5; //default hodnota CSkola::CSkola(string sword) //konstruktor triedy univerzal smenoskoly = sword; // do clenskej premennej triedy ulozime hodnotu parametru funkcie npocettried = 5; //default hodnota CSkola::~CSkola(void) //destruktor triedy univerzal Samozrejme môžeme vytvoriť i ďalší konštruktor, do ktorého vložíme i npocettried: 6

7 CSkola::CSkola(string sword, int npocet) //konstruktor triedy univerzal smenoskoly = sword; // do clenskej premennej triedy smenoskoly ulozime hodnotu parametru funkcie npocettried = npocet; //do clenskej premennej triedy npocettried ulozime hodnotu parametru funkcie Teraz môže objekt skola s ľubovoľným konštruktorom vyberieme si. Prípadne vytvoríme viacero objektov pomocou rôznych konštruktorov: int main(void) CSkola skola1; string sslovo = " "; cout << "Zadaj meno skoly 2 : " << endl; cin >> sslovo; CSkola skola2(sslovo); cout << "Zadaj meno skoly 3 : " << endl; cin >> sslovo; int np = 0; cout << "Zadaj pocet tried skoly 3 : " << endl; cin >> np; CSkola skola3(sslovo, np); cout << "Meno skoly 1 je: " << skola1.smenoskoly <<" jej pocet tried je: " << skola1.npocettried << endl; cout << "Meno skoly 2 je: " << skola2.smenoskoly <<" jej pocet tried je: " << skola2.npocettried << endl; cout << "Meno skoly 3 je: " << skola3.smenoskoly <<" jej pocet tried je: " << skola3.npocettried << endl; system("pause"); return 0; Pozor!!! Deštruktor môže byť iba jeden. Takisto môžeme vytvoriť viacero členských funkcií s rovnakým menom, ale s rôznymi vstupnými parametrami (a teda rôzne pracujúce funkcie). Napríklad určite potrebujeme funkciu na zadávania meno školy a na zadávanie počtu tried. Môžeme to urobiť rôzne : vložíme meno ako parameter funkcie, alebo do funkcie nevložíme nič a celé načítanie i dosadenie do premennej sa udeje vo vnútri funkcie: CSkola.h: void ZadajMeno(void); void ZadajMeno(string smenoin); void ZadajPocetTried(void); void ZadajPocetTried(int npocetin); 7

8 CSkola.cpp: void CSkola::ZadajMeno(string smenoin) smenoskoly = smenoin; //do clenskej premennej triedy smenoskoly ulozime hodnotu parametru funkcie void CSkola::ZadajMeno(void) //smenoskoly zadame vo vnutri funkcie cout << "Zadaj meno skoly " << endl; cin >> smenoskoly; void CSkola::ZadajPocetTried(int npocetin) npocettried = npocetin; //do clenskej premennej triedy npocettried ulozime hodnotu parametru funkcie void CSkola::ZadajPocetTried(void) //npocettried zadame vo vnutri funkcie Main.cpp:... cout << "Zadaj pocet tried skoly " << endl; cin >> npocettried; skola1.zadajmeno("javorka"); skola2.zadajpocettried(12); //alebo skola1.zadajmeno(); skola2.zadajpocettried();... Pozrime sa teraz na kľúčové slovo V preklade to znamená, že jak členské premenné tak i členské funkcie deklarované za týmto slovom sú verejné, teda viditeľné napríklad aj vo funkcii main a môžeme ich čítať ako i do nich zapisovať hodnoty a pristupujeme k nim pomocou bodky za objektom: Main.cpp: skola3.smenoskoly = "Strojarka"; skola1.zadajmeno(); int ncislo = skola3.npocettried; Mať verejné public členské dáta nie je veľmi výhodné. Je oveľa výhodnejšie skryť ich všade okrem samotnej triedy. Napríklad smenoskoly deklarujeme ako súkromné private: CSkola.h: class CSkola //Funkcie CSkola(void); //konstruktor CSkola(string sword); //konstruktor so zadanim mena CSkola(string sword, int npocet); ~CSkola(void); //destruktor void ZadajMeno(void); void ZadajMeno(string smenoin); void ZadajPocetTried(void); void ZadajPocetTried(int npocetin); 8

9 //Data int npocettried; private: string smenoskoly; ; V tom momente pri každom pokuse o prístup k premennej smenoskoly zahlási prekladač chybu: error C2248: 'CSkola::sMenoSkoly' : cannot access private member declared in class 'CSkola' To znamená, že mimo triedy už k premennej smenoskoly nemáme prístup. Ako teda vypíšeme obsah tejto premennej? Musíme zaviesť pre výpis tejto premennej funkciu vo vnútri triedy CSkola. Všetky členské funkcie majú k premenným svojej triedy vždy prístup private člen triedy (a môže to byť i funkcia) je súkromný pre svoju triedu. Musíme teda vytvoriť funkciu: CSkola.h: string VratMenoSkoly(void); do ktorej nemusíme nič zadávať, ale ktorá nám vráti hodnotu členskej premennej smenoskoly': CSkola.cpp: string CSkola::VratMenoSkoly(void) return smenoskoly; Stačí potom túto zavolať: Main.cpp: cout << "Meno skoly 1 je: " << skola1.vratmenoskoly() <<" jej pocet tried je: " << skola1.npocettried << endl; Je dokonca zvykom písať kľúčové slova public a private zvlášť pre funkcie i dáta, i keď ich nevyužijeme. Ak by sme tieto kľúčové slová neuviedli, všetci členovia triedy by boli automaticky private. CSkola.h: class CSkola //Funkcie private: CSkola(void); // default konstruktor CSkola(string sword); //konstruktor so zadanim mena CSkola(string sword, int npocet); //konstruktor so zadanim mena a poctu tried ~CSkola(void); //destruktor void ZadajMeno(void); void ZadajMeno(string smenoin); void ZadajPocetTried(void); void ZadajPocetTried(int npocetin); string VratMenoSkoly(void); //Data private: string smenoskoly; int npocettried; ; 9

10 To by bolo na začiatok. Teraz zopár úloh pre vás: Úlohy: 1. Doplňte triedu CSkola o funkcie void VypisMenoSkoly(void); //Cely vypis je vo vnutri funkcie (cout...) int VratPocetTried(void); // Vrati pocet tried v skole void VypisPocetTried(void); //Cely vypis je vo vnutri funkcie (cout...) 2. Ak máme tieto funkcie, môžeme aj smenoskoly aj npocettried deklarovať ako private. 3. Skúste deklarovať v main objekty skola ako pole. Využite default konstruktor a potom v cykle zadajte mená škôl a v ďalšom cykle počty tried pre tieto školy. Výzva na zadanie počtu tried je aj s menom školy, napríklad: Zadajte počet tried v škole Orange 4. Vypíšte v cykle ktoré školy majú koľko tried. 3. Ďalšia vnorená trieda (a pritom CTrieda ) Povedzme si niečo o tom, ako si naplánovať knižnicu triedy. Zatiaľ máme jednu triedu CSkola. Tá môže obsahovať funkcie i dáta. Medzi dátami môže byť pokojne i nejaká iná (no i tá istá) trieda. Aby sa návrh takejto triedy zjednodušil, pomáhame si grafickými návrhmi. Existujú dokonca programy, ktoré nám tieto návrhy pomáhajú zostrojiť. Má to i meno: Unified Modeling Language alebo UML je v softvérovom inžinierstve grafický jazyk na vizualizáciu, špecifikáciu, navrhovanie a dokumentáciu programových systémov. Ak si niekedy nájdete čas, môžete sa na nich pozrieť. Niektoré sú pre profesionálov ( a teda za peniaze), niektoré sú free, napríklad tu som použil Visual Paradigm: Takto by vyzerali naše dve triedy: V hornom riadku je meno triedy. V strednom sú dáta spolu s ich typmi (ak sú zadané, tak i s default hodnotami), dole sú funkcie. Zatiaľ si vystačíme len s týmito funkciami. Je tu niečo zvláštne. Vyzerá to akoby mali tieto dve triedy rovnaké funkcie. To však nie je pravda. Dokonca nemajú rovnaké ani mená (hoci to tak vyzerá). Ak totiž použijem ich celé mená tak funkcia ZadajMenaTriedy() v triede CSkola sa plným menom volá CSkola:: ZadajMenaTriedy() A v triede CTrieda sa volá: CTrieda:: ZadajMenaTriedy() (Ak ste projekt otvorili ako Empty Project, stačí na meno funkcie nabehnúť kurzorom a objaví sa vám ihneď informácia o tejto funkcii aj stým, z ktorej je triedy). 10

11 Takto vyzerajú naše triedy: Triedy v C++ CSkola.cpp #include "CSkola.h" int main(void) // CSkola skola[3] = CSkola("Orange",3),CSkola("Javorka",3),CSkola("Strojarka",3); CSkola skola[2] = CSkola("Orange",2),CSkola("Javorka",2); for(int i = 0; i < 2; i++) skola[i].zadajmenatriedy(); for(int i = 0; i < 2; i++) skola[i].zadajpocetziakov(); for(int i = 0; i < 2; i++) skola[i].zadajmenaziakov(); system("pause"); return 0; #include "CTrieda.h" CSkola.h class CSkola //Funkcie CSkola(void); //konstruktor CSkola(string smenosk); //konstruktor CSkola(string smenosk, int npocettr); //konstruktor ~CSkola(void); //destruktor void ZadajMenaTriedy(void); void ZadajMenaZiakov(void); void ZadajPocetZiakov(void); //Data private: int npocettried; string smenoskoly; CTrieda trieda[4]; ; 11

12 CTrieda.cpp #include "CTrieda.h" CTrieda::CTrieda(void) //konstruktor triedy univerzal npocetziakov = 20; smenotriedy = "Neznama"; CTrieda::~CTrieda(void) void CTrieda::ZadajMenaTriedy(void) cout << " Zadaj meno triedy zo skoly " << "????" << endl; cin >> smenotriedy; void CTrieda::ZadajPocetZiakov(void) cout << " Zadaj pocet ziakov v triede " << smenotriedy << " zo skoly " << "????" << endl; cin >> npocetziakov; void CTrieda::ZadajMenaZiakov(void) for(int i = 0; i < npocetziakov; i++) ziak[i].zadajmenaziakov(); CTrieda.h #include "CZiak.h" class CTrieda //Funkcie CTrieda(void); //konstruktor CTrieda(string smenotriedy); //konstruktor CTrieda(string smenotriedy, int npocetziakoch); //konstruktor ~CTrieda(void); //destruktor void ZadajMenaTriedy(void); void ZadajPocetZiakov(void); void ZadajMenaZiakov(void); //Data private: int npocetziakov; string smenotriedy; CZiak ziak[5]; ; 12

13 A ich využitie v main,cpp je takéto: main.cpp #include "CSkola.h" int main(void) CSkola skola[2] = CSkola("Orange",2),CSkola("Javorka",2); for(int i = 0; i < 2; i++) skola[i].zadajmenatriedy(); for(int i = 0; i < 2; i++) skola[i].zadajpocetziakov(); for(int i = 0; i < 2; i++) skola[i].zadajmenaziakov(); system("pause"); return 0; Ako to funguje? Ak chcem zadať meno triedy (školskej ), mohol by som to urobiť priamo vo funkcii v triede CSkola: for(int i = 0; i < npocetskol; i++) for(int j = 0; j < npocettried; j++) skola[i].trieda[j].zadajmenatriedy(); Alebo dokonca: for(int i = 0; i < npocetskol; i++) for(int j = 0; j < npocettried; j++) cin >> skola[i].trieda[j].smenotriedy; Čo by nakoniec pri zadávaní známky z predmetu žiakovi vyzeralo takto: for(int i = 0; i < npocetskol; i++) for(int j = 0; j < npocettried; j++) for(int k = 0; k < npocetziakov; k++) for(int l = 0; l < npocetpredmetov; l++) cin >> skola[i].trieda[j].ziak[k].predmet[l].nznamka; Ako to vyzerá? Radšej nechajme každú triedu, nech sa stará len o svoje dáta (tie potom môžu byť pokojne deklarované ako private). Znamená to, že v main.cpp zavoláme len funkciu triedy CSkola (v cykle toľkokrát, koľko máme škôl). main.cpp: for(int i = 0; i < 2; i++) skola[i].zadajmenatriedy(); 13

14 Táto funkcia CSkola:: ZadajMenaTriedy() vo svojom vnútri potom zavolá funkciu triedy CTrieda (toľkokrát, koľko máme tried): CSkola.cpp void CSkola::ZadajMenaTriedy(void) for(int i = 0; i < npocettried; i++) trieda[i].zadajmenatriedy(); A až funkcia CTrieda:: ZadajMenaTriedy() : CTrieda.cpp void CTrieda::ZadajMenaTriedy(void) cout << " Zadaj meno triedy zo skoly " << "????" << endl; cin >> smenotriedy; Si do svojej členskej premennej smenotriedy načíta meno školskej triedy. Aj toto sa dá znázorniť graficky (požijeme na to tzv. sekvenčný diagram Tento diagram nám hovorí, že užívateľ (main.cpp) najprv vytvorí objekt CSkola skola, ten pri svojom vzniku okamžite vytvorí pomocou konštruktora objekty CTrieda trieda. Ďalší krok je v cykle (loop) pre každú školu vytvoriť niekoľko tried. V ďalšom kroku sa v cykle pre každú školu zavolá jej funkcia CSkola:: ZadajMenaTriedy() a tá zasa zavolá v cykle funkcie CTrieda:: ZadajMenaTriedy(). 14

15 Zatiaľ to funguje, ale má to jednu chybičku: Jednoducho vo vnútri triedy nepoznáte meno školy, ktorej tá trieda patrí. Ako to riešiť? Opäť existuje viacero riešení. Ukážeme si dve najjednoduchšie: Môžeme meno školy poslať do funkcie CTrieda:: ZadajMenaTriedy(string smenosk) ako parameter (argument) funkcie: CSkola.cpp void CSkola::ZadajMenaTriedy(void) for(int i = 0; i < npocettried; i++) trieda[i].zadajmenatriedy(smenoskoly); CTrieda.cpp void CTrieda::ZadajMenaTriedy(string smenosk) cout << " Zadaj meno triedy zo skoly " << smenosk << endl; cin >> smenotriedy; Ako vidíte, toto by sme museli urobiť aj v ďalších funkciách triedy CTrieda. Navyše by bolo dobré zadať aj poradové číslo triedy. Skúsme ďalšie riešenie: Trieda CTrieda obsahuje tieto členské dáta: private: int npocetziakov; string smenotriedy; Prečo by nemohla obsahovať ďalšie premenné : private: 15

16 int npocetziakov; string smenotriedy; string smenoskoly; //meno školy, do ktorej trieda patri int nporadietriedy; //poradove cislo triedy vo svojej skole Tieto premenné by sme naplnili (definovali) hneď v konštruktore triedy a máme tieto údaje hocikedy v rámci každého objektu (školskej triedy) k dispozícii. Vytvorme teda ďalší konštruktor pre triedu CTrieda pozmeňme i konštruktor triedy CSkola, aby sme mohli hneď naplniť tieto premenné, deklarujme príslušné premenné a máme postarané: CTrieda.cpp: CTrieda::CTrieda(string smenosk, int nporadie) //konstruktor triedy so zadanim skoly a poradia triedy smenoskoly = smenosk; nporadietriedy = nporadie; CSkola.cpp: CSkola::CSkola(string smenosk, int npocettr) //konstruktor triedy univerzal //cout << "konstruktor triedy s menom a poctom " << endl; npocettried = npocettr; smenoskoly = smenosk; for(int i = 0; i < npocettried; i++) trieda[i] = CTrieda(sMenoSkoly, i); //zavoláme konstruktor triedy CTrieda A odteraz máme k týmto údajom stály prístup. Každá školská trieda bude vždy vedieť, ktorej škole patrí a ktorá je v tejto škole v poradí. (Ostatne v každej triednej knihe to je napísané). Poďme ďalej: 4. Ďalšia vnorená trieda CZiak V triedach bývajú žiaci. Vytvorme novú triedu CZiak, aby sme vo vnútri CTrieda mohli zaviesť pole objektov CZiak ziak[5]; Znovu vytvorme aj konštruktor do ktorého môžeme zaviesť aj meno triedy, z ktorej žiak je, aj meno školy a aj poradové číslo žiaka v triede. Problém ale bude kedy tento konštruktor zavolať? V konštruktore CTrieda to nie je možné, tam ešte nepoznáme počet žiakov, ani meno triedy. Dá sa to urobiť hneď potom, ako tieto údaje budeme vedieť a to je vo funkcii, kde načítavame počet žiakov v triede CTrieda. Takže aj túto musíme trochu prerobiť výsledkom bude: 16

17 CZiak.h: #include <iostream> #include <string> using namespace std; class CZiak //Funkcie CZiak(void); //konstruktor CZiak(string smenosk, string smenotr, int nporadie); //konstruktor v ktorom zadame meno triedy, skoly a poradove cislo ziaka ~CZiak(void); //destruktor void ZadajMenaZiakov(void); //Data private: string smenoziaka; string smenoskoly; //meno školy, do ktorej trieda patri string smenotriedy; //meno školy, do ktorej trieda patri int nporadieziaka; //poradove cislo ziaka vo svojej triede ; CZiak.cpp: #include "CZiak.h" CZiak::CZiak(void) //konstruktor triedy univerzal CZiak::CZiak(string smenosk, string smenotr, int nporadie) //konstruktor v ktorom zadame meno triedy, skoly a poradove cislo ziaka smenoskoly = smenosk; smenotriedy = smenotr; nporadieziaka = nporadie; CZiak::~CZiak(void) //destruktor triedy univerzal //cout << "destruktor triedy zakladny " << smeno << endl; void CZiak::ZadajMenaZiakov(void) cout << " Zadaj meno ziaka c." << nporadieziaka << " Z triedy " << smenotriedy << " Zo skoly " << smenoskoly << endl; cin >> smenoziaka; CTrieda.cpp: void CTrieda::ZadajPocetZiakov(void) cout << " Zadaj pocet ziakov v triede " << smenotriedy << " zo skoly " << smenoskoly << endl; cin >> npocetziakov; for(int i = 0; i < npocetziakov; i++) ziak[i] = CZiak(sMenoSkoly, smenotriedy, i); 17

18 Myslím, že toto hravo zvládnete. Ak nie posielam kód. Úlohy: 1. Najprv si rozbehnite projekt do tohto bodu pekne podľa popisu v tomto texte. Pozorne so pozrite ktorá funkcia volá ktorú. Keď sa s týmto pohráte a prídete na to ako to funguje, máte vyhrané. 2. Potom určite nebude problémom doplniť program o ďalšiu triedu CPredmet s premennými a funkciami vyznačenými v diagrame. Je to o to ľahšie, že počet predmetov je daný 2, ako i mená Fyzika, Informatika. Tieto údaje môžete naplniť hneď v konštruktore a použiť ho podobne ako u škôl. Napríklad v konštruktore triedy CZiak. Každý predmet bude mať pole int nznamka[2], ktoré môžu mať na začiatku hodnotu napríklad -1 aby sme vedeli, že známky ešte neboli zadané a premennú int nzadaneznamky, ktorá má na začiatku hodnotu 0. A jedinú funkciu void ZadajteZnamku(void) v ktorej budete tieto známky zadávať pre všetky školy, triedy a žiakov. Teda takéto funkcie musia mať i všetky predchádzajúce triedy CSkola, CTrieda, CZiak. Pozri diagram: 18

19 19

20 5. Príklad Zoo V tomto príklade sme vytvorili malú zoo s troma mačkami. Každá z mačiek bude objektom triedy CMacka. Vo funkcii main() vytvoríme pole troch maciek do ktorých hneď v konštruktori zadáme meno každej mačky. int main(void) CMacka macicka[3] = "Liza", "Micka", "Usko"; Tento konštruktor v triede CMacka vyzerá nejako takto: //IB: vyuzijeme konstruktor so zadavanim mien CMacka::CMacka(string smenomacky) smeno = smenomacky; //IB: konstruktor so zadanim mena macky smeno je private členská premenná triedy CMacka a práve v konštruktore ju naplníme pomocou vstupu (parametru, argumentu: string smenomacky). Funguje to tak, že v momente ak vykonáme deklaráciu objektov: CMacka macicka[3] = "Liza", "Micka", "Usko"; Zavoláme vlastne trikrát za sebou konštruktor triedy CMacka. Čo znamená že pre macicku[0] je konštruktor niečo ako: CMacka::CMacka(string smenomacky = "Liza") smeno = smenomacky (čo je vlastne "Liza"); //IB: konstruktor so zadanim mena macky Premenná smenomacky neexistuje predtým ako tento konštruktor zavoláme. Akonáhle ho zavoláme ( CMacka macicka[3] = "Liza", "Micka", "Usko";) vznikne lokálna (existuje len vo vnútri konštruktora) premenná string smenomacky a hneď sa naplní (skopíruje sa do nej) obsah "Liza". Príkazom : smeno = smenomacky; sa tento obsah ("Liza") priradí do členskej premennej smeno triedy CMacka. Po skončení funkcie konštruktor jej lokálna premenná string smenomacky okamžite zanikne, ale členská premenná smeno už bude mať stále (až kým ju nezmeníme) hodnotu "Liza". Potom sa zavolá druhý konštruktor s menom "Micka" a teda vznikne druhý objekt (macicka[1]) a nakoniec macicka[1] ("Usko") a to všetko v jednom riadku : CMacka macicka[3] = "Liza", "Micka", "Usko"; V ďalšom kroku vo funkcii main zadám jednotlivým objektom mačkám farbu a nakoniec ich farby vypíšeme. To všetko vykonávame v cykle pre index pola macicka[i] od 0 po 2. Vytvoríme novú triedu CNoha a v triede CMacka zadeklarujem 4 objekty noha ako pole: #include "CNoha.h" class CMacka 20

21 CMacka(void); //Konstruktor CMacka(string smenomacky); //Konstruktor so zadanim mien ~CMacka(void); //Destruktor void ZadajMeno(void); void NapisMeno(void); void ZadajFarbu(void); void NapisFarbu(void); int CelkovyPocetPazurov(void);//pre jednu macku CNoha noha[4]; private: string sfarba; string smeno; ; Pre každú nohu vytvoríme členskú premennú triedy CNoha class CNoha CNoha(void); //Konstruktor ~CNoha(void); //Destruktor int CelkovyPocetPazurov(void);//pre jednu nohu private: int npocetpazurov; ; npocetpazurov nastavíme hneď v konštruktore na hodnotu 5. Naša úloha je spočítať všetky pazúry všetkých mačiek v našej zoo. Prikladám hotové súbory s poznámkami, ako jednotlivé funkcie pracujú. V main() v cykle zavoláme funkciu macicka[i].celkovypocetpazurov(). Jedna takáto funkcia pre každý index i od 0 po 2 nám vráti počet pazúrov, ktoré má dokopy jedna mačka. Teda ak postupne budeme tieto hodnoty sčítavať, dostaneme výsledný súčet. (Pozor: skutočné meno tejto funkcie je CMacka::CelkovyPocetPazurov(). A to sa dá iba tak, že vo vnútri tejto funkcie sa 4 krát zavolá funkcia noha[i]. CelkovyPocetPazurov() s celým menom CNoha::CelkovyPocetPazurov().Každá táto funkcia nám vráti počet pazúrov na jednej nohe. Keď budem postupne sčítavať každú nohu, získam počet pazúrov celej mačky. (Pozri vysvetlivky v kóde.) Teraz keď vieme ako spočítať jednotlivé pazúry všetkých mačiek, nebude pre nás problémom spočítať počet žiakov vo všetkých školách, vo všetkých triedach v našom predchádzajúcom projekte.: Úloha. Vytvorte pole z troch objektov triedy CMacka. Tá obsahuje vlastnosti : smeno (String) a pole štyroch objektov triedy CLabka. Táto trieda obsahuje počet pazúrov (Integer). Spočítajte pazúriky všetkých mačiek pomocou funkcií týchto tried 21

22 22

VYLEPŠOVANIE KONCEPTU TRIEDY

VYLEPŠOVANIE KONCEPTU TRIEDY VYLEPŠOVANIE KONCEPTU TRIEDY Typy tried class - definuje premenné a metódy (funkcie). Ak nie je špecifikovaná inak, viditeľnosť členov je private. struct - definuje premenné a metódy (funkcie). Ak nie

More information

Databázové systémy. SQL Window functions

Databázové systémy. SQL Window functions Databázové systémy SQL Window functions Scores Tabuľka s bodmi pre jednotlivých študentov id, name, score Chceme ku každému doplniť rozdiel voči priemeru 2 Demo data SELECT * FROM scores ORDER BY score

More information

kucharka exportu pro 9FFFIMU

kucharka exportu pro 9FFFIMU požiadavky na export kodek : Xvid 1.2.1 stable (MPEG-4 ASP) // výnimočne MPEG-2 bitrate : max. 10 Mbps pixely : štvorcové (Square pixels) rozlíšenie : 1920x1080, 768x432 pre 16:9 // výnimočne 1440x1080,

More information

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Spájanie tabuliek. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) Spájanie tabuliek Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Úvod pri normalizácii rozdeľujeme databázu na viacero tabuliek prepojených cudzími kľúčmi SQL umožňuje tabuľky opäť spojiť

More information

Databázy (1) Prednáška 11. Alexander Šimko

Databázy (1) Prednáška 11. Alexander Šimko Databázy (1) Prednáška 11 Alexander Šimko simko@fmph.uniba.sk Contents I Aktualizovanie štruktúry databázy Section 1 Aktualizovanie štruktúry databázy Aktualizácia štruktúry databázy Štruktúra databázy

More information

Registrácia účtu Hik-Connect

Registrácia účtu Hik-Connect Registrácia účtu Hik-Connect Tento návod popisuje postup registrácie účtu služby Hik-Connect prostredníctvom mobilnej aplikácie a webového rozhrania na stránke www.hik-connect.comg contents in this document

More information

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami)

Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) I2AI: Lecture 04 Constraint satisfaction problems (problémy s obmedzujúcimi podmienkami) Lubica Benuskova Reading: AIMA 3 rd ed. chap. 6 ending with 6.3.2 1 Constraint satisfaction problems (CSP) We w

More information

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals...

Desatinné čísla #1a. Decimal numbers #1b. How much larger is 21,8 than 1,8? Desatinné čísla #2a. Decimal numbers #2b. 14 divided by 0,5 equals... Desatinné čísla #1a Mravec išiel 5,5 cm presne na sever, potom 3,4 cm na východ, 1,8 cm na juh, 14,3 cm na západ, 1,3 cm na sever a 10,9 cm na východ. Najmenej koľko cm musí teraz prejsť, aby sa dostal

More information

1 Komplexný príklad využitia OOP

1 Komplexný príklad využitia OOP 1 Komplexný príklad využitia OOP Najčastejším využitím webových aplikácií je komunikácia s databázovým systémom. Komplexný príklad je preto orientovaný práve do tejto oblasti. Od verzie PHP 5 je jeho domovskou

More information

Copyright 2016 by Martin Krug. All rights reserved.

Copyright 2016 by Martin Krug. All rights reserved. MS Managed Service Copyright 2016 by Martin Krug. All rights reserved. Reproduction, or translation of materials without the author's written permission is prohibited. No content may be reproduced without

More information

Testovanie bieleho šumu

Testovanie bieleho šumu Beáta Stehlíková FMFI UK Bratislava Opakovanie z prednášky Vygenerujeme dáta Vygenerujeme dáta: N

More information

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára

REPORT DESIGNER 1 VYTVORENIE A ÚPRAVA FORMULÁRA. úprava formulárov v Money S4 / Money S Vytvorenie formulára REPORT DESIGNER úprava formulárov v Money S4 / Money S5 Informačný systém Money S4/S5 umožňuje upraviť tlačové zostavy tak, aby plne vyhovovali potrebám používateľa. Na úpravu tlačových zostáv slúži doplnkový

More information

Aplikačný dizajn manuál

Aplikačný dizajn manuál Aplikačný dizajn manuál Úvod Aplikačný dizajn manuál je súbor pravidiel vizuálnej komunikácie. Dodržiavaním jednotných štandardov, aplikácií loga, písma a farieb pri prezentácii sa vytvára jednotný dizajn,

More information

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15

Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15 Základná(umelecká(škola(Jána(Albrechta Topoľčianska(15 851(01(Bra@slava Titl.: Ján(Hrčka Bohrova(11 851(01(Bra@slava V(Bra@slave(21.11.2013 Vec:(Odpoveď(na(informácie(ohľadom(mandátnej(zmluvy(na(základe(Zákona(č.(211/2000(Zb.

More information

Poradové a agregačné window funkcie. ROLLUP a CUBE

Poradové a agregačné window funkcie. ROLLUP a CUBE Poradové a agregačné window funkcie. ROLLUP a CUBE 1) Poradové a agregačné window funkcie 2) Extrémy pomocou DENSE_RANK(), TOP() - Príklady 3) Spriemernené poradia 4) Kumulatívne súčty 5) Group By a Datepart,

More information

TYPY, KONŠTANTY, PROCEDÚRY A FUNKCIE PRE PRÁCU S POĽOM

TYPY, KONŠTANTY, PROCEDÚRY A FUNKCIE PRE PRÁCU S POĽOM TYPY, KONŠTANTY, PROCEDÚRY A FUNKCIE PRE PRÁCU S POĽOM Doposiaľ sme si ukázali základné štruktúry a jednotky jazyka. Pracovali sme s premennými rôznych typov ako aj s konštantnými hodnotami. Používali

More information

Objektovo-orientované programovanie

Objektovo-orientované programovanie Objektovo-orientované programovanie Objektovo orientované programovanie Je to efektívny spôsob organizácie programu Základný princíp: program pozostáva z množiny objektov, ktoré sú schopné uchovávať a

More information

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator

Anycast. Ľubor Jurena CEO Michal Kolárik System Administrator Anycast Ľubor Jurena CEO jurena@skhosting.eu Michal Kolárik System Administrator kolarik@skhosting.eu O nás Registrátor Webhosting Serverové riešenia Správa infraštruktúry Všetko sa dá :-) Index Čo je

More information

Manuál k programu FileZilla

Manuál k programu FileZilla Manuál k programu FileZilla EXO TECHNOLOGIES spol. s.r.o. Garbiarska 3 Stará Ľubovňa 064 01 IČO: 36 485 161 IČ DPH: SK2020004503 support@exohosting.sk www.exohosting.sk 1 Úvod EXO HOSTING tím pre Vás pripravil

More information

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona

Textový formát na zasielanie údajov podľa 27 ods. 2 písm. f) zákona Popis textového formátu a xsd schémy na zasielanie údajov podľa 27 ods. 2 písm. f) zákona (formu na zaslanie údajov si zvolí odosielateľ údajov) Textový formát na zasielanie údajov podľa 27 ods. 2 písm.

More information

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca

TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca TP-LINK 150Mbps Wireless AP/Client Router Model TL-WR743ND Rýchly inštalačný sprievodca Obsah balenia TL-WR743ND Rýchly inštalačný sprievodca PoE injektor Napájací adaptér CD Ethernet kábel Systémové požiadavky

More information

Portál pre odborné publikovanie ISSN

Portál pre odborné publikovanie ISSN 1 Portál pre odborné publikovanie ISSN 1338-0087 16. Matlab 2D grafy Foltin Martin MATLAB/Comsol 25.09.2009 Silnou stránkou prostredia Matlab je grafika. Grafika je nástroj na prehľadné zobrazovanie výsledkov,

More information

Tvorba informačných systémov. 4. prednáška: Návrh IS

Tvorba informačných systémov. 4. prednáška: Návrh IS Tvorba informačných systémov 4. prednáška: Návrh IS Návrh informačného systému: témy Ciele návrhu ERD DFD Princípy OOP Objektová normalizácia SDD Architektonické pohľady UML diagramy Architektonické štýly

More information

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP

Recipient Configuration. Štefan Pataky MCP, MCTS, MCITP Recipient Configuration Štefan Pataky MCP, MCTS, MCITP Agenda Mailbox Mail Contact Distribution Groups Disconnected Mailbox Mailbox (vytvorenie nového účtu) Exchange Management Console New User Exchange

More information

Spôsoby zistenia ID KEP

Spôsoby zistenia ID KEP Spôsoby zistenia ID KEP ID KEP (kvalifikovaný elektronický podpis) je možné zistiť pomocou napr. ovládacieho panela, prostredíctvom prehliadača Internet Expolrer, Google Chrome alebo Mozilla Firefox. Popstup

More information

package balik; public class TopLevel1 {... }

package balik; public class TopLevel1 {... } Seminář Java Speciální třídy, výčtový typ Radek Kočí Fakulta informačních technologií VUT Březen 2010 Radek Kočí Seminář Java Speciální třídy, výčtový typ 1/ 20 Téma přednášky Vnořené třídy Anonymní třídy

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU.

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU. UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY VÝUKOVÁ WEBOVÁ APLIKÁCIA NA PROGRAMOVANIE GPU Diplomová práca 2017 Bc. Denis Spišák UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA

More information

Obrázok č. 1 Byte. Obrázok č. 2 Slovo

Obrázok č. 1 Byte. Obrázok č. 2 Slovo C++ pod lupou Nie som ortodoxným prívržencom nijakého dnes používaného jazyka, poznám ich už riadnu kôpku, ale najbližšie mám práve k C++. Prečo, o tom by sa dalo diskutovať donekonečna, nie je to však

More information

Programovanie v jazyku Python. Michal Kvasnica

Programovanie v jazyku Python. Michal Kvasnica Programovanie v jazyku Python Michal Kvasnica Organizačné detaily Prednášky aj cvičenia v 638 Povinná účasť na cvičeniach Hodnotenie: priebežné odovzdávanie zadaní (40% známky) záverečný projekt na skúške

More information

VLSM a CIDR. CCNA2 Kapitola Cisco Systems, Inc. All rights reserved. Cisco Public 1

VLSM a CIDR. CCNA2 Kapitola Cisco Systems, Inc. All rights reserved. Cisco Public 1 VLSM a CIDR CCNA2 Kapitola 6 1 Trošku histórie Pred rokom 1981 IP adresy používali na špecifikáciu siete len prvých 8 bitov Rok1981, RFC 791 Zaviedol adresný priestor s tromi triedami adries Polovica 90

More information

Databázy (1) Prednáška 08. Alexander Šimko

Databázy (1) Prednáška 08. Alexander Šimko Databázy (1) Prednáška 08 Alexander Šimko simko@fmph.uniba.sk Contents I Subqueries (poddopyty) konštrukcia WITH Section 1 Subqueries (poddopyty) Subquery (poddopyt) Použitie SELECTu na mieste, kde sme

More information

Obsah. SOA REST REST princípy REST výhody prest. Otázky

Obsah. SOA REST REST princípy REST výhody prest. Otázky REST Peter Rybár Obsah SOA REST REST princípy REST výhody prest Otázky SOA implementácie WEB (1990) CORBA (1991) XML-RPC (1998) WS-* (1998) SOAP RPC/literal SOAP Document/literal (2001) REST (2000) SOA

More information

Jeden z variantov príkazu priradenia nám umožňuje zadať za sebou aj viacej vstupných hodnôt, ako napríklad

Jeden z variantov príkazu priradenia nám umožňuje zadať za sebou aj viacej vstupných hodnôt, ako napríklad Príkaz priradenia Príkaz priradenia slúži na priradenie hodnoty premennej. Má tvar premenná = výraz, kde premenná je identifikátor, znak = sa číta priraď a vyhodnotením výrazu sa získa hodnota určitého

More information

1 Vytvorenie tabuľky

1 Vytvorenie tabuľky Základy jazyka SQL (Structured Query Language) - vyvinula IBM začiatkom 70-tych rokov - je to deklaratívny jazyk (popisuje čo urobiť, nie ako) - je súčasťou veľkých databázových systémov (Informix, Oracle,

More information

CUIT. Coded UI Testing

CUIT. Coded UI Testing CUIT Coded UI Testing 1 Autor: Ing. Peter Kováč Kontakt: kovac.peter1@centrum.sk Dátum vydania: 2018 2 Obsah 1 Testovanie...5 1.1 Rozdelenie testovania... 6 2 Automatizované testy...9 2.1 Výhody a nevýhody

More information

Vnorené SQL. Autor prezentácie: Peter Šípoš

Vnorené SQL. Autor prezentácie: Peter Šípoš Vnorené SQL Autor prezentácie: Peter Šípoš Literatúra Programmatic SQL od Pearson Ed Embedded SQL: http://download.oracle. com/docs/cd/b10501_01/appdev.920/a97269/pc_06sql.htm Oracle Dynamic SQL: http://download.oracle.

More information

Programovanie v jazyku C - modularita

Programovanie v jazyku C - modularita CVIČENIE 11/13 (SW2) Programovanie v jazyku C - modularita About vkladanie suborov, modularne programovanie, prikaz make TODO: SOUBOR X STANDARDNÍ VSTUP-VÝSTUP - typická situace: čteme data a podle kontextu

More information

Stretnutie s Pascalom II.

Stretnutie s Pascalom II. Stretnutie s Pascalom II 1 časť Predchádzajúcou časťou sme ukončili výučbu štruktúrovaného programovania Viem, že rozsah seriálu nestačil na vyškolenie profesionálneho programátora Bolo by vhodné niektoré

More information

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ ÚSTAV POČÍTAČOVÉ GRAFIKY A MULITMÉDIÍ FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND

More information

Informatika 2. Generiká

Informatika 2. Generiká Informatika 2 Generiká Pojmy zavedené v 10. prednáške (1) štandardný vstup a výstup textové súbory binárne súbory objektové prúdy Informatika 2 1 Pojmy zavedené v 10. prednáške (2) objektové prúdy nečitateľné

More information

PRACOVNÝ ZOŠIT Z PROGRAMOVANIA 2

PRACOVNÝ ZOŠIT Z PROGRAMOVANIA 2 PRACOVNÝ ZOŠIT Z PROGRAMOVANIA 2 Ing. Igor Marko, 2011 PODPROGRAMY V PASCALE DEFINÍCIA, GLOBÁLNE A LOKÁLNE PREMENNÉ Podprogram v programovacom jazyku je postupnosť príkazov vystupujúcich pod jedným názvom,

More information

Entity Framework: Úvod

Entity Framework: Úvod Entity Framework: Úvod Martin Macák Fakulta informatiky, Masarykova univerzita, Brno 29. 9. 2016 Osnova prednášky 1. Základy Entity Frameworku 2. Návrh databázy (detailnejšie Code First prístup) 3. Migrácie

More information

Automatizovanie navrhovania objektov v prostredí Autocad

Automatizovanie navrhovania objektov v prostredí Autocad SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE STAVEBNÁ FAKULTA Automatizovanie navrhovania objektov v prostredí Autocad Bakalárska práca SvF- 5342-28794 Študijný program: matematicko-počítačové modelovanie

More information

Osobovo-orientovaný prístup vývoja softvéru

Osobovo-orientovaný prístup vývoja softvéru Osobovo-orientovaný prístup vývoja softvéru TOMÁŠ BACKSTUBER Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova 3, 842 16 Bratislava backy007[zavináč]gmail[.]com Abstrakt.

More information

18. Matlab figure ako objekt

18. Matlab figure ako objekt 1 Portál pre odborné publikovanie ISSN 1338-0087 18. Matlab figure ako objekt Foltin Martin MATLAB/Comsol 06.11.2009 Dlhším používaním grafických funkcií v Matlabe, dôjdete k poznaniu že ich možnosti sú

More information

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit.

Rýchlosť Mbit/s (download/upload) 15 Mbit / 1 Mbit. 50 Mbit / 8 Mbit. 80 Mbit / 10 Mbit. 10 Mbit / 1 Mbit. 12 Mbit / 2 Mbit. Fiber 5 Mbit ** 5 Mbit / Mbit 5,90 Fiber 50 Mbit * 50 Mbit / 8 Mbit 9,90 Fiber 80 Mbit * 80 Mbit / Mbit 5,90 Mini Mbit* Mbit / Mbit 9,90 Klasik 2 Mbit* 2 Mbit / 2 Mbit Standard 8 Mbit* 8 Mbit / 3Mbit Expert

More information

POKROČILÉ C++ Marian Vittek

POKROČILÉ C++ Marian Vittek POKROČILÉ C++ Marian Vittek vittek@fmph.uniba.sk O predmete Pôvodne seminár Teraz normálna prednáška so skúškou/testom Predmetom kurzu je detailnejší pohľad na jazyk C++ a občasné porovnanie s inými programovacími

More information

/* toto je viacriadková poznámka */ ako v Delphi, len sa rozlišujú malé a veľké písmená!!!

/* toto je viacriadková poznámka */ ako v Delphi, len sa rozlišujú malé a veľké písmená!!! Organizácia programu #include using namespace std; int main() return 0; // jednoriadková poznámka Identifikátor Dátové typy int (long), unsigned, float (double), bool 0,1, char, trieda

More information

MS Exchange 2010 Prechod Ing. Peter Záhradník

MS Exchange 2010 Prechod Ing. Peter Záhradník MS Exchange 2010 Prechod Ing. Peter Záhradník Gratex Support Center support@gratex.com Exchange 2010 o com to bude? Tato prezentacia bude pre ludi co uvazuju nad prechodom na novy Exchange zopar otazok

More information

Go networking. Peter Borovanský, KAI, I-18, borovan(a)ii.fmph.uniba.sk

Go networking. Peter Borovanský, KAI, I-18, borovan(a)ii.fmph.uniba.sk Go networking Peter Borovanský, KAI, I-18, borovan(a)ii.fmph.uniba.sk Prejdeme si v Go tri úrovne tzv. TCP Stacku, a naprogramujeme klient/server aplikáciu cez TCP/IP sockety, príklad chat sntp udp klient

More information

ITS ČESTNÉ PREHLÁSENIE. 1 Čestné prehlásenie

ITS ČESTNÉ PREHLÁSENIE. 1 Čestné prehlásenie ČESTNÉ PREHLÁSENIE 1 Čestné prehlásenie Čestne prehlasujem, že som túto prácu v rámci stredoškolskej odbornej činnosti vypracoval samostatne a len za pomoci uvedenej literatúry a pod odborným dohľadom

More information

2 Grafické knižnice a systémy

2 Grafické knižnice a systémy 2 Grafické knižnice a systémy 2.1 Prehľad vývoja, základné pojmy, určenie a klasifikácia Zobrazovací podsystém Zobrazovací podsystém počítačového systému je obvykle najdrahšia a energicky najnáročnejšia

More information

Databázy (2) Prednáška 08. Alexander Šimko

Databázy (2) Prednáška 08. Alexander Šimko Databázy (2) Prednáška 08 Alexander Šimko simko@fmph.uniba.sk Contents I Funkcie Zložené typy PL/pgSQL Agregačné funkcie Funkcie Section 1 Funkcie Funkcie PostgreSQL umožňuje vytvoriť si vlastné databázové

More information

Microsoft Azure platforma pre Cloud Computing. Juraj Šitina, Microsoft Slovakia

Microsoft Azure platforma pre Cloud Computing. Juraj Šitina, Microsoft Slovakia Microsoft Azure platforma pre Cloud Computing Juraj Šitina, Microsoft Slovakia m Agenda Cloud Computing Pohľad Microsoftu Predstavujeme platformu Microsoft Azure Benefity Cloud Computingu Microsoft je

More information

2. prednáška ( )

2. prednáška ( ) 2. prednáška (24.9.2018) č 1 Na predošlej prednáške (1) Vytvorenie objektu triedy a premennej (napr. franklin), cez ktorú s vytvoreným objektom komunikujeme: Turtle franklin = new Turtle(); Volanie metód

More information

Using Parallel Arrays. Parallel Array Example

Using Parallel Arrays. Parallel Array Example Using Parallel Arrays Parallel arrays: two or more arrays that contain related data A subscript is used to relate arrays: elements at same subscript are related Arrays may be of different types Parallel

More information

Nástroj na detekciu indikátorov kompromitácie v systémoch Windows

Nástroj na detekciu indikátorov kompromitácie v systémoch Windows Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Nástroj na detekciu indikátorov kompromitácie v systémoch Windows Bakalárska práca 2016 Ľuboš Miklošovič Univerzita Komenského

More information

Riešenia a technológie pre jednotnú správu používateľov

Riešenia a technológie pre jednotnú správu používateľov Riešenia a technológie pre jednotnú správu používateľov Radovan Semančík Agenda Úvod: Identity Crisis Technológie správy používateľov Postup nasadenia Záver Súčasný stav IT Security Nekonzistentné bezpečnostné

More information

Systém pre podporu výuky teórie programovacích jazykov

Systém pre podporu výuky teórie programovacích jazykov Mendelova univerzita v Brně Provozně ekonomická fakulta Systém pre podporu výuky teórie programovacích jazykov Diplomová práca Vedúci práce: doc. Ing. Dr. Jiří Rybička Bc. Petra Pavlačičová Brno 2012 Ďakujem

More information

Linked List using a Sentinel

Linked List using a Sentinel Linked List using a Sentinel Linked List.h / Linked List.h Using a sentinel for search Created by Enoch Hwang on 2/1/10. Copyright 2010 La Sierra University. All rights reserved. / #include

More information

systemove programovanie win32 programovanie

systemove programovanie win32 programovanie systemove programovanie win32 programovanie zakladny princip uzivatel interaguje so systemom klavesnicou, mysou tym generuje udalosti, ktore sa radia do,,message queue" (front sprav) aplikacia vytahuje

More information

Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE. Andrej Kruták

Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE. Andrej Kruták Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE Andrej Kruták AnoRaSi - fyzikálně-realistický simulátor v 3D Katedra softwarového inženýrství Vedoucí bakalářské práce: RNDr. Tomáš

More information

JAVA. Sieťové programovanie

JAVA. Sieťové programovanie JAVA Sieťové programovanie Sieťové programovanie Sieťová knižnica jazyka JAVA bola vytvorená podľa súborovej knižnice Zapúzdrovanie pripojení do streamov Multithreading Identifikácia počítača Každý počítač

More information

AKO NA RIZIKÁ. Hurá metóda asi nebude správna. Jaroslav Grega. Čo je riziko? Čo je manažment rizík

AKO NA RIZIKÁ. Hurá metóda asi nebude správna. Jaroslav Grega. Čo je riziko? Čo je manažment rizík AKO NA RIZIKÁ Hurá metóda asi nebude správna. Jaroslav Grega Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova 3, 842 16 Bratislava grega.jaroslav.sk[zavináč]gmail[.]com

More information

METODIKA TVORBY PRE ZÁKLADNÉ ŠKOLY ŠKOLSKÝCH VZDELÁVACÍCH PROGRAMOV

METODIKA TVORBY PRE ZÁKLADNÉ ŠKOLY ŠKOLSKÝCH VZDELÁVACÍCH PROGRAMOV Moderné vzdelávanie pre vedomostnú spoločnosť/ Projekt je spolufinancovaný zo zdrojov EÚ METODIKA TVORBY ŠKOLSKÝCH VZDELÁVACÍCH PROGRAMOV PRE ZÁKLADNÉ ŠKOLY Štátny inštitút odborného vzdelávania, Bellova

More information

Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky. Interaktívna výuková webová aplikácia na riešenie úloh o pravdepodobnosti

Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky. Interaktívna výuková webová aplikácia na riešenie úloh o pravdepodobnosti Univerzita Komenského v Bratislave Fakulta matematiky, fyziky a informatiky Interaktívna výuková webová aplikácia na riešenie úloh o pravdepodobnosti Bakalárska práca 2016 Zuzana Majeríková Univerzita

More information

obsahuje 5 príkladov, spolu 29>25 bodov skupina:

obsahuje 5 príkladov, spolu 29>25 bodov skupina: Midterm 2013, verzia A Meno a priezvisko: obsahuje 5 príkladov, spolu 29>25 bodov skupina: 1A) [8 bodov] Zistite, čo počíta nasledujúca rekurzívna funkcia foo pre n>=0. Hint: foo(2013) = 6. static long

More information

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c)

Jazyk SQL. Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) Jazyk SQL Jaroslav Porubän, Miroslav Biňas, Milan Nosáľ (c) 2011-2016 Jazyk SQL - Structured Query Language SQL je počítačový jazyk určený na komunikáciu s relačným SRBD neprocedurálny (deklaratívny) jazyk

More information

Kapitola 8 Začíname s programom Base

Kapitola 8 Začíname s programom Base Začíname s programom LibreOffice 4.2 Kapitola 8 Začíname s programom Base Vytváranie vstavanej plochej databázy Autorské práva Tento dokument je duševným vlastníctvom dokumentačného tímu LibreOffice Copyright

More information

Malé velké databázy III. / 1. cast

Malé velké databázy III. / 1. cast Malé velké databázy III. / 1. cast Hovorí sa, že tam, kde sa nieco koncí, iné sa zacína. Oficiálny školský rok sa blíži k úspešnému koncu, ale my zacíname. Preto vás vítam na vysokej škole databáz. Ako

More information

CMPS 221 Sample Final

CMPS 221 Sample Final Name: 1 CMPS 221 Sample Final 1. What is the purpose of having the parameter const int a[] as opposed to int a[] in a function declaration and definition? 2. What is the difference between cin.getline(str,

More information

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová

Ochrana proti DDoS za použitia open-source software. Katarína Ďurechová Ochrana proti DDoS za použitia open-source software Katarína Ďurechová katarina.durechova@nic.cz 30.11.2013 Distributed Denial of Service odopretie služby dosiahnutím limitu pripojenia sieťovej karty CPU

More information

Mesačná kontrolná správa

Mesačná kontrolná správa Mesačná kontrolná správa Štrukturálna štúdia dec.16 nov.16 okt.16 sep.16 aug.16 júl.16 jún.16 máj.16 apr.16 mar.16 feb.16 jan.16 Internetová populácia SR 12+ 3 728 988 3 718 495 3 718 802 3 711 581 3 700

More information

Komunikačné protokoly 2005 KP 2005 #3 - IP v02.doc

Komunikačné protokoly 2005 KP 2005 #3 - IP v02.doc Smerovanie a prepájanie v sieťach Dátové siete zabezpečujú prenos dát od zdoja k cieľu. Aby mohol takýto prenos fungovať, musia byť zavedené mená a adresy. Každému koncovému bodu je priradená jednoznačná

More information

Tvorba plánov v softvérovom projekte, rozdelenie úloh, plnenie a aktualizácia plánov

Tvorba plánov v softvérovom projekte, rozdelenie úloh, plnenie a aktualizácia plánov Tvorba plánov v softvérovom projekte, rozdelenie úloh, plnenie a aktualizácia plánov MARIÁN SALAJ Slovenská technická univerzita Fakulta informatiky a informačných technológií Ilkovičova 3, 842 16 Bratislava

More information

LL LED svietidlá na osvetlenie športovísk. MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám.

LL LED svietidlá na osvetlenie športovísk. MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám. LL LED svietidlá na osvetlenie športovísk MMXIII-X LEADER LIGHT s.r.o. Všetky práva vyhradené. Uvedené dáta podliehajú zmenám. LL SPORT LL SPORT je sofistikované vysoko výkonné LED svietidlo špeciálne

More information

SLOVENSKÁ TECHNICKÁ UNIVERZITA FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ ILKOVIČOVA 3, BRATISLAVA 4

SLOVENSKÁ TECHNICKÁ UNIVERZITA FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ ILKOVIČOVA 3, BRATISLAVA 4 SLOVENSKÁ TECHNICKÁ UNIVERZITA FAKULTA INFORMATIKY A INFORMAČNÝCH TECHNOLÓGIÍ ILKOVIČOVA 3, 842 16 BRATISLAVA 4 TÍM 13 SIMULÁCIA DEMONŠTRÁCIE V MESTE DEVELOPERSKÁ PRÍRUČKA Vedúci projektu: Ing. Ivan Kapustík

More information

Vzorové riešenia 2. kola zimnej časti

Vzorové riešenia 2. kola zimnej časti Korešpondenčný seminár z programovania XXXII. ročník, 2014/15 Katedra základov a vyučovania informatiky FMFI UK, Mlynská Dolina, 842 48 Bratislava Vzorové riešenia 2. kola zimnej časti 1. Zwarte Doos vzorák

More information

IMPLEMENTACE MODULÁRNÍ ARITMETIKY DO OBVODŮ FPGA A ASIC

IMPLEMENTACE MODULÁRNÍ ARITMETIKY DO OBVODŮ FPGA A ASIC VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV MIKROELEKTRONIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF

More information

6. Riadenie chodu programu

6. Riadenie chodu programu 6. Riadenie chodu programu 6.1. Výrazový príkaz 6.2. Prázdny príkaz 6.3. Bloky. 6.4. Oblasť platnosti identifikátora 6.5. Podmienený príkaz if-else. 6.6. Prepínač 6.7. Cykly Cyklus while Cyklus for Cyklus

More information

Fundamentals of Programming. Lecture 19 Hamed Rasifard

Fundamentals of Programming. Lecture 19 Hamed Rasifard Fundamentals of Programming Lecture 19 Hamed Rasifard 1 Outline C++ Object-Oriented Programming Class 2 C++ C++ began as an expanded version of C. C++ improves on many of C s features and provides object-oriented-programming

More information

3D Modelovanie a vizualizácia matematických dát

3D Modelovanie a vizualizácia matematických dát SVOČ 2013 Opava 3D Modelovanie a vizualizácia matematických dát Meno Priezvisko študenta: Škola: Fakulta: Ročník a program/odbor štúdia: Vedúci práce: Katedra: Balázs Kósa Slovenská technická univerzita

More information

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY PREVÁDZKA PORTÁLU PROJEKTOV VÝUKOVEJ ROBOTIKY CENTROBOT Bakalárska práca 2015 Denis Spišák UNIVERZITA KOMENSKÉHO V BRATISLAVE

More information

MATLAB EXCEL BUILDER A NÁVRH PID REGULÁTOROV PRE PROSTREDIE MS EXCEL

MATLAB EXCEL BUILDER A NÁVRH PID REGULÁTOROV PRE PROSTREDIE MS EXCEL MATLAB EXCEL BUILDER A NÁVRH PID REGULÁTOROV PRE PROSTREDIE MS EXCEL Martin Foltin, Ivan Sekaj Fakulta elektrotechniky a informatiky, Slovenská Technická Univerzita, Ilkovičova 3, 812 19 Bratislava, Slovenská

More information

7. UKAZOVATELE, POLIA A REŤAZCE

7. UKAZOVATELE, POLIA A REŤAZCE 7. UKAZOVATELE, POLIA A REŤAZCE 7.1. Ukazovatele 7.2. Pole 7.3. Aritmetika ukazovateľov 7.4. Reťazce 7.5. Viacrozmerné pole, ukazovateľ na ukazovateľ 7.6. Ukazovateľ na ukazovateľ a pole ukazateľov 7.7.

More information

Computer Programming

Computer Programming Computer Programming Dr. Deepak B Phatak Dr. Supratik Chakraborty Department of Computer Science and Engineering Session: Parameter Passing in Function Calls Dr. Deepak B. Phatak & Dr. Supratik Chakraborty,

More information

Object oriented programming

Object oriented programming Exercises 3 Version 1.0, 24 February, 2017 Table of Contents 1. Classes...................................................................... 1 1.1. Defining class..........................................................

More information

Refaktorovanie jazyka JavaScript a DHTML

Refaktorovanie jazyka JavaScript a DHTML Univerzita Komenského Fakulta Matematiky, Fyziky a Informatiky Ústav Informatiky Marián Marcinčák Refaktorovanie jazyka JavaScript a DHTML Diplomová práca Školiteľ : RNDr. Marián Vittek, PhD. Bratislava

More information

C++ Scope Resolution Operator ::

C++ Scope Resolution Operator :: C++ Scope Resolution Operator :: C++The :: (scope resolution) operator is used to qualify hidden names so that you can still use them. You can use the unary scope operator if a namespace scope or global

More information

GRAFIKA V JAZYKU C (knižnica SDL)

GRAFIKA V JAZYKU C (knižnica SDL) Škola pre Mimoriadne Nadané Deti a Gymnázium, Teplická 7, 831 02 Bratislava Anino BELAN GRAFIKA V JAZYKU C (knižnica SDL) učebný text pre kvartu a kvintu osemročného gymnázia BRATISLAVA 2012 Copyright

More information

e-scheme Návod na použitie

e-scheme Návod na použitie e-scheme Návod na použitie Pár krokov ako používať program Otvorte webovú stránku http://www.labquality.fi/eqa-eqas/ Kliknite na Login to LabScala Username: zadajte váš laboratórny kód Password: zadajte

More information

Name SECTION: 12:45 2:20. True or False (12 Points)

Name SECTION: 12:45 2:20. True or False (12 Points) Name SECION: 12:45 2:20 rue or False (12 Points) 1. (12 pts) Circle for true and F for false: F a) Local identifiers have name precedence over global identifiers of the same name. F b) Local variables

More information

Mesačná kontrolná správa

Mesačná kontrolná správa Mesačná kontrolná správa Štrukturálna štúdia mar.18 feb.18 jan.18 dec.17 nov.17 okt.17 sep.17 aug.17 júl.17 jún.17 máj.17 apr.17 mar.17 Internetová populácia SR 12+ 3 904 509 3 802 048 3 870 654 3 830

More information

CMSC 202 Midterm Exam 1 Fall 2015

CMSC 202 Midterm Exam 1 Fall 2015 1. (15 points) There are six logic or syntax errors in the following program; find five of them. Circle each of the five errors you find and write the line number and correction in the space provided below.

More information

Aplikačný rámec Spring. Róbert Novotný.

Aplikačný rámec Spring. Róbert Novotný. Róbert Novotný robert.novotny@upjs.sk Krátka história Springu Rod Johnson Expert One on One: J2EE Design and Development (2001) ako sa vysporiadať s problémami vývoja enterprise aplikácií? dajú sa problémy

More information

Fuzzy teoria a jazyk SQL

Fuzzy teoria a jazyk SQL Fuzzy teoria a jazyk SQL Jazyk SQL používa Booleovu algebru, čo prináša jeden veľký problém. V otázke typu A and B and C and... Z, je nesprávnosť z uhla pohľadu v tom, že otázke nevyhovujú údaje, ktoré

More information

Komunikačné protokoly 2004 KP 2004 #3 - IP v03.doc

Komunikačné protokoly 2004 KP 2004 #3 - IP v03.doc Smerovanie a prepájanie v sieťach Dátové siete zabezpečujú prenos dát od zdoja k cieľu. Aby mohol takýto prenos fungovať, musia byť zavedené mená a adresy. Každému koncovému bodu je priradená jednoznačná

More information

Analýza a vizualizácia veľkých dát

Analýza a vizualizácia veľkých dát MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Analýza a vizualizácia veľkých dát DIPLOMOVÁ PRÁCA Bc. Jakub Caban Brno, 2015 Prehlásenie Prehlasujem, že táto diplomová práca je mojím pôvodným autorským dielom,

More information

Február Scrum: Vyvinuli a udržiavajú Ken Schwaber a Jeff Sutherland

Február Scrum: Vyvinuli a udržiavajú Ken Schwaber a Jeff Sutherland Február 2010 Scrum: Vyvinuli a udržiavajú Ken Schwaber a Jeff Sutherland Poďakovanie Úvod Scrum je založený na najlepších skúsenostiach z odvetvia, ktoré sa už po desaťročia používajú a preverujú. Len

More information

C++ basics Getting started with, and Data Types.

C++ basics Getting started with, and Data Types. C++ basics Getting started with, and Data Types pm_jat@daiict.ac.in Recap Last Lecture We talked about Variables - Variables, their binding to type, storage etc., Categorization based on storage binding

More information