osztályok kapcsolata Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1
|
|
- Dezső Biró
- 10 évvel ezelőtt
- Látták:
Átírás
1 Származtatatás C++ Izsó Tamás március 19. Izsó Tamás Származtatatás/ 1
2 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 ) : n ( n ), p ( new R a c i o n a l i s [ n ] ) { ~RVektor ( ) { d elete [ ] p ;... ; Vigyázz a copy konstruktorra és értékadó operátorra Most nem jó a fordító által generált copy konstruktor és értékadó operátor. Kivülről elérhetetlenné kell tenni (nem mindig a legjobb megoldás) Meg kell írni. Izsó Tamás Származtatatás/ 2
3 copy ctor és operator=() class RVektor { i n t n ; R a c i o n a l i s p ;... RVektor ( const RVektor& other ) { n = other. n ; p = new R a c i o n a l i s [ n ] ; for ( i n t i =0; i <n ; i ++) p [ i ] = other. p [ i ] ; ; RVektor& operator =( const RVektor& other ) { i f ( this!= &other ) { delete [ ] p ; n= other. n ; p = new R a c i o n a l i s [ n ] ; for ( i n t i =0; i <n ; i ++) p [ i ] = other. p [ i ] ; return this ;... Izsó Tamás Származtatatás/ 3
4 copy ctor írás operator=() segítségével class RVektor { i n t n ; R a c i o n a l i s p ;... RVektor ( const RVektor& other ) { p = 0; this = other ; ; RVektor& operator =( const RVektor& other ) { i f ( this!= &other ) { delete [ ] p ; n= other. n ; p = new R a c i o n a l i s [ n ] ; for ( i n t i =0; i <n ; i ++) p [ i ] = other. p [ i ] ; return this ;... Izsó Tamás Származtatatás/ 4
5 operator=() megírása copy ctor felhasználásával class RVektor { i n t n ; R a c i o n a l i s p ;... void swap ( RVektor& other ) { i n t s = other. n ; other. n = n ; n = s ; R a c i o n a l i s v = other. p ; other. p = p ; p = v ; RVektor ( const RVektor& other ) {... ; RVektor& operator =( const RVektor& other ) { RVektor v ( other ) ; swap ( v ) ; return this ;... Izsó Tamás Származtatatás/ 5
6 operator=() megírása copy ctor felhasználásával egyszerűbben class RVektor { i n t n ; R a c i o n a l i s p ;... void swap ( RVektor& other ) { i n t s = other. n ; other. n = n ; n = s ; R a c i o n a l i s v = other. p ; other. p = p ; p = v ; RVektor ( const RVektor& other ) {... ; RVektor& operator =( RVektor other ) { swap ( other ) ; return this ;... Izsó Tamás Származtatatás/ 6
7 Index operátorok class RVektor { i n t n ; R a c i o n a l i s p ;... R a c i o n a l i s& operator [ ] ( i n t i ) { i f ( i <0 i >=n ) throw " Index hiba " ; return p [ i ] ; const R a c i o n a l i s operator [ ] ( i n t i ) const { i f ( i <0 i >=n ) throw " Index hiba " ; return p [ i ] ;... ; Izsó Tamás Származtatatás/ 7
8 Mit ír ki? class A { i n t k ; A( const i n t i = 0) : k ( i ) { cout << k ; A( const A& a ) { k = a. k ; cout << c ; void operator =(A& a ) { k = a. k ; f ( a ) ; cout << e ; A& operator ( i n t i ) { cout << i 100; return this ; void f (A a ) { k ++; cout << f ; ~A ( ) { cout << d ; ; A& operator ( i n t i, A& a ) { cout << i ; return a ; i n t main ( i n t argc, char argv [ ] ) { A a = A ( 1 ) ; cout << \ n ;
9 Mit ír ki? class A { i n t k ; A( const i n t i = 0) : k ( i ) { cout << k ; A( const A& a ) { k = a. k ; cout << c ; void operator =(A& a ) { k = a. k ; f ( a ) ; cout << e ; A& operator ( i n t i ) { cout << i 100; return this ; void f (A a ) { k ++; cout << f ; ~A ( ) { cout << d ; ; A& operator ( i n t i, A& a ) { cout << i ; return a ; i n t main ( i n t argc, char argv [ ] ) { A a = A ( 1 ) ; cout << \ n ; / / kcd a = a 2; cout << \ n ;
10 Mit ír ki? class A { i n t k ; A( const i n t i = 0) : k ( i ) { cout << k ; A( const A& a ) { k = a. k ; cout << c ; void operator =(A& a ) { k = a. k ; f ( a ) ; cout << e ; A& operator ( i n t i ) { cout << i 100; return this ; void f (A a ) { k ++; cout << f ; ~A ( ) { cout << d ; ; A& operator ( i n t i, A& a ) { cout << i ; return a ; i n t main ( i n t argc, char argv [ ] ) { A a = A ( 1 ) ; cout << \ n ; / / kcd a = a 2; cout << \ n ; / / 200 cfde a = 3 a ; cout << \ n ;
11 Mit ír ki? class A { i n t k ; A( const i n t i = 0) : k ( i ) { cout << k ; A( const A& a ) { k = a. k ; cout << c ; void operator =(A& a ) { k = a. k ; f ( a ) ; cout << e ; A& operator ( i n t i ) { cout << i 100; return this ; void f (A a ) { k ++; cout << f ; ~A ( ) { cout << d ; ; A& operator ( i n t i, A& a ) { cout << i ; return a ; i n t main ( i n t argc, char argv [ ] ) { A a = A ( 1 ) ; cout << \ n ; / / kcd a = a 2; cout << \ n ; / / 200 cfde a = 3 a ; cout << \ n ; / / 3cfde return 0;
12 Mit ír ki? class A { i n t k ; A( const i n t i = 0) : k ( i ) { cout << k ; A( const A& a ) { k = a. k ; cout << c ; void operator =(A& a ) { k = a. k ; f ( a ) ; cout << e ; A& operator ( i n t i ) { cout << i 100; return this ; void f (A a ) { k ++; cout << f ; ~A ( ) { cout << d ; ; A& operator ( i n t i, A& a ) { cout << i ; return a ; i n t main ( i n t argc, char argv [ ] ) { A a = A ( 1 ) ; cout << \ n ; / / kcd a = a 2; cout << \ n ; / / 200 cfde a = 3 a ; cout << \ n ; / / 3cfde return 0; / / d Izsó Tamás Származtatatás/ 8
13 Mit ír ki? class S t r i n g { char p ; i n t size ; S t r i n g ( ) : p (new char [ 2 ] ) { cout << 1 ; S t r i n g ( const char ) : p (new char [ 2 ] ) { cout << 2; S t r i n g ( S t r i n g&s ) : p (new char [ 2 ] ) { cout << 3; ~ S t r i n g ( ) { delete [ ] p ; cout << 4; S t r i n g operator +( S t r i n g&s1 ) { S t r i n g s ; cout << 5; return s ; char& operator [ ] ( i n t ) { cout << 6 ; return p [ 0 ] ; S t r i n g& operator =( const S t r i n g s ) { cout << 7 ; return th is ; ; i n t main ( i n t argc, char argv [ ] ) { S t r i n g s1 ( " r e j t v é n y " ) ; cout << endl ; S t r i n g s2 ; cout << endl ; S t r i n g s3=s2 ; cout << endl ; char c = s3 [ 3 ] ; cout << endl ; s2 = s3 ; cout << endl ; s2 = s3 + s2 + s1 ; cout << endl ; return 0; Izsó Tamás Származtatatás/ 9
14 Section 1 Izsó Tamás Származtatatás/ 10
15 Rétegelés class Address {..... ; class Name {..... ; class Person { Name name ; Address addr ;..... ; Reláció A rétegelés "vanegy", vagy keresztül implementált relációt modellez. Izsó Tamás Származtatatás/ 11
16 Analítikus (nyilvános) öröklés class Person {..... ; class Student : p u b l i c Person {..... ;..... Reláció Az analítikus öröklődés (isa) "azegy" relációt jelent. Még helyesebben az "úgy működik mint" kapcsolatot jelenti. A fenti példában a diák (Student) "azegy" személy (Person) reláció igaz, tehát használhatjuk a publikus öröklődést. Izsó Tamás Származtatatás/ 12
17 Származtatott osztály használata / / Minden személy t á n c o l h a t void dance ( const Person& p ) ; / / Csak a diákok tanulnak. void s tu d y ( const Student& s ) ; Person p ; Student s ; dance ( p ) ; / / OK. p egy személy dance ( s ) ; / / rendben s egy diák, " azegy " személy study ( s ) ; / / OK. study ( p ) ; / / Hiba p nem diák. Izsó Tamás Származtatatás/ 13
18 Korlátozó öröklés class Rectangle {..... ; class Square : private Rectangle {..... ; Reláció A korlátozó öröklés nem (isa) "azegy" relációt, mivel a származtotott objektum nem "úgy működik mint" kapcsolatban áll az alapobjektummal. Izsó Tamás Származtatatás/ 14
19 Alaposztály létrehozás class A l l a t { private : char nev [ 2 0 ] ; A l l a t ( const char nev ) { s t r c p y ( this >nev, nev ) ; ; v i r t u a l void bemutatkozik ( ) { cout << nev << " vagyok " ; v i r t u a l ~ A l l a t ( ) { Jótanács C++-ban kerüljük a világobjetumokat! Azaz ne származtassunk olyan típusokat egy alaposztályból, akiknek semmi közük nincs egymáshoz. Izsó Tamás Származtatatás/ 15
20 Származtatás class Kutya : public A l l a t { char gazdi [ 2 0 ] ; Kutya ( const char nev, const char gazdi ) : A l l a t ( nev ) { s t r c p y ( this >gazdi, gazdi ) ; void bemutatkozik ( ) { A l l a t : : bemutatkozik ( ) ; cout << " gazdam " << gazdi ; ; void hogy_hivnak ( A l l a t a l l a t ) { a l l a t >bemutatkozik ( ) ; cout << endl ; Izsó Tamás Származtatatás/ 16
21 Származtatás egyik tulajdonsága Alapelv Mindenhol, ahol az alaposztály használható, ott a származtatott osztályt is használható. Fordítva nem igaz! Izsó Tamás Származtatatás/ 17
22 Többalakú viselkedés void hogy_hivnak ( A l l a t a l l a t ) { a l l a t >bemutatkozik ( ) ; cout << endl ; i n t main ( ) { A l l a t f r a k k = new Kutya ( " Frakk ", " Karoly bacsi " ) ; A l l a t pok = new A l l a t ( "Odon" ) ; hogy_hivnak ( f r a k k ) ; hogy_hivnak ( pok ) ; return 0; Output: Frakk vagyok gazdam Karoly bacsi Odon vagyok Izsó Tamás Származtatatás/ 18
23 Virtuális függvény működése hogy_hivnak(allat* allat) (Külső függvény) Allat virtuális tábla vptr Allat char nev[20] void Allat::bemutatkozik(Allat* this) Allat::~Allat(Allat* this) Allat::Allat( Allat* this, const char*nev) Kutya virtuális tábla vptr Kutya char nev[20] (alaposztály tagváltozók) char gazdi[20] void Kutya::bemutatkozik(Kutya* this) Kutya::~Kutya(Allat* this) Kutya::Kutya( Kutya* this, const char*nev, const char*gazdi) Izsó Tamás Származtatatás/ 19
24 Objektumorientált programozás Motto Aki nem használt még virtuális függvényt, az nem írt még objektumorientált programot Izsó Tamás Származtatatás/ 20
25 Virtuális függvény felüldefiniálás class B { v i r t u a l void f ( ) const { cout << "B : : f " ; void g ( ) const { cout << "B : : g " ; ; class D : public B { void f ( ) const { cout << "D : : f " ; void g ( ) { cout << "D : : g " ; ; class DD : public D { void f ( ) { cout << "DD : : f " ; void g ( ) const { cout << "DD : : g " ; ; Izsó Tamás Származtatatás/ 21
26 Virtuális függvény felüldefiniálás void c a l l ( const B& b ) { b. f ( ) ; b. g ( ) ; i n t main ( ) { B b ; D d ; DD dd ; c a l l ( b ) ; / / B : : f B : : g c a l l ( d ) ; / / D : : f B : : g c a l l ( dd ) ; / / D : : f B : : g b. f ( ) ; / / B : : f b. g ( ) ; / / B : : g d. f ( ) ; / / D : : f d. g ( ) ; / / D : : g dd. f ( ) ; / / DD : : f dd. g ( ) ; / / DD : : g return 0; Izsó Tamás Származtatatás/ 22
27 Szeletelődés void hogy_hivnak ( A l l a t a l l a t ) { a l l a t. bemutatkozik ( ) ; cout << endl ; Output: Frakk vagyok Odon vagyok Izsó Tamás Származtatatás/ 23
28 Komplex példa class A l l a t { char nev ; void operator =( const A l l a t & ) ; A l l a t ( const char nev ) { this >nev = new char [ s t r l e n ( nev ) + 1 ] ; s t r c p y ( this >nev, nev ) ; A l l a t ( const A l l a t & other ) { nev = new char [ s t r l e n ( other. nev ) + 1 ] ; s t r c p y ( nev, other. nev ) ; v i r t u a l void hangot_ad ( ) = 0; v i r t u a l void bemutatkozik ( ) = 0 { cout << nev << " vagyok " ; v i r t u a l ~ A l l a t ( ) { cout << " ~ " << nev << endl ; delete [ ] nev ; ; Izsó Tamás Származtatatás/ 24
29 Kérdések Miért virtuális a hangot_ad(), és a bemutatkozik() függvény? Miért kell destruktor? Miért kell virtuális destruktor? Mit jelent a bemutatkozik() függvény utáni kód. Izsó Tamás Származtatatás/ 25
30 Származtatott osztály class Eger : public A l l a t { Eger ( const char nev ) : A l l a t ( nev ) { void hangot_ad ( ) { cout << " cin c i n " << endl ; void bemutatkozik ( ) { A l l a t : : bemutatkozik ( ) ; cout << endl ;... ; Miért kell meghívni az alaposztály konstruktorát. Mért kell a bemutatkozik() függvényben az alaposztály bemutatkozik() függvényét meghívni. Mi történt volna, ha a bemutatkozik() függvényben az alaposztály névterét nem írtuk volna ki. Izsó Tamás Származtatatás/ 26
31 Kérdések Miért elég az alaposztályban eldugni az értékadó operátort, és miért nem kellett a származtatott osztályokban? Mi történik, ha nem dugjuk el az értékadó operátort, és a főprogramban a következőt írjuk: ( farm[1] )= ( farm[3] ); Izsó Tamás Származtatatás/ 27
32 Klónozás Hogyan hozhatunk létre alaposztályra mutató pointer alapján egy hasonló származtatott objektumot? A l l a t d o l l y = new Barany ( " D o l l y " ) ; Barany d o l l y 2 =??? Izsó Tamás Származtatatás/ 28
33 Klónozás virtuális függvény felhasználásával class A l l a t { A l l a t ( const A l l a t & other ) {... v i r t u a l A l l a t clone ( ) = 0; ; class Eger : public A l l a t {... Eger clone ( ) { return new Eger ( this ) ; ; class Barany : public A l l a t {... Barany clone ( ) { return new Barany ( this ) ; ; i n t main ( ) {... A l l a t d o l l y = new Barany ( " D o l l y " ) ;... Barany d o l l y 2 = d o l l y >clone ( ) ;... Izsó Tamás Származtatatás/ 29
34 Qt platformfüggetlen toolkit Fejlesztők: Trolltech ( ) Nokia ( ) Digia (2010-) Qt Project (2011-) Izsó Tamás Származtatatás/ 30
35 Alakzat osztály class Alakzat { protected : Pont p0 ; / / / a l a k z a t o r i g ó j a QPen pen ; / / / r a j z c e r u z a Alakzat ( const Pont& p0, const QPen& pen ) : p0 ( p0 ), pen ( pen ) { const Pont& origo ( ) const { return p0 ; v i r t u a l void r a j z o l ( QPainter& p a i n t e r ) const = 0 / / t i s z t á n v i r t u á l i s { p a i n t e r. setpen ( pen ) ; ; void mozgat ( const Pont& d ) ; class Kor : public Alakzat { i n t r ; / / / sugár Kor ( const Pont& p0, i n t r, const QPen& pen ) : Alakzat ( p0, pen ), r ( r ) / / / ős o s z t á l y i n i c { ; / / / k ö r t r a j z o l void r a j z o l ( QPainter& ) const ; Izsó Tamás Származtatatás/ 31
36 Főprogram i n t main ( i n t argc, char argv ) { Alakzat r a j z [ 3 ] ; r a j z [ 0 ] =new Kor ( Pont (100,100), 20, QPen( Qt : : green, 2) ) ; r a j z [ 1 ] =new Kor ( Pont (300,500), 30, QPen( Qt : : red, 5) ) ; r a j z [ 2 ] =new Szakasz ( Pont (200,400),100,200,QPen( Qt : : black, 5) ) ; QApplication app ( argc, argv ) ; MyWidget mywidget ; mywidget. s e t A l a k z a t ( r a j z, 3 ) ; mywidget. show ( ) ; return app. exec ( ) ; Izsó Tamás Származtatatás/ 32
37 Származtatott widget osztály class MyWidget : public QWidget { Q_OBJECT bool moving ; Alakzat a l a k z a t ; i n t nalakzat ; i n t x, y ; MyWidget ( ) : moving ( false ), nalakzat ( 0 ) { void s e t A l a k z a t ( Alakzat alakzat, i n t n ) { this >a l a k z a t = alakzat, nalakzat=n ; ; protected : void paintevent ( QPaintEvent event ) ; void mousepressevent ( QMouseEvent event ) ; void mousereleaseevent ( QMouseEvent event ) ; void mousemoveevent ( QMouseEvent event ) ; ; Izsó Tamás Származtatatás/ 33
38 virtuális függvények átdefiniálása void MyWidget : : mousepressevent ( QMouseEvent event ) { i f ( event >button ( ) == Qt : : L e f t B u t t o n ) { moving = true ; this >setcursor ( Qt : : OpenHandCursor ) ; x = event >x ( ) ; y = event >y ( ) ; event >accept ( ) ; void MyWidget : : mousereleaseevent ( QMouseEvent event ) { i f ( event >button ( ) == Qt : : L e f t B u t t o n ) { moving = false ; setcursor ( Qt : : ArrowCursor ) ; event >accept ( ) ; void MyWidget : : mousemoveevent ( QMouseEvent event ) { i f ( moving ) { i n t dx = event >x() x ; i n t dy = event >y() y ; x = event >x ( ) ; y = event >y ( ) ; for ( i n t i =0; i < nalakzat ; i ++) a l a k z a t [ i ] >mozgat ( Pont ( dx, dy ) ) ; update ( ) ; event >accept ( ) ; Izsó Tamás Származtatatás/ 34
39 Rajzolás void MyWidget : : paintevent ( QPaintEvent event ) { QPainter p a i n t e r ( this ) ; for ( i n t i =0; i < nalakzat ; i ++) a l a k z a t [ i ] > r a j z o l ( p a i n t e r ) ; Izsó Tamás Származtatatás/ 35
40 Mini iostream ios # streambuf * bp + enum open_mode + ios (streambuf*p) # ios() + virtual ~ios() streambuf # char buf[bufsiz]; # char* x_gptr; # char* x_pptr; # bool is_writing; # virtual void overflow(int c) = 0 # virtual void underflow() = 0 # int sbumpc() # void sputc(int c) + streambuf() + virtual ~streambuf() istream + istream& operator»(char& c) fstreambase # fstreambase() + void seek (long, int) ostream + ostream& operator«(char c) filebuf ifstream iostream fstream ofstream - int fd + void overflow(int) + void underflow() + void seek(long, int) + void flush() + filebuf(const char *, int) + ~filebuf() Jonathan E. Shopiro An Example of Multiple Inheritance in C++: A Model of the Iostream Library Izsó Tamás Származtatatás/ 36
41 class streambuf class streambuf { protected : / / encapsulates b u f f e r management char buf [ b u f s i z ] ; / / the character b u f f e r char x_gptr ; / / get p o i n t e r char x_pptr ; / / put p o i n t e r bool i s _ w r i t i n g ; / / b u f f e r must be w r i t t e n v i r t u a l void overflow ( i n t c ) = 0; / / send f u l l b u f f e r v i r t u a l void underflow ( ) = 0; / / r e f i l l empty b u f f e r i n t sbumpc ( ) { / / get a character i f ( x_gptr >= &buf [ b u f s i z ] ) underflow ( ) ; return x_ gptr ++; void sputc ( i n t c ) { / / put a character i f ( x_pptr >= &buf [ b u f s i z ] ) overflow ( c ) ; else x_ pptr++ = c ; streambuf ( ) : i s _ w r i t i n g ( false ), x_gptr (& buf [ b u f s i z ] ), x_pptr (& buf [ b u f s i z ] ) { v i r t u a l ~streambuf ( ) { ; Izsó Tamás Származtatatás/ 37
42 class ios, istream, ostream, iostream class i o s { / / a connection to a streambuf enum open_mode { in =1, out=2 ; i o s ( streambuf p ) : bp ( p ) { v i r t u a l ~ i o s ( ) { delete bp ; protected : streambuf bp ; i o s ( ) { / / never c a l l e d ; class istream : public v i r t u a l i o s { / / i n p u t stream class istream& operator >>(char& c ) { c = bp >sbumpc ( ) ; return this ; ; class ostream : public v i r t u a l i o s { / / output stream class ostream& operator <<(char c ) { bp >sputc ( c ) ; return this ; ; class iostream : public istream, public ostream { ; Izsó Tamás Származtatatás/ 38
43 class filebuf, fstreambase class f i l e b u f : public streambuf { / / a streambuf f o r f i l e s i n t fd ; void overflow ( i n t ) ; void underflow ( ) ; void seek ( long o f f s e t, i n t whence ) ; void f l u s h ( ) { i f ( i s _ w r i t i n g ) w r i t e ( fd, buf, x_pptr buf ) ; f i l e b u f ( const char name, i n t om ) ; ~ f i l e b u f ( ) ; ; class fstreambase : v i r t u a l public i o s { protected : fstreambase ( ) { / / the member streambuf : : bp i s here known to p o i n t to a f i l e b u f void seek ( long o f f s e t, i n t whence ) { ( ( f i l e b u f ) bp) >seek ( o f f s e t, whence ) ; ; Izsó Tamás Származtatatás/ 39
44 file stream-ek class i f s t r e a m : public fstreambase, public istream { i f s t r e a m ( const char name) : i o s (new f i l e b u f (name, i o s : : i n ) ) { ; class ofstream : public fstreambase, public ostream { ofstream ( const char name) : i o s (new f i l e b u f (name, i o s : : out ) ) { ; class fstream : public fstreambase, public iostream { fstream ( const char name) : i o s (new f i l e b u f (name, i o s : : i n i o s : : out ) ) { ; Izsó Tamás Származtatatás/ 40
45 Pufferelt írás ostream& ostream : : operator <<(char c ) { bp >sputc ( c ) ; return this ; void streambuf : : sputc ( i n t c ) { / / put a character i f ( x_pptr >= &buf [ b u f s i z ] ) overflow ( c ) ; else x_pptr++ = c ; void f i l e b u f : : overflow ( i n t c ) { f l u s h ( ) ; i s _ w r i t i n g = true ; x_pptr = buf ; x_gptr = &buf [ b u f s i z ] ; sputc ( c ) ; void f i l e b u f : : f l u s h ( ) { i f ( i s _ w r i t i n g ) w r i t e ( fd, buf, x_pptr buf ) ; Izsó Tamás Származtatatás/ 41
46 filebuf konstruktor és destruktor f i l e b u f : : f i l e b u f ( const char name, i n t om) { switch (om) { case i o s : : i n : f d = open ( name, O_RDONLY) ; break ; case i o s : : out : fd = c r e a t (name, 0666) ; break ; case i o s : : i n i o s : : out : f d = open ( name, O_RDWR O_CREAT, 0666); break ; f i l e b u f : : ~ f i l e b u f ( ) { f l u s h ( ) ; close ( fd ) ; Izsó Tamás Származtatatás/ 42
47 Hallgatói C++ modell Az évfolyamot hallgatók alkotják. A hallgatók különböző tantárgyakat vesznek fel. A hallgatók kiszh-kat írnak, és az év végén ezek alapján kapják az érdemjegyet. Funkciók: tárgy felvétele óra látogatása következő kiszh megírása ZH-n elért eredmény lekérdezése hallgatói átlag lekérdezése Izsó Tamás Származtatatás/ 43
48 Első modell Izsó Tamás Származtatatás/ 44
49 Hallgatói modell finomítása Szereplők: évfolyam hallgató tantárgy felvett tantárgy kiszh eredmények kiszh feladatok Izsó Tamás Származtatatás/ 45
50 Évfolyam Attribútum: Hallgatók halmaza Metódusok: felvesz egy hallgatót töröl egy hallgatót listáz Izsó Tamás Származtatatás/ 46
51 Hallgató Attribútum: név neptun kód felvett tantárgyak Metódusok: név lekérdezés neptun kód lekérdezés tantárgy felvétel orára jár kiszh-t ír egy tantárgyból írt kzh-k számának a lekérdezés kiszh eredmények lekérdezése átlagszámítás Izsó Tamás Származtatatás/ 47
52 Tantárgy Attribútum: kód kredit kiszh feladatok Metódusok: kód lekérdezés kredit lekérdezés követelmények közlése kiszh íratás jegy kiszámítás Izsó Tamás Származtatatás/ 48
53 Felvett tantárgy Attribútum: hallgató tantárgy jelenlét megírt kiszh-k Metódusok: tantárgy lekérdezés hallgató lekérdezés jelenlét lekérdezés kiszh eredmény lekérdezése kiszh íratás jegy kiszámítás Izsó Tamás Származtatatás/ 49
54 Kiszh eredmény Attribútum: kiszh sorszáma pont dátum Metódusok: pont lekérdezés sorszám lekérdezés dátum lekérdezés Izsó Tamás Származtatatás/ 50
55 Kiszh feladat Attribútum: megoldandó feladat Metódusok: feladatok lekérése Izsó Tamás Származtatatás/ 51
56 Második modell 1..3 Evfolyam - hallg:hallgato*[10000] + felvesz(hallgato&) : void + torol(const String&) : void + list() const : void Hallgató - neptun:string - nev:string - targyak:felvtargy[targyak_n] + getnev() const : String + getneptun() const : String + felvesz(const Tantargy& ) : bool + kzhir(const String& ) : void + getzhpont(const String&, int ) const : double + getatlag() const : double + oratlatogat( const String& ) : void * 1 * * FelvTargy - hallg:const Hallgato * - targy:const TanTargy * - jelenlet:int - kzhdb:int - kzh KisZhEredm[KZH_N] + getkod() const : String + getzhpont(int nr) const : double + oratlatogat() : void + kzhir() : void + getjegy() const : int - kod:string TanTargy - kredit:int - feladat: ZhFeladat[ZHF_N] 1 + getkod() const : String + getkredit() const : int + kovetelmenyek() const : String + kzhir(const String&, int) const : KisZhEredm - javit() const : double 1 * KisZhEredm - kzh:int - pont: double - datum: Time + getpont() const : double + getnr() const : int + gettime() const : Time 1 * ZhFeladat - szöveg:string + Feladat() : String Izsó Tamás Származtatatás/ 52
57 Kiszh írás void H a llgato : : k z h I r ( const S t r i n g& targykod ) { / / megkeressuk a f e l v e t t targyak kozul : i n t i ; for ( i =0; i <targydb && targyak [ i ]. getkod ( )! = targykod ; i ++); / / ha nincs meg, hiba : i f ( i ==targydb ) throw " Nincs i l y e n t a n t a r g y! " ; / / ha megvan, ZH t i r a t a r g y b o l : targyak [ i ]. k z h I r ( ) ; void FelvTargy : : k z h I r ( ) { i f ( kzhdb>=kzh_n) throw "Nem tud tobb ZH t i r n i! " ; KisZhEredm zh = targy >k z h I r ( h a l l g >getneptun ( ), kzhdb+1 ) ; kzh [ kzhdb ] = zh ; kzhdb++; KisZhEredm Tantargy : : k z h I r ( const S t r i n g& neptun, i n t nr ) const { double pont = j a v i t ( nr ) ; time_t t ; time (& t ) ; / / datum : S t r i n g datum ( ctime (& t ) ) ; KisZhEredm zh ( nr, pont, datum ) ; return zh ; Izsó Tamás Származtatatás/ 53
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ó
1. Öröklés Az objektum orientált tervezés fontos sarkköve, az osztályok viszonyainak a megtervezése. 1.1. Rétegelés c l a s s Address {..... c l a s s Name {..... c l a s s P e r s o n { Name name ; Address
Globá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
117. 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,
500. 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
500. 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,
Felhaszná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
BME 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ő
Fejlett 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
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia
Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
.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,
OAF 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
Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1
C++ I/O Bevezetés Izsó Tamás 2014. február 20. Izsó Tamás C++ I/O / 1 Section 1 Bevezetés Izsó Tamás C++ I/O / 2 Irodalom Izsó Tamás C++ I/O / 3 Paraméter illesztés függvénynév túlterhelés esetén 1 Pontos
Programozás alapjai II. (5. ea) C++
Programozás alapjai II. (5. ea) C++ analitikus és korlátozó öröklés 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.8. -1 - OO modellezés
Programozás alapjai II. (5. ea) C++
Programozás alapjai II. (5. ea) C++ analitikus és korlátozó öröklés 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.8. -1 - OO modellezés
128. 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
STL 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
Programozá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,
Szá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
Pé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:
Programozá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
500. 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,
Programozás II gyakorlat. 6. Polimorfizmus
Programozás II gyakorlat 6. Polimorfizmus Típuskonverziók C-ben: void * ptr; int * ptr_i = (int*)ptr; Ez működik C++-ban is. Használjuk inkább ezt: int * ptr_i = static_cast(ptr); Csak egymással
503.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!
C# 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
C# osztályok. Krizsán Zoltán
C# osztályok Krizsán Zoltán Fogalma Önálló hatáskőrrel rendelkező, absztrakt adattípus, amely több, különböző elemet tartalmazhat. Minden esetben a heap-en jön létre! A programozó hozza létre, de a GC
1. 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 (
Programozá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-
Programozás II. 4. Dr. Iványi Péter
Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include
Programozá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
Programozá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
Objektum 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
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.
Programozás alapjai 2. (inf.) pót zárthelyi 2014.05.22. gyak. hiányzás: 2 n/kzhp: n/11,5 ABCDEF IB.028/2. Hftest: 4 (2,4p) Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot,
Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;
Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely
Programozás C++ -ban
8. Dinamikus objektumok Programozás C++ -ban Ahhoz hogy általános prolémákat is meg tudjunk oldani, szükség van arra, hogy dinamikusan hozhassunk létre vagy szüntethessünk meg objektumokat. A C programozási
Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék
Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma
Bevezeté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)
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2017.02.28. - 1 - OO modellezés
Programozás alapjai II. (4. ea) C++
OO modellezés fogalmai újból Programozás alapjai II. (4. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I.
3. 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
Programozás II. 6.Öröklés Dr. Iványi Péter
Programozás II. 6.Öröklés Dr. Iványi Péter 1 Öröklés Programozók lusta emberek, nem szeretnék valamit kétszer leírni Miért veszélyes? Nem hatékony Újra kell tárolni a kódot, újra le kell fordítani Karbantartás
Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés
Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.03.08. - 1 - OO modellezés
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
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
Programozás alapjai II. (5. ea) C++ Objektummodell, öröklés, virtuális tagfüggvény
Programozás alapjai II. (5. ea) C++ Objektummodell, öröklés, virtuális tagfüggvény 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.
Programozás alapjai II. (4. ea) C++
OO modellezés fogalmai újból Programozás alapjai II. (4. ea) C++ analitikus és korlátozó öröklés Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I.
C++ 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
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia
Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia 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.04.12. -1- Öröklés
A 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,
Virtuális függvények (late binding)
Virtuális függvények (late binding) Miskolci Egyetem Általános Informatikai Tanszék Virtuális függvények CPP5 / 1 Azonos nevű függvények megkülönböztetése paraméterszignatúra (függvény overloading) - egy
Programozás C++ -ban
Programozás C++ -ban 4. Bevezetés az osztályokba 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
Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE motiabt@inf.elte.
Programozási alapismeretek :: beadandó feladat Készítő adatai Név: Molnár Tamás EHA: MOTIABT.ELTE E-mail cím: motiabt@inf.elte.hu Gyakorlatvezető: Horváth László Feladat sorszáma: 23. Felhasználói dokumentáció
Bevezetés a programozásba előadás: Öröklődés
Bevezetés a programozásba 2 5. előadás: Öröklődés emlékeztető Tagfüggvény struct koord { double x,y,r; void set(double ux, double uy) { x=ux; y=uy; r=sqrt(x*x+y*y); } Használat: koord k; k.set(4,5); Egységbezárás
Programozás alapjai II. (5. ea) C++ Objektummodell, öröklés, virtuális tagfüggvény
Programozás alapjai II. (5. ea) C++ Objektummodell, öröklés, virtuális tagfüggvény 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.
Elemi Alkalmazások Fejlesztése II.
Elemi Alkalmazások Fejlesztése II. Osztályok közötti kapcsolatok öröklődés asszociáció aggregáció kompozíció 1. Feladat Készítsünk programot, amellyel testek térfogatát határozhatjuk meg, illetve megadhatjuk
1. 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
Programozá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
Bevezeté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
feladat pont min elért
NEPTUN kód: NÉV: Aláírás: Programozás 2. NZH, 2017. május 11. BME-TTK, fizika BSc Arcképes igazolvány hiányában nem kezdheted meg a ZH-t. A feladatok megoldására összesen 90 perc áll rendelkezésre. A feladatlapot
Osztály és objektum fogalma
Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály
Objektumok 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ú
Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás
Számítástechnika II. BMEKOKAA153 2. Előadás Dr. Bécsi Tamás Tömbök (Arrays) Definíció: típus[] név; (pld. int[] szamok; ) Inicializálás: int[] szamok = new int[4]; int[] szamok = 1,2,4,3,5}; int[] szamok
Programozás alapjai II. (6. ea) C++
Programozás alapjai II. (6. ea) C++ mutatókonverziók, heterogén kollekció Szeberényi Imre BME IIT Öröklés (ismétlés) Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
Programozás BMEKOKAA146. Dr. Bécsi Tamás 1. Előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 1. Előadás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási Tanszék www.kjit.bme.hu Programozás
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is
PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET
PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. április 12. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! -
Mit ír ki? feladatok megoldásokkal
Mit ír ki? feladatok megoldásokkal A feladatgyűjtemény 2006 és 2015 között ZH feladatként kiadott C++ feladatokat és megoldásukat tartalmazza. A megoldásokat sárga kiemeléssel jelöltük. Tartalomjegyzék
C# 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
Programozá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
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606. Dr. Bécsi Tamás
Számítástechnika I. BMEKOKAA152 BMEKOKAA119 Infokommunikáció I. BMEKOKAA606 Dr. Bécsi Tamás Bemutatkozás Előadó: Dr. Bécsi Tamás St.106, (1)463-1044, becsi.tamas@mail.bme.hu Közlekedés-, és Járműirányítási
C#, 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
Programozási nyelvek II. JAVA EA+GY 1. gyakolat
Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről
Bevezeté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
Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás
Programozás BMEKOKAA146 Dr. Bécsi Tamás 7. előadás AZ OOP alapelvei Egységbezárás(Encapsulation) Az adatokat es a hozzájuk tartozó eljárásokat egyetlen egységben (osztályban) kezeljük. Az osztály adatmezői
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
0 Az objektum-orientáltság 0.1 Objektum fogalma Egy rendszer egyedileg azonosítható szereplője adatokkal és működéssel. Egységbezárás (encapsulation) - viselkedés a külvilág felé - belső struktúra (kívülről
1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?
1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"
OOP alapok Egy OOP nyelvet három fontos dolog jellemez. egységbezárás ( encapsulation objektumoknak öröklés ( inheritance
Az objektum-orientált programozás (röviden OOP) a természetes gondolkodást, cselekvést közelítő programozási mód, amely a programozási nyelvek tervezésének természetes fejlődése következtében alakult ki.
228. 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,
Objektumorientált programozás C# nyelven III.
Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és
Származtatási mechanizmus a C++ nyelvben
Származtatási mechanizmus a C++ nyelvben Miskolci Egyetem Általános Informatikai Tanszék CPP2 / 1 Az öröklődés s fogalma 1. Egy osztály deklarálható valamely más osztály(ok) leszármazottjaként. Az deklaráció
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban
Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus
1.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
Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése
FEJLETT PROGRAMOZÁSI NYELVEK, 2009 2. GYAKORLAT - Linux alatti C/C++ programozás Cél: Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése
Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés
Tartalom D Szoftvertechnológia elıadás Architektúra D vs CORBA Példá 2 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap) NetDDE NetBIOS
Programozás C++ -ban 2007/7
Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum
Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.
Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat
4. Öröklődés. Programozás II
4. Öröklődés Programozás II Mielőtt belevágunk Egy Tárgy típusú objektumokat tároló tömb i. elemében tároljunk el egy új tárgyat Rossz módszer: tomb[i].setnev( uj.getnev() ); tomb[i].setertek( uj.getertek()
Objektumelvű alkalmazások fejlesztése 6. gyakorlat. Öröklődés, polimorfizmus. Öröklődés Kódismétlődés objektum-orientált szerkezetben
Eötvös Loránd Tudományegyetem Informatikai Kar Objektumelvű alkalmazások fejlesztése 6. gyakorlat, polimorfizmus 2011.10.27. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Kódismétlődés
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra
Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,
Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 11. előadás 2014.05.12. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Adatszerkezetek
Programozás II gyakorlat. 4. Öröklődés
Programozás II gyakorlat 4. Öröklődés Feladat Egy játékfejlesztő cég olyan programot fejleszt, amely nyilvántartja az alkalmazottai adatait. Tároljuk minden személy: Nevét (legfeljebb 50 karakter) Születési
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek 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.
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek 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.
Tervminták a valósidejű gyakorlatban
Tervminták a valósidejű gyakorlatban Forrás Ezeknek a diáknak a forrása a Game Programming Patterns című könyv Online elérhető a szerző oldaláról: http://gameprogrammingpatterns.com/contents.htm Game Loop
Java 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
Objektum 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),
Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o
Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform
Programozás alapjai II. (5. ea) C++
Programozás alapjai II. (5. ea) C++ mutatókonverziók, heterogén kollekció Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.03.21. - 1 - Öröklés
C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat
C++ programozási nyelv Struktúrák a C++ nyelvben Gyakorlat 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/12 Input-output