Informatikai Kar. 3. fejezet. alapismeretek. Giachetta Roberto

Hasonló dokumentumok
Szoftvertechnológia 3. előadás. Objektumorientált tervezés: alapismeretek. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Alkalmazott modul: Programozás 10. előadás. Objektumorientált programozás: tervezés és megvalósítás

Bevezetés a Programozásba II 5. előadás. Objektumorientált programozás és tervezés

Alkalmazott modul: Programozás 9. előadás. Strukturált programozás: dinamikus adatszerkezetek

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Bevezetés a Programozásba II 8. előadás. Polimorfizmus Giachetta Roberto

Informatikai Kar. 4. fejezet. Giachetta Roberto

Programozás C++ -ban 2007/4

Eseményvezérelt alkalmazások fejlesztése II. A.NET keretrendszer és a C# programozási nyelv. Objektumorientált programozási nyelvek A Smalltalk nyelv

Alkalmazott modul: Programozás 10. fejezet. Strukturált programozás: dinamikus memóriakezelés. Giachetta Roberto

STL. Algoritmus. Iterátor. Tároló. Elsődleges komponensek: Tárolók Algoritmusok Bejárók

Objektumelvű programozás

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Alkalmazott modul: Programozás 8. előadás. Strukturált programozás: dinamikus memóriakezelés. Dinamikus memóriakezelés. Dinamikus memóriakezelés

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása

Objektum elvű alkalmazások fejlesztése. Verem típus osztály-sablonja

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Alkalmazott Modul III 6. gyakorlat. Objektumorientált programozás: öröklődés és polimorfizmus

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Bevezetés a Programozásba II 3. előadás. Biztonságos adattípusok megvalósítása. Biztonságos adattípusok megvalósítása

Programozási nyelvek II.: JAVA, 11. gyakorlat

Származtatási mechanizmus a C++ nyelvben

Java programozási nyelv 8. rész Grafikus felhasználói felület

Programozás II gyakorlat. 8. Operátor túlterhelés

503.AA Megoldo Arisztid 503.A

Bevezetés a Programozásba II 12. előadás. Adatszerkezetek alkalmazása (Standard Template Library)

117. AA Megoldó Alfréd AA 117.

Bevezetés a programozásba 2

Programozás. C++ típusok, operátorok. Fodor Attila

Alkalmazott modul: Programozás

1 Rev 4. A C++ programozás alapjai- segédlet

228. AA Default Konstruktor AA 228.

0. Megoldó Manó 0. Programozás alapjai 2. (inf.) pót zárthelyi gyak. hiányzás: 2 n/kzhp: n/11,5. ABCDEF IB.028/2.

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Generikus Típusok, Kollekciók

C# osztályok. Krizsán Zoltán

Bevezetés, a C++ osztályok. Pere László

Generikus osztályok, gyűjtemények és algoritmusok

1.AA MEGOLDÓ BERCI AA 1.

Tervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Objektumorientált programozás C# nyelven

Osztály és objektum fogalma

5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

infix 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

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

C#, OOP. Osztályok tervezése C#-ban

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Programozási nyelvek Java

Objektumorientált programozás C# nyelven

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Alkalmazott Modul III 4. előadás. Objektumorientált programozás: objektumok és osztályok. Procedurális programozás Koncepció

Programozási technológia

OOP: Java 5.Gy: Osztály, referencia, konstruktor

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

OOP: Java 8.Gy: Abstract osztályok, interfészek

3. Osztályok II. Programozás II

Fejlett programozási nyelvek C++ Iterátorok

Collections. Összetett adatstruktúrák

Felhasználó által definiált adattípus

Programozás II gyakorlat. 4. Öröklődés

Objektumorientált programozás C# nyelven III.

Virtuális függvények (late binding)

Bánsághi Anna

.AA Megoldó Alfréd AA.

Alkalmazott modul: Programozás 11. előadás. Objektumorientált programozás: öröklődés

Programozás alapjai II. (2. ea) C++

500. CC Megoldó Alfréd CC 500.

Szoftvertechnológia 4. előadás. Objektumorientált tervezés: általánosítás. Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Osztályok. 4. gyakorlat

C++ programozási nyelv

Programozási nyelvek Java

500.AA Megoldo Arisztid 500.A

Adatszerkezetek és algoritmusok

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

