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

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

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

Transcript

1 Πανεπιστήµιο Πατρών Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση εδοµένων 1 Τάξεις Μέρος ΙΙ 7.1 Εισαγωγή 7.2 const Αντικείµενα και const Συναρτήσεις 7.3 Σύνθεση: Αντικείµενα ως µέλη τάξης 7.4 friend Συναρτήσεις και τάξεις 7.5 Ο είκτης this 7.6 υναµική ιαχείριση Μνήµης µε τους τελεστές new και delete 7.7 staticμέλη τάξης 7.8 Αφαίρεση δεδοµένων και Απόκρυψη πληροφορίας Παράδειγµα: Array Abstract Data Type Παράδειγµα: String Abstract Data Type 7.9 Εµπεριέχουσες τάξεις και επαναλήπτες 7.10 Proxy τάξεις 2

2 Τάξεις Εισαγωγή Αφαίρεση εδοµένων Αντικειµενοστραφής προγραµµατισµός Κληρονοµικότητα και πολυµορφισµός const (Σταθερά) Αντικείµενα και Μέθοδοι Η αρχή της ελάχιστης πρόσβασης Επιτρέπουµε πρόσβαση για τροποποιήσεις µόνο στα απαραίτητα αντικείµενα const Ορίζει αντικείµενο που δε τροποποιείται ίνει Compiler error Παράδειγµα const Time noon( 12, 0, 0 ); Παράδειγµα ηλώνει const αντικείµενο noon της Time Αρχικοποιεί σε 12 4

3 7.2 const (Σταθερά) Αντικείµενα και Μέθοδοι const µέθοδοι Οι µέθοδοι αντικειµένων const πρέπει να είναι και αυτές const ε µπορεί να τροποποιούν αντικείµενα Ορίζουµε ως const σε Πρωτότυπο Μετά τη λίστα παραµέτρων ηλώσεις Πριν την αρχή του αριστερού αγκίστρου 5 1 // Fig. 7.1: time5.h 2 // Definition of class Time. 3 // Member functions defined in time5.cpp. 4 #ifndef TIME5_H 5 #define TIME5_H 6 7 class Time { 8 9 public: 10 Time( int = 0, int = 0, int = 0 ); // default constructor // set functions 13 void settime( int, int, int ); // set time 14 void sethour( int ); // set hour void setminute( int ); // set minute 16 void setsecond( int ); // set second time5.h (1 of 2) 15 void setminute( int ); // set minute Declare const get functions // get functions (normally declared const) 19 int gethour() const; // return hour 20 int getminute() const; // return minute 21 int getsecond() const; // return second // print functions (normally declared const) 24 void printuniversal() const; // print universal time 25 void printstandard(); // print standard time Declare const function printuniversal. 6

4 26 27 private: 28 int hour; // 0-23 (24-hour clock format) 29 int minute; // int second; // }; // end class Time #endif time5.h (2 of 2) 7 1 // Fig. 7.2: time5.cpp 2 // Member-function definitions for class Time. 3 #include <iostream> 4 5 using std::cout; 6 7 #include <iomanip> 8 9 using std::setfill; 10 using std::setw; // include definition of class Time from time5.h 13 #include "time5.h" // constructor function to initialize private data; 16 // calls member function settime to set variables; 17 // default values are 0 (see class definition) 18 Time::Time( int hour, int minute, int second ) 19 { 20 settime( hour, minute, second ); } // end Time constructor 23 time5.cpp (1 of 4) 8

5 24 // set hour, minute and second values 25 void Time::setTime( int hour, int minute, int second ) 26 { 27 sethour( hour ); 28 setminute( minute ); 29 setsecond( second ); } // end function settime // set hour value 34 void Time::setHour( int h ) 35 { 36 hour = ( h >= 0 && h < 24 )? h : 0; } // end function sethour // set minute value 41 void Time::setMinute( int m ) 42 { 43 minute = ( m >= 0 && m < 60 )? m : 0; } // end function setminute 46 time5.cpp (2 of 4) 9 47 // set second value 48 void Time::setSecond( int s ) 49 { 50 second = ( s >= 0 && s < 60 )? s : 0; } // end function setsecond // return hour value 55 int Time::getHour() const 56 { 57 return hour; } // end function gethour // return minute value 62 int Time::getMinute() const 63 { 64 return minute; } // end function getminute 67 const functions do not modify objects. time5.cpp (3 of 4) 10

6 68 // return second value 69 int Time::getSecond() const 70 { 71 return second; } // end function getsecond // print Time in universal format 76 void Time::printUniversal() const 77 { 78 cout << setfill( '0' ) << setw( 2 ) << hour << ":" 79 << setw( 2 ) << minute << ":" 80 << setw( 2 ) << second; } // end function printuniversal // print Time in standard format 85 void Time::printStandard() // note lack of const declaration 86 { 87 cout << ( ( hour == 0 hour == 12 )? 12 : hour % 12 ) 88 << ":" << setfill( '0' ) << setw( 2 ) << minute 89 << ":" << setw( 2 ) << second 90 << ( hour < 12? " AM" : " PM" ); } // end function printstandard const functions do not modify objects. time5.cpp (4 of 4) 11 1 // Fig. 7.3: fig07_03.cpp 2 // Attempting to access a const object with 3 // non-const member functions. 4 5 // include Time class definition from time5.h 6 #include "time5.h" 7 8 int main() 9 { object. 10 Time wakeup( 6, 45, 0 ); // non-constant object 11 const Time noon( 12, 0, 0 ); // constant object 12 Note that non-const constructor can initialize const object. Declare noon a const fig07_03.cpp (1 of 2) 12

7 13 // OBJECT MEMBER FUNCTION 14 wakeup.sethour( 18 ); // non-const non-const noon.sethour( 12 ); // const non-const wakeup.gethour(); // non-const const noon.getminute(); // const const 21 noon.printuniversal(); // const const noon.printstandard(); // const non-const return 0; } // end main Attempting to invoke nonconst member function on const object results in compiler error. Attempting to invoke non- const member function on const object results in compiler error even if function does not modify object. d:\cpphtp4_examples\ch07\fig07_01\fig07_01.cpp(16) : error C2662: 'sethour' : cannot convert 'this' pointer from 'const class Time' to 'class Time &' Conversion loses qualifiers d:\cpphtp4_examples\ch07\fig07_01\fig07_01.cpp(23) : error C2662: 'printstandard' : cannot convert 'this' pointer from 'const class Time' to 'class Time &' Conversion loses qualifiers fig07_03.cpp (2 of 2) fig07_03.cpp output (1 of 1) const (Σταθερά) Αντικείµενα και Μέθοδοι Αρχικοποίηση αντικειµένου Αρχικοποίηση µε member initializer syntax Μπορεί να χρησιµοποιηθεί Με όλα τα µέλη δεδοµένων Πρέπει να χρησιµοποιηθεί Για τα µέλη const Για όλες τις αναφορές µεταβλητών 14

