Πανεπιστήμιο Πατρών ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Πολσμορθιζμός. Σμήμα Μητανικών Ηλεκηρονικών Τπολογιζηών και Πληροθορικής

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Πανεπιστήμιο Πατρών ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Πολσμορθιζμός. Σμήμα Μητανικών Ηλεκηρονικών Τπολογιζηών και Πληροθορικής"

Transcript

1 Πανεπιστήμιο Πατρών 1 Σμήμα Μητανικών Ηλεκηρονικών Τπολογιζηών και Πληροθορικής ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Πολσμορθιζμός

2 Περιετόμενα 2 Ειζαγωγή τέζεις ανηικειμένων ζε μια ιεραρτία κληρονομικόηηηας Κλήζη μεθόδων ηης κλάζης βάζης από ανηικείμενα ηης παραγόμενης κλάζης Δείκηης παραγόμενης κλάζης ζε ανηικείμενο ηης κλάζης βάζης Κλήζη μεθόδων παραγόμενης κλάζης μέζω δείκηη κλάζης βάζης Εικονικές σναρηήζεις (Virtual Functions) Παραδείγμαηα Πολσμορθιζμού Υρήζη πεδίοσ για ηύπο ανηικειμένων και ενηολής switch Abstract Classes Μελέηη Περίπηωζης : Κληρονόμηζη Διεπαθής και Τλοποίηζης

3 3 Ειζαγωγή Πνιπκνξθηζκόο Απαηηείηαη ε ύπαξμε κηαο ηεξαξρίαο θιάζεσλ Φξεζηκνπνηνύκε αληηθείκελα πνπ αλήθνπλ ζηελ ίδηα ηεξαξρία θιάζεσλ σο λα ήηαλ όια αληηθείκελα ηεο θιάζεο βάζεο Δηθνληθέο ζπλαξηήζεηο + δπλακηθή ζύλδεζε (Virtual functions + dynamic binding) Τερλνινγίεο πνπ πινπνηνύλ ηνλ πνιπκνξθηζκό Δπηηξέπεη ηελ απνηειεζκαηηθή επέθηαζε ησλ πξνγξακκάησλ Νέεο θιάζεηο κπνξνύλ εύθνια λα πξνζηεζνύλ θαη λα ππνζηνύλ επεμεξγαζία όπσο θαη νη ππάξρνπζεο

4 Ένα πρώηο παράδειγμα 4 Κιάζε βάζεο: Animal Παξαγόκελεο θιάζεηο: Fish, Frog, Bird Ζ κέζνδνο move() είλαη θνηλή, αιιά πινπνηείηαη δηαθνξεηηθά γηα θάζε είδνο Animal. Μηα εθαξκνγή θξαηά έλαλ πίλαθα από αληηθείκελα ησλ παξαγόκελσλ θιάζεσλ θαη θάζε 1sec ζηέιλεη έλα κήλπκα move ζε θάζε αληηθείκελν. Κάζε αληηθείκελν ηύπνπ Animal πνπ δέρεηαη ην κήλπκα γλσξίδεη πσο ζα πξέπεη λα αληηδξάζεη. Τν ίδην κήλπκα πνπ ζηέιλεηαη ζε δηαθνξεηηθά αληηθείκελα (ηνπ ίδηνπ βαζηθνύ ηύπνπ Animal) έρεη πνιιέο κνξθέο απνηειεζκάησλ πνιπκνξθηζκόο Πόζν εύθνιν είλαη λα πξνζζέζνπκε κηα λέα θιάζε Turtle?

5 Στέζεις ανηικειμένων ζε μια ιεραρτία κληρονομικόηηηας 5 Σεκείν θιεηδί Έλα αληηθείκελν κηαο παξαγόκελεο θιάζεο κπνξεί λα ην κεηαρεηξηζηνύκε θαη σο αληηθείκελν ηεο θιάζεο βάζεο IS-A ζρέζε Όκσο, ην αληίζηξνθν δελ ηζρύεη: έλα αληηθείκελν ηεο θιάζε βάζεο δελ είλαη αληηθείκελν ηεο παξαγόκελεο θιάζεο

6 Κλήζη μεθόδων ηης κλάζης βάζης από ανηικείμενα ηης παραγόμενης κλάζης 6 Τξεηο δηαθνξεηηθνί ηξόπνη κεηαρείξηζεο δεηθηώλ ζε αληηθείκελα κηαο ηεξαξρίαο θιάζεσλ Γείθηεο θιάζεο βάζεο ζε αληηθείκελν ηεο θιάζεο βάζεο Γείθηεο παξαγόκελεο θιάζεο ζε αληηθείκελν ηεο παξαγόκελεο θιάζεο Γείθηεο θιάζεο βάζεο ζε αληηθείκελν ηεο παξαγόκελεο θιάζεο Δθηθηό εμ αηηίαο ηεο IS-A ζρέζεο (Circle is a Point) Δπηθέξεη ηελ θιήζε κεζόδσλ ηεο θιάζεο βάζεο Ζ θιήζε ζπλαξηήζεσλ εμαξηάηαη από ηελ θιάζε ηνπ δείθηε/handle Γελ εμαξηάηαη από ην αληηθείκελν ζην νπνίν δείρλεη ν δείθηεο Απηό κπνξεί λα αιιάμεη κε ηε ρξήζε ησλ virtual functions

7 1 // Fig. 10.1: point.h 2 // Point class definition represents an x-y coordinate pair. 3 #ifndef POINT_H 4 #define POINT_H 5 6 class Point { 7 8 public: 9 Point( int = 0, int = 0 ); // default constructor void setx( int ); // set x in coordinate pair 12 int getx() const; // return x from coordinate pair void sety( int ); // set y in coordinate pair 15 int gety() const; // return y from coordinate pair void print() const; // output Point object private: 20 int x; // x part of coordinate pair 21 int y; // y part of coordinate pair }; // end class Point #endif Base class print function. point.h (1 of 1) 7

8 1 // Fig. 10.2: point.cpp 2 // Point class member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "point.h" // Point class definition 8 9 // default constructor 10 Point::Point( int xvalue, int yvalue ) 11 : x( xvalue ), y( yvalue ) 12 { 13 // empty body } // end Point constructor // set x in coordinate pair 18 void Point::setX( int xvalue ) 19 { 20 x = xvalue; // no need for validation } // end function setx 23 point.cpp (1 of 2) 8

9 24 // return x from coordinate pair 25 int Point::getX() const 26 { 27 return x; } // end function getx // set y in coordinate pair 32 void Point::setY( int yvalue ) 33 { 34 y = yvalue; // no need for validation } // end function sety // return y from coordinate pair 39 int Point::getY() const 40 { 41 return y; } // end function gety Output the x,y coordinates of the Point // output Point object 46 void Point::print() const 47 { 48 cout << '[' << getx() << ", " << gety() << ']'; } // end function print point.cpp (2 of 2) 9

10 1 // Fig. 10.3: circle.h 2 // Circle class contains x-y coordinate pair and radius. 3 #ifndef CIRCLE_H 4 #define CIRCLE_H 5 6 #include "point.h" // Point class definition 7 8 class Circle : public Point { 9 10 public: // default constructor 13 Circle( int = 0, int = 0, double = 0.0 ); void setradius( double ); // set radius 16 double getradius() const; // return radius double getdiameter() const; // return diameter 19 double getcircumference() const; // return circumference 20 double getarea() const; // return area void print() const; // output Circle object private: 25 double radius; // Circle's radius }; // end class Circle Circle inherits from Point, but redefines its print function #endif circle.h (1 of 1) 10

11 1 // Fig. 10.4: circle.cpp 2 // Circle class member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "circle.h" // Circle class definition 8 9 // default constructor 10 Circle::Circle( int xvalue, int yvalue, double radiusvalue ) 11 : Point( xvalue, yvalue ) // call base-class constructor 12 { 13 setradius( radiusvalue ); } // end Circle constructor // set radius 18 void Circle::setRadius( double radiusvalue ) 19 { 20 radius = ( radiusvalue < 0.0? 0.0 : radiusvalue ); } // end function setradius 23 circle.cpp (1 of 3) 11

12 24 // return radius 25 double Circle::getRadius() const 26 { 27 return radius; } // end function getradius // calculate and return diameter 32 double Circle::getDiameter() const 33 { 34 return 2 * getradius(); } // end function getdiameter // calculate and return circumference 39 double Circle::getCircumference() const 40 { 41 return * getdiameter(); } // end function getcircumference // calculate and return area 46 double Circle::getArea() const 47 { 48 return * getradius() * getradius(); } // end function getarea circle.cpp (2 of 3) 12

13 51 52 // output Circle object 53 void Circle::print() const 54 { 55 cout << "center = "; 56 Point::print(); // invoke Point's print function 57 cout << "; radius = " << getradius(); } // end function print Circle redefines its print function. It calls Point s print function to output the x,y coordinates of the center, then prints the radius. circle.cpp (3 of 3) 13

14 1 // Fig. 10.5: fig10_05.cpp 2 // Aiming base-class and derived-class pointers at base-class 3 // and derived-class objects, respectively. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 using std::fixed; 9 10 #include <iomanip> using std::setprecision; #include "point.h" // Point class definition 15 #include "circle.h" // Circle class definition int main() 18 { 19 Point point( 30, 50 ); 20 Point *pointptr = 0; // base-class pointer Circle circle( 120, 89, 2.7 ); 23 Circle *circleptr = 0; // derived-class pointer 24 fig10_05.cpp (1 of 3) 14

15 25 // set floating-point numeric formatting 26 cout << fixed << setprecision( 2 ); // output objects point and circle 29 cout << "Print point and circle objects:" 30 << "\npoint: "; 31 point.print(); // invokes Point's print 32 cout << "\ncircle: "; 33 circle.print(); // invokes Circle's print // aim base-class pointer at base-class object and print 36 pointptr = &point; 37 cout << "\n\ncalling print with base-class pointer to " 38 << "\nbase-class object invokes base-class print " 39 << "function:\n"; 40 pointptr->print(); // invokes Point's print // aim derived-class pointer at derived-class object 43 // and print 44 circleptr = &circle; 45 cout << "\n\ncalling print with derived-class pointer to " 46 << "\nderived-class object invokes derived-class " 47 << "print function:\n"; 48 circleptr->print(); // invokes Circle's print 49 Use objects and pointers to call the print function. The pointers and objects are of the same class, so the proper print function is called. fig10_05.cpp (2 of 3) 15

16 50 // aim base-class pointer at derived-class object and print 51 pointptr = &circle; 52 cout << "\n\ncalling print with base-class pointer to " 53 << "derived-class object\ninvokes base-class print " 54 << "function on that derived-class object:\n"; 55 pointptr->print(); // invokes Point's print 56 cout << endl; return 0; } // end main Aiming a base-class pointer at a derived object is allowed (the Circle is a Point). However, it calls Point s print function, determined by the pointer type. virtual functions allow us to change this. fig10_05.cpp (3 of 3) 16

17 Print point and circle objects: Point: [30, 50] Circle: center = [120, 89]; radius = 2.70 Calling print with base-class pointer to base-class object invokes base-class print function: [30, 50] fig10_05.cpp output (1 of 1) 17 Calling print with derived-class pointer to derived-class object invokes derived-class print function: center = [120, 89]; radius = 2.70 Calling print with base-class pointer to derived-class object invokes base-class print function on that derived-class object: [120, 89]

18 Δείκηης παραγόμενης κλάζης ζε ανηικείμενο ηης κλάζης βάζης 18 Σην πξνεγνύκελν παξάδεηγκα είδακε Γείθηεο θιάζεο βάζεο ζε αληηθείκελν ηεο παξαγόκελεο θιάζεο Circle is a Point Γείθηεο παξαγόκελεο θιάζεο ζε αληηθείκελν ηεο θιάζεο βάζεο Compiler error Point is not a Circle Ζ θιάζε Circle δηαζέηεη ηδηόηεηεο/ιεηηνπξγίεο πνπ δελ δηαζέηεη ε θιάζε Point Π.ρ. setradius Μπνξνύκε λα θάλνπκε cast ηε δηεύζπλζε ηνπ αληηθεηκέλνπ ηεο θιάζεο βάζεο ζε δείθηε παξαγόκελεο θιάζεο Ολνκάδεηαη downcasting Δπηηξέπεη ηελ πξνζπέιαζε ιεηηνπξγηθόηεηαο ηεο παξαγόκελεο θιάζεο

