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

Σχετικά έγγραφα
Οντοκεντρικόσ Προγραμματιςμόσ

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

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

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

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

Εισαγωγή στους Αλγορίθμους

Εισαγωγή στους Αλγορίθμους

Διοικητική Λογιστική

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

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

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

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

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

Εισαγωγή στους Αλγορίθμους

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

Κβαντική Επεξεργασία Πληροφορίας

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

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

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

Βέλτιστος Έλεγχος Συστημάτων

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Κβαντική Επεξεργασία Πληροφορίας

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Διοικητική Λογιστική

Εισαγωγή στους Η/Υ. Ενότητα 2β: Αντίστροφο Πρόβλημα. Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών

Ενδεικτικές λύσεις ασκήσεων διαχείρισης έργου υπό συνθήκες αβεβαιότητας

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

Βάσεις Περιβαλλοντικών Δεδομένων

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

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

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού Υπέρθερμου Ατμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Μηχανολογικό Σχέδιο Ι

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Διδακτική των εικαστικών τεχνών Ενότητα 1

Φιλοσοφία της Ιστορίας και του Πολιτισμού

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ

Εισαγωγή στους Υπολογιστές

Διδακτική των εικαστικών τεχνών Ενότητα 3

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

Πληροφορική ΙΙ Θεματική Ενότητα 5

Διδακτική των εικαστικών τεχνών Ενότητα 2

Διδακτική των εικαστικών τεχνών Ενότητα 2

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

Κβαντική Επεξεργασία Πληροφορίας

Τεχνικό Σχέδιο - CAD

Δομημένος Προγραμματισμός

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Διδακτική Πληροφορικής

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

Βέλτιστος Έλεγχος Συστημάτων

Ευφυής Προγραμματισμός

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Δομές Δεδομένων Ενότητα 3

Το Εικονογραφημένο Βιβλίο στην Προσχολική Εκπαίδευση

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Τεχνικό Σχέδιο - CAD

Αερισμός. Ενότητα 1: Αερισμός και αιμάτωση. Κωνσταντίνος Σπυρόπουλος, Καθηγητής Σχολή Επιστημών Υγείας Τμήμα Ιατρικής

Διδακτική των εικαστικών τεχνών Ενότητα 2

Γραμμική Άλγεβρα και Μαθηματικός Λογισμός για Οικονομικά και Επιχειρησιακά Προβλήματα

Κβαντική Επεξεργασία Πληροφορίας

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εφαρμογές των Τεχνολογιών της Πληροφορίας και των Επικοινωνιών στη διδασκαλία και τη μάθηση

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

Μαθηματικά Διοικητικών & Οικονομικών Επιστημών

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Γενική Φυσική Ενότητα: Ταλαντώσεις

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Ευφυής Προγραμματισμός

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 4: Συναρτήσεις

Διδακτική Πληροφορικής

Διαχείριση Πολιτισμικών Δεδομένων

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Ευφυής Προγραμματισμός

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Έλεγχος Ποιότητας Φαρμάκων

Transcript:

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

Templates

Εισαγωγή Templates o Templates Συναρτήσεων Ορισμός μιας σειράς σχετιζόμενων συναρτήσεων (με υπερφόρτωση) o Templates Τάξεων Ορισμός μιας σειράς σχετικών κλάσεων 3/16

Function Templates Υπερφορτωμένες Συναρτήσεις (Overloaded) o Παρόμοιες λειτουργίες Διαφορετικός τύπος δεδομένων Πρότυπες Συναρτήσεις (templates) o Ίδια ακριβώς λειτουργία Διαφορετικός τύπος δεδομένων o Δήλωση μιας μόνο συνάρτησης template O compiler παράγει ξεχωριστές συναρτήσεις o Type checking 4/16