8 1 // Fig. 7.4: fig07_04.cpp 2 // Using a member initializer to initialize a 3 // constant of a built-in data type. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 class Increment { public: 12 Increment( int c = 0, int i = 1 ); // default constructor void addincrement() 15 { 16 count += increment; } // end function addincrement void print() const; // prints count and increment 21 fig07_04.cpp (1 of 3) private: 23 int count; 24 const int increment; // const data member }; // end class Increment // constructor separated from Member parameter initializer data list member. syntax can 29 Increment::Increment( by int colon. c, int be used i ) Member for non-const initializer syntax data 30 : count( c ), // initializer for non-const member member 31 increment( i ) // required initializer must count. be used for for const const member data 32 { member increment. 33 // empty body } // end Increment constructor // print count and increment values 38 void Increment::print() const 39 { 40 cout << "count = " << count Member initializer list Declare increment as const 41 << ", increment = " << increment << endl; } // end function print 44 Member initializer consists of data member name (increment) followed by parentheses containing initial value (c). fig07_04.cpp (2 of 3) 16

9 45 int main() 46 { 47 Increment value( 10, 5 ); cout << "Before incrementing: "; 50 value.print(); for ( int j = 0; j < 3; j++ ) { 53 value.addincrement(); 54 cout << "After increment " << j + 1 << ": "; 55 value.print(); 56 } return 0; } // end main fig07_04.cpp (3 of 3) fig07_04.cpp output (1 of 1) 17 Before incrementing: count = 10, increment = 5 After increment 1: count = 15, increment = 5 After increment 2: count = 20, increment = 5 After increment 3: count = 25, increment = 5 1 // Fig. 7.5: fig07_05.cpp 2 // Attempting to initialize a constant of 3 // a built-in data type with an assignment. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 class Increment { public: 12 Increment( int c = 0, int i = 1 ); // default constructor void addincrement() 15 { 16 count += increment; } // end function addincrement void print() const; // prints count and increment 21 fig07_05.cpp (1 of 3) 18

10 22 private: 23 int count; 24 const int increment; // const data member }; // end class Increment // constructor 29 Increment::Increment( int c, int i ) 30 { // Constant member 'increment' is not initialized 31 count = c; // allowed because results count in error. is not constant 32 increment = i; // ERROR: Cannot modify a const object } // end Increment constructor // print count and increment values 37 void Increment::print() const 38 { 39 cout << "count = " << count 40 << ", increment = " << increment << endl; } // end function print 43 Declare increment as const data member. Attempting to modify const data member increment fig07_05.cpp (2 of 3) int main() 45 { 46 Increment value( 10, 5 ); cout << "Before incrementing: "; 49 value.print(); for ( int j = 0; j < 3; j++ ) { 52 value.addincrement(); 53 cout << "After increment " << j + 1 << ": "; 54 value.print(); 55 } return 0; } // end main Not using member initializer syntax to initialize const data member increment results in error. D:\cpphtp4_examples\ch07\Fig07_03\Fig07_03.cpp(30) : error C2758: 'increment' : must be initialized in constructor base/member initializer list D:\cpphtp4_examples\ch07\Fig07_03\Fig07_03.cpp(24) : see declaration of 'increment' D:\cpphtp4_examples\ch07\Fig07_03\Fig07_03.cpp(32) : error C2166: l-value specifies const object fig07_05.cpp (3 of 3) fig07_05.cpp output (1 of 1) Attempting to modify const data member increment results in error. 20

11 7.3 Σύνθεση/ Composition: Αντικείµενα ως µέλη τάξης Σύνθεση/ Composition Μία τάξη έχει αντικείµενα άλλης τάξης ως µέλη Κατασκευή αντικειµένων Τα µέλη αντικείµενα δηµιουργούνται µε τη σειρά που δηλώνονται εν ακολουθείτε η σειρά του constructor ηµιουργούνται πριν από τα αντικείµενα της τάξης που τα χρησιµοποιεί 21 1 // Fig. 7.6: date1.h 2 // Date class definition. 3 // Member functions defined in date1.cpp 4 #ifndef DATE1_H 5 #define DATE1_H 6 7 class Date { 8 9 public: 10 Date( int = 1, int = 1, int = 1900 ); // default constructor 11 void print() const; // print date default in month/day/year copy constructor. format 12 ~Date(); // provided to confirm destruction order private: 15 int month; // 1-12 (January-December) 16 int day; // 1-31 based on month 17 int year; // any year Note no constructor with parameter of type Date. Recall compiler provides // utility function to test proper day for month and year 20 int checkday( int ) const; }; // end class Date #endif date1.h (1 of 1) 22

12 1 // Fig. 7.7: date1.cpp 2 // Member-function definitions for class Date. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // include Date class definition from date1.h 9 #include "date1.h" // constructor confirms proper value for month; calls 12 // utility function checkday to confirm proper value for day 13 Date::Date( int mn, int dy, int yr ) 14 { 15 if ( mn > 0 && mn <= 12 ) // validate the month 16 month = mn; else { // invalid month set to 1 19 month = 1; 20 cout << "Month " << mn << " invalid. Set to month 1.\n"; 21 } year = yr; // should validate yr 24 day = checkday( dy ); // validate the day 25 date1.cpp (1 of 3) // output Date object to show when its constructor is called 27 cout << "Date object constructor for date "; 28 print(); 29 cout << endl; } // end Date constructor // print Date object in form month/day/year 34 void Date::print() const operates. 35 { 36 cout << month << '/' << day << '/' << year; } // end function print No arguments; each member function Output contains to show implicit timing of handle constructors. to object on which it // output Date object to show when its destructor is called 41 Date::~Date() destructors. 42 { 43 cout << "Date object destructor for date "; 44 print(); 45 cout << endl; } // end destructor ~Date 48 Output to show timing of date1.cpp (2 of 3) 24