19 1 // Fig. 10.6: fig10_06.cpp 2 // Aiming a derived-class pointer at a base-class object. 3 #include "point.h" // Point class definition 4 #include "circle.h" // Circle class definition 5 6 int main() 7 { 8 Point point( 30, 50 ); 9 Circle *circleptr = 0; // aim derived-class pointer at base-class object 12 circleptr = &point; // Error: a Point is not a Circle return 0; } // end main fig10_06.cpp (1 of 1) fig10_06.cpp output (1 of 1) 19 C:\cpphtp4\examples\ch10\fig10_06\Fig10_06.cpp(12) : error C2440: '=' : cannot convert from 'class Point *' to 'class Circle *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

20 Κλήζη μεθόδων παραγόμενης κλάζης μέζω δείκηη κλάζης βάζης 20 Φξήζε δείθηε/αλαθνξάο Γείθηεο θιάζεο βάζεο κπνξεί λα δείρλεη ζε αληηθείκελν ηεο παξαγνκέλεο θιάζεο Μπνξεί όκσο λα θαιέζεη κόλν ηηο κεζόδνπο ηεο θιάζεο βάζεο Ζ θιήζε κεζόδσλ ηεο παξαγόκελεο θιάζεο ζπληζηά ιάζνο Μέζνδνη πνπ δελ νξίδνληαη ζηε θιάζε βάζεο Ο ηύπνο δεδνκέλσλ ελόο/κηαο δείθηε/αλαθνξάο πξνζδηνξίδνπλ ηη κεζόδνπο κπνξνύκε λα θαιέζνπκε

21 1 // Fig. 10.7: fig10_07.cpp 2 // Attempting to invoke derived-class-only member functions 3 // through a base-class pointer. 4 #include "point.h" // Point class definition 5 #include "circle.h" // Circle class definition 6 7 int main() 8 { 9 Point *pointptr = 0; 10 Circle circle( 120, 89, 2.7 ); // aim base-class pointer at derived-class object 13 pointptr = &circle; // invoke base-class member functions on derived-class 16 // object through base-class pointer 17 int x = pointptr->getx(); 18 int y = pointptr->gety(); 19 pointptr->setx( 10 ); 20 pointptr->sety( 10 ); 21 pointptr->print(); 22 fig10_07.cpp (1 of 2) 21

22 23 // attempt to invoke derived-class-only member functions 24 // on derived-class object through base-class pointer 25 double radius = pointptr->getradius(); 26 pointptr->setradius( ); 27 double diameter = pointptr->getdiameter(); 28 double circumference = pointptr->getcircumference(); 29 double area = pointptr->getarea(); return 0; } // end main fig10_07.cpp (2 of 2) 22 These functions are only defined in Circle. However, pointptr is of class Point.

23 C:\cpphtp4\examples\ch10\fig10_07\fig10_07.cpp(25) : error C2039: 'getradius' : is not a member of 'Point' C:\cpphtp4\examples\ch10\fig10_07\point.h(6) : see declaration of 'Point' C:\cpphtp4\examples\ch10\fig10_07\fig10_07.cpp(26) : error C2039: 'setradius' : is not a member of 'Point' C:\cpphtp4\examples\ch10\fig10_07\point.h(6) : see declaration of 'Point' fig10_07.cpp output (1 of 1) 23 C:\cpphtp4\examples\ch10\fig10_07\fig10_07.cpp(27) : error C2039: 'getdiameter' : is not a member of 'Point' C:\cpphtp4\examples\ch10\fig10_07\point.h(6) : see declaration of 'Point' C:\cpphtp4\examples\ch10\fig10_07\fig10_07.cpp(28) : error C2039: 'getcircumference' : is not a member of 'Point' C:\cpphtp4\examples\ch10\fig10_07\point.h(6) : see declaration of 'Point' C:\cpphtp4\examples\ch10\fig10_07\fig10_07.cpp(29) : error C2039: 'getarea' : is not a member of 'Point' C:\cpphtp4\examples\ch10\fig10_07\point.h(6) : see declaration of 'Point'

24 Εικονικές Σσναρηήζεις (Virtual Functions) 24 Ο θαλόλαο είλαη ν ηύπνο ηνπ δείθηε λα θαζνξίδεη ηη κέζνδνη κπνξνύλ λα θιεζνύλ Οη virtual functions κπνξνύλ λα ηνλ αιιάμνπλ ην αληηθείκελν (θαη όρη ν δείθηεο) λα θαζνξίδεη ηη κέζνδνη κπνξνύλ λα θιεζνύλ Δίλαη απηό ρξήζηκν? Αο ζεσξήζνπκε ηελ ηεξαξρία Circle, Triangle, Rectangle Shape Κάζε θιάζε έρεη ηε δηθηά ηεο ζπλάξηεζε draw Γηα λα ζρεδηάζσ νπνηνδήπνηε ζρήκα Καινύκε ηε draw κέζσ δείθηε ηεο θιάζεο βάζεο Shape Τν πξόγξακκα επηιέγεη ηελ θαηάιιειε ζπλάξηεζε draw θαηά ην ρξόλν εθηέιεζεο (δπλακηθά) Μπνξνύκε λα ρεηξηζηνύκε κε γεληθό ηξόπν όια ηα ζρήκαηα

25 Εικονικές Σσναρηήζεις (Virtual Functions) 25 Γειώλνπκε ηελ draw σο virtual ζηελ θιάζε βάζεο Υπεξθαιύπηνπκε ηε draw ζε θάζε παξαγόκελε θιάζε ζαλ λα ηελ μαλανξίδνπκε, αιιά ή λέα ζπλάξηεζε πξέπεη λα έρεη αθξηβώο ηελ ίδηα ππνγξαθή κε απηή ηεο θιάζεο βάζεο Δάλ δειώζνπκε κηα ζπλάξηεζε virtual ζηελ θιάζε βάζεο virtual void draw() const; είλαη virtual ζε όιεο ηηο παξαγόκελεο θιάζεηο Δίλαη θαιή πξαθηηθή λα δειώλνπκε ξεηά σο virtual ηηο ζπλαξηήζεηο θαη ζηηο παξαγόκελεο θιάζεηο (program clarity) Γπλακηθή ζύλδεζε (Dynamic binding) Δπηινγή θιήζεο ηεο θαηάιιειεο ζπλάξηεζεο θαηά ην ρξόλν εθηέιεζεο Σπκβαίλεη κόλν κε ηε ρξήζε δεηθηώλ/αλαθνξώλ Δάλ ε ζπλάξηεζε θιεζεί κε ρξήζε νλόκαηνο αληηθεηκέλνπ (π.ρ. squareobject.draw()), ηόηε ρξεζηκνπνηείηαη ε ζπλάξηεζε ηνπ αληηθεηκέλνπ (static binding)

26 1 // Fig. 10.8: point.h 2 // Point class definition represents an x-y coordinate pair. 3 #ifndef POINT_H 4 #define POINT_H 5 6 class Point { 7 8 public: 9 Point( int = 0, int = 0 ); // default constructor void setx( int ); // set x in coordinate pair 12 int getx() const; // return x from coordinate pair void sety( int ); // set y in coordinate pair 15 int gety() const; // return y from coordinate pair 16 derived classes. 17 virtual void print() const; // output Point object private: 20 int x; // x part of coordinate pair 21 int y; // y part of coordinate pair }; // end class Point #endif Print declared virtual. It will be virtual in all point.h (1 of 1) 26

27 1 // Fig. 10.9: circle.h 2 // Circle class contains x-y coordinate pair and radius. 3 #ifndef CIRCLE_H 4 #define CIRCLE_H 5 6 #include "point.h" // Point class definition 7 8 class Circle : public Point { 9 10 public: // default constructor 13 Circle( int = 0, int = 0, double = 0.0 ); void setradius( double ); // set radius 16 double getradius() const; // return radius double getdiameter() const; // return diameter 19 double getcircumference() const; // return circumference 20 double getarea() const; // return area virtual void print() const; // output Circle object private: 25 double radius; // Circle's radius }; // end class Circle #endif circle.h (1 of 1) 27

28 1 // Fig : fig10_10.cpp 2 // Introducing polymorphism, virtual functions and dynamic 3 // binding. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 using std::fixed; 9 10 #include <iomanip> using std::setprecision; #include "point.h" // Point class definition 15 #include "circle.h" // Circle class definition int main() 18 { 19 Point point( 30, 50 ); 20 Point *pointptr = 0; Circle circle( 120, 89, 2.7 ); 23 Circle *circleptr = 0; 24 fig10_10.cpp (1 of 3) 28

29 25 // set floating-point numeric formatting 26 cout << fixed << setprecision( 2 ); // output objects point and circle using static binding 29 cout << "Invoking print function on point and circle " 30 << "\nobjects with static binding " 31 << "\n\npoint: "; 32 point.print(); // static binding 33 cout << "\ncircle: "; 34 circle.print(); // static binding // output objects point and circle using dynamic binding 37 cout << "\n\ninvoking print function on point and circle " 38 << "\nobjects with dynamic binding"; // aim base-class pointer at base-class object and print 41 pointptr = &point; 42 cout << "\n\ncalling virtual function print with base-class" 43 << "\npointer to base-class object" 44 << "\ninvokes base-class print function:\n"; 45 pointptr->print(); 46 fig10_10.cpp (2 of 3) 29

30 47 // aim derived-class pointer at derived-class 48 // object and print 49 circleptr = &circle; 50 cout << "\n\ncalling virtual function print with " 51 << "\nderived-class pointer to derived-class object " 52 << "\ninvokes derived-class print function:\n"; 53 circleptr->print(); // aim base-class pointer at derived-class object and print 56 pointptr = &circle; 57 cout << "\n\ncalling virtual function print with base-class" 58 << "\npointer to derived-class object " 59 << "\ninvokes derived-class print function:\n"; 60 pointptr->print(); // polymorphism: invokes circle's print 61 cout << endl; return 0; } // end main At run time, the program determines that pointptr is aiming at a Circle object, and calls Circle s print function. This is an example of polymorphism. fig10_10.cpp (3 of 3) 30

31 Invoking print function on point and circle objects with static binding 31 Point: [30, 50] Circle: Center = [120, 89]; Radius = 2.70 Invoking print function on point and circle objects with dynamic binding fig10_10.cpp output (1 of 1) Calling virtual function print with base-class pointer to base-class object invokes base-class print function: [30, 50] Calling virtual function print with derived-class pointer to derived-class object invokes derived-class print function: Center = [120, 89]; Radius = 2.70 Calling virtual function print with base-class pointer to derived-class object invokes derived-class print function: Center = [120, 89]; Radius = 2.70

32 32 Εικονικές Σσναρηήζεις (Virtual Functions) Πνιπκνξθηζκόο Τν ίδην κήλπκα, print, απνζηέιιεηαη ζε πνιιά αληηθείκελα Τα αληηθείκελα πξνζπειαύλνληαη κέζσ δείθηε ηεο θιάζεο βάζεο Τν κήλπκα παίξλεη πνιιέο κνξθέο Σύλνςε Γείθηεο θιάζεο βάζεο ζε αληηθείκελν ηεο θιάζεο βάζεο, δείθηεο παξαγόκελεο θιάζεο ζε αληηθείκελν ηεο παξαγόκελεο θιάζεο Απιό Γείθηεο θιάζεο βάζεο ζε αληηθείκελν ηεο παξαγόκελεο θιάζεο Καιεί κόλν κεζόδνπο ηεο θιάζεο βάζεο Γείθηεο παξαγόκελεο θιάζεο ζε αληηθείκελν ηεο θιάζεο βάζεο Compiler error Δπηηξέπεηαη κε downcasting

33 Παραδείγμαηα Πολσμορθιζμού 33 Παξαδείγκαηα Αο ζεσξήζνπκε όηη ε θιάζε Rectangle θιεξνλνκεί ηελ θιάζε Quadrilateral (Τεηξάπιεπξν) Ζ Rectangle πην εηδηθή ηεο Quadrilateral Οπνηαδήπνηε ιεηηνπξγία ηεο Quadrilateral κπνξεί λα γίλεη θαη γηα ηελ θιάζε Rectangle (i.e., perimeter, area) Δθαξκνγή video game Base class: SpaceObject Derived: Martian, SpaceShip, LaserBeam Κνηλή ζπλάξηεζε draw Εεηνύκελν: Ζ αλαλέσζε ηεο νζόλεο Ο Screen Manager δηαζέηεη vector κε base-class pointers ζε αληηθείκελα Σηέιλεη draw κήλπκα ζε θάζε αληηθείκελν To ίδην κήλπκα έρεη «πνιιέο κνξθέο» απνηειεζκάησλ