Function Templates Ορισμός Function template o Ορισμός με την λέξη κλειδί template o Ο τύπος των παραμέτρων δηλώνεται μέσα σε brackets < > Πριν από κάθε παράμετρο μπαίνει το: class ή typename (ισοδύναμα) template< class T > template< typename ElementType > template< class BorderType, class FillType > Μπορούμε να καθορίσουμε τον τύπο σε: Ορίσματα συνάρτησης Τύπος επιστρεφόμενης τιμής Τοπικές Μεταβλητές μέσα στο σώμα της συνάρτησης 5/16

Παράδειγμα #include iostream using namespace std; template <class T> class mypair { T a, b; public: mypair (T first, T second){ a=first; b=second; T getmax (); ; Η κλάση mypair περιέχει δύο όμοιες μεταβλητές. Ο τύπος των μεταβλητών θα καθορίζεται κάθε φορά κατά την δημιουργία ενός αντικειμένου. template <class T> T mypair<t>::getmax () { T retval; retval = a>b? a : b; return retval; int main () { mypair <int> integerpair (100, 75); cout << integerpair.getmax(); mypair <char> charpair ('g', 'c'); cout << charpair.getmax(); return 0; Ο τύπος μπορεί να είναι build in όπως στο παράδειγμα (int, char) αλλά και οποιασδήποτε κλάσης. ΠΧ: Dog dog1("max") Dog dog2("wolfy"); mypair <Dog> charpair (dog1, dog2); Προσοχή: στο συγκεκριμένο παράδειγμα θα πρέπει στην κλάση Dog να έχουμε κάνει υπερφόρτωση του τελεστή σύγκρισης > 6/16

Υλοποίηση Στοίβας με Template Κλάση template< class T > class Stack { public: Stack( int = 10 ); ~Stack() { delete [] stackptr; bool push( const T& ); bool pop( T& ); bool isempty() const { return top == -1; bool isfull() const { return (top == size - 1); private: int size; int top; T *stackptr; ; template< class T > Stack< T >::Stack( int s ){ size = s > 0? s : 10; top = -1; stackptr = new T[ size ]; template< class T > bool Stack< T >::push( const T &pushvalue ){ if (!isfull() ) { stackptr[ ++top ] = pushvalue; return true; return false; template< class T > bool Stack< T >::pop( T &popvalue ){ if (!isempty() ) { popvalue = stackptr[ top-- ]; return true; return false; 7/16

Templates και static μέλη Απλή κλάση (όχι template class) o Τα static μέλη μοιράζονται από όλα τα αντικείμενα Class-template o Κάθε τύπος έχει δικά του αντίγραφα των static μεταβλητών o static μεταβλητές αρχικοποιούνται σε εμβέλεια αρχείου o Κάθε τύπος έχει δικά του αντίγραφα των static μεθόδων 8/16

Πρόσθετο Υλικό Μελετήστε και τα παραδείγματα από τα Κεφάλαια 18 του βιβλίου: «C++ How to Program, 9/e Paul & Harvey Deitel» http://media.pearsoncmg.com/ph/esm/deitel/cpp_htp_9/code_examples/code_examples.zip 9/16

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στo πλαίσιo του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Αθηνών» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 10/16

Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0.1 11/16

Σημείωμα Αναφοράς Copyright: Πανεπιστήμιον Πατρών, Ιωάννης Χατζηλυγερούδης, 2015. «Οντοκεντρικός Προγραμματισμός». Έκδοση: 1.0.1 Πάτρα 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: https://eclass.upatras.gr/courses/ceid1105/ 12/16

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί.

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς το Σημείωμα Αδειοδότησης τη δήλωση Διατήρησης Σημειωμάτων το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει) μαζί με τους συνοδευόμενους υπερσυνδέσμους. 14/16

Σημείωμα Χρήσης Έργων Τρίτων Οι διαφάνειες βασίζονται στο βιβλίο «C++ How to Program, 8th Edition, Harvey M. Deitel, Paul J. Deitel, Prentice Hall.» 15/16