13 49 // utility function to confirm proper day value based on 50 // month and year; handles leap years, too 51 int Date::checkDay( int testday ) const 52 { 53 static const int dayspermonth[ 13 ] = 54 { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // determine whether testday is valid for specified month 57 if ( testday > 0 && testday <= dayspermonth[ month ] ) 58 return testday; // February 29 check for leap year 61 if ( month == 2 && testday == 29 && 62 ( year % 400 == 0 63 ( year % 4 == 0 && year % 100!= 0 ) ) ) 64 return testday; cout << "Day " << testday << " invalid. Set to day 1.\n"; return 1; // leave object in consistent state if bad value } // end function checkday date1.cpp (3 of 3) 25 1 // Fig. 7.8: employee1.h 2 // Employee class definition. 3 // Member functions defined in employee1.cpp. 4 #ifndef EMPLOYEE1_H 5 #define EMPLOYEE1_H 6 7 // include Date class definition from date1.h 8 #include "date1.h" 9 10 class Employee { public: 13 Employee( 14 const char *, const char *, const Date &, const Date & ); void print() const; 17 ~Employee(); // provided to confirm destruction order private: 20 char firstname[ 25 ]; 21 char lastname[ 25 ]; 22 const Date birthdate; // composition: member object 23 const Date hiredate; // composition: member object }; // end class Employee employee1.h (1 of 2) Using composition; Employee object contains Date objects as data members. 26

14 26 27 #endif 27 employee1.h (2 of 2) 1 // Fig. 7.9: employee1.cpp 2 // Member-function definitions for class Employee. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <cstring> // strcpy and strlen prototypes 9 10 #include "employee1.h" // Employee class definition 11 #include "date1.h" // Date class definition 12 employee1.cpp (1 of 3) 13 // constructor uses member initializer list to pass initializer 14 // values to constructors of member objects birthdate and 15 // hiredate [Note: This invokes the so-called "default copy 16 // constructor" which the C++ compiler provides implicitly.] 17 Employee::Employee( const char *first, const char *last, 18 const Date &dateofbirth, const Date &dateofhire ) 19 : birthdate( dateofbirth ), // initialize birthdate 20 hiredate( dateofhire ) // initialize hiredate 21 { 22 // copy first into firstname and be sure that it fits 23 int length = strlen( first ); 24 length = ( length < 25? length : 24 ); 25 strncpy( firstname, first, length ); 26 firstname[ length ] = '\0'; // copy last into lastname and be sure that it fits 29 length = strlen( last ); 30 length = ( length < 25? length : 24 ); 31 strncpy( lastname, last, length ); 32 lastname[ length ] = '\0'; Member initializer syntax to initialize Date data members birthdate and hiredate; compiler uses default copy constructor // output Employee object to show when constructor is called 35 cout << "Employee object constructor: " 36 << firstname << ' ' << lastname << endl; 37 Output to show timing of constructors. employee1.cpp (2 of 3) 28

15 38 } // end Employee constructor // print Employee object 41 void Employee::print() const 42 { 43 cout << lastname << ", " << firstname << "\nhired: "; 44 hiredate.print(); 45 cout << " Birth date: "; 46 birthdate.print(); 47 cout << endl; } // end function print // output Employee object to show when its destructor is called 52 Employee::~Employee() destructors. 53 { 54 cout << "Employee object destructor: " 55 << lastname << ", " << firstname << endl; } // end destructor ~Employee Output to show timing of employee1.cpp (3 of 3) 29 1 // Fig. 7.10: fig07_10.cpp 2 // Demonstrating composition--an object with member objects. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include "employee1.h" // Employee class definition 9 10 int main() 11 { 12 Date birth( 7, 24, 1949 ); 13 Date hire( 3, 12, 1988 ); 14 Employee manager( "Bob", "Jones", birth, hire ); cout << '\n'; 17 manager.print(); Create Date objects to pass to Employee constructor cout << "\ntest Date constructor with invalid values:\n"; 20 Date lastdayoff( 14, 35, 1994 ); // invalid month and day 21 cout << endl; return 0; } // end main fig07_10.cpp (1 of 1) 30

16 Date object constructor for date 7/24/1949 Date object constructor for date 3/12/1988 Employee object constructor: Bob Jones Jones, Bob Hired: 3/12/1988 Birth date: 7/24/1949 Test Date constructor with invalid values: Month 14 invalid. Set to month 1. Day 35 invalid. Set to day 1. Date object constructor for date 1/1/1994 Date object destructor for date 1/1/1994 Employee object destructor: Jones, Bob Date object destructor for date 3/12/1988 Date object destructor for date 7/24/1949 Date object destructor for date 3/12/1988 Date object destructor for date 7/24/1949 Note two additional Datefig07_10.cpp objects constructed; no output (1 of 1) since default copy constructor used. Destructor for host object manager Destructor runs for before Employee s destructors Destructor member object for for member Employee s hiredate. objects Destructor member hiredate object for birthdate. and object Destructor for Date object birthdate. hire. birth friend Συναρτήσεις και and friend Τάξεις friend συναρτήσεις Ορίζονται εκτός εµβέλειας της τάξης Έχουν πρόσβαση σε non-public members ήλωση friends Συνάρτηση Προηγείται το keyword friend Όλες οι συναρτήσεις της τάξης classtwo ως friends της τάξης classone Βάζουµε τη δήλωση της µορφής friend class classtwo; στον ορισµό της classone 32

17 7.4 friend Συναρτήσεις και and friend Τάξεις Ιδιότητες Μπορεί να δοθεί όχι να ανακληθεί τάξη B friend της τάξης A Η τάξη A πρέπει να δηλώσει την τάξη B ως friend Όχι συµµετρική τάξη B friend της τάξης A τάξη A όχι απαραίτητα friend της τάξης B Όχι µεταβατική τάξη A friend της B τάξη B friend της C τάξη A όχι απαραίτητα friend της C 33 1 // Fig. 7.11: fig07_11.cpp 2 // Friends can access private members of a class. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // Count class definition 9 class Count { 10 friend void setx( Count &, int ); // friend declaration public: // constructor 15 Count() 16 : x( 0 ) // initialize x to 0 17 { 18 // empty body } // end Count constructor 21 Precede function prototype with keyword friend. fig07_11.cpp (1 of 3) 34

18 22 // output x 23 void print() const 24 { 25 cout << x << endl; } // end function print private: 30 int x; // data member }; // end class Count Pass Count object since C- style, standalone function // function setx can modify private data of Count 35 // because setx is declared Since setx as a friendof of Count 36 void setx( Count &c, int Count, val ) can access and 37 { modify private data 38 c.x = val; // legal: member setx x. is a friend of Count } // end function setx 41 fig07_11.cpp (2 of 3) int main() 43 { 44 Count counter; // create Count object cout << "counter.x after instantiation: "; 47 counter.print(); setx( counter, 8 ); // set x with a friend cout << "counter.x after call to setx friend function: "; 52 counter.print(); return 0; } // end main Use friend function to access and modify private data member x. fig07_11.cpp (3 of 3) fig07_11.cpp output (1 of 1) 36 counter.x after instantiation: 0 counter.x after call to setx friend function: 8