34 34 Παραδείγμαηα Πολσμορθιζμού Δθαξκνγή video game (ζπλέρεηα) Δύθνιν λα πξνζζέζνπκε κηα λέα θιάζε Mercurian Κιεξνλνκεί ηελ SpaceObject Πεξηέρεη ηε δηθηά ηεο πινπνίεζε γηα ηελ draw Ο Screen Manager δελ ρξεηάδεηαη αιιαγέο ζηνλ θώδηθά ηνπ Καιεί ηελ draw αλεμάξηεηα από ηνλ ηύπν ηνπ αληηθεηκέλνπ Mercurian αληηθείκελα ελζσκαηώλνληαη εύθνια Πνιπκνξθηζκόο Φεηξηζκόο αληηθεηκέλσλ ρσξίο λα γλσξίδνπκε ηνλ ηύπν ηνπο Δπεθηάζηκα πξνγξάκκαηα Δύθνιε πξνζζήθε θιάζεσλ

35 Χρήζη πεδίοσ για ηύπο ανηικειμένων και ενηολής switch Έλαο ηξόπνο λα πξνζδηνξίζνπκε ηελ θιάζε ελόο αληηθεηκέλνπ Βάδνπκε ζηελ θιάζε βάζεο έλα πεδίν shapetype ζηελ θιάζε Shape Φξεζηκνπνηνύκε κηα switch γηα λα θαιέζνπκε ηε ζσζηή print ζπλάξηεζε Πνιιά πξνβιήκαηα Μπνξεί λα μεράζνπκε ηνλ έιεγρν θάπνηαο πεξίπησζεο ζηελ switch Δάλ πξνζζέζνπκε/αθαηξέζνπκε κηα θιάζε πξέπεη λα ελεκεξώζνπκε ηελ switch Φξνλνβόξν θαη επηξξεπέο ζε ιάζε Καιύηεξα κε πνιπκνξθηζκό απινύζηεξα πξνγξάκκαηα, ιηγόηεξν debugging 35

36 36 Abstract Classes Abstract class Σθνπόο: λα απνηειέζεη κηα base class (abstract base class) Διιηπήο Σπκπιεξώλεηαη κε ηηο παξαγόκελεο θιάζεηο Γελ θαηαζθεπάδνπκε αληηθείκελα από κηα abstract class Μπνξνύκε λα έρνπκε δείθηεο θαη αλαθνξέο Concrete classes Μπνξνύκε λα θαηαζθεπάζνπκε αληηθείκελα Υινπνηνύκε όιεο ηηο ζπλαξηήζεηο πνπ πεξηέρνπλ

37 37 Abstract Classes Δίλαη ρξήζηκεο, όρη ππνρξεσηηθέο Γηα λα νξίζνπκε κηα abstract class Θέινπκε κηα ή πεξηζζόηεξεο "pure" virtual functions virtual void draw() const = 0; Regular virtual functions Έρνπλ πινπνίεζε, ε ππεξθάιπςε είλαη πξναηξεηηθή Pure virtual functions Γελ έρνπλ πινπνίεζε, ε ππεξθάιπςε είλαη ππνρξεσηηθή Μηα abstract class κπνξεί λα έρεη δεδνκέλα θαη πινπνηεκέλεο ζπλαξηήζεηο

38 38 Abstract Classes Γείθηεο ζε abstract base class Φξήζηκνη γηα πνιπκνξθηζκό Παξάδεηγκα εθαξκνγήο Abstract class Shape Οξίδεη ηελ draw σο pure virtual function Circle, Triangle, Rectangle Shape Κάζε θιάζε πξέπεη λα πινπνηήζεη ηελ draw Ο Screen Μanager γλσξίδεη όηη θάζε αληηθείκελν κπνξεί λα ζρεδηάζεη ηνλ εαπηό ηνπ

39 Μελέηη Περίπηωζης : Κληρονόμηζη Διεπαθής και Υλοποίηζης 39 Κάλνπκε ηελ Shape abstract base class Pure virtual functions (πξέπεη λα ζπκπιεξσζνύλ) getname, print Γελ έρεη λόεκα πξνθαζνξηζκέλε πινπνίεζε Virtual functions (κπνξνύλ λα επαλνξηζηνύλ) getarea, getvolume Αξρηθά επηζηξέθνπλ 0.0 Δάλ δελ επαλνξηζηνύλ, ρξεζηκνπνηνύληαη νη νξηζκνί ηεο base class Παξαγόκελεο θιάζεηο: Point, Circle, Cylinder

40 Μελέηη Περίπηωζης: Κληρονόμηζη Διεπαθής και Υλοποίηζης 40 getarea getvolume getname print Shape = 0 = 0 Point "Point" [x,y] Circle pr "Circle" center=[x,y]; radius=r Cylinder 2pr 2 +2prh pr 2 h "Cylinder" center=[x,y]; radius=r; height=h

41 1 // Fig : shape.h 2 // Shape abstract-base-class definition. 3 #ifndef SHAPE_H 4 #define SHAPE_H 5 6 #include <string> // C++ standard string class 7 8 using std::string; 9 10 class Shape { public: // virtual function that returns shape area 15 virtual double getarea() const; // virtual function that returns shape volume 18 virtual double getvolume() const; // pure virtual functions; overridden in derived classes 21 virtual string getname() const = 0; // return shape name 22 virtual void print() const = 0; // output shape }; // end class Shape #endif Virtual and pure virtual functions. shape.h (1 of 1) 41

42 1 // Fig : shape.cpp 2 // Shape class member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "shape.h" // Shape class definition 8 9 // return area of shape; 0.0 by default 10 double getarea() const 11 { 12 return 0.0; } // end function getarea // return volume of shape; 0.0 by default 17 double getvolume() const 18 { 19 return 0.0; } // end function getvolume shape.cpp (1 of 1) 42

43 1 // Fig : point.h 2 // Point class definition represents an x-y coordinate pair. 3 #ifndef POINT_H 4 #define POINT_H 5 6 #include "shape.h" // Shape class definition 7 8 class Point : public Shape { 9 10 public: 11 Point( int = 0, int = 0 ); // default constructor void setx( int ); // set x in coordinate pair 14 int getx() const; // return x from coordinate pair void sety( int ); // set y in coordinate pair 17 int gety() const; // return y from coordinate pair // return name of shape (i.e., "Point" ) 20 virtual string getname() const; virtual void print() const; // output Point object 23 Point only redefines getname and print, since getarea and getvolume are zero (it can use the default implementation). point.h (1 of 2) 43

44 24 private: 25 int x; // x part of coordinate pair 26 int y; // y part of coordinate pair }; // end class Point #endif point.h (2 of 2) 44

45 1 // Fig : point.cpp 2 // Point class member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "point.h" // Point class definition 8 9 // default constructor 10 Point::Point( int xvalue, int yvalue ) 11 : x( xvalue ), y( yvalue ) 12 { 13 // empty body } // end Point constructor // set x in coordinate pair 18 void Point::setX( int xvalue ) 19 { 20 x = xvalue; // no need for validation } // end function setx 23 point.cpp (1 of 3) 45

46 24 // return x from coordinate pair 25 int Point::getX() const 26 { 27 return x; } // end function getx // set y in coordinate pair 32 void Point::setY( int yvalue ) 33 { 34 y = yvalue; // no need for validation } // end function sety // return y from coordinate pair 39 int Point::getY() const 40 { 41 return y; } // end function gety 44 point.cpp (2 of 3) 46

47 45 // override pure virtual function getname: return name of Point 46 string Point::getName() const 47 { 48 return "Point"; } // end function getname // override pure virtual function print: output Point object 53 void Point::print() const 54 { 55 cout << '[' << getx() << ", " << gety() << ']'; } // end function print Must override pure virtual functions getname and print. point.cpp (3 of 3) 47

48 1 // Fig : circle.h 2 // Circle class contains x-y coordinate pair and radius. 3 #ifndef CIRCLE_H 4 #define CIRCLE_H 5 6 #include "point.h" // Point class definition 7 8 class Circle : public Point { 9 10 public: // default constructor 13 Circle( int = 0, int = 0, double = 0.0 ); void setradius( double ); // set radius 16 double getradius() const; // return radius double getdiameter() const; // return diameter 19 double getcircumference() const; // return circumference 20 virtual double getarea() const; // return area // return name of shape (i.e., "Circle") 23 virtual string getname() const; virtual void print() const; // output Circle object circle.h (1 of 2) 48

49 26 27 private: 28 double radius; // Circle's radius }; // end class Circle #endif circle.h (2 of 2) 49

50 1 // Fig : circle.cpp 2 // Circle class member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "circle.h" // Circle class definition 8 9 // default constructor 10 Circle::Circle( int xvalue, int yvalue, double radiusvalue ) 11 : Point( xvalue, yvalue ) // call base-class constructor 12 { 13 setradius( radiusvalue ); } // end Circle constructor // set radius 18 void Circle::setRadius( double radiusvalue ) 19 { 20 radius = ( radiusvalue < 0.0? 0.0 : radiusvalue ); } // end function setradius 23 circle.cpp (1 of 3) 50

51 24 // return radius 25 double Circle::getRadius() const 26 { 27 return radius; } // end function getradius // calculate and return diameter 32 double Circle::getDiameter() const 33 { 34 return 2 * getradius(); } // end function getdiameter // calculate and return circumference 39 double Circle::getCircumference() const 40 { 41 return * getdiameter(); } // end function getcircumference 44 circle.cpp (2 of 3) 51

52 45 // override virtual function getarea: return area of Circle 46 double Circle::getArea() const 47 { 48 return * getradius() * getradius(); } // end function getarea // override virutual function getname: Override return getarea name of because Circle 53 string Circle::getName() const it now applies to Circle. 54 { 55 return "Circle"; } // end function getname // override virtual function print: output Circle object 60 void Circle::print() const 61 { 62 cout << "center is "; 63 Point::print(); // invoke Point's print function 64 cout << "; radius is " << getradius(); } // end function print circle.cpp (3 of 3) 52

53 1 // Fig : cylinder.h 2 // Cylinder class inherits from class Circle. 3 #ifndef CYLINDER_H 4 #define CYLINDER_H 5 6 #include "circle.h" // Circle class definition 7 8 class Cylinder : public Circle { 9 10 public: // default constructor 13 Cylinder( int = 0, int = 0, double = 0.0, double = 0.0 ); void setheight( double ); // set Cylinder's height 16 double getheight() const; // return Cylinder's height virtual double getarea() const; // return Cylinder's area 19 virtual double getvolume() const; // return Cylinder's volume 20 cylinder.h (1 of 2) 53

54 21 // return name of shape (i.e., "Cylinder" ) 22 virtual string getname() const; virtual void print() const; // output Cylinder private: 27 double height; // Cylinder's height }; // end class Cylinder #endif cylinder.h (2 of 2) 54

55 1 // Fig : cylinder.cpp 2 // Cylinder class inherits from class Circle. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "cylinder.h" // Cylinder class definition 8 9 // default constructor 10 Cylinder::Cylinder( int xvalue, int yvalue, double radiusvalue, 11 double heightvalue ) 12 : Circle( xvalue, yvalue, radiusvalue ) 13 { 14 setheight( heightvalue ); } // end Cylinder constructor // set Cylinder's height 19 void Cylinder::setHeight( double heightvalue ) 20 { 21 height = ( heightvalue < 0.0? 0.0 : heightvalue ); } // end function setheight cylinder.cpp (1 of 3) 55

56 24 25 // get Cylinder's height 26 double Cylinder::getHeight() const 27 { 28 return height; } // end function getheight // override virtual function getarea: return Cylinder area 33 double Cylinder::getArea() const 34 { 35 return 2 * Circle::getArea() + // code reuse 36 getcircumference() * getheight(); } // end function getarea // override virtual function getvolume: return Cylinder volume 41 double Cylinder::getVolume() const 42 { 43 return Circle::getArea() * getheight(); // code reuse } // end function getvolume 46 cylinder.cpp (2 of 3) 56

57 47 // override virtual function getname: return name of Cylinder 48 string Cylinder::getName() const 49 { 50 return "Cylinder"; } // end function getname // output Cylinder object 55 void Cylinder::print() const 56 { 57 Circle::print(); // code reuse 58 cout << "; height is " << getheight(); } // end function print cylinder.cpp (3 of 3) 57

58 1 // Fig : fig10_20.cpp 2 // Driver for shape, point, circle, cylinder hierarchy. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 using std::fixed; 8 9 #include <iomanip> using std::setprecision; #include <vector> using std::vector; #include "shape.h" // Shape class definition 18 #include "point.h" // Point class definition 19 #include "circle.h" // Circle class definition 20 #include "cylinder.h" // Cylinder class definition void virtualviapointer( const Shape * ); 23 void virtualviareference( const Shape & ); 24 fig10_20.cpp (1 of 5) 58

