Programozási tételek újrafelhasználható osztálysablon könyvtára
|
|
- Henrik Nagy
- 4 évvel ezelőtt
- Látták:
Átírás
1 Programozási tételek újrafelhasználható osztálysablon könyvtára
2 Cél Legyen egy programozási tételeket általánosan leíró kódkönyvtár (osztálysablon könyvtár), amely felhasználásával a visszavezetéssel tervezett programjainkat minimális erőfeszítéssel (ciklusok írása nélkül) implementálhatjuk. Egy feladat megoldása egy ún. tevékenység objektum legyen, amelynek 1. osztályát a kódkönyvtár egy osztálysablonjából származtatjuk, 2. megadva annak sablon paramétereit és felülírva a metódusait, 3. majd futási időben egy felsoroló objektumot is csatolunk hozzá. Procedure Enumerator MaxSearch Summation Counting LinSearch Selection Gregorics Tibor: Objektumelvű programozás SeqInFile Enumerator Interval Enumerator StringStream Enumerator Array Enumerator 2
3 Programozási tételek ősciklusa felsorolt elemek típusa template <typename Item> void run() felsoroló objektumra mutató pointer { if (_enor==nullptr ) throw MISSING_ENUMERATOR ; initialization t.first() t.end() body( t.current() ) t.next() } default:!_enor->end() && whilecond(_enor->current()) init(); for ( first(); loopcond(); _enor->next() ) { default: true body(_enor->current()); } default: _enor->first() Ez a run() függvény bármelyik programozási tétel algoritmusának leírására alkalmas, ha az init(), és a body() függvényeket megfelelő módon definiáljuk. Lehetőség van a first(), a whilecond(), vagy akár a teljes loopcond() függvényt felüldefiniálására is, ha a felsorolást indítását illetve leállását módosítani akarjuk. Gregorics Tibor: Objektumelvű programozás 3
4 Programozási tételek ősosztálya template <typename Item> class Procedure { protected: Enumerator<Item> *_enor; felsorolt elemek típusa Procedure():_enor(nullptr){} virtual void init()= 0; virtual void body(const Item& current) = 0; virtual void first() {_enor->first();} felsoroló objektumra mutató pointer a run() sablon-metódus felüldefiniálható paraméter-metódusai virtual bool whilecond(const Item& current) const { return true;} virtual bool loopcond() const { return!_enor->end()&& whilecond(_enor->current());} nem írható felül a leszármazott osztályokban public: enum Exceptions { MISSING_ENUMERATOR }; konkrét felsoroló objektum hozzáadása virtual void run() final; virtual void addenumerator(enumerator<item>* en) final { _enor = en;} virtual ~Procedure(){} }; procedure.hpp az ősciklus sablon-metódusa, amelyik paraméter-metódusokat hív meg a sablon-függvény tervminta szerint Gregorics Tibor: Objektumelvű programozás 4
5 Általános maximum keresés Procedure +run() : void {final} +addenumerator() : void {final} # init() : void {virtual} # first() : void {virtual} # body(item) : void {virtual} # loopcond() : bool {virtual} # whilecond(item) : bool {virtual} Item MaxSearch Item, Value # l : bool # opt : Value # optelem : Item # init() : void {override, final} # body(e : Item) : void {override, final} # func(item) : Value {virtual, query} # cond(item) : bool {virtual, query} + found() : bool {query} + opt() : Value {queryl} + optelem() : Item {queryl} #enor Gregorics Tibor: Objektumelvű programozás <<interface>> Enumerator Item az Item típusú elemeknek a Value típusú értékeit hasonlítjuk össze l := false if cond(e) then skip elsif cond(e) l then if func(e) > opt then opt, optelem := func(e), e endif elsif cond(e) l then l, opt, optelem := true, func(e), e endif return true 5
6 Maximum keresés osztálya template <typename Item, typename Value = Item, typename Compare = Greater<Value> > class MaxSearch : public Procedure<Item> { protected: bool _l; Item _optelem; Value _opt; Compare _better; void init() override final { _l = false; } void body(const Item& e) override final; a maximum vagy minimum kereséshez biztosítja a megfelelő összehasonlítást két Value típusú értékeket összehasonlító adattag ősciklusban bevezetett paramétermetódusok végleges felüldefiniálása további felüldefiniálható paraméter-metódusok }; virtual Value func(const Item& e) const = 0; virtual bool cond(const Item& e) const { return true; } public: bool found() const { return _l; } Value opt() const { return _opt; } Item optelem() const { return _optelem; } eredmény lekérdezése maxsearch.hpp Gregorics Tibor: Objektumelvű programozás 6
7 Maximum keresés ciklusmagja template <typename Item, typename Value, typename Compare> void MaxSearch<Item,Value,Compare>::body(const Item& e) { } if (!cond(e) ) return; Value val = func(e); if (_l){ if (_better(val, _opt)){ _opt = val; _optelem = e; } } else { _l = true; _opt = val; _optelem = e; } Kell, hogy a Compare helyébe olyan típus kerüljön, amely úgy implementálja az operator(,)-t, hogy a _better objektum kívánt módon hasonlítsa össze a val és az _opt értékeit. maxsearch.hpp Gregorics Tibor: Objektumelvű programozás 7
8 Összehasonlító osztályok template <typename Value> class Greater{ public: bool operator()(const Value& l, const Value& r) { return l > r; Ha a _better típusa a Greater<int>, } akkor _better(2,5) azonos a 2>5 értékével. }; template <typename Value> Ha a _better típusa a Less<int>, class Less{ akkor _better(2,5) azonos a 2<5 értékével. public: bool operator()(const Value& l, const Value& r) { return l < r; } }; maxsearch.hpp Gregorics Tibor: Objektumelvű programozás 8
9 Felsorolók Item SeqInFileEnumerator <<interface>> Enumerator Item +first() : void {virtual} +next() : void {virtual} +current() : Item {virtual} +end() : bool {virtual} Item Procedure #enor Item StringStreamEnumerator # f : file of Item # df : Item + first() : void {override} + next() : void {override} + current() : Item {override} + end() : bool {override} ArrayEnumerator Item Item = int IntervalEnumerator # ss : stringstream # ds : Item + first() : void {override} + next() : void {override} + current() : Item {override} + end() : bool {override} # vect : Item[m..n] # ind : int + first() : void {override} + next() : void {override} + current() : Item {override} + end() : bool {override} # m, n : int # ind : int + first() : void {override} + next() : void {override} + current() : Item {override} + end() : bool {override} Gregorics Tibor: Objektumelvű programozás 9
10 Intervallum és Tömb felsorolója class IntervalEnumerator : public Enumerator<int> { protected: int _m, _n; int _ind; public: IntervalEnumerator(int m, int n):_m(m), _n(n){} void first() override { _ind = m; } void next() override { ++_ind; } bool end() const override { return _ind>_n; } Item current() const override { return _ind; } }; intervalenumerator.hpp template <typename Item> arrayenumerator.hpp class ArrayEnumerator : public Enumerator<Item> { protected: const std::vector<item> *_vect; unsigned int _ind; public: ArrayEnumerator(const std::vector<item> *v):_vect(v){} void first() override { _ind = 0; } void next() override { ++_ind; } bool end() const override { return _ind>=_vect->size(); } Item current() const override { return (*_vect)[_ind]; } }; Gregorics Tibor: Objektumelvű programozás 10
11 Szekvenciális inputfájl felsorolója template <typename Item> class SeqInFileEnumerator : public Enumerator<Item>{ protected: std::ifstream _f; Item _df; public: enum Exceptions { OPEN_ERROR }; SeqInFileEnumerator(const std::string& str){ _f.open(str); Az Item-re legyen értelmes if(_f.fail()) throw OPEN_ERROR; az istream& operator>> } void first() override { _f >> _df; } void next() override { _f >> _df; } bool end() const override { return _f.fail(); } Item current() const override { return _df; } }; seqinfileenumerator.hpp A könyvtárban ez az osztály ennél összetettebb: egyrészt rendelkezik egy olyan (Item = char) specializációval, amely kikapcsolja az elválasztó jeleket (white-space) figyelmen kívül hagyó mechanizmust, másrészt soronkénti olvasás esetén az üres sorokat figyelmen kívül hagyja. Gregorics Tibor: Objektumelvű programozás 11
12 StringStreamEnumerator template <typename Item> class StringStreamEnumerator : public Enumerator<Item> { protected: std::stringstream _ss; Az Item-re legyen értelmes az istream& operator>> Item _df; public: StringStreamEnumerator(std::stringstream& ss) {_ss << ss.rdbuf(); } }; void first() override { _ss >> _df; } void next() override { _ss >> _df; } bool end() const override { return!_ss;} Item current() const override { return _df; } stringstreamenumerator.hpp Gregorics Tibor: Objektumelvű programozás 12
13 1. Feladat Adott egy egész számokat tartalmazó szöveges állomány. Keressük meg ebben a legnagyobb páratlan számot! A : f:infile(z), l:l, max:z Ef : f = f 0 Uf : l, max = MAX e f0 e páratlan e Feltételes maximum keresés t:enor(e) ~ f:infile(z) felsorolása H, > ~ Z, > f(e) ~ e felt(e) ~ e páratlan E / Item ~ Z / int H / Value ~ Z / int f(e) / func(e) ~ e felt(e) / cond(e) ~ e páratlan / e%2!=0 Gregorics Tibor: Objektumelvű programozás 13
14 Megoldás osztálydiagramja Item, Value, Compare MaxSearch #enor Item SeqInFileEnumerator # func(item) : Value {virtual} # cond(item) : bool {virtual} Item = int Greater Value Item = int, Value = int, Compare = Greater<int> +operator(value,value):bool #better MyMaxSearch # func(e:int) : int {override} # cond(e:int) : bool {override} Value = int return e mod 2!=0 return e Gregorics Tibor: Objektumelvű programozás 14
15 A megvalósításhoz készített kód class MyMaxSearch : public MaxSearch<int>{ protected: int func(const int& e) const override { return e;} bool cond(const int& e) const override { return e%2!=0;} }; } int main(){ try { tevékenység objektum MyMaxSearch pr; SeqInFileEnumerator<int> enor("input.txt"); pr.addenumerator(&enor); pr.run(); felsoroló objektum működés if (pr.found()) cout << "The greatest odd integer:" << pr.optelem(); else cout << "There is no odd integer!"; } catch(seqinfileenumerator<int>::exceptions ex){ if (SeqInFileEnumerator<int>::OPEN_ERROR == ex ) cout << "Wrong file name!"; } return 0; input.txt Gregorics Tibor: Objektumelvű programozás 15
16 2. Feladat Egy forgalomszámlálás során egy hónapon keresztül számolták, hogy óránként hány utas lép be egy adott metróállomás területére. (A méréseket hétfőn kezdték, de nem minden nap és nem minden órában végeztek megfigyelést.) Az időt négyjegyű számmal kódolták, amelynek első két jegye a mérés napját mutatja (pontosabban azt, hogy hányadik napja ez a megfigyelésnek), utolsó két jegye a nap azon óráját mutatja, amikor a mérés született. A méréseket egy szöveges állományban rögzítették időkód-létszám párok formájában. A hétvégi napok közül (melyik nap melyik órájában) mikor léptek be az állomás területére legkevesebben? input.txt Gregorics Tibor: Objektumelvű programozás 16
17 Megoldás specifikációja A : f:infile(mérés), l:l, min:n, elem: Mérés Mérés = rec( időpont : N, létszám : N ) Ef : f = f 0 Uf : l, min, elem = MIN e f0 e.időpont hétvége e.létszám Feltételes maximum keresés t:enor(item) ~ f:infile(mérés) felsorolása Item ~ Mérés Value, > ~ N, < func(e) ~ e.létszám cond(e) ~ e.időpont hétvége e.időpont/100%7 == 6 e.időpont/100%7==0 Gregorics Tibor: Objektumelvű programozás 17
18 Megoldás osztálydiagramja Item, Value, Compare MaxSearch #enor Item SeqInFileEnumerator # func(item) : Value {virtual} # cond(item) : bool {virtual} Item = Mérés Less Value Mérés időpont : int létszám : int Item = Mérés, Value = int, Compare = Less<int> +operator(value,value):bool #better MyMinSearch # func(e : Mérés) : int {override} # cond(e : Mérés) : bool {override} Value = int return e.időpont hétvége return e.létszám Gregorics Tibor: Objektumelvű programozás 18
19 Elemi típus (Mérés) struct Measurement{ int timestamp; int number; input.txt }; int day() const { return timestamp/100; } int hour() const { return timestamp%100; } a szekvenciális inputfájl Pair típusú elemeinek felsorolásához kell istream& operator>>(istream& f, Measurement& df) { f >> df.timestamp >> df.number; return f; } Gregorics Tibor: Objektumelvű programozás 19
20 Főprogram class MyMinSearch: public MaxSearch< Measurement, int, Less<int> > { protected: int func(const Measurement &e) const override { return e.number; } bool cond(const Measurement &e) const override { return e.day()%7==6 e.day()%7==0; } }; int main() { try { MyMinSearch pr; SeqInFileEnumerator< Measurement > enor("input.txt"); pr.addenumerator(&enor); pr.run(); } if (pr.found()){ Pair p = pr.optelem(); cout << "The least busy hour was the " << p.hour() << ". hour of the " << p.day() << ". day when " << pr.opt() << " people stepped into the station.\n"; } else cout << "There is no weekend data.\n"; } catch(exceptions ex){ if (OPEN_ERROR == ex ) cout << "File open error!"; } return 0; Gregorics Tibor: Objektumelvű programozás 20
21 3. Feladat Egy szöveges állomány sorai recepteket tartalmaznak, ahol egy recept az étel nevéből (sztring) és a hozzávalók felsorolásából áll. Egy hozzávalót anyagnévvel (sztring), mennyiséggel (szám), és mértékegységgel (sztring) adunk meg. Példa egy sorra: tejbegríz tej 1 liter búzadara 13 evőkanál vaj 6 dkg cukor 5 evőkanál Hány receptnek hozzávalója a cukor? A : f:infile(recept), db:n Recept = rec(név : String, hozzávalók : Hozzávaló * ) Hozzávaló = rec(anyag : String, mennyiség : N, mérték : String) Ef : f = f 0 részfeladat: van-e a hozzávalók között cukor? Uf : db = e f0 1 van_cukor(e) = SEARCH e.hozzávalók[i].anyag=cukor van_cukor(e) i=1.. e.hozzávalók Számlálás t:enor(item) ~ f:infile(recept) felsorolása Item ~ Recept cond(e) ~ van_cukor(e) egy sor elemei alapján Lineáris keresés t:enor(item) ~ e.hozzávalók : Hozzávaló * felsorolása Item ~ Hozzávaló cond(e) ~ e.hozzávalók[i].anyag=cukor Gregorics Tibor: Objektumelvű programozás 21
22 Összegzés és Számlálás Procedure Item Item, Value Summation # result : Value # init() : void {override, final} # body(e : Item) : void {override, final} # func(item) : Value {virtual, query} # neutral() : Value {virtual, query} # add(value,value) : Value {virtual, query} # cond(item) : bool {virtual, query} + result() : Value {query} feltételes összegzés result := neutral() if cond(e) then result := add(result, func(e)) endif return true Counting Value = int Item # func(e:item) : int {override, final, query} # neutral() : int {override, final, query} # add(int, int) : int {override, final, query} return 1 return 0 return a+b Gregorics Tibor: Objektumelvű programozás 22
23 1. megoldás kezdete main pr : MyCounting enor : SeqInFileEnumerator<Recipe> ( input.txt ) pr.addenumerator(&enor) pr.run() return pr.result() MyCounting : Counting Item = Recipe # cond(e:recipe) : bool {override} Recipe name : string vect : Ingredient[*] Ingredient substance : string quantity : int unit : string pr : MyLinSearch enor : ArrayEnumerator< Ingredient> (e.vect) pr.addenumerator(&enor) pr.run() return pr.found() Gregorics Tibor: Objektumelvű programozás 24
24 Lineáris keresés és kiválasztás Procedure Item pesszimista vagy optimista a pesszimista a default Item, optimist : bool LinSearch # l : bool # elem : Item l := optimist # init() : void {final} # body(item) : void {final} l := cond(e) # cond(item) : bool {virtual} elem := e # whilecond(item) : bool {final} + found() : bool {query} if optimist + elem() : Item {query} then return l else return not l endif Selection Item # init() : void {final} # body(item) : void {final} # cond(item) : bool {virtual} # loopcond(item) : bool {final} + elem() : Item {query} return not cond(enor.current()) skip skip Gregorics Tibor: Objektumelvű programozás 25
25 1. megoldás folytatása main pr : MyCounting enor : SeqInFileEnumerator<Recipe> ( input.txt ) pr.addenumerator(&enor) pr.run() return pr.result() MyCounting : Counting Item = Recipe # cond(e:recipe) : bool {override} pr : MyLinSearch enor : ArrayEnumerator< Ingredient> (e.vect) pr.addenumerator(&enor) pr.run() return pr.found() Item = Ingredient MyLinSearch : LinSearch # cond(e: Ingredient):bool {override} Ingredient substance : string quantity : int unit : string Recipe name : string vect : Ingredient[*] operator>>(is:istream, e:recipe) line : string getline(is, line) ss : stringstream(line) ss >> e.name át kellene másolni a hozzávalókat az ss-ből az e.vect tömbbe return e.substance= sugar Gregorics Tibor: Objektumelvű programozás 28
26 Sorozatok (vector, ostream) előállítása összegzéssel A másolások, listázások, kiválogatások összegzésként történő előállításához specializáltuk a Summation sablont: Value = vector<value> esetén az eredmény egy (konstruktor segítségével átvett vagy helyben definiált) sorozat, Value = ostream esetén az eredmény egy output adatfolyam. A func() metódust állítja elő azt az elemet, amelyet az eredménysorozathoz kell hozzáfűzni. Value = vector<value> esetén Value func(item) const Value = ostream esetén string func(item) const A cond() metódus felüldefiniálásával lehet elérni, hogy a felsorolt elemeknek csak egy részét vegye figyelembe. Nem kell a neutral() és add() műveleteket megadni. Gregorics Tibor: Objektumelvű programozás 29
27 Szöveges állományból beolvasott egész számokat hozzáfűzünk egy tömbhöz, majd a tömb páros elemeit kiírjuk class Concat : public Summation<int, vector<int> >{ public: Concat(const vector<int> &v) : Summation<int, vector<int> >(v) {} protected: int func(const int &e) const override { return e; } }; class Write : public Summation<int, ostream > { public: Write(ostream* o) : Summation<int, ostream>(o) {} protected: string func(const int &e) const override { }; ostringstream os; os << e << " " ; return os.str(); vector<int> v = { -17, 42 }; Concat pr1(v); SeqInFileEnumerator<int> enor1("input.txt"); } pr.addenumerator(&enor1); bool cond(const int &e) const override { pr1.run(); return e%2==0; } Write pr2(&cout); ArrayEnumerator<int> enor2(&pr1.result()); pr2.addenumerator(&enor2); pr2.run(); Gregorics Tibor: Objektumelvű programozás 31
28 1. megoldás vége main pr : MyCounting enor : SeqInFileEnumerator<Recipe> ( input.txt ) pr.addenumerator(&enor) pr.run() return pr.result() MyCounting : Counting Item = Recipe # cond(e:recipe) : bool {override} pr : MyLinSearch enor : ArrayEnumerator< Ingredient> (e.vect) pr.addenumerator(&enor) pr.run() return pr.found() Item = Ingredient MyLinSearch : LinSearch # cond(e: Ingredient):bool {override} Recipe name : string vect : Ingredient[*] operator>>(is:istream, e:recipe) line : string getline(is, line) ss : stringstream(line) ss >> e.name pr : Copy enor : StringStreamEnumerator<Ingredient>(ss) pr.addenumerator(&enor) pr.run() e.vect := pr.result() operator>>(is:istream, Ingredient substance : string quantity : int unit : string Value = Ingredient[*] Copy : Summation # func(e:ingredient) : Ingredient {override} return e.substance= sugar Item = Ingredient e:ingredient) is >> e.substance >> e.quantity >> e.unit return e Gregorics Tibor: Objektumelvű programozás 32
29 2. megoldás main pr : MyCounting enor : SeqInFileEnumerator<Recipe>( input.txt ) pr.addenumerator(&enor) pr.run() return pr.result() MyCounting : Counting Item = Recipe # cond(e:recipe) : bool {override} Recipe name : string has_sugar : bool return e.has_sugar Ingredient substance : string quantity : int unit : string operator>>(is:istream, e:recipe) line : string getline(is, line) ss : stringstream(line) ss >> e.name pr : MyLinSearch enor : StringStreamEnumerator<Ingredient>(ss) pr.addenumerator(&enor) pr.run() e.has_sugar := pr.found() operator>>(is:istream, is >> e.substance >> e.quantity >> e.unit Item = Ingredient MyLinSearch : LinSearch # cond(e: Ingredient):bool {override} return e. substance = sugar e:ingredient) Gregorics Tibor: Objektumelvű programozás 33
30 4. Feladat Egy szöveges állományban aszteroidákról vett megfigyeléseket tárolnak (egy aszteroidáról akár többet is). Minden sor egy megfigyelést tartalmaz: az aszteroida kódját (sztring), egy dátumot (sztring), az aszteroida tömegét (ezer tonnában), az aszteroida távolságát a Földtől (százezer kilométerben). AXS Az állomány aszteroidák kódja szerint növekedően rendezett. Listázzuk ki azokat az aszteroidákat a legnagyobb mért tömegükkel, amelyek minden megfigyeléskor 1 milliárd kilométernél közelebb voltak a Földhöz! A : f:infile(megfigyelés), cout:outfile(string N) Megfigyelés = rec( azon : String, dátum : String, tömeg : N, távolság : N) A : t:enor(aszteroida), cout:outfile(string N) Aszteroida = rec(azon : String, tömeg : N, közel : L) Ef : t = t 0 Uf : cout = e t0 e.közel <(e.azon, e.tömeg)> Összegzés (kiválogatás) t:enor(item) ~ t:enor(aszteroida) Item ~ Aszteroida Value, +, 0 ~ (String N)*,, <> func(e) ~ (e.azon, e.tomeg) cond(e) ~ e.közel Gregorics Tibor: Objektumelvű programozás 34
31 Megoldás terve main pr : Assortment(&cout) enor : AsteroidEnumerator("input.txt") pr.addenumerator(&enor) pr.run() Item = Asteroid Value = ostream Assortment : Summation # cond(e:asteroid) : bool {override} # func(e:asteroid) : string {override} return e.near f := new SeqInFileEnumerator<Observation>(str) Item = Asteroid AsteroidEnumerator : Enumerator - f : SeqInFileEnumerator<Observation> - current : Asteroid - end : bool + AsteroideaEnumerator(string) # first() : void {override} # next() : void {override} # current() : Asteroid {override} # end() : bool {override} f.first() next() return current return end return string(e) Asteroid id : string mass : int near : bool Observation id : string date : string mass : int distance : int operator>>(is:istream, e:observation) is >> e.id >> e.date >> e.mass >> e.distance Gregorics Tibor: Objektumelvű programozás 35
32 Egy aszteroida adatainak olvasása A next() metódus kiszámolja egy aszteroida legnagyobb tömegét, valamint azt, hogy mindig közelebb volt-e a Földhöz, mint 1 milliárd kilométer. A : f:infile(megfigyelés), e:megfigyelés, st:status, akt:aszteroida, vége:l Megfigyelés = rec( azon:string, dátum:string, tömeg:n, távolság:n) Aszteroida = rec(azon:string, tömeg:n, közel:l) Ef : f = f e = e st = st Uf : vége = (st =abnorm) ( vége akt.azon = e.azon a két feldolgozás eltérő állapotokban állhat le e.azon = akt.azon akt.tömeg, st, e, f = MAX e (e, f ) e.tömeg e.azon = akt.azon ezt a két felsorolást nem szabad szekvenciába tenni, össze kell vonni egy ciklusba akt.közel, st, e, f = SEARCH e (e, f ) e.távolság<10000 ) ) Gregorics Tibor: Objektumelvű programozás 36
33 Két programozási tétel összevonása Egy aszteroida legnagyobb tömegét megadó maximum kiválasztást, és a Földhöz való közelségét kiszámoló optimista lineáris keresést közös ciklusba kellene vonni. Maximum kiválasztás t:enor(item) ~ f:infile(megfigyelés) first() nélkül amíg azonosítót nem vált Item ~ Megfigyelés Value, > ~ N, > func(e) ~ e.tömeg Összegzés t:enor(item) ~ f:infile(megfigyelés) first() nélkül amíg azonosítót nem vált Item ~ Megfigyelés Value, +, 0 ~ N, max, 0 func(e) ~ e.tömeg nem vonhatók össze Optimista lineáris keresés t:enor(item) ~ f:infile(megfigyelés) first() nélkül amíg azonosítót nem vált Item ~ Megfigyelés cond(e) ~ e.táv < összevonhatók Összegzés t:enor(item) ~ f:infile(megfigyelés) first() nélkül amíg azonosítót nem vált Item ~ Megfigyelés Value, +, 0 ~ L,, igaz func(e) ~ e.táv < Gregorics Tibor: Objektumelvű programozás 37
34 next() metódus terve next end := f.end()) if end then return endif current.id := f.current().id pr : DoubleSummation (current.id) pr.addenumerator(f) pr.run() current.mass := pr.result().mass current.near := pr.result().near Result mass : int near : bool Result(int, bool) Item = Observation Value = Result DoubleSummation : Summation - id : string + DoubleSummation(str : string) # func(const Observation& e) : Result {override} # neutral() : Result {override} # add(result a, Result b) : Result {override} # first() : void {override} # whilecond(observation e) : bool {override} skip Asteroid id : string mass : int near : bool return e.id = id Observation id : string date : string mass : int distance : int id = str return Result( e.mass, e.distance < ) return Result( 0, true ) return Result( max(a.mass, b.mass), a.near and b.near) Gregorics Tibor: Objektumelvű programozás 38
Objektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1.
Objektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1. Készítette: Gregorics Tibor Hozzunk létre a programozási tételeket általánosan leíró olyan kódkönyvtárat (osztály-sablon
RészletesebbenObjektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1. Készítette: Gregorics Tibor
Objektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1. Készítette: Gregorics Tibor Hozzunk létre a programozási tételeket általánosan leíró kódkönyvtárat (osztály-sablon könyvtárat),
RészletesebbenProgramozási tételek újrafelhasználása
Programozási tételek újrafelhasználása Cél Adott egy a programozási tételeket általánosan leíró kódkönyvtár (osztálysablon könyvtár), amely felhasználásával a visszavezetéssel tervezett programjainkat
RészletesebbenProgramozási feladatok megoldása visszavezetéssel egy osztály-sablon könyvtárra támaszkodva 1
Programozási feladatok megoldása visszavezetéssel egy osztály-sablon könyvtárra támaszkodva 1 gt@inf.elte.hu ELTE IK Absztrakt. Ebben a cikkben egy osztály-sablon könyvtárat és annak felhasználását ismerhetjük
RészletesebbenOAF Gregorics Tibor: Minta dokumentáció a 4. házi feladathoz 1. Feladat. Megoldás
OAF Gregorcs Tbor: Mnta dokumentácó a 4. ház feladathoz 1. Feladat Adott egy szöveges fájlbel szöveg, ahol a szavakat szóközök, tabulátor-jelek, sorvége-jelek lletve a fájlvége-jel határolja. Melyk a leghosszabb
RészletesebbenProgramozás Minta programterv a 2. házi feladathoz 1.
Programozás Minta programterv a. házi feladathoz 1. Gregorics Tibor. beadandó/0.feladat 01. január 11. EHACODE.ELTE gt@inf.elte.hu 0.csoport Feladat Egy szöveges állományban bekezdésekre tördelt szöveg
RészletesebbenTervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok
Tervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok 1.Feladat Készítsünk olyan kódot, amely segítségével természetes számokat tároló halmazok hozhatók létre. o Egy halmaz-objektum
RészletesebbenProgramozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter
Programozás(A szakirány) II. beadandó feladat 2014.05.05. Farkas András HP6S15 fafee@fafeecorp.com 1. csoport Veszprémi Anna / Hudoba Péter Feladat: Egy szöveges állományban bekezdésekre tördelt szöveg
RészletesebbenEAF II Feladat dokumentáció IV. feladat 4. házi feladathoz
EAF II Feladat dokumentáció IV. feladat 4. házi feladathoz Oldja meg az alábbi feladatokat úgy, hogy a programja csak EGYETLEN HELYEN TARTALMAZHAT CIKLUST az általános összegzést megvalósító osztály-sablon
RészletesebbenObjektum elvű alkalmazások fejlesztése. Verem típus osztály-sablonja
Objektum elvű alkalmazások fejlesztése Verem típus osztály-sablonja Készítette: Gregorics Tibor Készítsünk olyan újra-felhasználható kódot, amellyel vermeket lehet létrehozni és használni. Egy verem-objektum
RészletesebbenSzekvenciális inputfájl felsorolása
Szekvenciális inputfájl felsorolása Szekvenciális inputfájl felsorolása Egy x:infile(e) szekvenciális inputfájl (amely szerkezetileg egy sorozat) elemeit az st,e,x:read művelet (e:e, st:status={abnorm,
RészletesebbenSTL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1
STL gyakorlat C++ Izsó Tamás 2016. május 9. Izsó Tamás STL gyakorlat/ 1 Komponensek kapcsolata Deklarálja az alábbi osztálydiagramon szereplő osztályok közül az A, AA és AB osztályokat! A konstruktorokat
Részletesebben1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon
1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (
RészletesebbenOAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.
OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Szimuláljuk különféle élőlények túlélési versenyét. A lények egy pályán haladnak végig, ahol váltakozó viszonyok vannak. Egy lénynek
RészletesebbenFejlett programozási nyelvek C++ Iterátorok
Fejlett programozási nyelvek C++ Iterátorok 10. előadás Antal Margit 2009 slide 1 Témakörök I. Bevezetés II. Iterátor definíció III. Iterátorok jellemzői IV. Iterátorkategóriák V. Iterátor adapterek slide
RészletesebbenProgramozás Minta programterv a 1. házi feladathoz 1.
Programozás Minta programterv a 1. házi feladathoz 1. Gregorics Tibor 1. beadandó/0.feladat 2008. december 6. EHACODE.ELTE gt@inf.elte.hu 0.csoport Feladat Egy osztályba n diák jár, akik m darab tantárgyat
RészletesebbenObjektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése
Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Készítette: Gregorics Tibor Szabóné Nacsa Rozália Alakítsunk át egy infix formájú aritmetikai kifejezést postfix
RészletesebbenHORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport
10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)
RészletesebbenBánsághi Anna 2014 Bánsághi Anna 1 of 68
IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív
Részletesebben500.AA Megoldó Kulcsár 500.A
Programozás alapjai 2. (inf.) 2. ZH 2019.05.14. lab. hiányzás: + / HFt: ABC123 IL.305./1. p: e: Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra
Részletesebben500.AA Megoldo Arisztid 500.A
Programozás alapjai 2. (inf.) 2. ZH 2018.05.07. lab. hiányzás: 1+2 a/a/1 ABCD123 a/1. kzh: 4 E:3 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra
Részletesebben117. AA Megoldó Alfréd AA 117.
Programozás alapjai 2. (inf.) pót-pótzárthelyi 2011.05.26. gyak. hiányzás: kzhpont: MEG123 IB.028/117. NZH:0 PZH:n Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
RészletesebbenFelhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
Részletesebben1.AA MEGOLDÓ BERCI AA 1.
Programozás alapjai 2. (inf.) 2. zárthelyi 2015.05.07. gyak./lab. hiányzás: 3/2 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra írt megoldásokat
RészletesebbenProgramozás alapjai. 5. előadás
5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk
RészletesebbenAlkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 4. előadás Procedurális programozás: iteratív és rekurzív alprogramok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Részletesebben1000.AA Megoldo Alfréd 1000.A
Programozás alapjai 2. (inf.) 2. PZH 2018.05.22. hiányzás:0+3 L4-R4P ZH: 27,5+26 ABCDEF IB.028/100. Sum:0 e:19 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de
RészletesebbenOEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat. Elemzés 1
OEP Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Különféle élőlények egy túlélési versenyen vesznek részt. A lények egy pályán haladnak végig, ahol váltakozó terep viszonyok vannak.
Részletesebben500. AA Megoldó Alfréd AA 500.
Programozás alapjai 2. NZH 2010.05.13. gyakorlat: / Hiány:0 ZH:0 MEGOLD IB.027/51. Hftest: 0 Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
RészletesebbenC++ Standard Template Library (STL)
Programozási Nyelvek és Fordítóprogramok Tanszék Programozási Nyelvek I. Témák 1 STL alapok 2 STL fogalmak 3 Konténerek 4 Iterátorok 5 Funktorok C++ STL Ne fedezzük fel újra spanyolviaszt! Sok adatszerkezet/algoritmus
RészletesebbenOOP: Java 8.Gy: Abstract osztályok, interfészek
OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus
Részletesebbenmul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk.
Érdi Gerg EF II. 2/2. Feladat Készítsen egy zsák típust! lkalmazzon osztályt! zsákokat rendezett láncolt listával ábrázolja! Implementálja a szokásos m veleteket, egészítse ki az osztályt a kényelmes és
Részletesebben503.AA Megoldo Arisztid 503.A
Programozás alapjai 2. (inf.) 2. ZH 2017.04.27. gy./l. hiány: / ABCD123 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra írt megoldásokat értékeljük!
Részletesebbeninfix kifejezés a+b ab+ +ab postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab Készítette: Szabóné Nacsa Rozália
infix kifejezés a+b ab+ +ab Készítette: Szabóné Nacsa Rozália nacsa@inf.elte.hu postfix kifejezés prefix kifejezés a+b ab+ +ab a+b ab+ +ab 4 Lengyelforma J. Lukasewitz lengyel matematikus használta el
Részletesebben.AA Megoldó Alfréd AA.
Programozás alapjai 2. (inf.) pót zárthelyi 2013.05.23. gyak. hiányzás: kzh: ZH:0 ABCDEF MEG/200. Hftest: (p) Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
Részletesebben128. AA Megoldó Alfréd AA 128.
Programozás alapjai 2. PótZH 2010.05.20. gyakorlat: Hiány:0 ZH: MEGOLD SEHOL/5. Hftest: 0 ZHp: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
Részletesebben500.AJ Megoldó Magyar Magdolna 500.J
Programozás alapjai 2. (inf.) 2. pzh 2017.05.09. gy./l. hiány: / ABCDEF IB.028/1. Z: / / Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra írt
RészletesebbenGlobális operátor overloading
Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal
RészletesebbenFejlett programozási nyelvek C++ Sablonok és adatfolyamok
Fejlett programozási nyelvek C++ Sablonok és adatfolyamok 11. előadás Antal Margit 2009 slide 1 Témakörök Sablonok Függvénysablon Osztálysablon Sablon metaprogramozás Adatfolyamok Operátorok és manipulátorok
RészletesebbenSegédanyag: Java alkalmazások gyakorlat
Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 2. gyakorlat 1 Osztályok és objektumok default, public, protected, private láthatóság a metódusokra és adattagokra (első
RészletesebbenSzövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string
RészletesebbenA feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.
Feladat Készítsen egy egész számokat tartalmazó zsák típust! A zsákot dinamikusan lefoglalt tömb segítségével ábrázolja! Implementálja a szokásos műveleteket (elem betevése, kivétele, üres-e a halmaz,
RészletesebbenC# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18
C# Nyelvi Elemei Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei 2013 1 / 18 Tartalomjegyzék 1 Object 2 Típusok 3 String 4 RegEx Tóth Zsolt (Miskolci Egyetem) C# Nyelvi
RészletesebbenC# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
Részletesebben500. CC Megoldó Alfréd CC 500.
Programozás alapjai 2. PótZH 2010.05.20. gyakorlat: G1/IB.146 Hiány:3 ZH:7,71 MEGOLD SCH/500. Hftest: 0 ZHp: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
RészletesebbenObjektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN
Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.
RészletesebbenProgramozás II gyakorlat. 8. Operátor túlterhelés
Programozás II gyakorlat 8. Operátor túlterhelés Kezdő feladat Írjunk egy Vector osztályt, amely n db double értéket tárol. A konstruktor kapja meg az elemek számát. Írj egy set(int idx, double v) függvényt,
RészletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Folyamok kezelése Fájlok írása/olvasása Folyamok kezelése Szabvány folyamok Eddig Kiírás a szöveges konzolra:
RészletesebbenSTL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók
STL Elsődleges komponensek: Tárolók Algoritmusok Bejárók Másodlagos komponensek: Függvény objektumok Adapterek Allokátorok (helyfoglalók) Tulajdonságok Tárolók: Vektor (vector) Lista (list) Halmaz (set)
RészletesebbenApple Swift kurzus 3. gyakorlat
Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()
Részletesebben228. AA Default Konstruktor AA 228.
Programozás alapjai 2. (inf.) zárthelyi 2012.05.17. gyak. hiányzás: kzhpont: ABCDEF Q-II/107. nzh: Hftest: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
RészletesebbenBevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 8. előadás 2014.03.31. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Öröklődés
RészletesebbenAlgoritmizálás + kódolás C++ nyelven és Pascalban
Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban
Részletesebbenés az instanceof operátor
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
RészletesebbenJava VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán
Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában
Részletesebbenosztályok kapcsolata Származtatatás C++ Izsó Tamás 2014. március 19. Izsó Tamás Származtatatás/ 1
Származtatatás C++ Izsó Tamás 2014. március 19. Izsó Tamás Származtatatás/ 1 Dinamikus tagváltozó az osztályban class RVektor { i n t n ; R a c i o n a l i s p ; p u b l i c : RVektor ( i n t n=10 ) :
RészletesebbenProgramozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
RészletesebbenProgramozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.
Programozás C++ osztályok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. február 25. Osztályok C++ osztályok Bevezetés Objektum-orientáltság
RészletesebbenMaximum kiválasztás tömbben
ELEMI ALKALMAZÁSOK FEJLESZTÉSE I. Maximum kiválasztás tömbben Készítette: Szabóné Nacsa Rozália Gregorics Tibor tömb létrehozási módozatok maximum kiválasztás kódolása for ciklus adatellenőrzés do-while
Részletesebben3. Osztályok II. Programozás II
3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt
RészletesebbenProgramozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ generikus szerkezetek, template újból Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2019.03.26.
RészletesebbenProgramozási nyelvek II.: JAVA
Programozási nyelvek II.: JAVA 6. gyakorlat 2017. október 16-20. 6. gyakorlat Programozási nyelvek II.: JAVA 1 / 24 Az 6. gyakorlat tematikája túlterhelés - összefoglalás statikus adattagok és metódusok
RészletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök
RészletesebbenInformatikai Kar. 3. fejezet. alapismeretek. Giachetta Roberto
Informatikai Kar 3. fejezet alapismeretek Giachetta Roberto Actually I made up the term 'Object-Oriented', and I can tell you I did not have C++ in mind. (Alan Kay) adottak) 3:3 Feladat: Stack) adatszerkezetet
RészletesebbenJava Programozás 9. Gy: Java alapok. Adatkezelő 5.rész
Java Programozás 9. Gy: Java alapok Adatkezelő 5.rész 15/1 B ITv: MAN 2018.04.22 A Keresés funkció Programlogika: 1. A keresés az etm táblamodellben fog keresni, és a találat rekordokat átmásolja egy másik
RészletesebbenC#, OOP. Osztályok tervezése C#-ban
C#, OOP Osztályok tervezése C#-ban OOP Létrehozás (creating) Megszüntetés (destroying) Túlterhelés (overlading) Felsorolás típus (enumerated types) 2 Hajó osztály Sailboat class using System; class Sailboat
RészletesebbenPHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19
PHP II. WEB technológiák Tóth Zsolt Miskolci Egyetem 2014 Tóth Zsolt (Miskolci Egyetem) PHP II. 2014 1 / 19 Tartalomjegyzék Objektum Orientált Programozás 1 Objektum Orientált Programozás Öröklődés 2 Fájlkezelés
RészletesebbenKivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat
Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot
RészletesebbenBME MOGI Gépészeti informatika 8.
BME MOGI Gépészeti informatika 8. 1. feladat Készítse beosztottak és vezetők munkahelyi adatait kezelő alkalmazást! A feladat megoldásához hozza létre a következő osztályokat! Beosztott osztály: adatmező
RészletesebbenA C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
RészletesebbenProgramozás II. 2. Dr. Iványi Péter
Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c
RészletesebbenHelyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?
A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály
RészletesebbenObjektumok inicializálása
Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú
RészletesebbenProgramozás I. Első ZH segédlet
Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett
Részletesebben500. DD Megoldó Alfréd DD 500.
Programozás alapjai 2. (inf.) zárthelyi 2009.05.21. gyakorlat: / Érdemjegy: QBX734 () IB319/32. Hftest: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
RészletesebbenProgramozás II. ATM példa Dr. Iványi Péter
Programozás II. ATM példa Dr. Iványi Péter 1 ATM gép ATM=Automated Teller Machine Pénzkiadó automata Kezelő szoftvert szeretnénk írni Objektum-orientált módon 2 Követelmények Egyszerre csak egy embert
RészletesebbenProgramozási technikák Pál László. Sapientia EMTE, Csíkszereda, 2009/2010
Programozási technikák Pál László Sapientia EMTE, Csíkszereda, 2009/2010 Előadás tematika 1. Pascal ismétlés, kiegészítések 2. Objektum orientált programozás (OOP) 3. Delphi környezet 4. Komponensek bemutatása
RészletesebbenProgramozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek Szeberényi Imre BME IIT M Ű E G Y T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2011.03.01. -1-
RészletesebbenA képernyőre írást igénylő részfeladatok eredményének megjelenítése előtt írja a képernyőre a feladat sorszámát (például: 3. feladat:)!
Space Shuttle 40 Pont A Space Shuttle (magyarul űrsikló", hivatalos angol nevén: Space Transportation System, STS) az Amerikai Egyesült Államok ember szállítására is alkalmas űrprogramja volt. Feladatai
RészletesebbenBevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok
Bevezetés a programozásba II 5. Előadás: Másoló konstruktor, túlterhelés, operátorok Emlékeztető struct Vektor { int meret, *mut; Vektor(int meret); int szamlal(int mit); }; int Vektor::szamlal(int mit)
RészletesebbenC++ programozási nyelv Konstruktorok-destruktorok
C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
RészletesebbenProgramozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós május 6. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. május 6. Parancssori paraméterek Parancssorban történ programindításkor a program nevét követ en szóközökkel elválasztva paraméterek (command
RészletesebbenBevezetés a programozásba 2
Bevezetés a programozásba 2 7. Előadás: STL konténerek, sablonok http://digitus.itk.ppke.hu/~flugi/ Vector int int main() { vector v(10); int int sum=0; for for (int i=0;i
RészletesebbenOOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés
OOP: Java 6.Gy: Java osztályok Definíció, static, túlterhelés 45/1 B ITv: MAN 2019.03.18 Feladat Készítsen egy Alkalmazott osztályt saját csomagban, név, kor és fizetés adatokkal. Legyen egy osztályszintű
RészletesebbenOOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN
OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás
RészletesebbenA lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába
A lista eleme 0 adat rész mutató rész Listaelem létrehozása p: Node 0 0 3 0 Az elemet nekünk kell bef zni a listába Deklarálás struct Node { int int value; Node* next; next; adattagok Létrehozás Node*
RészletesebbenGelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák
Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák Gelle Kitti 2017. 10. 25. Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák 2017. 10. 25. 1 / 20 Hasítótáblák T 0 h(k 2)
RészletesebbenProgramozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)
Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával) I. A nyelv története C++ C (ős: B???) 1972 Ritchie AT&T Bell laboratórium UNIX 1978 Kernighan & Ritchie az első tankönyv,
RészletesebbenProgramozás C++ -ban 2007/4
Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos
RészletesebbenProgramozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ generikus szerkezetek, template Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2018.03.20.
RészletesebbenProgramozás C nyelven (3. ELŐADÁS) Sapientia EMTE
Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE 2015-16 Classic Empire - A turn Based Wargame Classic Empire is a real time, multiplayer, Internet-based game, featuring military, diplomatic, and economic
RészletesebbenBevezetés a programozásba Előadás: A const
Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout
RészletesebbenSzámítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén
RészletesebbenGenerikus Típusok, Kollekciók
Generikus Típusok, Kollekciók Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 1 / 26 Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections
RészletesebbenProgramozás C és C++ -ban
Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új
RészletesebbenJava programozási nyelv 5. rész Osztályok III.
Java programozási nyelv 5. rész Osztályok III. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/20 Tartalomjegyzék
RészletesebbenObjektumorientált Programozás VI.
Objektumorientált Programozás VI. Tömb emlékeztető Egyszerű programozási tételek Összetett programozási tételek V 1.0 ÓE-NIK, 2011 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók
Részletesebben1. Alapok. Programozás II
1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph
RészletesebbenA szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok
A szemantikus elemzés helye Forrásprogram Forrás-kezelő (source handler) Lexikális elemző (scanner) A szemantikus elemzés feladatai Fordítóprogramok előadás (A, C, T szakirány) Szintaktikus elemző (parser)
RészletesebbenList<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error
Generics Egyszerűbb példák (java.util csomagból): public interface List { void add(e x); Iterator iterator(); public interface Iterator { E next(); boolean hasnext(); E - formális típusparaméter,
Részletesebben