19 1 // Fig. 7.12: fig07_12.cpp 2 // Non-friend/non-member functions cannot access 3 // private data of a class. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 // Count class definition 10 // (note that there is no friendship declaration) 11 class Count { public: // constructor 16 Count() 17 : x( 0 ) // initialize x to 0 18 { 19 // empty body } // end Count constructor 22 fig07_12.cpp (1 of 3) // output x 24 void print() const 25 { 26 cout << x << endl; } // end function print private: 31 int x; // data member }; // end class Count // function tries to modify private data of Count, Attempting to modify 36 // but cannot because function is not a friend of Count private data member from 37 void cannotsetx( Count &c, int val ) 38 { non-friend function results 39 c.x = val; // ERROR: cannot in error. access private member in Count } // end function cannotsetx 42 fig07_12.cpp (2 of 3) 38

20 43 int main() 44 { 45 Count counter; // create Count object cannotsetx( counter, 3 ); // cannotsetx is not a friend return 0; } // end main fig07_12.cpp (3 of 3) fig07_12.cpp output (1 of 1) 39 D:\cpphtp4_examples\ch07\Fig07_12\Fig07_12.cpp(39) : error C2248: 'x' : cannot access private member declared in class 'Count' D:\cpphtp4_examples\ch07\Fig07_12\Fig07_12.cpp(31) : see declaration of 'x' Attempting to modify private data member from non-friend function results in error. this 7.5 Χρήση του this Επιτρέπει στο αντικείµενο να έχει πρόσβαση στη δική του διεύθυνση Ο τύπος του δείκτη this εξαρτάται από: Τύπο του αντικειµένου Αν η συνάρτηση έιναι const Για τις non-const συναρτήσεις Employee this έχει τύπο Employee * const Constant δείκτη σε non-const Employee αντικείµενο Για τις const συναρτήσεις Employee this έχει τύπο const Employee * const Constant δείκτη σε constant Employee αντικείµενο 40

21 1 // Fig. 7.13: fig07_13.cpp 2 // Using the this pointer to refer to object members. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 class Test { 9 10 public: 11 Test( int = 0 ); // default constructor 12 void print() const; private: 15 int x; }; // end class Test // constructor 20 Test::Test( int value ) 21 : x( value ) // initialize x to value 22 { 23 // empty body } // end Test constructor fig07_13.cpp (1 of 3) // print x using implicit and explicit this pointers; 28 // parentheses around *this required 29 void Test::print() const 30 { 31 // implicitly use this pointer to access member x 32 cout << " x = " << x; // explicitly use this pointer to access member x 35 cout << "\n this->x = " << this->x; // explicitly use dereferenced this pointer and 38 // the dot operator to access member x 39 cout << "\n(*this).x = " << ( *this ).x << endl; } // end function print int main() 44 { 45 Test testobject( 12 ); testobject.print(); return 0; 50 Implicitly use this pointer; only specify name of data member (x). Explicitly use this pointer with arrow operator. Explicitly use this pointer; dereference this pointer first, then use dot operator. fig07_13.cpp (2 of 3) 42

22 51 } // end main x = 12 this->x = 12 (*this).x = 12 fig07_13.cpp (3 of 3) fig07_13.cpp output (1 of 1) Χρήση του this Σειριακή κλήση συναρτήσεων Πολλαπλές συναρτήσεις καλούνται µε µία δήλωση Η συνάρτηση επιστρέφει δείκτη αναφοράς στο ίδιο το αντικείµενο { return *this; } Οι συναρτήσεις που δεν επιστρέφουν αναφορές πρέπει να κληθούν τελευταίες 44

23 1 // Fig. 7.14: time6.h 2 // Cascading member function calls. 3 4 // Time class definition. 5 // Member functions defined in time6.cpp. 6 #ifndef TIME6_H 7 #define TIME6_H 8 9 class Time { public: 12 Time( int = 0, int = 0, int = 0 ); // default constructor // set functions Set functions return reference to Time object to enable cascaded member function calls. 15 Time &settime( int, int, int ); // set hour, minute, second 16 Time &sethour( int ); // set hour 17 Time &setminute( int ); // set minute 18 Time &setsecond( int ); // set second // get functions (normally declared const) 21 int gethour() const; // return hour 22 int getminute() const; // return minute 23 int getsecond() const; // return second 24 time6.h (1 of 2) // print functions (normally declared const) 26 void printuniversal() const; // print universal time 27 void printstandard() const; // print standard time private: 30 int hour; // 0-23 (24-hour clock format) 31 int minute; // int second; // }; // end class Time #endif time6.h (2 of 2) 46

24 1 // Fig. 7.15: time6.cpp 2 // Member-function definitions for Time class. 3 #include <iostream> 4 5 using std::cout; 6 7 #include <iomanip> 8 9 using std::setfill; 10 using std::setw; #include "time6.h" // Time class definition // constructor function to initialize private data; 15 // calls member function settime to set variables; 16 // default values are 0 (see class definition) 17 Time::Time( int hr, int min, int sec ) 18 { 19 settime( hr, min, sec ); } // end Time constructor 22 time6.cpp (1 of 5) // set values of hour, minute, and second 24 Time &Time::setTime( int h, int m, int s ) 25 { 26 sethour( h ); 27 setminute( m ); 28 setsecond( s ); return *this; // enables cascading } // end function settime // set hour value 35 Time &Time::setHour( int h ) 36 { 37 hour = ( h >= 0 && h < 24 )? h : 0; return *this; // enables cascading } // end function sethour 42 Return *this as reference to enable cascaded member function calls. Return *this as reference to enable cascaded member function calls. time6.cpp (2 of 5) 48

25 43 // set minute value 44 Time &Time::setMinute( int m ) 45 { 46 minute = ( m >= 0 && m < 60 )? m : 0; return *this; // enables cascading } // end function setminute // set second value 53 Time &Time::setSecond( int s ) 54 { 55 second = ( s >= 0 && s < 60 )? s : 0; return *this; // enables cascading } // end function setsecond // get hour value 62 int Time::getHour() const 63 { 64 return hour; } // end function gethour 67 Return *this as reference to enable cascaded member function calls. Return *this as reference to enable cascaded member function calls. time6.cpp (3 of 5) // get minute value 69 int Time::getMinute() const 70 { 71 return minute; } // end function getminute // get second value 76 int Time::getSecond() const 77 { 78 return second; } // end function getsecond // print Time in universal format 83 void Time::printUniversal() const 84 { 85 cout << setfill( '0' ) << setw( 2 ) << hour << ":" 86 << setw( 2 ) << minute << ":" 87 << setw( 2 ) << second; } // end function printuniversal 90 time6.cpp (4 of 5) 50