59 25 int main() 26 { 27 // set floating-point number format 28 cout << fixed << setprecision( 2 ); Point point( 7, 11 ); // create a Point 31 Circle circle( 22, 8, 3.5 ); // create a Circle 32 Cylinder cylinder( 10, 10, 3.3, 10 ); // create a Cylinder cout << point.getname() << ": "; // static binding 35 point.print(); // static binding 36 cout << '\n'; cout << circle.getname() << ": "; // static binding 39 circle.print(); // static binding 40 cout << '\n'; cout << cylinder.getname() << ": "; // static binding 43 cylinder.print(); // static binding 44 cout << "\n\n"; 45 fig10_20.cpp (2 of 5) 59

60 46 // create vector of three base-class pointers 47 vector< Shape * > shapevector( 3 ); // aim shapevector[0] at derived-class Point object 50 shapevector[ 0 ] = &point; // aim shapevector[1] at derived-class Circle Function object 53 shapevector[ 1 ] = &circle; // aim shapevector[2] at derived-class Cylinder object 56 shapevector[ 2 ] = &cylinder; // loop through shapevector and call virtualviapointer 59 // to print the shape name, attributes, area and volume 60 // of each object using dynamic binding 61 cout << "\nvirtual function calls made off " 62 << "base-class pointers:\n\n"; for ( int i = 0; i < shapevector.size(); i++ ) 65 virtualviapointer( shapevector[ i ] ); 66 Create a vector of generic Shape pointers, and aim them at various objects. virtualviapointer calls the virtual functions (print, getname, etc.) using the baseclass pointers. The types are dynamically bound at run-time. fig10_20.cpp (3 of 5) 60

61 67 // loop through shapevector and call virtualviareference 68 // to print the shape name, attributes, area and volume 69 // of each object using dynamic binding 70 cout << "\nvirtual function calls made off " 71 << "base-class references:\n\n"; for ( int j = 0; j < shapevector.size(); j++ ) 74 virtualviareference( *shapevector[ j ] ); return 0; } // end main // make virtual function calls off a base-class pointer 81 // using dynamic binding 82 void virtualviapointer( const Shape *baseclassptr ) 83 { 84 cout << baseclassptr->getname() << ": "; baseclassptr->print(); cout << "\narea is " << baseclassptr->getarea() 89 << "\nvolume is " << baseclassptr->getvolume() 90 << "\n\n"; } // end function virtualviapointer 93 Use references instead of pointers, for the same effect. Call virtual functions; the proper class function will be called at run-time. fig10_20.cpp (4 of 5) 61

62 94 // make virtual function calls off a base-class reference 95 // using dynamic binding 96 void virtualviareference( const Shape &baseclassref ) 97 { 98 cout << baseclassref.getname() << ": "; baseclassref.print(); cout << "\narea is " << baseclassref.getarea() 103 << "\nvolume is " << baseclassref.getvolume() << "\n\n"; } // end function virtualviareference fig10_20.cpp (5 of 5) 62

63 Point: [7, 11] Circle: center is [22, 8]; radius is 3.50 Cylinder: center is [10, 10]; radius is 3.30; height is Virtual function calls made off base-class pointers: fig10_20.cpp output (1 of 2) 63 Point: [7, 11] area is 0.00 volume is 0.00 Circle: center is [22, 8]; radius is 3.50 area is volume is 0.00 Cylinder: center is [10, 10]; radius is 3.30; height is area is volume is

64 Virtual function calls made off base-class references: Point: [7, 11] area is 0.00 volume is 0.00 Circle: center is [22, 8]; radius is 3.50 area is volume is 0.00 fig10_20.cpp output (2 of 2) 64 Cylinder: center is [10, 10]; radius is 3.30; height is area is volume is

65 Πολσμορθιζμός, Εικονικές Σσναρηήζεις και Δσναμική Σύνδεζη: Υπάρτει κόζηος τρήζης? 65 Ο πνιπκνξθηζκόο έρεη overhead Γελ ρξεζηκνπνηείηαη π.ρ. ζηελ STL (Standard Template Library) γηα ιόγνπο επίδνζεο virtual function table (vtable) Κάζε θιάζε κε κηα virtual function έρεη έλα vtable Γηα θάζε virtual function, ην vtable έρεη δείθηε ζηελ θαηάιιειε ζπλάξηεζε

66 Virtual Destructors 66 Γείθηεο θιάζεο βάζεο ζε αληηθείκελν ηεο παξαγόκελεο θιάζεο Δάλ θαηαζηξέςνπκε ην αληηθείκελν κε ηελ delete, ε ζπκπεξηθνξά είλαη απξνζδηόξηζηε Απιή ιύζε Γειώλνπκε ηνλ destructor ηεο base-class σο virtual Όηαλ θαιείηαη ε delete θαιείηαη θαη ν θαηάιιεινο destructor Όηαλ θαηαζηξέθνπκε έλα αληηθείκελν κηαο παξαγόκελεο θιάζεο Πξώηα εθηειείηαη ν destructor ηεο παξαγόκελεο θιάζεο Μεηά εθηειείηαη ν destructor ηεο base-class Οη constructors δελ κπνξεί λα είλαη virtual

67 Μελέηη Περίπηωζης: Σύζηημα Μιζθοδοζίας με Πολσμορθιζμό 67 Πξόγξακκα γηα κηζζνδνζία Φξήζε virtual functions θαη πνιπκνξθηζκνύ Πξόβιεκα 4 είδε εξγαδνκέλσλ, ακείβνληαη ζε εβδνκαδηαία βάζε Salaried (κηζζόο, αλεμαξηήησο σξώλ) Hourly (ππεξσξίεο [>40 hours] + 50% ην σξνκίζζην) Commission (πνζνζηό επί ησλ πσιήζεσλ) Base-plus-commission (βαζηθόο κηζζόο + πνζνζηό επί ησλ πσιήζεσλ) Ζ δηνίθεζε επηζπκεί λα δώζεη αύμεζε 10%

68 Μελέηη Περίπηωζης: Σύζηημα Μιζθοδοζίας με Πολσμορθιζμό 68 Base class: Employee Pure virtual function earnings (returns pay) Πξέπεη λα γλσξίδνπκε ην είδνο ηνπ εξγαδόκελνπ Γελ έρεη λόεκα γηα ηε γεληθή θιάζε employee Παξαγόκελεο θιάζεηο από ηελ Employee Employee SalariedEmployee CommissionEmployee HourlyEmployee BasePlusCommissionEmployee

69 Μελέηη Περίπηωζης: Σύζηημα Μιζθοδοζίας με Πολσμορθιζμό 69 Downcasting dynamic_cast operator Πξνζδηνξίδεη ηνλ ηύπν ηνπ αληηθεηκέλνπ θαηά ηνλ ρξόλν εθηέιεζεο Δπηζηξέθεη 0 εάλ δελ είλαη ζσζηνύ ηύπνπ (cannot be cast) NewClass *ptr = dynamic_cast < NewClass *> objectptr; Keyword typeid Header <typeinfo> Usage: typeid(object) Δπηζηξέθεη type_info object Πεξηέρεη πιεξνθνξία γηα ηνλ ηύπν ηνπ νξίζκαηνο, καδί κε ην όλνκά ηνπ typeid(object).name()

70 1 // Fig : employee.h 2 // Employee abstract base class. 3 #ifndef EMPLOYEE_H 4 #define EMPLOYEE_H 5 6 #include <string> // C++ standard string class 7 8 using std::string; 9 10 class Employee { public: 13 Employee( const string &, const string &, const string & ); void setfirstname( const string & ); 16 string getfirstname() const; void setlastname( const string & ); 19 string getlastname() const; void setsocialsecuritynumber( const string & ); 22 string getsocialsecuritynumber() const; 23 employee.h (1 of 2) 70

71 24 // pure virtual function makes Employee abstract base class 25 virtual double earnings() const = 0; // pure virtual 26 virtual void print() const; // virtual private: 29 string firstname; 30 string lastname; 31 string socialsecuritynumber; }; // end class Employee #endif // EMPLOYEE_H employee.h (2 of 2) 71

72 1 // Fig : employee.cpp 2 // Abstract-base-class Employee member-function definitions. 3 // Note: No definitions are given for pure virtual functions. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 #include "employee.h" // Employee class definition // constructor 12 Employee::Employee( const string &first, const string &last, 13 const string &SSN ) 14 : firstname( first ), 15 lastname( last ), 16 socialsecuritynumber( SSN ) 17 { 18 // empty body } // end Employee constructor 21 employee.cpp (1 of 3) 72

73 22 // return first name 23 string Employee::getFirstName() const 24 { 25 return firstname; } // end function getfirstname // return last name 30 string Employee::getLastName() const 31 { 32 return lastname; } // end function getlastname // return social security number 37 string Employee::getSocialSecurityNumber() const 38 { 39 return socialsecuritynumber; } // end function getsocialsecuritynumber // set first name 44 void Employee::setFirstName( const string &first ) 45 { 46 firstname = first; } // end function setfirstname 49 employee.cpp (2 of 3) 73

74 50 // set last name 51 void Employee::setLastName( const string &last ) 52 { 53 lastname = last; } // end function setlastname // set social security number 58 void Employee::setSocialSecurityNumber( const string &number ) 59 { 60 socialsecuritynumber = number; // should validate } // end function setsocialsecuritynumber // print Employee's information 65 void Employee::print() const 66 { 67 cout << getfirstname() << ' ' << getlastname() 68 << "\nsocial security number: " 69 << getsocialsecuritynumber() << endl; } // end function print Default implementation for virtual function print. employee.cpp (3 of 3) 74

75 1 // Fig : salaried.h 2 // SalariedEmployee class derived from Employee. 3 #ifndef SALARIED_H 4 #define SALARIED_H 5 6 #include "employee.h" // Employee class definition 7 8 class SalariedEmployee : public Employee { 9 10 public: 11 SalariedEmployee( const string &, const string &, 12 const string &, double = 0.0 ); void setweeklysalary( double ); 15 double getweeklysalary() const; virtual double earnings() const; 18 virtual void print() const; // "salaried employee: " private: 21 double weeklysalary; }; // end class SalariedEmployee #endif // SALARIED_H New functions for the SalariedEmployee class. earnings must be overridden. print is overridden to specify that this is a salaried employee. salaried.h (1 of 1) 75

76 1 // Fig : salaried.cpp 2 // SalariedEmployee class member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "salaried.h" // SalariedEmployee class definition 8 9 // SalariedEmployee constructor 10 SalariedEmployee::SalariedEmployee( const string &first, 11 const string &last, const string basic &socialsecuritynumber, fields. 12 double salary ) 13 : Employee( first, last, socialsecuritynumber ) 14 { 15 setweeklysalary( salary ); } // end SalariedEmployee constructor // set salaried employee's salary 20 void SalariedEmployee::setWeeklySalary( double salary ) 21 { 22 weeklysalary = salary < 0.0? 0.0 : salary; } // end function setweeklysalary 25 Use base class constructor for salaried.cpp (1 of 2) 76

77 26 // calculate salaried employee's pay 27 double SalariedEmployee::earnings() const 28 { 29 return getweeklysalary(); } // end function earnings // return salaried employee's salary 34 double SalariedEmployee::getWeeklySalary() const 35 { 36 return weeklysalary; } // end function getweeklysalary // print salaried employee's name 41 void SalariedEmployee::print() const 42 { 43 cout << "\nsalaried employee: "; 44 Employee::print(); // code reuse } // end function print Must implement pure virtual functions. salaried.cpp (2 of 2) 77

78 1 // Fig : hourly.h 2 // HourlyEmployee class definition. 3 #ifndef HOURLY_H 4 #define HOURLY_H 5 6 #include "employee.h" // Employee class definition 7 8 class HourlyEmployee : public Employee { 9 10 public: 11 HourlyEmployee( const string &, const string &, 12 const string &, double = 0.0, double = 0.0 ); void setwage( double ); 15 double getwage() const; void sethours( double ); 18 double gethours() const; virtual double earnings() const; 21 virtual void print() const; private: 24 double wage; // wage per hour 25 double hours; // hours worked for week }; // end class HourlyEmployee #endif // HOURLY_H hourly.h (1 of 1) 78

79 1 // Fig : hourly.cpp 2 // HourlyEmployee class member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "hourly.h" 8 9 // constructor for class HourlyEmployee 10 HourlyEmployee::HourlyEmployee( const string &first, 11 const string &last, const string &socialsecuritynumber, 12 double hourlywage, double hoursworked ) 13 : Employee( first, last, socialsecuritynumber ) 14 { 15 setwage( hourlywage ); 16 sethours( hoursworked ); } // end HourlyEmployee constructor // set hourly employee's wage 21 void HourlyEmployee::setWage( double wageamount ) 22 { 23 wage = wageamount < 0.0? 0.0 : wageamount; } // end function setwage hourly.cpp (1 of 3) 79

80 26 27 // set hourly employee's hours worked 28 void HourlyEmployee::setHours( double hoursworked ) 29 { 30 hours = ( hoursworked >= 0.0 && hoursworked <= )? 31 hoursworked : 0.0; } // end function sethours // return hours worked 36 double HourlyEmployee::getHours() const 37 { 38 return hours; } // end function gethours // return wage 43 double HourlyEmployee::getWage() const 44 { 45 return wage; } // end function getwage 48 hourly.cpp (2 of 3) 80

81 49 // get hourly employee's pay 50 double HourlyEmployee::earnings() const 51 { 52 if ( hours <= 40 ) // no overtime 53 return wage * hours; 54 else // overtime is paid at wage * return 40 * wage + ( hours - 40 ) * wage * 1.5; } // end function earnings // print hourly employee's information 60 void HourlyEmployee::print() const 61 { 62 cout << "\nhourly employee: "; 63 Employee::print(); // code reuse } // end function print hourly.cpp (3 of 3) 81

82 1 // Fig : commission.h 2 // CommissionEmployee class derived from Employee. 3 #ifndef COMMISSION_H 4 #define COMMISSION_H 5 6 #include "employee.h" // Employee class definition 7 8 class CommissionEmployee : public Employee { 9 10 public: 11 CommissionEmployee( const string &, const string &, 12 const string &, double = 0.0, double = 0.0 ); void setcommissionrate( double ); 15 double getcommissionrate() const; void setgrosssales( double ); 18 double getgrosssales() const; virtual double earnings() const; 21 virtual void print() const; private: 24 double grosssales; // gross weekly sales 25 double commissionrate; // commission percentage }; // end class CommissionEmployee Must set rate and sales #endif // COMMISSION_H commission.h (1 of 1) 82

83 1 // Fig : commission.cpp 2 // CommissionEmployee class member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "commission.h" // Commission class 8 9 // CommissionEmployee constructor 10 CommissionEmployee::CommissionEmployee( const string &first, 11 const string &last, const string &socialsecuritynumber, 12 double grossweeklysales, double percent ) 13 : Employee( first, last, socialsecuritynumber ) 14 { 15 setgrosssales( grossweeklysales ); 16 setcommissionrate( percent ); } // end CommissionEmployee constructor // return commission employee's rate 21 double CommissionEmployee::getCommissionRate() const 22 { 23 return commissionrate; } // end function getcommissionrate commission.cpp (1 of 3) 83

84 26 27 // return commission employee's gross sales amount 28 double CommissionEmployee::getGrossSales() const 29 { 30 return grosssales; } // end function getgrosssales // set commission employee's weekly base salary 35 void CommissionEmployee::setGrossSales( double sales ) 36 { 37 grosssales = sales < 0.0? 0.0 : sales; } // end function setgrosssales // set commission employee's commission 42 void CommissionEmployee::setCommissionRate( double rate ) 43 { 44 commissionrate = ( rate > 0.0 && rate < 1.0 )? rate : 0.0; } // end function setcommissionrate 47 commission.cpp (2 of 3) 84

85 48 // calculate commission employee's earnings 49 double CommissionEmployee::earnings() const 50 { 51 return getcommissionrate() * getgrosssales(); } // end function earnings // print commission employee's name 56 void CommissionEmployee::print() const 57 { 58 cout << "\ncommission employee: "; 59 Employee::print(); // code reuse } // end function print commission.cpp (3 of 3) 85

86 1 // Fig : baseplus.h 2 // BasePlusCommissionEmployee class derived from Employee. 3 #ifndef BASEPLUS_H 4 #define BASEPLUS_H 5 6 #include "commission.h" // Employee class definition 7 8 class BasePlusCommissionEmployee : public CommissionEmployee { 9 10 public: 11 BasePlusCommissionEmployee( const string &, const string &, 12 const string &, double = 0.0, double = 0.0, double = 0.0 ); void setbasesalary( double ); 15 double getbasesalary() const; virtual double earnings() const; 18 virtual void print() const; private: 21 double basesalary; // base salary per week }; // end class BasePlusCommissionEmployee #endif // BASEPLUS_H Inherits from CommissionEmployee (and from Employee baseplus.h (1 of 1) indirectly). 86

87 1 // Fig : baseplus.cpp 2 // BasePlusCommissionEmployee member-function definitions. 3 #include <iostream> 4 5 using std::cout; 6 7 #include "baseplus.h" 8 9 // constructor for class BasePlusCommissionEmployee 10 BasePlusCommissionEmployee::BasePlusCommissionEmployee( 11 const string &first, const string &last, 12 const string &socialsecuritynumber, 13 double grosssalesamount, double rate, 14 double basesalaryamount ) 15 : CommissionEmployee( first, last, socialsecuritynumber, 16 grosssalesamount, rate ) 17 { 18 setbasesalary( basesalaryamount ); } // end BasePlusCommissionEmployee constructor // set base-salaried commission employee's wage 23 void BasePlusCommissionEmployee::setBaseSalary( double salary ) 24 { 25 basesalary = salary < 0.0? 0.0 : salary; } // end function setbasesalary baseplus.cpp (1 of 2) 87

88 28 29 // return base-salaried commission employee's base salary 30 double BasePlusCommissionEmployee::getBaseSalary() const 31 { 32 return basesalary; } // end function getbasesalary // return base-salaried commission employee's earnings 37 double BasePlusCommissionEmployee::earnings() const 38 { 39 return getbasesalary() + CommissionEmployee::earnings(); } // end function earnings // print base-salaried commission employee's name 44 void BasePlusCommissionEmployee::print() const 45 { 46 cout << "\nbase-salaried commission employee: "; 47 Employee::print(); // code reuse } // end function print baseplus.cpp (2 of 2) 88

89 1 // Fig : fig10_33.cpp 2 // Driver for Employee hierarchy. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 using std::fixed; 8 9 #include <iomanip> using std::setprecision; #include <vector> using std::vector; #include <typeinfo> #include "employee.h" // Employee base class 20 #include "salaried.h" // SalariedEmployee class 21 #include "commission.h" // CommissionEmployee class 22 #include "baseplus.h" // BasePlusCommissionEmployee class 23 #include "hourly.h" // HourlyEmployee class 24 fig10_33.cpp (1 of 4) 89

90 25 int main() 26 { 27 // set floating-point output formatting 28 cout << fixed << setprecision( 2 ); // create vector employees 31 vector < Employee * > employees( 4 ); // initialize vector with Employees 34 employees[ 0 ] = new SalariedEmployee( "John", "Smith", 35 " ", ); 36 employees[ 1 ] = new CommissionEmployee( "Sue", "Jones", 37 " ", 10000,.06 ); 38 employees[ 2 ] = new BasePlusCommissionEmployee( "Bob", 39 "Lewis", " ", 300, 5000,.04 ); 40 employees[ 3 ] = new HourlyEmployee( "Karen", "Price", 41 " ", 16.75, 40 ); 42 fig10_33.cpp (2 of 4) 90

91 43 // generically process each element in vector employees 44 for ( int i = 0; i < employees.size(); i++ ) { // output employee information 47 employees[ i ]->print(); // downcast pointer 50 BasePlusCommissionEmployee *commissionptr = 51 dynamic_cast < BasePlusCommissionEmployee * > 52 ( employees[ i ] ); // determine whether element points to base-salaried 55 // commission employee 56 if ( commissionptr!= 0 ) { 57 cout << "old base salary: $" 58 << commissionptr->getbasesalary() << endl; 59 commissionptr->setbasesalary( * commissionptr->getbasesalary() ); 61 cout << "new base salary with 10% increase is: $" 62 << commissionptr->getbasesalary() << endl; } // end if cout << "earned $" << employees[ i ]->earnings() << endl; } // end for 69 Use downcasting to cast the employee object into a BasePlusCommissionEmployee. If it points to the correct type of object, the pointer is non-zero. This fig10_33.cpp way, we can give a raise to only (3 of 4) BasePlusCommissionEmployees. 91

Ανάλυση άσκησης. Employee. SalariedEmployee CommissionEmployee HourlyEmployee. BasePlusCommissionEmployee

Ανάλυση άσκησης. Employee. SalariedEmployee CommissionEmployee HourlyEmployee. BasePlusCommissionEmployee Μία εταιρεία πληρώνει τους εργαζόμενους της σε εβδομαδιαία βάση. Οι αποδοχές των εργαζόμενων υπολογίζονται με τέσσερις διαφορετικούς τρόπους : Α) Μισθωτοί (SalariedEmployee), πληρώνονται με σταθερό ποσό

Διαβάστε περισσότερα

Πανεπιστήμιο Πατρών ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Κληπονομικόηηηα. Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ

Πανεπιστήμιο Πατρών ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Κληπονομικόηηηα. Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ Πανεπιστήμιο Πατρών 1 Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Κληπονομικόηηηα Πεπιεχόμενα 2 Ειζαγωγή Ιεπαπχία κλάζεων χέζειρ IS-A, HAS-A Κλάζειρ βάζηρ

Διαβάστε περισσότερα

1 η Προαπαιτούµενη. Κάθε οµάδα θα δηµιουργήσει ένα πρόγραµµα, µε πιο «πολύπλοκη» κληρονοµικότητα µε ιεραρχίες ή και πολλαπλή κληρονοµικότητα.

1 η Προαπαιτούµενη. Κάθε οµάδα θα δηµιουργήσει ένα πρόγραµµα, µε πιο «πολύπλοκη» κληρονοµικότητα µε ιεραρχίες ή και πολλαπλή κληρονοµικότητα. 1 η Προαπαιτούµενη Κάθε οµάδα θα δηµιουργήσει ένα πρόγραµµα, µε πιο «πολύπλοκη» κληρονοµικότητα µε ιεραρχίες ή και πολλαπλή κληρονοµικότητα. Μπορεί να κρατήσει το πρόγραµµα που έκανε την προηγούµενη φορά

Διαβάστε περισσότερα

Constructors and Destructors in C++

Constructors and Destructors in C++ Constructors and Destructors in C++ Σύνθεζη Πνιύ ζπρλά ζηε C++ κία θιάζε κπνξεί λα πεξηέρεη ζαλ κέιεδεδνκέλα αληηθείκελα άιισλ θιάζεσλ. Πνηα είλαη ε ζεηξά κε ηελ νπνία δεκηνπξγνύληαη θαη θαηαζηξέθνληαη

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 15/5/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τα πλεονεκτήματα της κληρονομικότητας Αποφυγή

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 6: C++ ΚΛΑΣΕΙΣ, ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ, ΠΟΛΥΜΟΡΦΙΣΜΟΣ Πολυμορφισμός ΔΙΔΑΣΚΟΝΤΕΣ:Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 9/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Κληρονομικότητα Τροποποιητικά πρόσβασης κλάσεων

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 14/5/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr INTERFACES Μελέτη περίπτωσης: δημιουργία και χρήση

Διαβάστε περισσότερα

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ.

Απαντήσεις θέματος 2. Παξαθάησ αθνινπζεί αλαιπηηθή επίιπζε ησλ εξσηεκάησλ. Απαντήσεις θέματος 2 Απηά πνπ έπξεπε λα γξάςεηε (δελ ρξεηαδόηαλ δηθαηνιόγεζε εθηόο από ην Γ) Α return a*b; Β 0:acegf2, 1: acegf23, 2: acegf234, 3:acegf2345, 4:acegf23456, 5:acegf234567, 6:acegf2345678,

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 29/5/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Περίληψη επιτρεπτών εκχωρήσεων μεταξύ μεταβλητών

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΕΡΓΑΣΤΗΡΙΟ - 3 ΘΕΜΑΤΑ: Κλάσεις Αντικείμενα Δομητές/Κατασκευαστές - Μέθοδοι - Παράμετροι

Διαβάστε περισσότερα

7.1 Εισαγωγή 7.2 const Αντικείµενα και const Συναρτήσεις 7.3 Σύνθεση: Αντικείµενα ως µέλη τάξης 7.4 friend Συναρτήσεις και τάξεις 7.

7.1 Εισαγωγή 7.2 const Αντικείµενα και const Συναρτήσεις 7.3 Σύνθεση: Αντικείµενα ως µέλη τάξης 7.4 friend Συναρτήσεις και τάξεις 7. Πανεπιστήµιο Πατρών Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση εδοµένων 1 Τάξεις Μέρος ΙΙ 7.1 Εισαγωγή 7.2 const Αντικείµενα και

Διαβάστε περισσότερα

ΠΡΟΤΥΠΑ. ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων.

ΠΡΟΤΥΠΑ. ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων. ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΕΡΓΑΣΤΗΡΙΟ C++ ΕΞΑΜΗΝΟ Γ Ακαδηµαϊκό Έτος 2006-2007 ΠΡΟΤΥΠΑ ΠΑΡΑ ΕΙΓΜΑ ηµιουργία πρότυπου στοίβας (stack) και στη συνέχεια δηµιουργία µιας στοίβας σηµείων. // point.h #ifndef POINT_H

Διαβάστε περισσότερα

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2

TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΠΡΟΑΡΜΟΓΗ: ΒΑΛΚΑΝΙΩΣΗ ΔΗΜ. ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 TOOLBOOK ΜΑΘΗΜΑ 2 TOOLBOOK (μάθημα 2) Δεκηνπξγία βηβιίνπ θαη ζειίδσλ ΕΚΠΑΙΔΕΤΣΙΚΟ ΠΕ19 1 Δημιουργία σελίδων και βιβλίων Έλα θαηλνύξην βηβιίν πεξηέρεη κία άδεηα ζειίδα κε έλα άδεην background. Δελ κπνξνύκε λα μερσξίζνπκε

Διαβάστε περισσότερα

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

ΔΙΔΑΚΩΝ: ΠΑΡΙ ΜΑΣΟΡΟΚΩΣΑ

ΔΙΔΑΚΩΝ: ΠΑΡΙ ΜΑΣΟΡΟΚΩΣΑ ΑΝΣΙΚΕΙΜΕΝΟΣΡΑΦΗ ΠΡΟΓΡΑΜΜΑΣΙΜΟ(Θ) Ενότητα 6: ΑΝΣΙΚΕΙΜΕΝΟΣΡΑΦΗ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΔΙΔΑΚΩΝ: ΠΑΡΙ ΜΑΣΟΡΟΚΩΣΑ ΧΟΛΗ ΣΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ ΣΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗ ΣΕ Άδειεσ Χρήςησ Σο παρόν εκπαιδευτικό υλικό

Διαβάστε περισσότερα

Δυναμική μνήμη με πίνακες και λίστες

Δυναμική μνήμη με πίνακες και λίστες Δυναμική μνήμη με πίνακες και λίστες Ατζέντα ονομάτων Οι πίνακες βοηθάνε στην εύκολη προσπέλαση, στην σειριοποίηση των δεδομένων για αποθήκευση ή μετάδοση. Απαιτούν ωστόσο είτε προκαταβολική δέσμευση μνήμης

Διαβάστε περισσότερα

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #6 η : Η λέξη κλειδί this, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, υπερκάλυψη, επίπεδα προσπέλασης Γαβαλάς Δαμιανός dgavalas@aegean.gr

Διαβάστε περισσότερα

Τι θα δούμε σε αυτό το μάθημα;

Τι θα δούμε σε αυτό το μάθημα; Τι θα δούμε σε αυτό το μάθημα; Οξηζκόο κηαο δηαζύλδεζεο (interface) κε ηελ πξνδηαγξαθή ηεο κνξθήο θαη ηνπ ηύπνπ επηζηξνθήο ηωλ κεζόδωλ. Υινπνίεζε κηαο δηαζύλδεζεο από κία δνκή ή κία θιάζε. Αλαθνξά ζε κία

Διαβάστε περισσότερα

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288

ΔΡΓΑΙΑ 1. Γιαδικησακά πληροθοριακά σζηήμαηα. Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές. ηέθανος Κονηοβάς ΑΔΜ :283. Πάζτος Βαζίλειος ΑΔΜ :288 ΔΡΓΑΙΑ 1 Γιαδικησακά πληροθοριακά σζηήμαηα Ομάδα Δργαζίας: Μεηαπηστιακοί Φοιηηηές ηέθανος Κονηοβάς ΑΔΜ :283 Πάζτος Βαζίλειος ΑΔΜ :288 1.Γιάγραμμα Ονηολογίας. Σην παξαπάλω δηάγξακκα θαίλεηαη ε δηάξζξωζε

Διαβάστε περισσότερα

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο

Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 7 ο Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων Εξάμηνο 7 ο Procedures and Functions Stored procedures and functions are named blocks of code that enable you to group and organize a series of SQL and PL/SQL

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 9η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP

ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP ΑΛΛΑΓΗ ΟΝΟΜΑΣΟ ΚΑΙ ΟΜΑΔΑ ΕΡΓΑΙΑ, ΚΟΙΝΟΥΡΗΣΟΙ ΦΑΚΕΛΟΙ ΚΑΙ ΕΚΣΤΠΩΣΕ ΣΑ WINDOWS XP ηότοι εργαζηηρίοσ ην πιαίζην ηνπ ζπγθεθξηκέλνπ εξγαζηεξίνπ ζα παξνπζηαζηνύλ βαζηθέο ιεηηνπξγίεο ησλ Windows XP πνπ ζρεηίδνληαη

Διαβάστε περισσότερα

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 8 ο Α. Ύλη εργαστηρίου 8.1 Αντικειμενοστραφής προγραμματισμός 8.2 Κλάσεις

Διαβάστε περισσότερα

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα 10000 παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο 30000.

ΔΕΟ 13. Ποσοτικές Μέθοδοι. θαη λα ππνινγίζεηε ην θόζηνο γηα 10000 παξαγόκελα πξντόληα. Να ζρεδηαζηεί γηα εύξνο πξντόλησλ έσο 30000. ΔΕΟ 13 Ποσοτικές Μέθοδοι Σσνάρηηζη Κόζηοσς C(), μέζο κόζηος C()/. Παράδειγμα 1 Μηα εηαηξεία δαπαλά γηα θάζε πξντόλ Α πνπ παξάγεη 0.0 λ.κ. Τα πάγηα έμνδα ηεο εηαηξείαο είλαη 800 λ.κ. Ζεηείηαη 1) Να πεξηγξάςεηε

