Outline 6.1 Εισαγωγή 6.2 Ορισµός δοµών - Structure 6.3 Προσπέλαση µελών δοµής - structure 6.4 Υλοποίηση τύπου Time µε struct από το χρήστη 6.
|
|
- Πόντιος Λαμέρας
- 8 χρόνια πριν
- Προβολές:
Transcript
1 Πανεπιστήµιο Πατρών Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση εδοµένων Εισαγωγή 6.2 Ορισµός δοµών - Structure 6.3 Προσπέλαση µελών δοµής - structure 6.4 Υλοποίηση τύπου Time µε struct από το χρήστη 6.5 Υλοποίηση αφηρηµένου τύπου Time µε τάξη class 6.6 Εµβέλεια τάξης και προσπέλαση µελών 6.7 ιαχωρίζοντας διεπαφή από την υλοποίηση 6.8 Έλεγχος πρόσβασης στα µέλη 6.9 Συναρτήσεις πρόσβασης και βοηθητικές συναρτήσεις 6.10 Αρχικοποιώντας τα αντικείµενα τάξης: Constructors 6.11 Χρήση Default παραµέτρων µε Constructors 6.12 Destructors 6.13 Καλώντας Constructors και Destructors 6.14 Using Set and Get Functions 6.15 Subtle Trap: Returning a Reference to a private Data Member 6.16 Default Memberwise Assignment 6.17 Software Reusability 2
2 6.1 Εισαγωγή Αντικειµενοστραφής Προγραµµατισµός Οντοκεντρικός Προγραµµατισµός Object-oriented programming (OOP) Εµφωλεύει δεδοµένα (χαρακτηριστικά) και συναρτήσεις (συµπεριφορά) σε πακέτα που καλούνται τάξεις Απόκρυψη πληροφορίας Οι τάξεις (αντικείµενα) επικοινωνούν µε καλώς ορισµένες διεπαφές Οι λεπτοµέρειες της υλοποίησης βρίσκονται κρυµµένες µέσα στις ίδιες τις τάξεις Τύποι οριζόµενοι από το χρήστη: τάξεις εδοµένα (data members) Συναρτήσεις (member functions or methods) Έκφανση-εκτέλεση τάξης: αντικείµενο Ορισµός οµών-structure οµές Καθορίζουν τύπους που προκύπτουν από τη συνάθροιση µελών άλλων τύπων struct Time { int hour; int minute; int second; }; Structure tag Structure members Ονοµατολογία µελών σε δοµή Structure Στην ίδια struct: πρέπει να δίνονται µοναδικά ονόµατα Σε διαφορετικές structs: s: µπορούν τα ονόµατα να διαµοιράζονται Ο ορισµός struct τελειώνει πάντα µε ερωτηµατικό 4
3 6.2 Ορισµός οµών-structure Αυτό-αναφερόµενη δοµή-struct Τα µέλη µιας Structure δε µπορεί να είναι εκφάνσεις (instance) εµφωλευµένης struct Τα µέλη µιας Structure µπορούν να είναι δείκτης σε µια instance εµφωλευµένης struct (αυτό-αναφερόµενη αναφερόµενη structure) Χρήσιµο για διασυνδεδεµένες λίστες, ουρές, στοίβες και δένδρα struct ηµιουργεί έναν νέο τύπο δεδοµένων που χρησιµοποιείται για να δηλώσει κανείς µεταβλητές ηλώνονται όπως και οι λοιπές µεταβλητές άλλων τύπων Παραδείγµατα: Time timeobject; Time timearray[ 10 ]; Time *timeptr; Time &timeref = timeobject; Προσπέλαση µελών Structure Τελεστές προσπέλασης µελών Τελεστής τελεία (.) για µέλη δοµής-structure και τάξης Τελεστής βέλος (->) για µέλη δοµής-structure και τάξης µέσω δείκτη σε αντικείµενο Εκτύπωση µέλους hour του timeobject: cout << timeobject.hour; Ή timeptr = &timeobject; cout << timeptr->hour; timeptr->hour είναι όµοιο µε ( *timeptr ).hour Οι παρενθέσεις απαιτούνται * έχει µικρότερη προτεραιότητα έναντι του. 6
4 6.4 Υλοποίηση τύπου Time µε struct από το χρήστη Default: οι δοµές-structures περνούν µε τιµή Πέρασµα µε αναφορά Αποφυγή του overhead για την αντιγραφή δοµής C-style structures εν υπάρχει διεπαφή interface Εάν αλλάξει η υλοποίηση, όλα τα προγράµµατα που χρησιµοποιούν τη struct πρέπει να αλλάξουν ανάλογα ε µπορεί να εκτυπωθεί ως ενιαία µονάδα Κάθε µέλος εκτυπώνεται/διαµορφώνεται χωριστά ε µπορεί να συγκριθεί συνολικά 7 Πρέπει να συγκριθούν όλα τα µέλη ένα-ένα 1 // Fig. 6.1: fig06_01.cpp 2 // Create a structure, set its members, and print it. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <iomanip> 9 10 using std::setfill; 11 using std::setw; // structure definition 14 struct Time { int hour; 16 int minute; // int second; // }; // end struct Time 15 int hour; // 0-23 (24-hour clock format) void printuniversal( const Time & ); // prototype 22 void printstandard( const Time & ); // prototype 23 Ορισµός τύπου δοµήςstructure Timeµε τρία µέλη integer. Πέρασµα µε αναφορά σε αντικείµενα Timeγια να µην έχουµε overheadαντιγραφής. fig06_01.cpp (1 of 3) 8
5 24 int main() 25 { 26 Time dinnertime; // variable of new type Time dinnertime.hour = 18; // set hour member of dinnertime 29 dinnertime.minute = 30; // set minute member of dinnertime 30 dinnertime.second = 0; // set second member of dinnertime cout << "Dinner will be held at "; 33 printuniversal( dinnertime ); 34 cout << " universal time,\nwhich is "; 35 printstandard( dinnertime ); 36 cout << " standard time.\n"; Χρησιµοποιούµε τελεστή τελεία για να αρχικοποιήσουµε τα µέλη της δοµής. Απευθείας πρόσβαση σε δεδοµένα επιτρέπει την ανάθεση λανθασµένων τιµών dinnertime.hour = 29; // set hour to invalid value 39 dinnertime.minute = 73; // set minute to invalid value cout << "\ntime with invalid values: "; 42 printuniversal( dinnertime ); 43 cout << endl; return 0; } // end main 48 fig06_01.cpp (2 of 3) 9 49 // print time in universal-time format 50 void printuniversal( const Time &t ) 51 { 52 cout << setfill( '0' ) << setw( 2 ) << t.hour << ":" 53 << setw( 2 ) << t.minute << ":" 54 << setw( 2 ) << t.second; } // end function printuniversal // print time in standard-time format 59 void printstandard( const Time &t ) 60 { 61 cout << ( ( t.hour == 0 t.hour == 12 )? : t.hour % 12 ) << ":" << setfill( '0' ) 63 << setw( 2 ) << t.minute << ":" 64 << setw( 2 ) << t.second 65 << ( t.hour < 12? " AM" : " PM" ); } // end function printstandard fig06_01.cpp (3 of 3) Χρήση παραµετροποιηµένου fig06_01.cpp διαχειριστή stream output setfill (1 of 1) Χρήση τελείας για πρόσβαση στα µέλη δεδοµένων. 10 Dinner will be held at 18:30:00 universal time, which is 6:30:00 PM standard time. Time with invalid values: 29:73:00
6 6.5 Υλοποίηση αφηρηµένου τύπου Time µε τάξη class Τάξεις Αντικείµενα Model Χαρακτηριστικά - Attributes (µέλη δεδοµένα) Συµπεριφορές - Behaviors (µέλη συναρτήσεις) Ορίζεται µε τη λέξη-κλειδί class Μέλη συναρτήσεις Μέθοδοι Καλούνται σε απάντηση µηνύµατος Καθοριστές πρόσβασης σε µέλη ηµόσια - public: Πρόσβαση σε οποιοδήποτε αντικείµενο της τάξης εντός περιοχής -scope Ιδιωτικό - private: Πρόσβαση µόνο από µέλη συναρτήσεις της τάξης Προστατευόµενο - protected: Πρόσβαση από παράγωγες τάξεις Υλοποίηση αφηρηµένου τύπου Time µε τάξη class Συνάρτηση Constructor Ειδικό µέλος συνάρτηση Αρχικοποιεί τα δεδοµένα Έχει το ίδιο όνοµα µε την τάξη Καλείται όταν παράγεται το αντικείµενο Μπορεί να υπάρχουν πολλοί constructors Υπερφόρτωση συναρτήσεων Function εν έχει/επιστρέφει κάποιο type 12
7 1 class Time { 2 3 public: 4 Time(); Ο ορισµός της Ξεκινά τάξης // µε constructor ξεκινά αριστερό public. άγκιστρο. 5 void settime( int, µε int, τη λέξη int class. ); // set hour, minute, second 6 void printuniversal(); Προσδιοριστές // print πρόσβασης. universal-time format Ο Constructor έχει το ίδιο 7 void printstandard(); // print standard-time format 8 9 private: δεν έχει τύπο 10 int hour; // 0-23 (24-hour clock format) 11 int minute; // Η Ο τάξη 0 ορισµός - 59 κλείνει τελειώνει µε δεξί µε 12 int second; // άγκιστρο }; // end class Time ηµόσια µέλη συναρτήσεις όνοµα Ιδιωτικά µε την τάξη, µέλη Time, και δεδοµένα - private προσπελάσιµα µόνο στις συναρτήσεις της τάξης ερωτηµατικό. Class Time definition (1 of 1) Υλοποίηση αφηρηµένου τύπου Time µε τάξη class Αντικείµενα της τάξης Μετά τον ορισµό της τάξης Το όνοµα τάξης είναι ένας προσδιοριστής ενός νέου τύπου Example: Το όνοµα τάξης προσδιορίζει ένα νέο τύπο Time sunset; // object of type Time Time arrayoftimes[ 5 ]; // array of Time objects Time *pointertotime; // pointer to a Time object Time &dinnertime = sunset; // reference to a Time object 14
8 6.5 Υλοποίηση αφηρηµένου τύπου Time µε τάξη class Μέλη συναρτήσεις εκτός τάξης Binary scope resolution operator (::) ένει το όνοµα µέλους µε µια τάξη Προσδιορίζει µοναδικά τις συναρτήσεις συγκεκριµένων τάξεων ιαφορετικές τάξεις µπορούν να έχουν συναρτήσεις µέλη µε το ίδιο όνοµα Μορφή για τον ορισµό συναρτήσεων µελών ReturnType ClassName::MemberFunctionName( ){ } εν αλλάζει αν η συνάρτηση είναι public ή private Μέλη συναρτήσεις εντός τάξης ε χρειάζονται τελεστή ορισµού scope και όνοµα τάξης 15 1 // Fig. 6.3: fig06_03.cpp 2 // Time class. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 #include <iomanip> 9 10 using std::setfill; 11 using std::setw; Τάξη Time // Time abstract data type (ADT) definition 14 class Time { public: 17 Time(); // constructor 18 void settime( int, int, int ); // set hour, minute, second 19 void printuniversal(); // print universal-time format 20 void printstandard(); // print standard-time format 21 fig06_03.cpp (1 of 5) 16
9 22 private: 23 int hour; // 0-23 (24-hour clock format) 24 int minute; // int second; // }; // end class Time // Time constructor initializes each data member to zero and 30 // ensures all Time objects start in a consistent state 31 Time::Time() 32 { 33 hour = minute = second = 0; } // end Time constructor Ο Constructor αρχικοποιεί τα privateδεδοµένα στην τιµή µηδέν (0) // set new Time value using universal time, perform validity 38 // checks on the data values and set invalid values to zero 39 void Time::setTime( int h, int m, int s ) 40 { 41 hour = ( h >= 0 && h < 24 )? h : 0; 42 minute = ( m >= 0 && m < 60 )? m : 0; 43 second = ( s >= 0 && s < 60 )? s : 0; } // end function settime 46 fig06_03.cpp (2 of 5) Η public συνάρτηση ελέγχει τις τιµές των παραµέτρων πριν ορίσει τα private δεδοµένα // print Time in universal format 48 void Time::printUniversal() 49 { 50 cout << setfill( '0' ) << setw( 2 ) << hour << ":" 51 << setw( 2 ) << minute << ":" 52 << setw( 2 ) << second; } // end function printuniversal // print Time in standard format 57 void Time::printStandard() 58 { Χωρίς παραµέτρους! (γνωρίζει implicitly ότι σκοπός είναι να εκτυπωθούν µέλη δεδοµένα! Έτσι γίνεται περιεκτικότερη η κλήση των 59 cout << ( ( hour == 0 hour == 12 )? 12 : hour % 12 ) συναρτήσεων. 60 << ":" << setfill( '0' ) << setw( 2 ) << minute 61 << ":" << setw( 2 ) << second 62 << ( hour < 12? " AM" : " PM" ); } // end function printstandard int main() 67 { 68 Time t; // instantiate object t of class Time 69 ηλώνουµε τη µεταβλητή t ως αντικείµενο τάξης Time. fig06_03.cpp (3 of 5) 18
10 70 // output Time object t's initial values 71 cout << "The initial universal time is "; 72 t.printuniversal(); // 00:00: cout << "\nthe initial standard time is "; 75 t.printstandard(); // 12:00:00 AM t.settime( 13, 27, 6 ); // change time // output Time object t's new values 80 cout << "\n\nuniversal time after settime is "; 81 t.printuniversal(); // 13:27: cout << "\nstandard time after settime is "; 84 t.printstandard(); // 1:27:06 PM Καλούµε τη public συνάρτηση για εκτύπωση. Ορίζουµε τα µέλη δεδοµένα χρησιµοποιώντας τη public συνάρτηση µέλος. Προσπάθεια να περάσουµε λάθος τιµές µε χρήση της publicσυνάρτησης t.settime( 99, 99, 99 ); // attempt invalid settings // output t's values after specifying invalid values 89 cout << "\n\nafter attempting invalid settings:" 90 << "\nuniversal time: "; 91 t.printuniversal(); // 00:00:00 92 fig06_03.cpp (4 of 5) cout << "\nstandard time: "; 94 t.printstandard(); // 12:00:00 AM 95 cout << endl; return 0; } // end main The initial universal time is 00:00:00 The initial standard time is 12:00:00 AM fig06_03.cpp (5 of 5) fig06_03.cpp output (1 of 1) 20 Universal time after settime is 13:27:06 Standard time after settime is 1:27:06 PM After attempting invalid settings: Universal time: 00:00:00 Standard time: 12:00:00 AM Τα µέλη δεδοµένων γίνονται µηδέν (0)µετά από τις λάθος τιµές που δόθηκαν.
11 6.5 Υλοποίηση αφηρηµένου τύπου Time µε τάξη class Destructors Έχουν το ίδιο όνοµα µε την τάξη Προηγείται το σηµάδι µαθηµατικής άρνησης (tilde) (~) Χωρίς παραµέτρους ε µπορεί να υπερφορτωθεί Υλοποίηση αφηρηµένου τύπου Time µε τάξη class Πλεονεκτήµατα χρήσης τάξεων Απλοποιούν τον προγραµµατισµό ιεπαφές Κρύβουν την υλοποίηση Επαναχρησιµοποίηση Κώδικα Σύνθεση (συνάθροιση) - Composition (aggregation) Αντικείµενα τάξης µπορούν να περιληφθούν ως µέλη άλλων τάξεων Κληρονοµικότητα Νέες τάξεις προκύπτουν από παλαιές 22
12 6.6 Εµβέλεια τάξης και προσπέλαση µελών Εµβέλεια τάξης Μέλη δεδοµένα και συναρτήσεις Εντός εµβέλειας Μέλη τάξης Άµεσα προσπελάσιµα από όλα τα µέλη συναρτήσεις Αναφορά µε το όνοµα Εκτός εµβέλειας τάξης Αναφορά µε handles Όνοµα αντικειµένου, αναφορά στο αντικείµενο, δείκτης στο αντικείµενο Εµβέλεια τάξης και προσπέλαση µελών Εµβέλεια συνάρτησης Μεταβλητές δηλώνονται σε συναρτήσεις µέλη Είναι γνωστές µόνο στη συνάρτηση Μεταβλητές µε ίδιο όνοµα µε µεταβλητές εµβέλειας τάξης Η εµβέλεια της µεταβλητής τάξης «κρύβεται» Προσπέλαση µε τελεστή καθορισµού εµβέλειας (::) ClassName::classVariableName Οι µεταβλητές είναι γνωστές στις συναρτήσεις που ορίζονται Οι µεταβλητές καταστρέφονται µετά την ολοκλήρωση της συνάρτησης 24
13 6.6 Εµβέλεια τάξης και προσπέλαση µελών Τελεστές για προσπέλαση µελών τάξης Ίδια µε των structs Επιλογή µε τελεία (.) Αντικείµενο Αναφορά σε αντικείµενο Επιλογή µε βέλος (->) είκτες 25 1 // Fig. 6.4: fig06_04.cpp 2 // Demonstrating the class member access operators. and -> 3 // 4 // CAUTION: IN FUTURE EXAMPLES WE AVOID PUBLIC DATA! 5 #include <iostream> 6 7 using std::cout; 8 using std::endl; 9 10 // class Count definition 11 class Count { public: 14 int x; void print() 17 { 18 cout << x << endl; 19 } }; // end class Count 22 Το x public χρησιµοποιείται ως παράδειγµα µόνο. Τυπικά τα δεδοµένα είναι private. fig06_04.cpp (1 of 2) 26
14 23 int main() 24 { 25 Count counter; // create counter object 26 Count *counterptr = &counter; // create pointer to counter 27 Count &counterref = counter; // create reference to counter Χρήση τελείας για την επιλογή µέλους δεδοµένου cout << "Assign 1 to x and print από using το αντικείµενο the object's counter name: "; 30 counter.x = 1; // assign 1 to data member x 31 counter.print(); // call member function print Χρήση τελείας για την επιλογή µέλους στην αναφορά counterrefστο cout << "Assign 2 to x and print using a reference: "; 34 counterref.x = 2; // assign 2 to αντικείµενο. data member x 35 counterref.print(); // call member function print Χρήση βέλους για το δείκτη counterptrστο cout << "Assign 3 to x and print using αντικείµενο. a pointer:. "; 38 counterptr->x = 3; // assign 3 to data member x 39 counterptr->print(); // call member function print return 0; } // end main fig06_04.cpp (2 of 2) fig06_04.cpp output (1 of 1) 27 Assign 1 to x and print using the object's name: 1 Assign 2 to x and print using a reference: 2 Assign 3 to x and print using a pointer: ιαχωρίζοντας τη διεπαφή από την υλοποίηση ιαχωρίζοντας τη διεπαφή από την υλοποίηση Πλεονέκτηµα ιευκολύνει τη µετατροπή προγραµµάτωνeasier to modify programs Μειονέκτηµα Αρχεία Header Μέρη υλοποίησης Inline συναρτήσεις Ιδέες από την υλοποίηση 28
15 6.7 ιαχωρίζοντας τη διεπαφή από την υλοποίηση Header αρχεία Ορισµοί τάξης και πρωτότυπα συναρτήσεων Περιλαµβάνονται σε κάθε αρχείο #include Επέκταση ονόµατος αρχείου.h Αρχεία κώδικα Ορισµοί µελών συναρτήσεων Ίδιο όνοµα βάσης Σύµβαση 29 1 // Fig. 6.5: time1.h 2 // Declaration of class Time. 3 // Member functions are defined in time1.cpp 4 5 // prevent multiple inclusions of header file 6 #ifndef TIME1_H 7 #define TIME1_H 8 9 // Time abstract data type definition 10 class Time { Κώδικας που προλαµβάνει πολλαπλές συµπεριλήψεις Κώδικας δεν περιλαµβάνεται If not defined Προσδιοριστής αν έχει οριστεί η TIME1_H Preprocessor Ονοµατολογία: ορίζει όνοµα TIME1_H. το όνοµα του αρχείου header public: µε το underscore να 13 Time(); // constructor αντικαθιστά την τελεία. 14 void settime( int, int, int ); // set hour, minute, second 15 void printuniversal(); // print universal-time format 16 void printstandard(); // print standard-time format private: 19 int hour; // 0-23 (24-hour clock format) 20 int minute; // int second; // }; // end class Time #endif time1.h (1 of 1) 30
16 1 // Fig. 6.6: time1.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 time1.h 13 #include "time1.h" Περίληψη του αρχείου header time1.h // Time constructor initializes each data member to zero. 16 // Ensures all Time objects Το start όνοµα in αρχείου a consistent µέσα σε state. 17 Time::Time() quotes. Όταν 18 { χρησιµοποιούνται οι 19 hour = minute = second = 0; } // end Time constructor 22 ανισότητες θεωρείτε ότι είναι µέρος της C++ Standard Library. time1.cpp (1 of 3) // Set new Time value using universal time. Perform validity 24 // checks on the data values. Set invalid values to zero. 25 void Time::setTime( int h, int m, int s ) 26 { 27 hour = ( h >= 0 && h < 24 )? h : 0; 28 minute = ( m >= 0 && m < 60 )? m : 0; 29 second = ( s >= 0 && s < 60 )? s : 0; } // end function settime // print Time in universal format 34 void Time::printUniversal() 35 { 36 cout << setfill( '0' ) << setw( 2 ) << hour << ":" 37 << setw( 2 ) << minute << ":" 38 << setw( 2 ) << second; } // end function printuniversal 41 time1.cpp (2 of 3) 32
17 42 // print Time in standard format 43 void Time::printStandard() 44 { 45 cout << ( ( hour == 0 hour == 12 )? 12 : hour % 12 ) 46 << ":" << setfill( '0' ) << setw( 2 ) << minute 47 << ":" << setw( 2 ) << second 48 << ( hour < 12? " AM" : " PM" ); } // end function printstandard time1.cpp (3 of 3) 33 1 // Fig. 6.7: fig06_07.cpp 2 // Program to test class Time. 3 // NOTE: This file must be compiled with time1.cpp. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 // include definition of class Time from time1.h 10 #include "time1.h" int main() 13 { 14 Time t; // instantiate object t of class Time // output Time object t's initial values 17 cout << "The initial universal time is "; 18 t.printuniversal(); // 00:00:00 19 cout << "\nthe initial standard time is "; 20 t.printstandard(); // 12:00:00 AM t.settime( 13, 27, 6 ); // change time 23 Περίληψη του time1.hγια τη σωστή δηµιουργία/ χειρισµό και καθορισµό του µεγέθους του αντικειµένου τάξης Time. fig06_07.cpp (1 of 2) 34
18 24 // output Time object t's new values 25 cout << "\n\nuniversal time after settime is "; 26 t.printuniversal(); // 13:27:06 27 cout << "\nstandard time after settime is "; 28 t.printstandard(); // 1:27:06 PM t.settime( 99, 99, 99 ); // attempt invalid settings // output t's values after specifying invalid values 33 cout << "\n\nafter attempting invalid settings:" 34 << "\nuniversal time: "; 35 t.printuniversal(); // 00:00:00 36 cout << "\nstandard time: "; 37 t.printstandard(); // 12:00:00 AM 38 cout << endl; return 0; } // end main The initial universal time is 00:00:00 The initial standard time is 12:00:00 AM fig06_07.cpp (2 of 2) fig06_07.cpp output (1 of 1) 35 Universal time after settime is 13:27:06 Standard time after settime is 1:27:06 PM 6.8 Έλεγχος πρόσβασης στα µέλη Επίπεδα πρόσβασης private Default Προσβάσιµο σε µέλη συναρτήσεις και friends public Προσβάσιµο σε κάθε συνάρτηση που χειρίζεται αντικείµενο της τάξης protected 36
19 1 // Fig. 6.8: fig06_08.cpp 2 // Demonstrate errors resulting from attempts 3 // to access private class members. 4 #include <iostream> 5 6 using std::cout; 7 8 // include definition of class Time from time1.h 9 #include "time1.h" int main() 12 { 13 Time t; // create Time object Το hourείναι private. Άρα η προσπάθεια προσπέλασης του δίνει λάθος. Το minuteείναι 16 t.hour = 7; // error: 'Time::hour' is not accessible // error: 'Time::minute' is not accessible 19 cout << "minute = " << t.minute; return 0; } // end main fig06_08.cpp (1 of 1) private.άρα η προσπάθεια προσπέλασης του δίνει λάθος. 37 D:\cpphtp4_examples\ch06\Fig6_06\Fig06_06.cpp(16) : error C2248: 'hour' : cannot access private member declared in class 'Time' D:\cpphtp4_examples\ch06\Fig6_06\Fig06_06.cpp(19) : error C2248: 'minute' : cannot access private member declared in class 'Time' fig06_08.cpp output (1 of 1) Τα λάθη που δηµιουργούνται κατά την προσπέλαση µελών private. 38
20 6.8 Έλεγχος πρόσβασης στα µέλη Πρόσβαση σε µέλη τάξης Default private Μπορούν να τεθούν ως private, public, protected struct Default public Μπορούν να τεθούν σε private, public, protected Πρόσβαση σε private δεδοµένα τάξης Ελέγχονται µε συναρτήσεις πρόσβασης (accessor methods) Συνάρτηση Get Ανάγνωση private δεδοµένου Συνάρτηση Set Τροποποίηση private δεδοµένου Συναρτήσεις πρόσβασης και βοηθητικές συναρτήσεις Συναρτήσεις πρόσβασης public ιαβάζουν/ παρουσιάζουν δεδοµένα ηλωτικές συναρτήσεις Έλεγχος Βοηθητικές συναρτήσεις Utility functions (helper functions) private Υποστηρίζουν τη λειτουργία των public συναρτήσεων εν έχουν δηµιουργηθεί για χρήση από τον τελικό χρήστη 40
21 1 // Fig. 6.9: salesp.h 2 // SalesPerson class definition. 3 // Member functions defined in salesp.cpp. 4 #ifndef SALESP_H 5 #define SALESP_H 6 7 class SalesPerson { Η συνάρτηση Set 8 9 public: κάνει ελέγχους. 10 SalesPerson(); // constructor 11 void getsalesfromuser(); // input sales from keyboard 12 void setsales( int, double ); // set sales for a month private 13 void printannualsales(); // summarize and print sales 14 βοηθητική 15 private: συνάρτηση 16 double totalannualsales(); // utility function 17 double sales[ 12 ]; // 12 monthly sales figures }; // end class SalesPerson #endif salesp.h (1 of 1) 41 1 // Fig. 6.10: salesp.cpp 2 // Member functions for class SalesPerson. 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 using std::fixed; 9 10 #include <iomanip> using std::setprecision; // include SalesPerson class definition from salesp.h 15 #include "salesp.h" // initialize elements of array sales to SalesPerson::SalesPerson() 19 { 20 for ( int i = 0; i < 12; i++ ) 21 sales[ i ] = 0.0; } // end SalesPerson constructor 24 salesp.cpp (1 of 3) 42
22 25 // get 12 sales figures from the user at the keyboard 26 void SalesPerson::getSalesFromUser() 27 { 28 double salesfigure; for ( int i = 1; i <= 12; i++ ) { 31 cout << "Enter sales amount for month " << i << ": "; 32 cin >> salesfigure; 33 setsales( i, salesfigure ); } // end for } // end function getsalesfromuser // set one of the 12 monthly sales figures; function subtracts 40 // one from month value for proper subscript in sales array Η συνάρτηση Set κάνει 41 void SalesPerson::setSales( int month, double amount ) ελέγχους. 42 { 43 // test for valid month and amount values 44 if ( month >= 1 && month <= 12 && amount > 0 ) 45 sales[ month - 1 ] = amount; // adjust for subscripts else // invalid month or amount value 48 cout << "Invalid month or sales figure" << endl; salesp.cpp (2 of 3) } // end function setsales // print total annual sales (with help of utility function) 53 void SalesPerson::printAnnualSales() 54 { 55 cout << setprecision( 2 ) << fixed 56 << "\nthe total annual sales are: $" 57 << totalannualsales() << endl; // call utility function } // end function printannualsales // private utility function to total annual sales 62 double SalesPerson::totalAnnualSales() 63 { 64 double total = 0.0; // initialize total for ( int i = 0; i < 12; i++ ) // summarize sales results 67 total += sales[ i ]; return total; } // end function totalannualsales salesp.cpp (3 of 3) privateβοηθητική συνάρτηση της printannualsales, που πραγµατοποιεί διαχείριση του sales array. 44
23 1 // Fig. 6.11: fig06_11.cpp 2 // Demonstrating a utility function. 3 // Compile this program with salesp.cpp 4 5 // include SalesPerson class definition from salesp.h 6 #include "salesp.h" 7 8 int main() 9 { 10 SalesPerson s; // create SalesPerson object s 11 µέλη. 12 s.getsalesfromuser(); // note simple sequential code; no 13 s.printannualsales(); // control structures in main return 0; } // end main fig06_11.cpp (1 of 1) Σειριακή κλήση των συναρτήσεων. Η λογική είναι εµφωλευµένη σε συναρτήσεις 45 Enter sales amount for month 1: Enter sales amount for month 2: Enter sales amount for month 3: Enter sales amount for month 4: Enter sales amount for month 5: Enter sales amount for month 6: Enter sales amount for month 7: Enter sales amount for month 8: Enter sales amount for month 9: Enter sales amount for month 10: Enter sales amount for month 11: Enter sales amount for month 12: fig06_11.cpp output (1 of 1) 46 The total annual sales are: $
24 6.10 Αρχικοποίηση αντικειµένων τάξης: Constructors Constructors Αρχικοποιεί µέλη δεδοµένα Ίδιο όνοµα µε την τάξη εν έχει τύπο επιστροφής Initializers Περνούν ως παράµετροι στον constructor Class-type ObjectName( value1,value2, ); Χρήση Default παραµέτρων στους Constructors Constructors Μπορούν να προσδιορίζουν default παραµέτρους εισόδου Default constructors Defaults όλες τις παραµέτρους Ή Μπορεί να κληθούν χωρίς παραµέτρους Μόνο ένας για κάθε τάξη 48
25 1 // Fig. 6.12: time2.h 2 // Declaration of class Time. 3 // Member functions defined in time2.cpp. 4 5 // prevent multiple inclusions of header file 6 #ifndef TIME2_H 7 #define TIME2_H 8 9 // Time abstract data type definition 10 class Time { public: Default constructor προσδιορίζει όλες τις παραµέτρους 13 Time( int = 0, int = 0, int = 0); // default constructor 14 void settime( int, int, int ); // set hour, minute, second 15 void printuniversal(); // print universal-time format 16 void printstandard(); // print standard-time format private: 19 int hour; // 0-23 (24-hour clock format) 20 int minute; // int second; // }; // end class Time #endif time2.h (1 of 1) 49 1 // Fig. 6.13: time2.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 time2.h 13 #include "time2.h" // Time constructor initializes each data member to zero; 16 // ensures all Time objects start in a consistent state 17 Time::Time( int hr, int min, int sec ) 18 { 19 settime( hr, min, sec ); // validate and set time } // end Time constructor 22 time2.cpp (1 of 3) Ο Constructor καλεί τη settime για να δηλώσει ή να ελέγξει τιµές. 50
26 23 // set new Time value using universal time, perform validity 24 // checks on the data values and set invalid values to zero 25 void Time::setTime( int h, int m, int s ) 26 { 27 hour = ( h >= 0 && h < 24 )? h : 0; 28 minute = ( m >= 0 && m < 60 )? m : 0; 29 second = ( s >= 0 && s < 60 )? s : 0; } // end function settime // print Time in universal format 34 void Time::printUniversal() 35 { 36 cout << setfill( '0' ) << setw( 2 ) << hour << ":" 37 << setw( 2 ) << minute << ":" 38 << setw( 2 ) << second; } // end function printuniversal 41 time2.cpp (2 of 3) // print Time in standard format 43 void Time::printStandard() 44 { 45 cout << ( ( hour == 0 hour == 12 )? 12 : hour % 12 ) 46 << ":" << setfill( '0' ) << setw( 2 ) << minute 47 << ":" << setw( 2 ) << second 48 << ( hour < 12? " AM" : " PM" ); } // end function printstandard time2.cpp (3 of 3) 52
27 1 // Fig. 6.14: fig06_14.cpp 2 // Demonstrating a default constructor for class Time. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // include definition of class Time from time2.h 9 #include "time2.h" int main() 12 { 13 Time t1; // all arguments defaulted 14 Time t2( 2 ); // minute and second defaulted 15 Time t3( 21, 34 ); // second defaulted 16 Time t4( 12, 25, 42 ); // all values specified 17 Time t5( 27, 74, 99 ); // all bad values specified cout << "Constructed with:\n\n" 20 << "all default arguments:\n "; 21 t1.printuniversal(); // 00:00:00 22 cout << "\n "; 23 t1.printstandard(); // 12:00:00 AM 24 fig06_14.cpp (1 of 2) Αρχικοποίηση του αντικειµένου Time µε default παραµέτρους. Initialize Time object with invalid values; validity checking will set values to cout << "\n\nhour specified; default minute and second:\n "; 26 t2.printuniversal(); // 02:00:00 27 cout << "\n "; 28 t2.printstandard(); // 2:00:00 AM cout << "\n\nhour and minute specified; default second:\n "; 31 t3.printuniversal(); // 21:34:00 32 cout << "\n "; 33 t3.printstandard(); // 9:34:00 PM cout << "\n\nhour, minute, and second specified:\n "; 36 t4.printuniversal(); // 12:25:42 37 cout << "\n "; 38 t4.printstandard(); // 12:25:42 PM fig06_14.cpp (2 of 2) 39 t5µε λάθος παραµέτρους,, οπότε οι τιµές γίνονται όλες µηδέν (0). 40 cout << "\n\nall invalid values specified:\n "; 41 t5.printuniversal(); // 00:00:00 42 cout << "\n "; 43 t5.printstandard(); // 12:00:00 AM 44 cout << endl; return 0; } // end main 54
28 Constructed with: all default arguments: 00:00:00 12:00:00 AM hour specified; default minute and second: 02:00:00 2:00:00 AM fig06_14.cpp output (1 of 1) 55 hour and minute specified; default second: 21:34:00 9:34:00 PM hour, minute, and second specified: 12:25:42 12:25:42 PM all invalid values specified: 00:00:00 12:00:00 AM Destructors 6.12 Destructors Ειδικές συναρτήσεις µέλη Όµοιο όνοµα µε την τάξη Προηγείται η άρνηση (~) ~ Χωρίς παραµέτρους εν επιστρέφει εν υπερφορτώνεται Κάνει απελευθέρωση µνήµης Αν δεν υπάρχει destructor Ο Compiler δηµιουργεί έναν άδειο 56
29 6.13 Καλώντας Constructors και Destructors Constructors και destructors Καλούνται από τον compiler Σειρά κλήσης των συναρτήσεων Εξαρτάται από τη σειρά εκτέλεσης Όταν η εκτέλεση µπαίνει ή φεύγει από την εµβέλεια των αντικειµένων Γενικά, ο destructor καλεί σε αντίστροφη σειρά από τους constructor Καλώντας Constructors και Destructors Σειρά της κλήσης constructor, destructor Αντικείµενα Global εµβέλειας Constructors Πριν από κάθε άλλη συνάρτηση (και της main) Destructors Όταν τερµατίζει η main (ή καλείται η exit) ε καλείται µε τερµατισµό abort Τοπικά αντικείµενα Constructors Όταν ορίζονται Όταν η εκτέλεση γίνει εντός εµβέλειας Destructors Όταν τα αντικείµενα είναι εκτός εµβέλειας Η εκτέλεση φεύγει από το block όπου ορίζονται ε καλείται σε τερµατισµό exit ή abort 58
30 6.13 Καλώντας Constructors και Destructors Σειρά της κλήσης constructor, destructor static τοπικά αντικείµενα Constructors Ακριβώς µία φορά Όταν η εκτέλεση φτάσει στον ορισµό του αντικειµένου Destructors Όταν η main τερµατίσει ή κληθεί exit ε καλείται στο abort 59 1 // Fig. 6.15: create.h 2 // Definition of class CreateAndDestroy. 3 // Member functions defined in create.cpp. 4 #ifndef CREATE_H 5 #define CREATE_H 6 7 class CreateAndDestroy { 8 9 public: 10 CreateAndDestroy( int, char * ); // constructor 11 ~CreateAndDestroy(); // destructor private: 14 int objectid; 15 char *message; }; // end class CreateAndDestroy #endif private members to show order of constructor, destructor function calls. Constructor και destructor συναρτήσεις. create.h (1 of 1) 60
31 1 // Fig. 6.16: create.cpp 2 // Member-function definitions for class CreateAndDestroy 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // include CreateAndDestroy class definition from create.h 9 #include "create.h" // constructor 12 CreateAndDestroy::CreateAndDestroy( 13 int objectnumber, char *messageptr ) 14 { 15 objectid = objectnumber; 16 message = messageptr; 17 constructor. 18 cout << "Object " << objectid << " constructor runs " 19 << message << endl; } // end CreateAndDestroy constructor 22 Εκτύπωση µηνύµατος που δείχνει την κλήση του create.cpp (1 of 2) // destructor 24 CreateAndDestroy::~CreateAndDestroy() 25 { 26 // the following line is for pedagogic purposes only 27 cout << ( objectid == 1 objectid == 6? "\n" : "" ); cout << "Object " << objectid << " destructor runs " 30 << message << endl; } // end ~CreateAndDestroy destructor Εκτύπωση µηνύµατος που δείχνει την κλήση του destructor. create.cpp (2 of 2) 62
32 1 // Fig. 6.17: fig06_17.cpp 2 // Demonstrating the order in which constructors and 3 // destructors are called. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 // include CreateAndDestroy class definition from create.h 10 #include "create.h" void create( void ); // prototype // global object ηµιουργία µεταβλητής µε εµβέλεια global. 15 CreateAndDestroy first( 1, "(global before main)" ); int main() 18 { 19 cout << "\nmain FUNCTION: EXECUTION BEGINS" << endl; CreateAndDestroy second( 2, "(local automatic in main)" ); static CreateAndDestroy third( 24 3, "(local static in main)" ); 25 automatic αντικείµενο. staticαντικείµενο. fig06_17.cpp (1 of 3) create(); // call function to create objects cout << "\nmain FUNCTION: EXECUTION RESUMES" << endl; 29 ηµιουργία των automatic 30 CreateAndDestroy fourth( 4, "(local automatic in main)" ); αντικειµένων cout << "\nmain FUNCTION: EXECUTION ENDS" << endl; return 0; } // end main automatic αντικείµενο // function to create objects automatic αντικείµενο σε 39 void create( void ) 40 { συνάρτηση. 41 cout << "\ncreate FUNCTION: EXECUTION BEGINS" << endl; CreateAndDestroy fifth( 5, συνάρτηση. "(local automatic in create)" ); static CreateAndDestroy sixth( 46 6, "(local static in create)" ); CreateAndDestroy seventh( 49 7, "(local automatic in create)" ); 50 staticαντικείµενο σε automatic αντικείµενο σε συνάρτηση. fig06_17.cpp (2 of 3) 64
33 51 cout << "\ncreate FUNCTION: EXECUTION ENDS\" << endl; } // end function create fig06_17.cpp (3 of 3) 65 Object 1 constructor runs (global before main) MAIN FUNCTION: EXECUTION BEGINS Object 2 constructor runs (local automatic in main) Object 3 constructor runs (local static in main) CREATE FUNCTION: EXECUTION BEGINS Object 5 constructor runs (local automatic in create) Object 6 constructor runs (local static in create) Object 7 constructor runs (local automatic in create) CREATE FUNCTION: EXECUTION ENDS Object 7 destructor runs (local automatic in create) Object 5 destructor runs (local automatic in create) MAIN FUNCTION: EXECUTION RESUMES Object 4 constructor runs (local automatic in main) MAIN FUNCTION: EXECUTION ENDS Object 4 destructor runs (local automatic in main) Object 2 destructor runs (local automatic in main) Object 6 destructor runs (local static in create) Object 3 destructor runs (local static in main) fig06_17.cpp output (1 of 1) Destructors Τα staticαντικείµενα for local υπάρχουν automatic Το Global έως objects αντικείµενο τον in τερµατισµό main δηµιουργείτε called Τα προγράµµατος. automatic πριν in reverse αντικείµενα τη main Τα staticαντικείµενα order of καταστρέφονται και constructors. καταστρέφεται µε τελευταίο. τον δηµιουργούνται τερµατισµό της συνάρτησης µε την κλήση αντίστροφα της συνάρτησης από και ό,τι καταστρέφονται δηµιουργήθηκαν. µε τον τερµατισµό της main. 66 Object 1 destructor runs (global before main)
34 6.14 Χρήση των Set και Get Συναρτήσεων Συνάρτηση Set Πραγµατοποιεί ελέγχους εγκυρότητας προτού γίνουν µετατροπές σε δεδοµένα private Ειδοποιεί αν υπάρχουν λανθασµένες τιµές Συνάρτηση Get Ελέγχει τη µορφή των δεδοµένων που επιστρέφονται 67 1 // Fig. 6.18: time3.h 2 // Declaration of class Time. 3 // Member functions defined in time3.cpp 4 5 // prevent multiple inclusions of header file 6 #ifndef TIME3_H 7 #define TIME3_H 8 9 class Time { public: 12 Time( int = 0, int = 0, int = 0 ); // default constructor // set functions 15 void settime( int, int, int ); // set hour, minute, second 16 void sethour( int ); // set hour 17 void setminute( int ); // set minute 18 void setsecond( int ); // set second // get functions 21 int gethour(); // return hour 22 int getminute(); // return minute 23 int getsecond(); // return second 24 Set. Get. time3.h (1 of 2) 68
35 25 void printuniversal(); // output universal-time format 26 void printstandard(); // output standard-time format private: 29 int hour; // 0-23 (24-hour clock format) 30 int minute; // int second; // }; // end clas Time #endif time3.h (2 of 2) 69 1 // Fig. 6.19: time3.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 definition of class Time from time3.h 13 #include "time3.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 hr, int min, int sec ) 19 { 20 settime( hr, min, sec ); } // end Time constructor 23 time3.cpp (1 of 4) 70
36 24 // set hour, minute and second values 25 void Time::setTime( int h, int m, int s ) 26 { 27 sethour( h ); 28 setminute( m ); 29 setsecond( s ); } // 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 Κλήση set συνάρτησης για έλεγχο ορθότητας των δεδοµένων Οι συναρτήσεις Set ελέγχουν τα δεδοµένα προτού τα µετατρέψουν. time3.cpp (2 of 4) // 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() 56 { 57 return hour; } // end function gethour // return minute value 62 int Time::getMinute() 63 { 64 return minute; } // end function getminute 67 Οι συναρτήσεις Set ελέγχουν τα δεδοµένα προτού τα µετατρέψουν. Οι συναρτήσεις Get επιτρέπουν την ανάγνωση των δεδοµένων.. time3.cpp (3 of 4) 72
37 68 // return second value 69 int Time::getSecond() 70 { 71 return second; } // end function getsecond // print Time in universal format 76 void Time::printUniversal() 77 { 78 cout << setfill( '0' ) << setw( 2 ) << hour << ":" 79 << setw( 2 ) << minute << ":" 80 << setw( 2 ) << second; } // end function printuniversal Οι συναρτήσεις Get επιτρέπουν την ανάγνωση των δεδοµένων // print Time in standard format 85 void Time::printStandard() 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 time3.cpp (4 of 4) 73 1 // Fig. 6.20: fig06_20.cpp 2 // Demonstrating the Time class set and get functions 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // include definition of class Time from time3.h 9 #include "time3.h" void incrementminutes( Time &, const int ); // prototype int main() 14 { 15 Time t; // create Time object // set time using individual set functions 18 t.sethour( 17 ); // set hour to valid value 19 t.setminute( 34 ); // set minute to valid value 20 t.setsecond( 25 ); // set second to valid value 21 Κλήση set για να οριστούν οι έγκυρες τιµές. fig06_20.cpp (1 of 3) 74
38 22 // use get functions to obtain hour, minute and second 23 cout << "Result of setting all valid values:\n" 24 << " Hour: " << t.gethour() 25 << " Minute: " << t.getminute() 26 << " Second: " << t.getsecond(); // set time using individual set functions 29 t.sethour( 234 ); // invalid hour set to 0 30 t.setminute( 43 ); // set minute to valid value 31 t.setsecond( 6373 ); // invalid second set to // display hour, minute and second after setting 34 // invalid hour and second values 35 cout << "\n\nresult of attempting to set invalid hour and" 36 << " second:\n Hour: " << t.gethour() 37 << " Minute: " << t.getminute() 38 << " Second: " << t.getsecond() << "\n\n"; t.settime( 11, 58, 0 ); // set time 41 incrementminutes( t, 3 ); // increment t's minute by return 0; } // end main 46 Προσπάθεια ορισµού λανθασµένων τιµών fig06_20.cpp µε χρήση set. (2 of 3) Οι λάθος τιµές έχουν ως αποτέλεσµα να οριστούν οι µεταβλητές σε 0. Μετατροπή δεδοµένων µε τη settime // add specified number of minutes to a Time object 48 void incrementminutes( Time &tt, const int count ) 49 { 50 cout << "Incrementing minute " << count 51 << " times:\nstart time: "; 52 tt.printstandard(); for ( int i = 0; i < count; i++ ) { 55 tt.setminute( ( tt.getminute() + 1 ) % 60 ); if ( tt.getminute() == 0 ) 58 tt.sethour( ( tt.gethour() + 1 ) % 24); cout << "\nminute + 1: "; 61 tt.printstandard(); } // end for cout << endl; } // end function incrementminutes fig06_20.cpp Με τις get διαβάζονται (3 of 3) δεδοµένα και µε τις set τροποποιούνται. 76
39 Result of setting all valid values: Hour: 17 Minute: 34 Second: Result of attempting to set invalid hour and second: Hour: 0 Minute: 43 Second: 0 Incrementing minute 3 times: Start time: 11:58:00 AM minute + 1: 11:59:00 AM minute + 1: 12:00:00 PM minute + 1: 12:01:00 PM Προσπάθεια να οριστούν λάθος τιµές που καταλήγει σε µήνυµα λάθους και τιµή µηδέν (0) fig06_20.cpp output (1 of 1) 6.15 Προσοχή: Επιστροφή αναφοράς σε δεδοµένα private Αναφορά σε αντικείµενο Alias for name of object Lvalue Μπορεί να λάβει τιµή σε ανάθεση Αλλάζει το αρχικό αντικείµενο Επιστροφή αναφοράς public συναρτήσεις µπορούν να επιστρέφουν µη- const αναφορές σε δεδοµένα private Κατά συνέπεια ο χρήστης µπορεί να τροποποιεί δεδοµένα private 78
40 1 // Fig. 6.21: time4.h 2 // Declaration of class Time. 3 // Member functions defined in time4.cpp 4 5 // prevent multiple inclusions of header file 6 #ifndef TIME4_H 7 #define TIME4_H 8 9 class Time { public: 12 Time( int = 0, int = 0, int = 0 ); 13 void settime( int, int, int ); 14 int gethour(); Συνάρτηση που δείχνει τα αποτελέσµατα επιστροφής αναφοράς σε δεδοµένα int &badsethour( int ); // DANGEROUS reference private. return private: 19 int hour; 20 int minute; 21 int second; }; // end class Time #endif time4.h (1 of 1) 79 1 // Fig. 6.22: time4.cpp 2 // Member-function definitions for Time class. 3 4 // include definition of class Time from time4.h 5 #include "time4.h" 6 7 // constructor function to initialize private data; 8 // calls member function settime to set variables; 9 // default values are 0 (see class definition) 10 Time::Time( int hr, int min, int sec ) 11 { 12 settime( hr, min, sec ); } // end Time constructor // set values of hour, minute and second 17 void Time::setTime( int h, int m, int s ) 18 { 19 hour = ( h >= 0 && h < 24 )? h : 0; 20 minute = ( m >= 0 && m < 60 )? m : 0; 21 second = ( s >= 0 && s < 60 )? s : 0; } // end function settime 24 time4.cpp (1 of 2) 80
41 25 // return hour value 26 int Time::getHour() 27 { 28 return hour; } // end function gethour // POOR PROGRAMMING PRACTICE: 33 // Returning a reference to a private data member. 34 int &Time::badSetHour( int hh ) 35 { 36 hour = ( hh >= 0 && hh < 24 )? hh : 0; return hour; // DANGEROUS reference return } // end function badsethour Επιστροφή αναφοράς σε privateµεταβλητή hour. time4.cpp (2 of 2) 81 1 // Fig. 6.23: fig06_23.cpp 2 // Demonstrating a public member function that 3 // returns a reference to a private data member. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 // include definition of class Time from time4.h 10 #include "time4.h" int main() 13 { 14 Time t; // store in hourref the reference returned by badsethour 17 int &hourref = t.badsethour( 20 ); cout << "Hour before modification: " << hourref; // use hourref to set invalid value hour. in Time object t 22 hourref = 30; cout << "\nhour after modification: " << t.gethour(); 25 Η αναφορά επιτρέπει να οριστεί τιµή στη private fig06_23.cpp (1 of 2) Η badsethourεπιστρέφει αναφορά σε private µεταβλητή hour. 82
42 26 // Dangerous: Function call that returns 27 // a reference can be used as an lvalue! 28 t.badsethour( 12 ) = 74; cout << "\n\n*********************************\n" 31 << "POOR PROGRAMMING PRACTICE!!!!!!!!\n" 32 << "badsethour as an lvalue, κλήση Hour: " συνάρτησης σε 33 << t.gethour() ανάθεση λάθους τιµής 34 << "\n*********************************" << endl; return 0; } // end main Μπορεί να χρησιµοποιηθεί fig06_23.cpp (2 of 2) fig06_23.cpp output (1 of 1) 83 Hour before modification: 20 Hour after modification: 30 ********************************* POOR PROGRAMMING PRACTICE!!!!!!!! badsethour as an lvalue, Hour: 74 ********************************* Η επιστροφή αναφοράς επιτρέπει τον ορισµό λάθους τιµής σε private δεδοµένα Default Ανάθεση Ανάθεση αντικειµένων Τελεστής ανάθεσης (=) Μπορεί να αναθέσει σε ένα αντικείµενο ένα άλλο ίδιου τύπου Default ανάθεση Κάθε δεξιό µέλος ανατίθεται ανεξάρτητα στο αριστερό µέλος Περνώντας και επιστρέφοντας αντικείµενα Αντικείµενα περνούν ως παράµετροι συνάρτησης Αντικείµενα επιστρέφονται από συναρτήσεις Default πέρασµα µε τιµή Αντίγραφο του αντικείµενου που περνάει, επιστρέφεται Αντίγραφο του constructor Αντίγραφο των αρχικών τιµών σε νέο αντικείµενο 84
43 1 // Fig. 6.24: fig06_24.cpp 2 // Demonstrating that class objects can be assigned 3 // to each other using default memberwise assignment. 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 // class Date definition 10 class Date { public: 13 Date( int = 1, int = 1, int = 1990 ); // default constructor 14 void print(); private: 17 int month; 18 int day; 19 int year; }; // end class Date 22 fig06_24.cpp (1 of 3) // Date constructor with no range checking 24 Date::Date( int m, int d, int y ) 25 { 26 month = m; 27 day = d; 28 year = y; } // end Date constructor // print Date in the format mm-dd-yyyy 33 void Date::print() 34 { 35 cout << month << '-' << day << '-' << year; } // end function print int main() 40 { 41 Date date1( 7, 4, 2002 ); 42 Date date2; // date2 defaults to 1/1/ fig06_24.cpp (2 of 3) 86
44 44 cout << "date1 = "; 45 date1.print(); 46 cout << "\ndate2 = "; 47 date2.print(); date2 = date1; // default memberwise assignment cout << "\n\nafter default memberwise assignment, date2 = "; 52 date2.print(); 53 cout << endl; return 0; } // end main Η Defaultανάθεση ορίζει σε κάθε µέλος του date2κάθε µέλος του date1 ανεξάρτητα. fig06_24.cpp (3 of 3) fig06_24.cpp output (1 of 1) 87 date1 = date2 = After default memberwise assignment, date2 = Επαναχρησιµοποίηση Κώδικα Επαναχρησιµοποίηση Κώδικα Βιβλιοθήκες τάξεων Καλώς ορισµένες Προσεκτικά ελεγµένες Καλώς τεκµηριωµένες Μεταφέρσιµες - Portable ιαθέσιµες Επιταχύνουν την ανάπτυξη ποιοτικού λογισµικού Rapid applications development (RAD) Προβλήµατα Κατάλογοι - λίστες Θέµατα αδειών Μηχανισµοί προστασίας 88
Παλεπηζηήκην Παηξώλ ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Σάξειρ και Αθαίπεζη Δεδομένων. Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ
Παλεπηζηήκην Παηξώλ Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Σάξειρ και Αθαίπεζη Δεδομένων 1 6.1 Εηζαγωγή 6.2 Οξηζκόο δνκώλ - Structure 6.3 Πξνζπέιαζε
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 6: C++ ΚΛΑΣΕΙΣ, ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ, ΠΟΛΥΜΟΡΦΙΣΜΟΣ Κλάσεις ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Τάξεις
17TimeThis.h function returns reference pointer to same object { return *this; }
Προαπαιτούµενη Κάθε οµάδα θα πρέπει να εµπλουτίσει το ίδιο πρόγραµµα, που έκανε την προηγούµενη φορά, προσθέτοντας στην κλάση του έναν ή περισσότερους υπερφορτωµένους τελεστές (όπως , ++, +,-,+=..)
Αντικειμενοστρεφής Προγραμματισμός
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 3/4/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Γιατί έλεγχος πρόσβασης? Προστασία ιδιωτικής πληροφορίας
Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and
7.1 Εισαγωγή 7.2 const Αντικείµενα και const Συναρτήσεις 7.3 Σύνθεση: Αντικείµενα ως µέλη τάξης 7.4 friend Συναρτήσεις και τάξεις 7.
Πανεπιστήµιο Πατρών Τµήµα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Τάξεις και Αφαίρεση εδοµένων 1 Τάξεις Μέρος ΙΙ 7.1 Εισαγωγή 7.2 const Αντικείµενα και
Αντικειμενοστρεφής Προγραμματισμός
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 23/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Υπερφόρτωση μεθόδων Υπερφόρτωση μεθόδων Πολλαπλές
Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found
Α. Πρώτη προαπαιτούµενη Κάθε οµάδα θα πρέπει να δηµιουργήσει τον ζητούµενο παρακάτω πίνακα και α. να εµφανίσει τα στοιχεία του, β. να τυπώσει τον µέσο όρο των στοιχείων του, γ. να ταξινοµήσει τα στοιχεία
Η Γλώσσα Προγραµµατισµού 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++ (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 το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object
Εντολές εισόδου - εξόδου. Εισαγωγή στη C++
Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Συναρτήσεις - Μεταβλητές ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Συναρτήσεις / Μεταβλητές
Παλεπηζηήκην Παηξώλ ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Σάξειρ και Αθαίπεζη Δεδομένων. Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ
Παλεπηζηήκην Παηξώλ Σμήμα Μηχανικών Ηλεκηπονικών Τπολογιζηών και Πληποθοπικήρ ΟΝΣΟΚΕΝΣΡΙΚΟ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΙΙ (C++) Σάξειρ και Αθαίπεζη Δεδομένων 1 Τάμεηο Μέξνο ΙΙ 7.1 Ειζαγυγή 7.2 const Ανηικείμενα και
Κλάσεις και αντικείμενα #include <iostream.h<
Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void
Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται
ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ
ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Εμβέλεια Μεταβλητών Εμβέλεια = το τμήμα του προγράμματος στο οποίο έχει ισχύ ή είναι ορατή η μεταβλητή.
Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6
Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:
ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++
Υπερφόρτωση, keywords CONST, STATIC, FRIEND ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Υπερφόρτωση Συναρτήσεων Τελεστών CONST αντικείμενα, μεταβλητές και συναρτήσεις
Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #2
Ανασκόπηση Μια εφαρμογή Java είναι ένα σύνολο από συνεργαζόμενες κλάσεις Διάλεξη #2: Αντικείμενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό,, Slide 1 Εισαγωγή στον Αντικειμενοστρεφή
ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα
Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Εισαγωγή στην C++ ΔΙΔΑΣΚΟΝΤΕΣ:Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής H Γλώσσα C++ ΙΣΤΟΡΙΑ 1967:
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Δομές Ελέγχου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές Ελέγχου Εισαγωγή Πριν
ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)
Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο
Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?
Αντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (
Η Γλώσσα Προγραµµατισµού 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 Θα
Αντικειμενοστρεφής Προγραμματισμός
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 16/4/2018 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Τύποι της Java Primitives vs References Οι πρωταρχικοί
Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT
= Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος 2018 1/18 = 2/18 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω
Δυναμική μνήμη με πίνακες και λίστες
Δυναμική μνήμη με πίνακες και λίστες Ατζέντα ονομάτων Οι πίνακες βοηθάνε στην εύκολη προσπέλαση, στην σειριοποίηση των δεδομένων για αποθήκευση ή μετάδοση. Απαιτούν ωστόσο είτε προκαταβολική δέσμευση μνήμης
Εισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1
Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
Προγραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 11η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Υπερφόρτωση του τελεστή εκχώρησης. Στατικές μεταβλητές, στατικές σταθερές
υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες
υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: είκτες στη C++ Οι τελεστές new και delete Destructors Ορισµός τελεστών κλάσεων Ο δείκτης this ΕΠΛ 132 Αρχές Προγραµµατισµού
Λογισµικό (Software SW) Γλώσσες
Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη
8. Μέθοδοι (Methods)
8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και
Μεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση
Κλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πίνακες Αντικειμένων Όπως στην C μπορούμε να έχουμε πίνακες από
Εργαστήριο Ανάπτυξης Εφαρμογών Βάσεων Δεδομένων. Εξάμηνο 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
ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα
Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων Modularity, Information Hiding and Abstract Data Types. υσκολία: Προγράµµατα που λύνουν «πραγµατικά προβλήµατα µπορεί να είναι µεγάλα (εκατοµµύρια
Εισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Υπερφόρτωση Τελεστών ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ
Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:
Εργαστήριο Java Διδάσκουσα: Πρέντζα Ανδριάνα aprentza@unipi.gr Εργαστηριακοί Συνεργάτες: Γεωργιοπούλου Ρούλα Λύβας Χρήστος roulageorio@ssl-unipi.gr clyvas@unipi.gr Εργαστήριο 3 Java Classes Java Objects
Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε
5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29. 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή
(Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29 5. ΣΥΝΑΡΤΗΣΕΙΣ 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή Η συνάρτηση είναι void, δεν επιστρέφει κάποια τιµή. //Oρισµός συνάρτησης χωρίς παραµέτρους // 12.
ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις
ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ 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
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο
Συναρτήσεις στη C++ Οι µεταβλητές χαρακτηρίζονται από διάφορες ιδιότητες. Για ποιο διάστηµα η µεταβλητή υπάρχει στη µνήµη
Συναρτήσεις στη C++ 1 ΠΕΡΙΕΧΟΜΕΝΑ Εισαγωγή Συστατικά προγράµµατος στη C++ Μαθηµατικές Συναρτήσεις (Math Library) Συναρτήσεις Header Files Γεννήτρια τυχαίων αριθµών Χαρακτηριστικά Μεταβλητών Storage Classes
Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. ΕΡΓΑΣΤΗΡΙΟ C++ ΕΞΑΜΗΝΟ Γ Ακαδηµαϊκό Έτος
ΠΑΡΑ ΕΙΓΜΑ δυναµικής δέσµευσης και αποδέσµευσης µνήµης στη C++ µέσω των new και delete. // create.cpp #include using namespace std; class values public: values() : value1(0), value2(0) count++;
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο2-Νο3
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο2-Νο3 1 Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας Επιτρέπετε το
Στοιχειώδης προγραμματισμός σε C++
Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.
Η Γλώσσα Προγραµµατισµού 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 Θα
Ο πίνακας συμβόλων (symbol table) είναι μία δομή, όπου αποθηκεύεται πληροφορία σχετικά με τα σύμβολα του προγράμματος
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ Φροντιστήριο 3 ο Symbol Table & Scopes Ι ΑΣΚΩΝ Αντώνιος Σαββίδης
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2010 Ι ΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙ ΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Ανάθεση: Πέµπτη 15 Απριλίου 2010, 11:00 (πρωί)
Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )
ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 6: C++ ΚΛΑΣΕΙΣ, ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ, ΠΟΛΥΜΟΡΦΙΣΜΟΣ Κληρονομικότητα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής
Διάλεξη 5: Δείκτες και Συναρτήσεις
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 5: Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 5-1 Περιεχόμενο
Δομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού
5. Ανασκόπηση αντικειμενοστραφούς προγραμματισμού Χειμερινό εξάμηνο 2013 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Αντικειμενοστραφής προγραμματισμός Τάξεις (classes)
Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..
Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη
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:
HY150a Φροντιστήριο 3 24/11/2017
HY150a Φροντιστήριο 3 24/11/2017 1 Assignment 3 Overview Το πρόγραμμα ζητείται να διαβάζει μια λίστα δεδομένων που περιγράφει τα διαθέσιμα τμήματα μνήμης (blocks) ενός ΗΥ. Το πρόγραμμα ζητείται να μεταφορτώνει
Προγραµµατιστικές Τεχνικές
Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές Τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
Δείκτες σε συναρτήσεις. Προγραμματισμός II 1
Δείκτες σε συναρτήσεις Προγραμματισμός II 1 lalis@inf.uth.gr Συνάρτηση Ομάδα εντολών που γράφουμε ξεχωριστά για να υλοποιήσουμε μια συγκεκριμένη λειτουργία για καλύτερη / πιο καθαρή δόμηση του κώδικα για
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Διαφορές Java και C++ ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΙΑΦΟΡΕΣ JAVA C++ Η
Αντικειμενοστραφής Προγραμματισμός
Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση
Δήλωση ακέραιων μεταβλητών. ροής με την στάνταρ είσοδο
Πανεπιστήμιο Πατρών Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δομημένος Προγραμματισμός και Δομές Ελέγχου 1 Εισαγωγή Είσοδος/έξοδος Hello world: #include
DESIGN OF MACHINERY SOLUTION MANUAL h in h 4 0.
DESIGN OF MACHINERY SOLUTION MANUAL -7-1! PROBLEM -7 Statement: Design a double-dwell cam to move a follower from to 25 6, dwell for 12, fall 25 and dwell for the remader The total cycle must take 4 sec
Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Περιεχόµενα Τύποι εδοµένων int, char, float, double Τελεστές =,+,-,*,/,% Αριθµητικές εκφράσεις
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες
ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor
ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται
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:
Τι είναι κλάση Κλάση
35 Τι είναι κλάση Κλάση είναι μια συλλογή από μεταβλητές. Αλλιώς είναι ένα σύνολο από: δεδομένα που δηλώνουν τα χαρακτηριστικά της κλάσης (τι είναι) και συναρτήσεις που προδιαγράφουν την συμπεριφορά της
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Εισαγωγή στην C++ ΔΙΔΑΣΚΟΝΤΕΣ:Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής H Γλώσσα C++ ΙΣΤΟΡΙΑ 1967:
Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and
alpha Language (1/5) ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language Στην alpha δεν υπάρχει main() συνάρτηση, ο κώδικας ξεκινάει την εκτέλεση από την αρχή του
Προγραμματισμός Συστημάτων
MYY502 Προγραμματισμός Συστημάτων Β. Δημακόπουλος dimako@cse.uoi.gr http://www.cse.uoi.gr/~dimako Εργαστήρια Μάλλον (!) ξεκινούν την επόμενη εβδομάδα Εγγραφές στο εργαστήριο 2 βάρδιες, 15:00 17:00 και
(Διαφάνειες Νίκου Βιδάκη)
(Διαφάνειες Νίκου Βιδάκη) JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο? Ανάλυση αντικειμένων Πραγματικά αντικείμενα Καταστάσεις Συμπεριφορές Αντικείμενα στον προγραμματισμό
Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C
Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C Δυσκολία: Προγράμματα που λύνουν «πραγματικά προβλήματα» μπορεί να είναι μεγάλα (χιλιάδες ή εκατομμύρια γραμμές κώδικα). Κανείς δεν
Αντικειμενοστρεφής Προγραμματισμός
Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Συλλογή απορριμμάτων Συλλογή απορριμμάτων (Garbage
ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007
Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Όλοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα μικρότεροι του 10000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Αν κάπου κάνετε κάποιες υποθέσεις
Φροντιςτήριο. Linked-List
Φροντιςτήριο Linked-List 1 Linked List Μια linked list είναι μια ακολουθία από ςυνδεδεμένουσ κόμβουσ Κάθε κόμβοσ περιέχει τουλάχιςτον Μια πληροφορία (ή ένα struct) Δείκτη ςτον επόμενο κόμβο τησ λίςτασ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΗΥ340 ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2008 ΔΙΔΑΣΚΩΝ: ΑΝΤΩΝΙΟΣ ΣΑΒΒΙΔΗΣ ΒΑΣΙΚΗ ΕΡΓΑΣΙΑ ΦΑΣΗ 2η από 5 Παράδοση: Πέμπτη 10 Απριλίου 2008, 24:00 (μεσάνυχτα)
12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string
12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string Aλφαριθµητικά της C int main() const int max=80; char str[max); //κάθε char δεσµεύει
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.
Συναρτήσεις και Πίνακες
Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή
Αναφορές, είκτες και Αλφαριθμητικά
Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών
Αντικειμενοστρεφής Προγραμματισμός
Τμήμα Μηχανικών Πληροφορικής Εργαστήριο 1 Αντικειμενοστρεφής Προγραμματισμός Βασικά χαρακτηριστικά της C++ Κλάσεις (Classes) Μία κλάση (class) αποτελεί ένα «αντικειμενοστρεφές εργαλείο» για τη δημιουργία
Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης
Γ7.1 Επανάληψη ύλης Β Λυκείου Γ Λυκείου Κατεύθυνσης Απλά προγράμματα Ένα πρόγραμμα στη C++ που υπολογίζει το άθροισμα 2 ακέραιων αριθμών. // simple program #include using namespace std; int main(){
ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++
Πέρασμα μεταβλητών, Templates, Συσχετίσεις μεταξύ κλάσεων ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Πέρασμα με τιμή και με αναφορά Template functions και classes