26 91 // print Time in standard format 92 void Time::printStandard() const 93 { 94 cout << ( ( hour == 0 hour == 12 )? 12 : hour % 12 ) 95 << ":" << setfill( '0' ) << setw( 2 ) << minute 96 << ":" << setw( 2 ) << second 97 << ( hour < 12? " AM" : " PM" ); } // end function printstandard time6.cpp (5 of 5) 51 1 // Fig. 7.16: fig07_16.cpp 2 // Cascading member function calls with the this pointer. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include "time6.h" // Time class definition 9 10 int main() 11 { 12 Time t; // cascaded function calls 15 t.sethour( 18 ).setminute( 30 ).setsecond( 22 ); // output time in universal and standard formats 18 cout << "Universal time: "; 19 t.printuniversal(); cout << "\nstandard time: "; 22 t.printstandard(); cout << "\n\nnew standard time: "; 25 Cascade member function calls; recall dot operator associates from left to right. fig07_16.cpp (1 of 2) 52

27 26 // cascaded function calls 27 t.settime( 20, 20, 20 ).printstandard(); cout << endl; return 0; } // end main Universal time: 18:30:22 Standard time: 6:30:22 PM Function call to fig07_16.cpp printstandard must (2 of 2) appear last; printstandard does not fig07_16.cpp return reference to t. output (1 of 1) 53 New standard time: 8:20:20 PM 7.6 ιαχείριση υναµικής Μνήµης µε χρήση new και delete ιαχείριση δυναµικής µνήµης Ελέγχει τη διανοµή µνήµης Με χρήση των τελεστών new και delete Include standard header <new> 54

28 7.6 ιαχείριση υναµικής Μνήµης µε χρήση new και delete Έστω Time *timeptr; timeptr = new Time; Τελεστής new ηµιουργεί αντικείµενα κατάλληλου µεγέθους για τον τύπο Time ίνει λάθος αν δεν υπάρχει χώρος στη µνήµη Επιστρέφει δείκτη στον συγκεκριµένο τύπο Με αρχικοποίηση double *ptr = new double( ); Time *timeptr = new Time( 12, 0, 0 ); ήλωση πίνακα int *gradesarray = new int[ 10 ]; ιαχείριση υναµικής Μνήµης µε χρήση new και delete Απελευθερώνει τη µνήµη και καταστρέφει τα αντικείµενα Έστω delete timeptr; Τελεστής delete Καλή το destructor Η µνήµη µπορεί να χρησιµοποιηθεί µε άλλα αντικείµενα Deallocating arrays delete [] gradesarray; Απελευθερώνει το array στο οποίο δείχνει το gradesarray Αν είναι δείκτης σε array αντικειµένων Καλείτε πρώτα ο destructor για κάθε αντικείµενο του array Μετά απελευθερώνει τη µνήµη 56

29 7.7 static τάξεις static τάξης µεταβλητή εδοµένα διαθέσιµα σε όλη την τάξη Ιδιότητα της τάξης, όχι συγκεκριµένου αντικειµένου της τάξης Αποδοτικό όταν απλά ένα αντίγραφο της τάξης είναι αρκετό Μόνο η µεταβλητή static πρέπει να ενηµερώνεται Μπορεί να µοιάζει µε global, αλλά έχει εµβέλεια στην τάξη Αρχικοποιείται µια µόνο φορά Υπάρχει ακόµη και χωρίς αντικείµενο static τάξεις Πρόσβαση σε µεταβλητές τάξης static Προσβάσιµα µέσω οποιουδήποτε αντικειµένου τάξης public static µεταβλητές Μπορούν να προσπελαστούν και µέσω (::) Employee::count private static µεταβλητές Όταν δεν υπάρχει αντικείµενο Μπορεί να τα προσπελάσει κανείς µέσω συνάρτησης public static 58

30 7.7 static τάξεις static συναρτήσεις ε µπορούν να προσπελάσουν non-static δεδοµένα ή συναρτήσεις εν υπάρχει this για τις static συναρτήσεις static δεδοµένα και συναρτήσεις υπάρχουν ανεξάρτητα από τα αντικείµενα 59 1 // Fig. 7.17: employee2.h 2 // Employee class definition. 3 #ifndef EMPLOYEE2_H 4 #define EMPLOYEE2_H 5 6 class Employee { 7 8 public: 9 Employee( const char *, const char * ); // constructor 10 ~Employee(); // destructor 11 const char *getfirstname() const; // return first name 12 const char *getlastname() const; // return last name static member function can only access static data members and member functions // static member function 15 static int getcount(); // return # objects instantiated private: 18 char *firstname; 19 char *lastname; // static data member 22 static int count; // number of objects instantiated }; // end class Employee 25 static data member is class-wide data. employee2.h (1 of 2) 60

31 26 #endif 61 1 // Fig. 7.18: employee2.cpp 2 // Member-function definitions for class Employee. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <new> // C++ standard new operator 9 #include <cstring> // strcpy and strlen prototypes #include "employee2.h" // Employee class definition // define and initialize static data member 14 int Employee::count = 0; Initialize static data member exactly once at file scope // define static member function that returns number of 17 // Employee objects instantiated 18 int Employee::getCount() 19 { 20 return count; } // end static function getcount static member function accesses static data member count. employee2.h (2 of 2) employee2.cpp (1 of 3) // constructor dynamically allocates space for 25 // first and last name and uses strcpy to copy 26 // first and last names into the object 27 Employee::Employee( const char *first, const char *last ) 28 { 29 firstname = new char[ strlen( first ) + 1 ]; 30 strcpy( firstname, first ); lastname = new char[ strlen( last ) + 1 ]; 33 strcpy( lastname, last ); Use static data member to store total count of employees count; // increment static count of employees cout << "Employee constructor for " << firstname 38 << ' ' << lastname << " called." << endl; } // end Employee constructor // destructor deallocates dynamically allocated memory 43 Employee::~Employee() 44 { 45 cout << "~Employee() called for " << firstname 46 << ' ' << lastname << endl; 47 employee2.cpp new operator dynamically (2 of 3) allocates space. 62