Διαβάστε περισσότερα

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ 2015-2016

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ 2015-2016 Βάσεις Δεδομέμωμ Εξγαζηήξην V Τκήκα Πιεξνθνξηθήο ΑΠΘ 2015-2016 2 Σκοπός του 5 ου εργαστηρίου Σθνπόο απηνύ ηνπ εξγαζηεξίνπ είλαη: ε κειέηε ζύλζεησλ εξσηεκάησλ ζύλδεζεο ζε δύν ή πεξηζζόηεξεο ζρέζεηο ε κειέηε

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ηµιουργία και χειρισµός LIFO λιστών µεταβλητού µήκους µε στοιχεία ακεραίους αριθµούς. Γενίκευση για χειρισµό λιστών πραγµατικών

Διαβάστε περισσότερα

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ Ενότητα: Εισαγωγή στη C++ Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Τμήμα: Οικονομικών Επιστημών Αριθμοί κινητής υποδιαστολής (float) στη C++ (1)

Διαβάστε περισσότερα

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14

Αζκήζεις ζτ.βιβλίοσ ζελίδας 13 14 .1.10 ζκήζεις ζτ.βιβλίοσ ζελίδας 13 14 Ερωηήζεις Καηανόηζης 1. ύν δηαθνξεηηθέο επζείεο κπνξεί λα έρνπλ θαλέλα θνηλό ζεκείν Έλα θνηλό ζεκείν i ύν θνηλά ζεκεία iλ) Άπεηξα θνηλά ζεκεία ηηηνινγήζηε ηελ απάληεζε