0.2.1 Operátorok túlterhelése (műveletek definiálhatók felhaszn. típusokra) Kutya. Eb1. Eb2. Név (txt): Rex. Blöki. Német juhász 3

Objektum elvű alkalmazások fejlesztése Programozási tételek újrafelhasználása 1.

1000.AA Megoldo Alfréd 1000.A

Programozás C++ -ban

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció

BME MOGI Gépészeti informatika 7.

OOP #14 (referencia-elv)

XIII. STL. Tároló Bejáró Algoritmus. XIII.1 A vector #include <vector> #include <vector> #include <algorithm> using namespace std;

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

Analízis modell kidolgozása I.

Programozási technológia II 3. előadás. Objektumorientált tervezés Giachetta Roberto

Objektumorientált programozás C# nyelven

Java és web programozás

Pénzügyi algoritmusok

Programozási nyelvek II.: JAVA

feladat pont min elért

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Adatbázis rendszerek I

Bánsághi Anna


Programozási technológia 2.

128. AA Megoldó Alfréd AA 128.

Átírás:

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 aritmetikai push), kivenni (pop top -e (isempty) (top v 3:4

3:5

void push(vector<int> v, int top, int d) { if (top == v.size()) throw STACK_FULL; } top = top + 1; v[top] = d; int top(vector<int> v, int top) { if (top == 0) throw STACK_FULL; return v[top]; } 3:6

int main() { vector<int> v; int top = 0; } push(v, top, d); cout << top(v, top); 3:7

a a 3:8

Az objektum Objektumnak (object pl.: egy verem adatszerkezet push, pop, top 3:9

Az objektum Az objektumok destruktorral) Az objektumok tal (state 3:10

Az objektum- Objektum- 3:11

Az objektum- Az objektumobjektumokra 3:12

hatjuk az objektumokat tartalmazza, az rekordok (record, structure rendelkeznek (enumeration (field oknak, vagy knek oknak (method) tagjait (member) 3:13

public (private nek, vagy (getter), illetve (setter) 1:14

-ban main class/struct < > { public/private: < > < >; }; < > < > ([ < > 3:15

Az (class diagram +), illetve rejtett (-) - :... + ( ) :... 3:16

+ ( ) :... - :... 3:17

Feladat: Rectangle (_height, _width getheight() setheight(int)) getwidth(), setwidth(int), perimeter()) area(), (Rectangle(int, int)) 3:18

Rectangle - _width :int - _height :int + Rectangle(int, int) + area() :int + perimeter() :int + getwidth() :int + getheight() :int + setwidth(int) :void + setheight(int) :void 3:19

class Rectangle { private: int _width; int _height; public: Rectangle }; int area(); int perimeter(); 3:20

{query} be) - : { } + () : {query} 3:21

<sablon> < > - < > :< > + < >() :< > 3:22

Feladat: Rectangle const) sorolhatjuk 3:23

Rectangle - _width :int { _width > 0 } - _height :int { _height > 0 } + Rectangle(w : int, h : int) { w > 0, h > 0 } + area() :int {query} + perimeter() :int {query} getter + getwidth() :int {query} + getheight() :int {query} + setwidth(w : int) :void { w > 0 } + setheight(h : int) :void { h > 0 } 3:24

class Rectangle { public: Rectangle(double w, double h) { if }; } double area() const; double perimeter() const; 3:25

Feladat: (pop (top Stack) adatszerkezetet aritmetikai push), kivenni clear -e (isempty), illetve tele van-e a verem (isfull), size). _top) _values), valamint az elemek destruktor 3:26

T : class Stack - _values :T[] - _top :int { _top } - _size :int { _size + Stack(int) + ~Stack() + isempty() :bool {query} + isfull() :bool {query} + push(t) :void + pop() :T + top() :T {query} + clear() :void + size() :int {query} 3:27

template <class T> class Stack { private: T* _values; int _top; int _size; public: Stack(int max); // konstruktor }; bool push(t value); T pop(); 3:28

Kapcsolatok : szemantikai kapcsolat ( ): szerkezeti kapcsolat (csak objektumok ( ): ( ): ( ): : 3:29

A (dependency < > < > < > oktat Jegyzet 3:30

Feladat: (pop (top Stack) adatszerkezetet aritmetikai push), kivenni clear -e (isempty), illetve tele van-e a verem (isfull), size). illetve tele verem (STACK_FULL, STACK_EMPTY), illetve egy BAD_SIZE) 3:31

T : class Stack - _values :T[] - _top :int - _size :int + Stack(int) + ~Stack() + isempty() :bool {query} + isfull() :bool {query} + push(t) :void + pop() :T + top() :T {query} + clear() :void + size() :int {query} Exceptions BAD_SIZE STACK_FULL STACK_EMPTY 3:32

template <class T> class Stack { public: enum Exceptions Stack(int size) { if (size <= 0) // throw BAD_SIZE; a } }; 3:33

Az (association) < > < > < > tart 3:34

szerepe 1..3 tart * 3:35

Feladat: pontokat (Point), valamint vektorokat (Vector). A pontok vektornak ismert a hossza. (_x, _y), getx(), gety() distance(point)), move(vector)) (_deltax, _deltay getdeltay()), ahogy a hossza (length()) is getdeltax(), 3:36

- _x :int - _y :int Point + Point(int, int) + distance(point) :double {query} + move(vector) :void + getx() :int {query} + gety() :int {query} distance(point) move(vector) Vector - _deltax :int - _deltay :int + Vector(int, int) + length() :double {query} + getdeltax() :int {query} + getdeltay() :int {query} 3:37

class Point { public: Point(int x = 0, int y = 0) _x(x), _y(y) { } double distance(point p) const { return sqrt(pow(abs(_x p._x), 2) + pow(abs(_y p._y), 2)); } void move(vector v) { _x += v.getdeltax(); _y += v.getdeltay(); } }; 3:38

Az (aggregation <szerep> < > < > Kar 1..* 1..* 3:39

Feladat: (Rectangle (insert(rectangle) (remove(rectangle) (perimeter() Group area()), illetve _rectangle) 3:40

Rectangle - _width :int - _height :int + Rectangle(int, int) + area() :int + perimeter() :int + getwidth() :int + getheight() :int + setwidth(int) :void + setheight(int) :void -_rectangles * * Group - _rectangles :Rectangle[] + insert(rectangle) :void + remove(rectangle) :void + area() :int {query} + perimeter() :int {query} 3:41

class Group { private: vector<const Rectangle&> _rectangles; // vector-t public: void insert(const Rectangle& rec); }; void remove(const Rectangle& rec); double area() const; double perimeter() const; 3:42

A (composition <szerep> < > < > Dia 1..* 3:43

Feladat Rectangle (_point) Point kell eltolnunk move() 3:44

Point - _x :int - _y :int + Point(int, int) + distance(point) :double {query} + move(vector) :void + getx() :int {query} + gety() :int {query} Vector - _deltax :int - _deltay :int move(vector) + Vector(int, int) + length() :double {query} + getdeltax() :int + getdeltay() :int -_point move(vector) Rectangle - _width :int - _height :int - _point :Point + Rectangle(Point, int, int) + area() :int {query} + perimeter() :int + move(vector) :void + getpoint() :Point {query} + getwidth() :int {query} + getheight() :int {query} + setwidth(int) :void + setheight(int) :void 3:45

class Rectangle { public: Rectangle(Point p, int w, int h) : _point(p), _width(w), _height(y) { } void move(vector v) { _point.move(v); } private: Point _point; int _width; int _height; }; 3:46

Feladat: (pop (top Stack push), kivenni clear -e (isempty), illetve tele van-e a verem (isfull), size). (StackNode), amely tartalmazza az adatot (value next) (_size _top 3:47

T : class Stack -_top StackNode + value :T + next :StackNode +next * - _top :StackNode - _size :int + Stack(int) + ~Stack() + isempty() :bool {query} + isfull() :bool {query} + push(t) :void + pop() :T + top() :T {query} + clear() :void + size() :int {query} Exceptions BAD_SIZE STACK_FULL STACK_EMPTY 3:48

template <class T> struct StackNode { // verem elem rekordja T value StackNode* next; } template <class T> class Stack { private: StackNode<T>* _top; int _size; }; 3:49

Az objektumdiagram Az UML objektumdiagram (object diagram < > :< > - < > :< > = < > 3:50

Az objektumdiagram Feladat r), amely a 10, 15 r :Rectangle - _width :int = 25 - _height :int = 25 _point :Point - _x :int = 15 - _y :int = 10 Feladat :Group amelyeket egy csoportba :Rectangle - _width :int = 20 - _height :int = 30 :Rectangle - _width :int = 10 - _height :int = 10 3:51