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