Διαβάστε περισσότερα

17TimeThis.h function returns reference pointer to same object { return *this; }

17TimeThis.h function returns reference pointer to same object { return *this; } Προαπαιτούµενη Κάθε οµάδα θα πρέπει να εµπλουτίσει το ίδιο πρόγραµµα, που έκανε την προηγούµενη φορά, προσθέτοντας στην κλάση του έναν ή περισσότερους υπερφορτωµένους τελεστές (όπως , ++, +,-,+=..)

Διαβάστε περισσότερα

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ

H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ H ΜΑΓΕΙΑ ΤΩΝ ΑΡΙΘΜΩΝ Φξεζηκόηεηα καζεκαηηθώλ Αξρή θαηακέηξεζεο Όζα έδσζαλ νη Έιιελεο... Τξίγσλνη αξηζκνί Τεηξάγσλνη αξηζκνί Δπηκήθεηο αξηζκνί Πξώηνη αξηζκνί Αξηζκνί κε μερσξηζηέο ηδηόηεηεο Γίδπκνη πξώηνη

Διαβάστε περισσότερα

Section 9.2 Polar Equations and Graphs

Section 9.2 Polar Equations and Graphs 180 Section 9. Polar Equations and Graphs In this section, we will be graphing polar equations on a polar grid. In the first few examples, we will write the polar equation in rectangular form to help identify

Διαβάστε περισσότερα

Τεκμηπίωζη Πποηύπων Σσεδίαζηρ ηηρ UML

Τεκμηπίωζη Πποηύπων Σσεδίαζηρ ηηρ UML Αλεξάνδπειο Τεσνολογικό Εκπαιδεςηικό Ίδπςμα Θεζζαλονίκηρ Τεκμηπίωζη Πποηύπων Σσεδίαζηρ ηηρ UML Τεο θνηηήηξηαο Μαξγαξίηε Θενδώξα Επηβιέπωλ θαζεγεηήο Ακπαηδόγινπ Απόζηνινο Κάζε πξόηππν πεξηγξάθεη έλα πξόβιεκα

Διαβάστε περισσότερα

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D.

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 9η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Συλλογή απορριμμάτων Συλλογή απορριμμάτων (Garbage

Διαβάστε περισσότερα

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP

ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ. Ειζαγωγή ζηη Φωηογραθία. Χριζηάκης Σαζεΐδης EFIAP ΜΑΘΗΜΑΣΑ ΦΩΣΟΓΡΑΦΙΑ Ειζαγωγή ζηη Φωηογραθία Χριζηάκης Σαζεΐδης EFIAP 1 ΜΑΘΗΜΑ 6 ο Προγράμμαηα θωηογραθικών μηχανών Επιλογέας προγραμμάηων Μαο δίλεη ηε δπλαηόηεηα λα ειέγμνπκε ην άλνηγκα δηαθξάγκαηνο θαη

Διαβάστε περισσότερα

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη

Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη Εςθςή ζςζηήμαηα επισειπήζεων και αξιολόγηζη Μάθημα 11 Τμήμα Μάπκεηινγκ και Διοίκηζηρ Λειηοςπγιών Τα δηαγξάκκαηα θαηάζηαζεο (state diagrams) ρξεζηκνπνηνύληαη γηα λα βνεζήζνπλ ηνλ πξνγξακκαηηζηή λα θαηαιάβεη

Διαβάστε περισσότερα

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ Ενότητα: Latex Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Τμήμα: Οικονομικών Επιστημών Απλή χρήση διανύσματος στη C++ Ένα απλό παράδειγμα τρήζης

Διαβάστε περισσότερα

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access)

Άμεσοι Αλγόριθμοι: Προσπέλαση Λίστας (list access) Έρνπκε απνζεθεύζεη κηα ζπιινγή αξρείσλ ζε κηα ζπλδεδεκέλε ιίζηα, όπνπ θάζε αξρείν έρεη κηα εηηθέηα ηαπηνπνίεζεο. Μηα εθαξκνγή παξάγεη κηα αθνινπζία από αηηήκαηα πξόζβαζεο ζηα αξρεία ηεο ιίζηαο. Γηα λα

Διαβάστε περισσότερα

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο :

ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ. Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη Εήηημα 1 ο : ΓΗΑΓΩΝΗΣΜΑ ΣΤΑ ΜΑΘΖΜΑΤΗΚΑ Ον/μο:.. Γ Λσκείοσ Ύλη: Μιγαδικοί-Σσναρηήζεις-Παράγωγοι Θεη.-Τετν. Καη. 11-1-11 Εήηημα 1 ο : Α. Γηα ηελ ζπλάξηεζε f, λα βξείηε ην δηάζηεκα ζην νπνίν είλαη παξαγσγίζηκε θαζώο θαη

Διαβάστε περισσότερα

x x x x tan(2 x) x 2 2x x 1

x x x x tan(2 x) x 2 2x x 1 ΘΕΡΙΝΟ ΣΜΗΜΑ ΜΑΘΗΜΑΣΙΚΑ Ι ΕΠΑΝΑΛΗΠΣΙΚΕ ΑΚΗΕΙ ΜΕΡΟ Ι 1. Να γίλνπλ νη γξαθηθέο παξαζηάζεηο ησλ παξαθάησ ζπλαξηήζεσλ. t ( i) e ( ii) ln( ) ( iii). Να βξεζεί ην Π.Ο., ν ηύπνο ηεο αλίζηξνθεο θαη ην Π.Τ. ησλ

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Δομές Ελέγχου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές Ελέγχου Εισαγωγή Πριν

Διαβάστε περισσότερα

2 Composition. Invertible Mappings

2 Composition. Invertible Mappings Arkansas Tech University MATH 4033: Elementary Modern Algebra Dr. Marcel B. Finan Composition. Invertible Mappings In this section we discuss two procedures for creating new mappings from old ones, namely,