32 48 delete [] firstname; // recapture memory 49 delete [] lastname; // recapture memory count; // decrement static count of employees } // end destructor ~Employee // return first name of employees. 56 const char *Employee::getFirstName() const 57 { 58 // const before return type prevents client from modifying 59 // private data; client should copy returned string before 60 // destructor deletes storage to prevent undefined pointer 61 return firstname; } // end function getfirstname Use static Operator data member deleteto deallocates store total memory. count of // return last name of employee 66 const char *Employee::getLastName() const 67 { 68 // const before return type prevents client from modifying 69 // private data; client should copy returned string before 70 // destructor deletes storage to prevent undefined pointer 71 return lastname; } // end function getlastname employee2.cpp (3 of 3) 63 1 // Fig. 7.19: fig07_19.cpp 2 // Driver to test class Employee. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <new> // C++ standard new operator 9 10 #include "employee2.h" // Employee class definition int main() 13 { 14 cout << "Number of employees before instantiation is " << Employee::getCount() << endl; // use class name Employee *e1ptr = new Employee( "Susan", "Baker" ); 18 Employee *e2ptr = new Employee( "Robert", "Jones" ); cout << "Number of employees after of instantiation class. is " 21 << e1ptr->getcount(); 22 fig07_19.cpp (1 of 2) 15 << Employee::getCount() << endl; // use class name new operator dynamically allocates space. static member function can be invoked on any object 64

33 23 cout << "\n\nemployee 1: " 24 << e1ptr->getfirstname() 25 << " " << e1ptr->getlastname() 26 << "\nemployee 2: " 27 << e2ptr->getfirstname() 28 << " " << e2ptr->getlastname() << "\n\n"; delete e1ptr; // recapture memory 31 e1ptr = 0; // disconnect pointer from free-store space 32 delete e2ptr; // recapture memory 33 e2ptr = 0; // disconnect pointer from free-store space cout << "Number of employees after deletion is " memory. 36 << Employee::getCount() << endl; return 0; } // end main static member function invoked using binary scope Operator resolution delete deallocates operator (no existing class objects). fig07_19.cpp (2 of 2) 65 Number of employees before instantiation is 0 Employee constructor for Susan Baker called. Employee constructor for Robert Jones called. Number of employees after instantiation is 2 Employee 1: Susan Baker Employee 2: Robert Jones fig07_19.cpp output (1 of 1) 66 ~Employee() called for Susan Baker ~Employee() called for Robert Jones Number of employees after deletion is 0

34 7.8 Αφαίρεση εδοµένων και Απόκρυψη Πληροφορίας Απόκρυψη πληροφορίας Οι τάξεις κρύβουν λεπτοµέρειες της υλοποίησης από τους πελάτες Π.χ. : δοµή δεδοµένων στοίβας εδοµένα προστίθενται (pushed) εδοµένα αφαιρούνται (popped) οµή Last-in, first-out (LIFO) Ο πελάτης θέλει µόνο µια LIFO δοµή δεδοµένων ε τον ενδιαφέρει πως υλοποιείτε η στοίβα Αφαίρεση δεδοµένων Περιγράφει τη λειτουργικότητα της τάξης ανεξάρτητα από την υλοποίηση Αφαίρεση εδοµένων και Απόκρυψη Πληροφορίας Abstract data types (ADTs) Προσεγγίσεις/ µοντέλα πραγµατικών εννοιών και συµπεριφοράς int, float είναι µοντέλα για αριθµούς Αναπαράσταση δεδοµένων C++ επεκτάσεις Οι Standard τύποι δεδοµένων δε µπορούν να τροποποιηθούν αλλά µπορούν να δηµιουργηθούν νέοι 68

35 7.8.1 Παράδειγµα: Πίνακας Abstract Data Type ADT πίνακας Μπορεί να περιλαµβάνει Έλεγχο πεδίου τιµών του δείκτη Κάθε δυνατό πεδίο τιµών Αντί να αρχίζει πάντα από το 0 Ανάθεση Σύγκριση Εισαγωγή και Εκτύπωση Πίνακες που γνωρίζουν το µέγεθός τους Πίνακες που επεκτείνονται δυναµικά Παράδειγµα: String Abstract Data Type Συµβολοσειρές στη C++ Η C++ δεν έχει τύπο string Παρέχει µηχανισµό για δηµιουργία και υλοποίηση string abstract data type ANSI/ISO standard string 70

36 7.9 Εµπεριέχουσες τάξεις και Επαναλήπτες Container classes (collection classes) Έχουν σχεδιαστεί να έχουν συλλογές από αντικείµενα Κοινές υπηρεσίες Εισαγωγή, διαγραφή, αναζήτηση, ταξινόµηση Παραδείγµατα Πίνακες, στοίβες, ουρές, δένδρα, διασυνδεδεµένες λίστες Επαναλήπτες (iterators) Επιστρέφουν το επόµενο στοιχείο µιας συλλογής Ή ενεργούν πάνω στο επόµενο στοιχείο Μπορεί να υπάρχουν πολλοί επαναλήπτες Ως ένα βιβλίο µε πολλούς σελιδοδείκτες Κάθε επαναλήπτης έχει τη δική του «θέση» 71 Proxy class 7.10 Τάξεις Proxy Κρύβουν την υλοποίηση µιας άλλης τάξης Γνωρίζει µόνο τα public interface της τάξης που κρύβει Forward class δήλωση Χρησιµοποιείται όταν η δήλωση της τάξης χρησιµοποιεί δείκτη σε άλλη τάξη εν απαιτείται header file ηλώνει την τάξη πριν την αναφορά Μορφή: class classtoload; Μορφή 72

37 1 // Fig. 7.20: implementation.h 2 // Header file for class Implementation 3 4 class Implementation { 5 6 public: 7 8 // constructor 9 Implementation( int v ) 10 : value( v ) // initialize value with v 11 { 12 // empty body } // end Implementation constructor // set value to v 17 void setvalue( int v ) 18 { 19 value = v; // should validate v } // end function setvalue 22 public member function. implementation.h (1 of 2) // return value 24 int getvalue() const 25 { 26 return value; } // end function getvalue private: 31 int value; }; // end class Implementation public member function. implementation.h (2 of 2) 74