Διαβάστε περισσότερα

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ

ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ ΟΠΤΙΚΗ Α. ΑΝΑΚΛΑΣΖ - ΓΗΑΘΛΑΣΖ. Μία αθηίλα θωηόο πξνζπίπηεη κε κία γωλία ζ ζηε επάλω επηθάλεηα ελόο θύβνπ από πνιπεζηέξα ν νπνίνο έρεη δείθηε δηάζιαζεο ε =,49 (ζρήκα ). Βξείηε πνηα ζα είλαη ε κέγηζηε γωλία

Διαβάστε περισσότερα

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ

ΚΕΦ. 2.3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ ΚΕΦ..3 ΑΠΟΛΤΣΗ ΣΘΜΗ ΠΡΑΓΜΑΣΘΚΟΤ ΑΡΘΘΜΟΤ Οπιζμόρ απόλςηηρ ηιμήρ: Σηνλ άμνλα ησλ πξαγκαηηθώλ αξηζκώλ ζεσξνύκε έλαλ αξηζκό α πνπ ζπκβνιίδεηαη κε ην ζεκείν Α. Η απόζηαζε ηνπ ζεκείνπ Α από ηελ αξρή Ο, δειαδή

Διαβάστε περισσότερα

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη

iii. iv. γηα ηελ νπνία ηζρύνπλ: f (1) 2 θαη ΔΠΑΝΑΛΗΠΣΙΚΑ ΘΔΜΑΣΑ ΣΟ ΓΙΑΦΟΡΙΚΟ ΛΟΓΙΜΟ Μάρτιος 0 ΘΔΜΑ Να ππνινγίζεηε ηα όξηα: i ii lim 0 0 lim iii iv lim e 0 lim e 0 ΘΔΜΑ Γίλεηαη ε άξηηα ζπλάξηεζε '( ) ( ) γηα θάζε 0 * : R R γηα ηελ νπνία ηζρύνπλ:

Διαβάστε περισσότερα

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress. Αιγόξηζκνη 2.2.7.3 Γνκή επηινγήο Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ 1 Πνιιαπιή Δληνιή Δπηινγήο Αν ζπλζήθε_1 ηόηε εληνιέο_1 αλλιώς_αν ζπλζήθε_2 ηόηε εληνιέο_2...

Διαβάστε περισσότερα

The Simply Typed Lambda Calculus

The Simply Typed Lambda Calculus Type Inference Instead of writing type annotations, can we use an algorithm to infer what the type annotations should be? That depends on the type system. For simple type systems the answer is yes, and

Διαβάστε περισσότερα

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση

Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση Κευάλαιο 8 Μονοπωλιακή Συμπεριφορά- Πολλαπλή Τιμολόγηση Πώς πρέπει να τιμολογεί ένα μονοπώλιο; Μέρξη ζηηγκήο ην κνλνπώιην έρεη ζεσξεζεί ζαλ κηα επηρείξεζε ε νπνία πσιεί ην πξντόλ ηεο ζε θάζε πειάηε ζηελ

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗ Προγραμματισμός H/Y-I. Περιζζόηερα για ηον έλεγτο προζπέλαζης και ηις μεθόδοσς Static

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗ Προγραμματισμός H/Y-I. Περιζζόηερα για ηον έλεγτο προζπέλαζης και ηις μεθόδοσς Static ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΣΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗ Προγραμματισμός H/Y-I Παναγιώηης Σθέηζος sfetsos@it.teithe.gr Περιζζόηερα για ηον έλεγτο προζπέλαζης και ηις μεθόδοσς Static Πξώηε δήισζε ζηελ ππνγξαθή (signature) κηαο

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 3/4/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Γιατί έλεγχος πρόσβασης? Προστασία ιδιωτικής πληροφορίας

Διαβάστε περισσότερα