38 1 // Fig. 7.21: interface.h 2 // Header file for interface.cpp 3 4 class Implementation; // forward class declaration 5 6 class Interface { 7 8 public: 9 Interface( int ); 10 void setvalue( int ); // same public interface as 11 int getvalue() const; // class Implementation 12 ~Interface(); private: // requires previous forward declaration (line 4) 17 Implementation *ptr; }; // end class Interface Provide same public interface as class Implementation; recall setvalue and getvalue only public member functions. Pointer to Implementation object requires forward class declaration. interface.h (1 of 1) 75 1 // Fig. 7.22: interface.cpp 2 // Definition of class Interface 3 #include "interface.h" // Interface class definition 4 #include "implementation.h" // Implementation class definition 5 6 // constructor underlying 7 Interface::Interface( int v ) Implementation object. 8 : ptr ( new Implementation( v ) ) // initialize ptr 9 { 10 // empty body } // end Interface constructor Maintain pointer to // call Implementation's setvalue function 15 void Interface::setValue( int v ) 16 { 17 ptr->setvalue( v ); } // end function setvalue 20 Proxy class Interface includes header file for class Implementation. Invoke corresponding function on underlying Implementation object. interface.cpp (1 of 2) 76

39 21 // call Implementation's getvalue function 22 int Interface::getValue() const 23 { 24 return ptr->getvalue(); } // end function getvalue // destructor 29 Interface::~Interface() 30 { 31 delete ptr; } // end destructor ~Interface Invoke corresponding function on underlying Implementation object. Deallocate underlying Implementation object. interface.cpp (2 of 2) 77 1 // Fig. 7.23: fig07_23.cpp 2 // Hiding a class s private data with a proxy class. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include "interface.h" // Interface class definition 9 10 int main() 11 { 12 Interface i( 5 ); cout << "Interface contains: " << i.getvalue() 15 << " before setvalue" << endl; i.setvalue( 10 ); cout << "Interface contains: " << i.getvalue() 20 << " after setvalue" << endl; return 0; } // end main Only include proxy class header file. Create object of proxy class Interface; note no mention of Implementation class. fig07_23.cpp (1 of 1) fig07_23.cpp output (1 of 1) Invoke member functions via proxy class object. 78 Interface contains: 5 before setvalue Interface contains: 10 after setvalue

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Outline 6.1 Εισαγωγή 6.2 Ορισµός δοµών - Structure 6.3 Προσπέλαση µελών δοµής - structure 6.4 Υλοποίηση τύπου Time µε struct από το χρήστη 6.

Outline 6.1 Εισαγωγή 6.2 Ορισµός δοµών - Structure 6.3 Προσπέλαση µελών δοµής - structure 6.4 Υλοποίηση τύπου Time µε struct από το χρήστη 6. Πανεπιστήµιο Πατρών Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση εδοµένων 1 6.1 Εισαγωγή 6.2 Ορισµός δοµών - Structure 6.3 Προσπέλαση

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

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

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

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

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

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

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

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

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

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

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found Α. Πρώτη προαπαιτούµενη Κάθε οµάδα θα πρέπει να δηµιουργήσει τον ζητούµενο παρακάτω πίνακα και α. να εµφανίσει τα στοιχεία του, β. να τυπώσει τον µέσο όρο των στοιχείων του, γ. να ταξινοµήσει τα στοιχεία

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

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

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

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

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

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

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

HY150a Φροντιστήριο 3 24/11/2017

HY150a Φροντιστήριο 3 24/11/2017 HY150a Φροντιστήριο 3 24/11/2017 1 Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει

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

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

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

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

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

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

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

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

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

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:

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

10. Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming - OOP)

10. Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming - OOP) 10. Αντικειμενοστραφής Προγραμματισμός (Object Oriented Programming - OOP) Χειμερινό εξάμηνο 2016 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Έλεγχος πρόσβασης στα μέλη

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

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

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

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

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

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

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

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:

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 11η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση του τελεστή εκχώρησης. Στατικές μεταβλητές, στατικές σταθερές

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

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++ Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout

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

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

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

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

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες

υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: είκτες στη C++ Οι τελεστές new και delete Destructors Ορισµός τελεστών κλάσεων Ο δείκτης this ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial Introduction Το Javadoc είναι ένα εργαλείο που παράγει αρχεία html (παρόμοιο με τις σελίδες στη διεύθυνση http://docs.oracle.com/javase/8/docs/api/index.html) από τα σχόλια

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

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

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

Αναφορές, είκτες και Αλφαριθμητικά

Αναφορές, είκτες και Αλφαριθμητικά Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών

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

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

Αντικειμενοστραφής Προγραμματισμός Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

Η Γλώσσα Προγραµµατισµού 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 Θα

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

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)

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

Συναρτήσεις στη C++ Οι µεταβλητές χαρακτηρίζονται από διάφορες ιδιότητες. Για ποιο διάστηµα η µεταβλητή υπάρχει στη µνήµη

Συναρτήσεις στη C++ Οι µεταβλητές χαρακτηρίζονται από διάφορες ιδιότητες. Για ποιο διάστηµα η µεταβλητή υπάρχει στη µνήµη Συναρτήσεις στη C++ 1 ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή Συστατικά προγράµµατος στη C++ Μαθηµατικές Συναρτήσεις (Math Library) Συναρτήσεις Header Files Γεννήτρια τυχαίων αριθµών Χαρακτηριστικά Μεταβλητών Storage Classes

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

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

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

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

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

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

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:

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

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

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

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

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE)

EPL 603 TOPICS IN SOFTWARE ENGINEERING. Lab 5: Component Adaptation Environment (COPE) EPL 603 TOPICS IN SOFTWARE ENGINEERING Lab 5: Component Adaptation Environment (COPE) Performing Static Analysis 1 Class Name: The fully qualified name of the specific class Type: The type of the class

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

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)

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

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Υπερφόρτωση, keywords CONST, STATIC, FRIEND ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Υπερφόρτωση Συναρτήσεων Τελεστών CONST αντικείμενα, μεταβλητές και συναρτήσεις

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2 Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

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

Φροντιςτήριο. Linked-List