Struct : public by default but Class: private by default. ClassPoint { Struct Point { Public: Double x; Double x; Double y; Double y;

Struct : public by default but Class: private by default. ClassPoint { Struct Point { Public: Double x; Double x; Double y; Double y; Classes: In C++, classes are very much like structs, except that classes provide much more power and flexibility. In fact, the following struct and class are effectively identical. Struct : public by default

Διαβάστε περισσότερα

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS

ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS ηότοι εργαζηηρίοσ ΡΤΘΜΙΕΙ ΔΙΚΣΤΟΤ ΣΑ WINDOWS ην πιαίζην ηνπ ζπγθεθξηκέλνπ εξγαζηεξίνπ ζα παξνπζηαζηεί ε δηαδηθαζία ηωλ ξπζκίζεωλ δηθηύνπ ζε ιεηηνπξγηθό ζύζηεκα Windows XP. Η δηαδηθαζία ζε γεληθέο γξακκέο

Διαβάστε περισσότερα

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε.

Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή. Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε. Η επιζκόπηζη ηης έμμιζθης ενηολής ζηην Αλλοδαπή Καηεξίλα Γαιαλνπνύινπ, Intellectual Property Manager, Microsoft Ειιάο Α.Ε. Παξάκεηξνη πξνο αμηνιόγεζε Ννκνζεηηθή ζσξάθηζε Κνηλόο Σύιινγνο Ακνηβή Καηαγγειία/Λύζε

Διαβάστε περισσότερα

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο:

Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο: Πίνακες Σσμβόλων Έλαο πίνακας σσμβόλων ππνζηεξίδεη δύν βαζηθέο ιεηηνπξγίεο: Εηζαγσγή ελόο ζηνηρείνπ Αλαδήηεζε ζηνηρείνπ κε δεδνκέλν θιεηδί Άιιεο ρξήζηκεο ιεηηνπξγίεο είλαη: Δηαγξαθή ελόο θαζνξηζκέλνπ ζηνηρείνπ

Διαβάστε περισσότερα

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ Ενότητα: Πράξεις με αρχεία Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Τμήμα: Οικονομικών Επιστημών Ανάγνωση και εγγραφή αρχείων με χρήση ρεύματος

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Παράδειγμα Στο παράδειγμα με το τμήμα πανεπιστημίου οι φοιτητές και οι καθηγητές είχαν κάποια κοινά στοιχεία Και οι δύο είχαν όνομα Και οι δύο

Διαβάστε περισσότερα

Παλεπηζηήκην Παηξώλ ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Σάξειρ και Αθαίπεζη Δεδομένων. Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ

Παλεπηζηήκην Παηξώλ ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Σάξειρ και Αθαίπεζη Δεδομένων. Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ Παλεπηζηήκην Παηξώλ Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Σάξειρ και Αθαίπεζη Δεδομένων 1 Τάμεηο Μέξνο ΙΙ 7.1 Ειζαγυγή 7.2 const Ανηικείμενα και

Διαβάστε περισσότερα

UML (Unified Modeling Language )

UML (Unified Modeling Language ) UML (Unified Modeling Language ) Μεγάια Έξγα Λνγηζκηθνύ = επηθνηλσλία Πνιινί πξνγξακκαηηζηέο, πνιινί πειάηεο-ρξήζηεο, νη επόκελεο γεληέο, επηβάιινπλ ηε ρξήζε θνηλήο νξνινγίαο ε άιια ηερληθά έξγα ε ρξήζε

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΑΦΗΡΗΜΕΝΕΣ ΚΛΑΣΕΙΣ INTERFACES ΕΣΩΤΕΡΙΚΕΣ ΚΛΑΣΕΙΣ (INNER CLASSES) Αφηρημένες Κλάσεις (Abstract Classes) (1/6) Οι αφηρημένες κλάσεις χρησιμοποιούνται για την

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Παράδειγμα Στο προηγούμενο παράδειγμα οι φοιτητές και οι καθηγητές είχαν κάποια κοινά στοιχεία Και οι δύο είχαν όνομα Και οι δύο είχαν κάποιο

Διαβάστε περισσότερα

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ

ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ ΑΠΑΝΤΗΣΔΙΣ ΓΙΚΤΥΑ ΥΠΟΛΟΓΙΣΤΩΝ II ΔΠΑΛ ΘΔΜΑ Α Α1. α. Σ β. Σ γ. Λ δ. Λ ε. Λ ζη. Σ Α2. Γ Α3. 1. γ 2. ε 3. δ 4. α Β1. ΘΔΜΑ Β Οη ηειηθνί ππνινγηζηέο παίξλνπλ απνθάζεηο δξνκνιόγεζεο κόλν γηα ηα δηθά ηνπο απηνδύλακα

Διαβάστε περισσότερα

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ

Ζαχαρίας Μ. Κοντοπόδης Εργαστήριο Λειτουργικών Συστημάτων ΙΙ Διαφάνεια 1 η ΕΚΚΙΝΗΣΗ ΤΟΥ ΥΠΟΛΟΓΙΣΤΗ ΚΑΙ ΕΙΣΟΔΟΣ ΣΤΟ BIOS UITILITY Τν ζπλεζέζηεξν πιήθηξν γηα ηελ είζνδν ζην BIOS Utility είλαη ην πιήθηξν Del. Παξόια απηά δηαθνξεηηθνί θαηαζθεπαζηέο, ρξεζηκνπνηνύλ δηαθνξεηηθά

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 16/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί

Διαβάστε περισσότερα

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2

Α. Εηζαγσγή ηεο έλλνηαο ηεο ηξηγσλνκεηξηθήο εμίζσζεο κε αξρηθό παξάδεηγκα ηελ εκx = 2 ΣΡΙΓΩΝΟΜΔΣΡΙΚΔ EΞΙΩΔΙ Πνηα παξαδείγκαηα εμηζώζεσλ ή θαη πξνβιεκάησλ πηζηεύεηαη όηη είλαη θαηάιιεια γηα ηελ επίιπζε ηνπο θαηά ηελ δηάξθεηα ηεο δηδαθηηθήο δηαδηθαζίαο κέζα ζηελ ηάμε; 1 ε ΓΙΓΑΚΣΙΚΗ ΩΡΑ Α.

Διαβάστε περισσότερα

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird

1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird 1. Οδηγίερ εγκαηάζηαζηρ και σπήζηρ έξςπνυν καπηών και τηθιακών πιζηοποιηηικών με σπήζη ηος λογιζμικού Μοzilla Thunderbird 1.1 Εγκαηάζηαζη ηυν οδηγών ηηρ έξςπνηρ κάπηαρ ζηο λογιζμικό Mozilla Thunderbird

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Αν κάπου κάνετε κάποιες υποθέσεις να αναφερθούν στη σχετική ερώτηση. Όλα τα αρχεία που αναφέρονται στα προβλήματα βρίσκονται στον ίδιο φάκελο με το εκτελέσιμο

Διαβάστε περισσότερα

02 Αντικειμενοστρεφής Προγραμματισμός

02 Αντικειμενοστρεφής Προγραμματισμός 02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object

Διαβάστε περισσότερα

SOAP API. https://bulksmsn.gr. Table of Contents

SOAP API. https://bulksmsn.gr. Table of Contents SOAP API https://bulksmsn.gr Table of Contents Send SMS...2 Query SMS...3 Multiple Query SMS...4 Credits...5 Save Contact...5 Delete Contact...7 Delete Message...8 Email: sales@bulksmsn.gr, Τηλ: 211 850

Διαβάστε περισσότερα

derivation of the Laplacian from rectangular to spherical coordinates

derivation of the Laplacian from rectangular to spherical coordinates derivation of the Laplacian from rectangular to spherical coordinates swapnizzle 03-03- :5:43 We begin by recognizing the familiar conversion from rectangular to spherical coordinates (note that φ is used

Διαβάστε περισσότερα

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πίνακες Αντικειμένων Όπως στην C μπορούμε να έχουμε πίνακες από

Διαβάστε περισσότερα

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ

ΚΔΦ. 2.4 ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ ΚΔΦ.. ΡΗΕΔ ΠΡΑΓΜΑΣΗΚΩΝ ΑΡΗΘΜΩΝ Οξηζκόο ηεηξαγσληθήο ξίδαο: Αλ 0 ηόηε νλνκάδνπκε ηεηξαγσληθή ξίδα ηνπ ηελ κε αξλεηηθή ιύζε ηεο εμίζσζεο:. Γειαδή ηεηξαγσληθή ξίδα ηνπ 0 ιέγεηαη ν αξηζκόο 0 πνπ όηαλ πςσζεί

Διαβάστε περισσότερα

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο

ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ. Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ Οξηδόληηα θαη θαηαθόξπθε κεηαηόπηζε παξαβνιήο 1 ε Δξαζηεξηόηεηα Αλνίμηε ην αξρείν «Μεηαηόπηζε παξαβνιήο.ggb». Με ηε καύξε γξακκή παξηζηάλεηαη ε γξαθηθή παξάζηαζε ηεο f(x)=αx 2 πνπ ζα ηελ

Διαβάστε περισσότερα

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1

Lab 1: C/C++ Pointers and time.h. Panayiotis Charalambous 1 Lab 1: C/C++ Pointers and time.h Panayiotis Charalambous 1 Send email to totis@cs.ucy.ac.cy Subject: EPL231-Registration Body: Surname Firstname ID Group A or B? Panayiotis Charalambous 2 Code Guidelines:

Διαβάστε περισσότερα

Assalamu `alaikum wr. wb.

Assalamu `alaikum wr. wb. LUMP SUM Assalamu `alaikum wr. wb. LUMP SUM Wassalamu alaikum wr. wb. Assalamu `alaikum wr. wb. LUMP SUM Wassalamu alaikum wr. wb. LUMP SUM Lump sum lump sum lump sum. lump sum fixed price lump sum lump

Διαβάστε περισσότερα

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ

Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική ΑΔ Άζκηζη ζτέζης κόζηοσς-τρόνοσ (Cost Time trade off) Καηαζκεσαζηική Δίζηε μησανικόρ διοίκηζηρ μεγάληρ καηαζκεςαζηικήρ εηαιπείαρ και καλείζηε να ςλοποιήζεηε ηο έπγο πος πεπιγπάθεηαι από ηον Πίνακα 1. Κωδ.

Διαβάστε περισσότερα

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά:

ΑΝΤΗΛΙΑΚΑ. Η Μηκή ζθέθηεθε έλαλ ηξόπν, γηα λα ζπγθξίλεη κεξηθά δηαθνξεηηθά αληειηαθά πξντόληα. Απηή θαη ν Νηίλνο ζπλέιεμαλ ηα αθόινπζα πιηθά: ΑΝΤΗΛΙΑΚΑ Η Μηκή θαη ν Νηίλνο αλαξσηήζεθαλ πνην αληειηαθό πξντόλ παξέρεη ηελ θαιύηεξε πξνζηαζία ζην δέξκα ηνπο. Τα αληειηαθά πξντόληα έρνπλ έλα δείθηε αληειηαθήο πξνζηαζίαο (SPF), ν νπνίνο δείρλεη πόζν

Διαβάστε περισσότερα

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ

(Ενδεικηικές Απανηήζεις) ΘΔΜΑ Α. Α1. Βιέπε απόδεημε Σει. 262, ζρνιηθνύ βηβιίνπ. Α2. Βιέπε νξηζκό Σει. 141, ζρνιηθνύ βηβιίνπ ΠΑΝΔΛΛΑΓΗΚΔ ΔΞΔΣΑΔΗ Γ ΣΑΞΖ ΖΜΔΡΖΗΟΤ ΓΔΝΗΚΟΤ ΛΤΚΔΗΟΤ ΚΑΗ ΔΠΑΛ (ΟΜΑΓΑ Β ) ΣΔΣΑΡΣΖ 18 ΜΑΪΟΤ 16 ΔΞΔΣΑΕΟΜΔΝΟ ΜΑΘΖΜΑ: ΜΑΘΖΜΑΣΗΚΑ ΠΡΟΑΝΑΣΟΛΗΜΟΤ (ΝΔΟ ΤΣΖΜΑ) ΚΑΣΔΤΘΤΝΖ (ΠΑΛΑΗΟ ΤΣΖΜΑ) (Ενδεικηικές Απανηήζεις) ΘΔΜΑ

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τα πλεονεκτήματα της κληρονομικότητας Αποφυγή

Διαβάστε περισσότερα

10/3/ revolution = 360 = 2 π radians = = x. 2π = x = 360 = : Measures of Angles and Rotations

10/3/ revolution = 360 = 2 π radians = = x. 2π = x = 360 = : Measures of Angles and Rotations //.: Measures of Angles and Rotations I. Vocabulary A A. Angle the union of two rays with a common endpoint B. BA and BC C. B is the vertex. B C D. You can think of BA as the rotation of (clockwise) with

Διαβάστε περισσότερα

Τι θα δούμε σε αυτό το μάθημα;

Τι θα δούμε σε αυτό το μάθημα; Τι θα δούμε σε αυτό το μάθημα; Οξηζκόο κηαο θιάζεο σο ζπιινγήο ζπζρεηηδόκελσλ κεζόδσλ θαη πεδίσλ δεδνκέλσλ Έιεγρνο πξόζβαζεο κε ηελ ρξήζε πξνζδηνξηζηώλ πξόζβαζεο Γεκηνπξγία αληηθεηκέλσλ κε ηελ ρξήζε θαηαζθεπαζηώλ

Διαβάστε περισσότερα

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα

Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα Πολυεπίπεδα/Διασυμδεδεμέμα Δίκτυα Κοιμωμικά δίκτυα (multiplex network) Έρεηε ινγαξηαζκό ζην Facebook? Έρεηε ινγαξηαζκό ζην LinkedIn? Έρεηε ινγαξηαζκό ζην Twitter? Αεροπορικές γραμμές της Ευρώπης(multiplex

Διαβάστε περισσότερα

MySQL Εργαστήριο #5 Ενεργοποιητές (συνέχεια)

MySQL Εργαστήριο #5 Ενεργοποιητές (συνέχεια) MySQL Εργαστήριο #5 Ενεργοποιητές (συνέχεια) Νίθνο Γηαηξάθνο Εξγαζηήξην Πιεξνθνξηαθώλ Σπζηεκάησλ, Τκήκα Πιεξνθνξηθήο, Παλεπηζηήκην Πεηξαηά (http://infolab.cs.unipi.gr) Μελέτη Περίπτωσης 1 Θα ρξεζηκνπνηήζνπκε

Διαβάστε περισσότερα

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν 2011-12

Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν 2011-12 Απνηειέζκαηα Εξσηεκαηνινγίνπ 2o ηεηξάκελν 11-12 Project 6: Ταμίδη κε ηε Μεραλή ηνπ Φξόλνπ Υπεύζπλνη Καζεγεηέο: Ε. Μπηιαλάθε Φ. Αλησλάηνο Δρώηηζη 3: Πνηα από ηα παξαθάησ ΜΜΕ ηεξαξρείηε από πιεπξάο ζεκαζίαο;

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Εισαγωγή στην C++ ΔΙΔΑΣΚΟΝΤΕΣ:Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής H Γλώσσα C++ ΙΣΤΟΡΙΑ 1967:

Διαβάστε περισσότερα

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν.

B-Δέλδξα. Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν. B-Δέλδξα Τα B-δέλδξα ρξεζηκνπνηνύληαη γηα ηε αλαπαξάζηαζε πνιύ κεγάισλ ιεμηθώλ πνπ είλαη απνζεθεπκέλα ζην δίζθν. Δέλδξα AVL n = 2 30 = 10 9 (πεξίπνπ). 30

Διαβάστε περισσότερα

ΘΔΜΑ 1 ο Μονάδες 5,10,10

ΘΔΜΑ 1 ο Μονάδες 5,10,10 ΟΝΟΜΑΣΔΠΩΝΤΜΟ ΗΜΔΡΟΜΗΝΙΑ ΘΔΜΑ 1 ο Μονάδες 5,1,1 ΓΙΑΓΩΝΙΜΑ 1 ου ΜΔΡΟΤ ΣΗ ΑΝΑΛΤΗ Α Γώζηε ηνλ νξηζκό ηεο αληίζηξνθεο ζπλάξηεζεο Β Γείμηε όηη αλ κηα ζπλάξηεζε είλαη αληηζηξέςηκε ηόηε νη γξαθηθέο παξαζηάζεηο

Διαβάστε περισσότερα

ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Εμβέλεια Μεταβλητών Εμβέλεια = το τμήμα του προγράμματος στο οποίο έχει ισχύ ή είναι ορατή η μεταβλητή.

Διαβάστε περισσότερα

Αντισταθμιστική ανάλυση

Αντισταθμιστική ανάλυση Θεσξήζηε έλαλ αιγόξηζκν Α πνπ ρξεζηκνπνηεί κηα δνκή δεδνκέλσλ Γ : Καηά ηε δηάξθεηα εθηέιεζεο ηνπ Α ε Γ πξαγκαηνπνηεί κία αθνινπζία από πξάμεηο. Παξάδεηγκα: Θπκεζείηε ην πξόβιεκα ηεο εύξεζεο-έλσζεο Δίρακε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Παράδειγμα Στο προηγούμενο παράδειγμα οι φοιτητές και οι καθηγητές είχαν κάποια κοινά στοιχεία Και οι δύο είχαν όνομα Και οι δύο είχαν κάποιο

Διαβάστε περισσότερα

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο

Φςζική Πποζαναηολιζμού Γ Λςκείος. Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο Φςζική Πποζαναηολιζμού Γ Λςκείος Αζκήζειρ Ταλανηώζειρ 1 ο Φςλλάδιο Επιμέλεια: Αγκανάκηρ Α. Παναγιώηηρ Επωηήζειρ Σωζηό- Λάθορ Να χαπακηηπίζεηε ηιρ παπακάηω πποηάζειρ ωρ ζωζηέρ ή λάθορ: 1. Η ηαιάλησζε είλαη

Διαβάστε περισσότερα

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH

ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KARNAUGH ΑΠΛΟΠΟΙΗΗ ΛΟΓΙΚΩΝ ΤΝΑΡΣΗΕΩΝ ΜΕ ΠΙΝΑΚΕ KRNUGH Γηα λα θάλνπκε απινπνίεζε κηαο ινγηθήο ζπλάξηεζεο κε πίλαθα (ή ράξηε) Karnaugh αθνινπζνύκε ηα παξαθάησ βήκαηα:. Η ινγηθή ζπλάξηεζε ζα πξέπεη λα είλαη ζε πιήξε

Διαβάστε περισσότερα

Practice Exam 2. Conceptual Questions. 1. State a Basic identity and then verify it. (a) Identity: Solution: One identity is csc(θ) = 1

Practice Exam 2. Conceptual Questions. 1. State a Basic identity and then verify it. (a) Identity: Solution: One identity is csc(θ) = 1 Conceptual Questions. State a Basic identity and then verify it. a) Identity: Solution: One identity is cscθ) = sinθ) Practice Exam b) Verification: Solution: Given the point of intersection x, y) of the

Διαβάστε περισσότερα

Volume of a Cuboid. Volume = length x breadth x height. V = l x b x h. The formula for the volume of a cuboid is

Volume of a Cuboid. Volume = length x breadth x height. V = l x b x h. The formula for the volume of a cuboid is Volume of a Cuboid The formula for the volume of a cuboid is Volume = length x breadth x height V = l x b x h Example Work out the volume of this cuboid 10 cm 15 cm V = l x b x h V = 15 x 6 x 10 V = 900cm³

Διαβάστε περισσότερα

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται

Διαβάστε περισσότερα

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis

Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training. Dipl.Biol.cand.med. Stylianos Kalaitzis Αζθήζεηο 5 νπ θεθαιαίνπ Crash course Step by step training Dipl.Biol.cand.med. Stylianos Kalaitzis Stylianos Kalaitzis Μνλνϋβξηδηζκνο 1 Γπν γνλείο, εηεξόδπγνη γηα ηνλ αιθηζκό θάλνπλ παηδηά. Πνία ε πηζαλόηεηα

Διαβάστε περισσότερα

Section 8.3 Trigonometric Equations

Section 8.3 Trigonometric Equations 99 Section 8. Trigonometric Equations Objective 1: Solve Equations Involving One Trigonometric Function. In this section and the next, we will exple how to solving equations involving trigonometric functions.

Διαβάστε περισσότερα

Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο κόζηος ανά μονάδα παραγωγής. Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο ζηαθερό κόζηος ανά μονάδα παραγωγής

Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο κόζηος ανά μονάδα παραγωγής. Q Η ζσνάρηηζη μέζοσ κόζηοσς μας δίνει ηο ζηαθερό κόζηος ανά μονάδα παραγωγής ΜΙΚΡΟΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ ΣΟΜΟ Α Mάθημα 5: To παραγωγής σναρηήζεις κόζηοσς Η ζπλάξηεζε ζπλνιηθνύ θόζηνπο C FC VC Όπνπ FC= ην ζηαζεξό θόζηνο (ην θόζηνο γηα ηνλ ζηαζεξό παξαγσγηθό ζπληειεζηή) θαη VC= ην κεηαβιεηό

Διαβάστε περισσότερα

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

Δομές Δεδομένων - Εργαστήριο 2. Λίστες Λίστες Λίστες (Lists) : Συλλογή δεδομένων σε δυναμικά δεσμευμένους κόμβους. Κάθε κόμβος περιέχει συνδέσεις προς άλλους κόμβους. Προσπέλαση -στού κόμβου διατρέχοντας όλους τους προηγούμενους. Πολλές παραλλαγές

Διαβάστε περισσότερα