Φροντιςτήριο. Linked-List Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ

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

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

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

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ C++ Constructors, Destructors, Pointers IO Streams, File Streams CONSTRUCTORS DESTRUCTORS Η κλάση mystring class mystring private: char s[100]; public: char *GetString(); void SetString(char

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

Δομές Δεδομένων & Αλγόριθμοι

Δομές Δεδομένων & Αλγόριθμοι Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές

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

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

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

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

Συµβολοσειρές - Strings

Συµβολοσειρές - Strings Συµβολοσειρές - Strings 1 Συµβολοσειρέςστην C/C++ 2 Χαρακτήρες 'a', 'z', '0', Χαρακτήρες σαν int 'z' επίσης αναπαριστά την ακεραία τιµή του χαρακτήρα z Strings-Συµβολοσειρές Σειρές από χαρακτήρες σαν µια

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

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ ΕΡΓΑΣΤΗΡΙΟ Κωδικός Θ: ΤΠ3001, Κωδικός Ε: ΤΠ3101 (ΜΕΥ/Υ) Ώρες (Θ - Ε): 4-2 Προαπαιτούμενα: Δρ. ΒΙΔΑΚΗΣ ΝΙΚΟΣ ΕΡΓΑΣΤΗΡΙΟ 6 Στοίβα (Stack) Stack Introduction Stack is one of the

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

Η Γλώσσα Προγραµµατισµού 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 Θα

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής Να γραφεί πρόγραμμα το οποίο δέχεται ως είσοδο μια ακολουθία S από n (n 40) ακέραιους αριθμούς και επιστρέφει ως έξοδο δύο ακολουθίες από θετικούς ακέραιους

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006 ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/26 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι το 1 εκτός αν ορίζεται διαφορετικά στη διατύπωση

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

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

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

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

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

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

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

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής

Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος

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

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string

12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string 12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string Aλφαριθµητικά της C int main() const int max=80; char str[max); //κάθε char δεσµεύει

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

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

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

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

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΕΡΓΑΣΤΗΡΙΟ C++ ΕΞΑΜΗΝΟ Γ Ακαδηµαϊκό Έτος

ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΕΡΓΑΣΤΗΡΙΟ C++ ΕΞΑΜΗΝΟ Γ Ακαδηµαϊκό Έτος ΠΑΡΑ ΕΙΓΜΑ δυναµικής δέσµευσης και αποδέσµευσης µνήµης στη C++ µέσω των new και delete. // create.cpp #include using namespace std; class values public: values() : value1(0), value2(0) count++;

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση

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

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες: Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects

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

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

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

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

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

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

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

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

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

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 12: Συνοπτική Παρουσίαση Ανάπτυξης Κώδικα με το Matlab Σαμαράς Νικόλαος Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

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

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

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

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

Πανεπιστήµιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) είκτες και Συµβολοσειρές (Pointers. & Strings)

Πανεπιστήµιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) είκτες και Συµβολοσειρές (Pointers. & Strings) Πανεπιστήµιο Πατρών 1 Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) είκτες και Συµβολοσειρές (Pointers & Strings) Περιεχόµενα 2 Εισαγωγή ήλωση και αρχικοποίηση

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

Υπερφόρτωση τελεστών (operator(

Υπερφόρτωση τελεστών (operator( Υπερφόρτωση τελεστών (operator( overloading) Η υπερφόρτωση τελεστών είναι ένα από τα πιο ενδιαφέροντα χαρακτηριστικά του αντικειμενοστραφούς προγραμματισμού. Αναφέρεται στην πρόσθετη χρήση των συνηθισμένων

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

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

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

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT = Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος 2018 1/18 = 2/18 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω

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

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

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

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι She selects the option. Jenny starts with the al listing. This has employees listed within She drills down through the employee. The inferred ER sttricture relates this to the redcords in the databasee

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

(C) 2010 Pearson Education, Inc. All rights reserved.

(C) 2010 Pearson Education, Inc. All rights reserved. Connectionless transmission with datagrams. Connection-oriented transmission is like the telephone system You dial and are given a connection to the telephone of fthe person with whom you wish to communicate.

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

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,

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

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό

Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό Προγραμματισμός Υπολογιστών με C++ Φύλλο Διαγωνίσματος Ακαδημαϊκό εξάμηνο: Χειμερινό 2013-14 Διδάσκων: Γεώργιος Παπαϊωάννου Μονογραφή επιτηρητή: Στοιχεία Φοιτητή (συμπληρώνεται από το φοιτητή) Όνομα: Αίθουσα/αμφιθέατρο:

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

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

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

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

ΗΥ-150. Προγραμματισμός

ΗΥ-150. Προγραμματισμός ΗΥ-150 Προγραμματισμός Δείκτες (Pointers) Προγραμματισμός Δείκτες Τι είναι: τύπος μεταβλητών (όπως integer) Τι αποθηκεύουν: την διεύθυνση στη μνήμη άλλων μεταβλητών Τι χρειάζονται: Κυρίως, για δυναμική

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

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)?

Απάντηση. // We write in a header file named my_header.h #ifndef my_header_h #define my_header_h #define divides(x,y) (((y)%(x)==0)? Θέμα 1. Γράψτε τον κώδικα ενός header file που να περιέχει: 1) Ένα macro με όνομα divides που, αν του μεταβιβάσουμε δύο ακέραιους αριθμούς επιστρέφει 1 αν ο πρώτος αριθμός διαιρεί τον δεύτερο, αλλιώς,

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

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

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

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

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β 3.4 SUM AND DIFFERENCE FORMULAS Page Theorem cos(αβ cos α cos β -sin α cos(α-β cos α cos β sin α NOTE: cos(αβ cos α cos β cos(α-β cos α -cos β Proof of cos(α-β cos α cos β sin α Let s use a unit circle

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 17η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προσθήκη ελέγχου ορίων σε πίνακες χρησιμοποιώντας σχεδιότυπα τάξεων

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

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα εξής ακαδημαϊκά έτη: Διάρκεια: 2,5 ώρες, κλειστά βιβλία και σημειώσεις ΚΑΛΗ ΕΠΙΤΥΧΙΑ!

Ονοματεπώνυμο και ΑΜ: Είχα παραδώσει εργασίες τα εξής ακαδημαϊκά έτη: Διάρκεια: 2,5 ώρες, κλειστά βιβλία και σημειώσεις ΚΑΛΗ ΕΠΙΤΥΧΙΑ! Οικονομικό Πανεπιστήμιο Αθηνών, Τμήμα Πληροφορικής Μάθημα: Προγραμματισμός Υπολογιστών με C++ Εξεταστική περίοδος: Σεπτεμβρίου 2011. Διδάσκων: Α. Δημάκης Γράψτε όλες τις απαντήσεις σας πάνω σε αυτό το

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

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

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

Math 6 SL Probability Distributions Practice Test Mark Scheme

Math 6 SL Probability Distributions Practice Test Mark Scheme Math 6 SL Probability Distributions Practice Test Mark Scheme. (a) Note: Award A for vertical line to right of mean, A for shading to right of their vertical line. AA N (b) evidence of recognizing symmetry

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

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων Στόχοι και αντικείμενο ενότητας Πέρασμα Πίνακα σε Συνάρτηση #8.. Ειδικά Θέματα Αλγορίθμων Προβλήματα Αναζήτησης Γραμμική Αναζήτηση (Linear Search) Ενημέρωση Μέτρηση Δυαδική Αναζήτηση (Binary Search) Προβλήματα

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

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

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

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

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες. 58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο

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

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

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

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

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

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;.. Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

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