Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης

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

Download "Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης"

Transcript

1 Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης 3 Φεβρουαρίου Ομάδα Α - Ερωτήσεις Γενικών Γνώσεων 1. (ΕΓΓ.155) Τι είναι το αντικείμενο και ποια τα χαρακτηριστικά του; Περιγράψτε το προγραμματιστικό ισοδύναμο μοντέλο των αντικειμένων. Ένα αντικείμενο στον αντικειμενοστρεφή προγραμματισμό είναι ένα στιγμιότυπο μιας κλάσης δηλαδή είναι μια συγκεκριμένη και υπαρκτή εμφάνιση μιας αφηρημένης περιγραφής. Το αντικείμενο χαρακτηρίζεται από την κατάστασή του δηλαδή τις τιμές των μελών δεδομένων του. Επίσης, ως αντικείμενο της κλάσης του, μπορεί να υλοποιήσει όλες τις συμπεριφορές που περιγράφονται από την κλάση αυτή. Σε αντιστοιχία με τον φυσικό κόσμο, κάθε διακόπτης on-off στο σπίτι μας μπορεί να θεωρηθεί ως αντικείμενο της γενικής κλάσης "διακόπτης δύο καταστάσεων". Ένας συγκεκριμένος διακόπτης χαρακτηρίζεται από μία μεταβλητή που μπορεί να έχει τιμή on ή off. Η τιμή της είναι η κατάστασή του. Σύμφωνα με την περιγραφή της κλάσης για κάθε διακόπτη ισχύει ότι μπορούμε να αντιστρέψουμε την κατάστασή του οπότε και για τον συγκεκριμένο διακόπτη μας ισχύει ότι μπορούμε να τον πατήσουμε αντιστρέφοντας την κατάστασή του. 2. (ΕΓΓ.156) Περιγράψτε τον όρο κλάση στον αντικειμενοστρεφή προγραμματισμό. Περιγράψτε το προγραμματιστικό ισοδύναμο μοντέλο των κλάσεων.. Κλάση είναι ένα αφηρημένο πρότυπο μιας κατηγορίας αντικειμένων. Στον αντικειμενοστρεφή προγραμματισμό χρησιμοποιούνται προκειμένου να δημιουργηθούν συγκεκριμένα στιγμιότυπα αυτής της κατηγορίας, τα αντικείμενα. Στη δήλωση μιας κλάσης περιγράφονται τα μέλη δεδομένων που θα πρέπει να περιέχουν τα αντικείμενα αυτής της κλάσης, δηλαδή η δομή τους. Επίσης περιγράφονται και οι μέθοδοι των αντικειμένων δηλαδή συναρτήσεις που μπορούν να κληθούν για αυτές τις δομές οι οποίες λέγονται και συμπεριφορές. Στο φυσικό κόσμο σκεφτόμαστε και λειτουργούμε με όρους κλάσεων όταν κάνουμε μια γενική περιγραφή μιας κατηγορίας αντικειμένων και παραβλέποντας τις λεπτομέρειες καθενός αντικειμένου, περιγράφουμε ποια είναι τα τα γενικά χαρακτηριστικά των αντικειμένων αυτής της κατηγορίας και πώς συμπεριφέρονται γενικά. Για παράδειγμα ένας δάσκαλος οδήγησης περιγράφει το αυτοκίνητο σε έναν μαθητευόμενο ως ένα αντικείμενο το οποίο χαρακτηρίζεται από κάποιες μεταβλητές (θέση, ταχύτητα, σχέση στο κιβώτιο ταχυτήτων) που χαρακτηρίζουν την κατάστασή του ανά 1

2 πάσα χρονική στιγμή και μπορεί να πραγματοποιήσει κάποιες ενέργειες (στροφή, επιτάχυνση, επιβράδυνση, αλλαγή σχέσης ταχυτήτων στο κιβώτιο κτλ.). 3. (ΕΓΓ.157) Ποια τα τέσσερα βασικά χαρακτηριστικά του αντικειμενοστρεφούς προγραμματισμού; Να αναφέρετε παραδείγματα. Τα τέσσερα βασικά χαρακτηριστικά του αντικειμενοστρεφούς προγραμματισμού είναι: Αφαίρεση (Data Abstraction), Ενθυλάκωση (Encapsulation), Κληρονομικότητα (Inheritance), Πολυμορφισμός (Polymorphism). Η αφαιρετικότητα στην αναπαράσταση των τύπων έγκειται στην απόκρυψη των λεπτομερειών της υλοποίησης από τον χρήστη. Ο χρήστης ενός τύπου βλέπει μόνο ένα υποσύνολο των δεδομένων και των μεθόδων ενός αντικειμένου το οποίο λέγεται διασύνδεση. Στην C++ η αφαιρετικότητα υλοποιείται μέσω των προσδιοριστών πρόσβασης public, private και protected. Χρησιμοποιώντας τους ο προγραμματιστής μιας κλάσης κρύβει από τον τελικό χρήστη όσα στοιχεία δεν είναι απαραίτητα, παρουσιάζοντας μόνο τη διασύνδεση. Η ενθυλάκωση είναι η συμπερίληψη δομών δεδομένων και των διαδικασιών που επιδρούν σε αυτές μέσα σε μία ενιαία οντότητα, την κλάση. Κληρονομικότητα είναι ο μηχανισμός με τον οποίο ένας προγραμματιστής μπορεί να ορίσει μία νέα κλάση η οποία διαθέτει όλα τα χαρακτηριστικά μίας ήδη υπάρχουσας. Τα αντικείμενα της νέας κλάσης μπορούν να χρησιμοποιηθούν οπουδήποτε χρησιμοποιούνται και τα αντικείμενα της παλιάς. Πολυμορφισμός είναι ο μηχανισμός με τον οποίο, όμοιες εντολές στον πηγαίο κώδικα έχουν ως αποτέλεσμα την εκτέλεση διαφορετικών εντολών τη στιγμή που εκτελείται το πρόγραμμα. Στην C++ η κλήση μιας εικονικής μεθόδου για ένα αντικείμενο κάποιου βασικού τύπου μπορεί να εκτελέσει διαφορετικές εντολές ανάλογα με τον πραγματικό τύπο του αντικειμένου. Data asbtraction, encapsulation, inheritance, polymorphism. 4. (ΕΓΓ.158) Να δοθεί παράδειγμα δυναμικής διαχείρισης της μνήμης στη C++. Να αναφέρετε παραδείγματα χρήσης του τελεστή new. Στην C++ μπορούμε να δεσμεύσουμε δυναμικά μνήμη με τον τελεστή new. Υποχρεωτικά τον τελεστή ακολουθεί ένα όνομα τύπου, είτε βασικού όπως int, float κτλ., είτε ορισμένου από τον προγραμματιστή όπως π.χ. ένα όνομα κλάσης. Ο τελεστής new δεσμεύει όση μνήμη χρειάζεται για να αποθηκευθεί το νέο αντικείμενο ή μεταβλητή. Προαιρετικά, το όνομα τύπου μπορεί να ακολουθείται από μία λίστα ορισμάτων κατάλληλων για αρχικοποίηση του νέου αντικειμένου ή μεταβλητής οπότε ο τελεστής new αναλαμβάνει την αρχικοποίηση αναλόγως. Ο τελεστής επιστρέφει έναν δείκτη προς τη μνήμη που δεσμεύτηκε. Π.χ. στο παρακάτω παράδειγμα, δεσμεύεται χώρος στη μνήμη για δύο μεταβλητές, μία int και μία float. Η int αρχικοποιείται στην τιμή 5. 2

3 1 float *p; 2 int *q; 3 p = new float; 4 q = new int(5); Επίσης, υποθέτοντας ότι σε ένα πρόγραμμα ορίζεται μία κλάση foo όπως η παρακάτω, μπορούμε να χρησιμοποιήσουμε τον τελεστή new για να δημιουργήσουμε ένα αντικείμενο τύπου foo και να το αρχικοποιήσουμε καλώντας τον ανάλογο constructor: Η πρώτη new χρησιμοποιεί τον default constructor ενώ η δεύτερη εκείνον με τα δύο ορίσματα. 1 class foo { 3 foo() {} 4 foo(int, int) {} 5 }; 6 7 int main() 8 { 9 foo *f1, *f2; 10 f1 = new foo; 11 f2 = new foo(1,2); 12 } Μπορούμε να δεσμεύσουμε δυναμικά μνήμη για τη δημιουργία πινάκων. Σε αυτήν την περίπτωση το όνομα τύπου που ακολουθεί τη new ακολουθείται από αγκύλες μέσα στις οποίες αναγράφεται το μέγεθος του πίνακα. Π.χ. η παρακάτω εντολή δεσμεύει χώρο για 10 ακέραιους 1 int *p; 2 p = new int[10]; ενώ η επόμενη για 10 foo 1 foo *f3; 2 f3 = new foo[10]; Πρέπει να σημειωθεί ότι η ISO C++ δεν επιτρέπει την αρχικοποίηση πινάκων που δεσμεύονται με τον τελεστή new οπότε η απόδοση αρχικών τιμών πρέπει να γίνει για το κάθε αντικείμενο ή μεταβλητή χωριστά. Επίσης, στην περίπτωση της δέσμευσης πίνακα αντικειμένων, θα πρέπει ο ορισμός της κλάσης να περιλαμβάνει default constructor (ή κανέναν constructor). 5. (ΕΓΓ.159) Ορίστε τις έννοιες μέθοδος εγκατάστασης απεγκατάστασης (constructor destructor) στη C++. Δώστε παραδείγματα. Οι μέθοδοι εγκατάστασης (constructors) έχουν σκοπό την αρχικοποίηση νέων αντικειμένων προκειμένου να απαλειφθεί το πρόβλημα της ύπαρξης αντικειμένων χωρίς αρχική απόδοση τιμής στα μέλη δεδομένων τους. Σε μία κλάση μπορούν να οριστούν ένας ή περισσότεροι constructors αρκεί να διαφέρουν ως προς το πλήθος ή/και τον τύπο των παραμέτρων τους (υπερφόρτωση). Για κάθε αντικείμενο μπορεί να καλείται το πολύ ένας constructor, ακριβώς 3

4 μία φορά στη διάρκεια ζωής του αντικειμένου και μάλιστα αυτόματα κατά τη διαδικασία δημιουργίας του. Ο constructor που θα εκτελεστεί, εκτελείται αμέσως μετά τη δέσμευση μνήμης για την αποθήκευση του αντικειμένου. Οι constructors έχουν πάντα όνομα ίδιο με το όνομα της κλάσης και δεν επιστρέφουν καμία τιμή. Η δήλωση constructor σε μία κλάση δεν είναι υποχρεωτική. Για παράδειγμα, η παρακάτω κλάση foo έχει δύο constructors, έναν που δεν παίρνει κανένα όρισμα και έναν που παίρνει ένα ακέραιο όρισμα. 1 class foo { 3 foo() {} 4 foo(int a) {} 5 }; Με αυτό ως δεδομένο, τα αντικείμενα των παρακάτω γραμμών αρχικοποιούνται με τον constructor χωρίς ορίσματα 1 foo a; 2 foo *p = new foo(); ενώ οι επόμενες δύο με τον constructor που παίρνει ένα όρισμα. 1 foo b(2); 2 foo *q = new foo(3); Η μέθοδος απεγκατάστασης (destructor) μίας κλάσης, εφόσον έχει οριστεί, καλείται μία ακριβώς φορά, στο τέλος της ζωής του αντικειμένου και αμέσως πριν την αποδέσμευση της μνήμης που αυτό καταλάμβανε. Ο destructor μίας κλάσης δεν παίρνει παραμέτρους ούτε επιστρέφει τιμή. Κάθε κλάση είτε δεν έχει destructor είτε έχει ακριβώς έναν. Το όνομα του destructor είναι ο χαρακτήρας ~ ακολουθούμενος από το όνομα της κλάσης. Για παράδειγμα, αν έχουμε την παρακάτω κλάση 1 class foo { 3 foo() {} 4 ~foo() {} 5 }; και την παρακάτω συνάρτηση main 1 int main() 2 { 3 foo a; 4 foo b; 5 foo *q = new foo; 6 7 if (1) { 8 foo c; 9 } 10 delete q; 4

5 11 12 return 0; 13 } τότε ο destructor της κλάσης θα κληθεί για το αντικείμενο c όταν η ροή εκτέλεσης του προγράμματος φτάσει στη γραμμή 9, στο τέλος δηλαδή του μπλοκ μέσα στο οποίο ορίστηκε η c. Επίσης θα κληθεί στη γραμμή 10 όπου ζητείται η διαγραφή του δυναμικού αντικειμένου q και από μία φορά για τα αντικείμενα a και b στη γραμμή 13, στο τέλος δηλαδή του μπλοκ στο οποίο ορίστηκαν. 6. (ΕΓΓ.160) Να αναφέρετε πώς μπορούμε να χρησιμοποιήσουμε τον τελεστή ::. Δώστε παράδειγμα. Μπορούμε να χρησιμοποιήσουμε τον τελεστή :: για να αναφερθούμε σε ονόματα που είναι δηλωμένα μέσα σε μία κλάση. Συντάσσεται γράφοντας πριν από αυτόν το όνομα της κλάσης και μετά από αυτόν το όνομα που μας ενδιαφέρει. Μία τυπική χρήση του τελεστή είναι για την επίλυση αμφισημιών όταν αναφερόμαστε σε μεθόδους. Για παράδειγμα έστω ότι έχουμε δύο κλάσεις οι οποίες περιέχουν και οι δύο μία μέθοδο method την οποία όμως απλώς δηλώνουμε αλλά δεν ορίζουμε μέσα στο σώμα της κλάσης: 1 class foo1 { 3 void method(); 4 }; 5 6 class foo2 { 7 public: 8 void method(); 9 }; Αν τώρα επιχειρήσουμε να ορίσουμε την μέθοδο method της κλάσης foo1 δεν αρκεί να γράψουμε στη συνέχεια void method() {... γιατί ο μεταγλωτττιστής δεν μπορεί να γνωρίζει αν αναφερόμαστε στη method του foo1 ή του foo2. Για να επιλυθεί η αμφισημία θα πρέπει χρησιμοποιώντας τον τελεστή :: να δηλώσουμε ρητά το όνομα της κλάσης στην οποία αναφερόμαστε: 1 void foo1::method() {... } 2 void foo2::method() {... } Μια άλλη τυπική χρήση είναι στην υπέρβαση (override) μεθόδων που κληρονομούνται. Αν η κλάση-παιδί μέσα σε μία τέτοια μέθοδο θέλει να καλέσει την αντίστοιχη μέθοδο της βασικής κλάσης δεν μπορεί απλώς να την καλέσει με το όνομά της γιατί αυτό οδηγεί σε ατέρμονα αναδρομή. Για παράδειγμα αν θέλουμε να κάνουμε override σε μία μέθοδο method και μέσα σε αυτήν να καλέσουμε τη μέθοδο της κλάσης γονιού, τότε το παρακάτω είναι λάθος: 1 class parent { void method() {... } }; 2 class child { 3 void method() { 5

6 4 method(); 5 } 6 }; Ο λόγος είναι ότι στη γραμμή 4 δεν καλείται η μέθοδος method του γονιού αλλά η method του παιδιού, οπότε έχουμε ατέρμονα αναδρομή. Το σωστό θα ήταν, η κλήση της γραμμής 4 να γίνει parent::method();. 7. (ΕΓΓ.161) Πώς χρησιμοποιούνται στον αντικειμενοστρεφή προγραμματισμό οι προσδιοριστές πρόσβασης των κλάσεων public, protected και private; Να αναφέρετε παράδειγμα. Χρησιμοποιούμε τους παραπάνω προσδιοριστές μέσα στον ορισμό μιας κλάσης προκειμένου να ορίσουμε τα δικαιώματα πρόσβασης στα μέλη της κλάσης είτε αυτά είναι μέλη δεδομένων είτε μέθοδοι. Πιο συγκεκριμένα, οποτεδήποτε εμφανίζεται ένας από αυτούς τους προσδιοριστές στον ορισμό μίας κλάσης, τότε τα μέλη της κλάσης που ακολουθούν τον προσδιοριστή έχουν τα δικαιώματα πρόσβασης που αυτός ορίζει, μέχρι την εμφάνιση ενός άλλου προσδιοριστή ή το τέλος της δήλωσης της κλάσης. Εξ ορισμού (by default) τα δικαιώματα πρόσβασης των μελών μιας κλάσης είναι private. Για παράδειγμα, στην παρακάτω δήλωση κλάσης τα μέλη a, b, e και m3 είναι private, τα m1 και c είναι public ενώ τα m2 και d είναι protected. 1 class foo { 2 float a; 3 float b; 4 public: 5 int m1(); 6 float c; 7 protected: 8 int m2(); 9 float d; 10 private: 11 float e; 12 int m3(); 13 }; 8. (ΕΓΓ.162) Τι ονομάζουμε φίλιες συναρτήσεις και κλάσεις; Δώστε παράδειγμα. Φίλιες συναρτήσεις και κλάσεις ονομάζουμε εκείνες που κατ' εξαίρεση μπορούν να έχουν πρόσβαση σε private και protected μέλη μίας κλάσης. Στα private μέλη μιας κλάσης μπορούν να έχουν πρόσβαση μόνο αντικείμενα και μέλη της κλάσης αυτής. Στα protected μέλη ισχύει ότι και για τα private αλλά επιπλέον έχουν πρόσβαση και οι κλάσεις-παιδιά (subclasses) της κλάσης. Μπορούμε να ορίσουμε κατ' εξαίρεση των παραπάνω κανόνων ότι μία συνάρτηση ή κλάση μπορεί να έχει πρόσβαση στα private και protected μέλη της κλάσης, γράφοντας στον ορισμό της τη δεσμευμένη λέξη friend ακολουθούμενη από την περιγραφή της φίλιας κλάσης ή συνάρτησης. Στην περίπτωση των κλάσεων γράφεται η δεσμευμένη λέξη class ακολουθούμενη από το όνομα της κλάσης ενώ στην περίπτωση των συναρτήσεων γράφεται ο επιστρεφόμενος τύπος, το όνομα της συνάρτησης και η λίστα παραμέτρων. Για παράδειγμα, στην παρακάτω δήλωση κλάσης ορίζονται ως φίλιες η κλάση g και η συνάρτηση main. 6

7 1 class foo { 2 friend class g; 3 friend int main(); 4 }; 9. (ΕΓΓ.163) Ποια η έννοια του τελεστή const; Δώστε παράδειγμα. Ο προσδιοριστής const μπορεί αναφέρεται είτε σε τοπικές μεταβλητές και παραμέτρους (βασικών, σύνθετων τύπων και κλάσεων) είτε σε μεθόδους κλάσεων. Όταν ο προσδιοριστής const αναφέρεται σε μεταβλητές ή αντικείμενα ορίζει ότι δεν επιτρέπεται η αλλαγή της τιμής τους ή της τιμής κάποιου μέλους τους. Επιπρόσθετα, όταν αναφέρεται σε αντικείμενα ορίζει επίσης ότι οι μόνες μέθοδοι που επιτρέπεται να κληθούν για το αντικείμενο το οποίο προσδιορίζουν είναι εκείνες που έχουν δηλωθεί const. Οι μέθοδοι που χαρακτηρίζονται με τον προσδιοριστή const θεωρείται ότι διατηρούν τη λογική σταθερότητα του αντικειμένου, δηλαδή ότι στο σύνολό του δεν το μεταβάλλουν ακόμα και αν μεταβάλλουν την τιμή κάποιου μέλους του. Για παράδειγμα παρακάτω, η ανάθεση τιμής στη μεταβλητή k στη γραμμή 9 δεν επιτρέπεται γιατί η μεταβλητή έχει δηλωθεί const στη γραμμή 8. Η μεταβολή της παραμέτρου i στη γραμμή 3 επίσης δεν επιτρέπεται γιατί η παράμετρος έχει δηλωθεί const στη γραμμή 2. 1 void fun( const int i) 2 { 3 i = 7; 4 } 5 6 int main() 7 { 8 const int k = 0; 9 k = 5; int a = 0; 12 fun(a); 13 return 0; 14 } Επίσης στο παρακάτω παράδειγμα, η εντολή απόδοσης τιμής στο μέλος a του αντικειμένου f στη γραμμή 10 δεν επιτρέπεται γιατί το αντικείμενο f έχει δηλωθεί const στη γραμμή 8. Αντίστοιχα δεν επιτρέπεται η κλήση της μεθόδου meth1 στη γραμμή 11 γιατί η μέθοδος meth1 δεν χαρακτηρίζεται const στη δήλωση της κλάσης. Αντίθετα, η κλήση της μεθόδου meth2 στη γραμμή 12 επιτρέπεται για το const αντικείμενο f γιατί η μέθοδος meth2 χαρακτηρίζεται const στη δήλωση της κλάσης οπότε η γλώσσα θεωρεί ότι η meth2 δεν μεταβάλλει το αντικείμενο για το οποίο καλείται. 1 class foo { 3 int a; 4 void meth1() {} 5 void meth2() const {} 7

8 6 }; 7 8 void fun( const foo f) 9 { 10 f.a = 5; 11 f.meth1(); 12 f.meth2(); 13 } int main() 16 { 17 foo f; 18 fun(f); 19 return 0; 20 } 10. (ΕΓΓ.164) Τι είναι πολυμορφισμός μεταξύ κλάσεων; Δώστε παράδειγμα. Πολυμορφισμός στον αντικειμενοστρεφή προγραμματισμό γενικά είναι η δυνατότητα ενός ονόματος να έχει διαφορετικές σημασίες ανάλογα με τα συμφραζόμενά του. Στην C++ η πιο συνηθισμένη εκδήλωση του πολυμορφισμού είναι ο μηχανισμός με τον οποίο η κλήση μιας μεθόδου μπορεί να εκτελεί διαφορετικό κώδικα ανάλογα με τον τύπο του αντικειμένου για το οποίο καλείται. Για παράδειγμα, στον παρακάτω κώδικα, η εντολή p.foo() στη συνάρτηση f θα εκτελέσει τη μέθοδο foo της κλάσης parent όταν της δοθεί ως πραγματική παράμετρος το αντικείμενο p τύπου parent, ενώ η ίδια εντολή θα έχει ως αποτέλεσμα να εκτελεστεί η μέθοδος foo της κλάσης child όταν της δοθεί ως πραγματική παράμετρος το αντικείμενο c τύπου child. 1 # include <iostream > 2 using namespace std; 3 4 class parent { 5 public: 6 virtual void foo() { cout << " parent" << endl; } 7 }; 8 9 class child : public parent { 10 public: 11 void foo() { cout << " child" << endl; } 12 }; void f( parent& x) 15 { 16 x.foo(); 17 } 18 8

9 19 int main() 20 { 21 parent p; 22 child a; f(p); 25 f(a); 26 } 11. (ΕΓΓ.165) Τι είναι τα σύνθετα αντικείμενα; Δώστε παράδειγμα. Σύνθετα αντικείμενα είναι εκείνα που περιέχουν άλλα αντικείμενα ως μέλη δεδομένων. Για παράδειγμα αν υποθέσουμε ότι έχουμε μία κλάση simple η οποία εμφανίζεται ως μέλος σε μία κλάση composite, τότε τα αντικείμενα που είναι στιγμιότυπα της composite είναι σύνθετα: 1 class simple { 2 }; 3 class composite { 4 simple a; 5 }; 12. (ΕΓΓ.166) Τι είναι η κληρονομικότητα μεταξύ κλάσεων; Δώστε παράδειγμα. Κληρονομικότητα είναι ένα βασικό χαρακτηριστικό των αντικειμενοστρεφών γλωσσών προγραμματισμού. Υλοποιείται ως μηχανισμός επαναχρησιμοποίησης κώδικα, δίνοντας τη δυνατότητα δημιουργίας μία νέας κλάσης-παιδί η οποία κληρονομεί όλα τα χαρακτηριστικά μίας ήδη υπάρχουσας κλάσης-γονιού. Η υπάρχουσα κλάση μπορεί επίσης να ονομάζεται υπερκλάση ή βασική κλάση. Η νέα κλάση αντίστοιχα μπορεί να ονομάζεται υποκλάση ή παράγωγη κλάση. Για παράδειγμα, αν έχουμε μία κλάση που αναπαριστά πουλιά τα οποία έχουν μεθόδους για να πετούν και να κάνουν αυγά 1 class bird { 3 void fly() { cout << "bird flies" << endl; } 4 void lay_eggs() { cout << "bird lays eggs" << endl; } 5 }; μπορούμε να φτιάξουμε μια νέα κλάση χελιδόνι (swallow) η οποία κληρονομεί τα παραπάνω αλλά επίσης μεταναστεύει: 1 class swallow : public bird { 3 void migrate() { cout << " swallow migrates" << endl; } 4 }; οπότε αν δηλώσουμε ένα αντικείμενο s τύπου swallow μπορούμε για αυτό να καλέσουμε τη μέθοδο migrate αλλά και τις fly και lay_eggs παρόλο που αυτές δεν έχουν δηλωθεί ρητά στην κλάση swallow λόγω του ότι κληρονομήθηκαν από την bird. 9

10 13. (ΕΓΓ.167) Να αναφέρετε παράδειγμα για να εξηγήσετε την υπέρβαση ενός μοναδιαίου τελεστή (unary operator). Ας υποθέσουμε ότι έχουμε μία κλάση αναπράσταση μιγαδικών αριθμών με όνομα cplex της οποίας τα αντικείμενα έχουν δύο μέλη re και im που αντιπροσωποεύουν το πραγματικό και φανταστικό μέρος του μιγαδικού αριθμού αντίστοιχα. Τότε ο μοναδιαίος τελεστής - ο οποίος θα επέστρεφε τον αντίθετο του μιγαδικού αριθμού αντιστρέφοντας το πρόσημο του πραγματικού του μέρους θα μπορούσε να υλοποιηθεί όπως παρακάτω. Καθώς πρόκειται για μοναδιαίο τελεστή, δεν παίρνει ορίσματα. Το ένα και μοναδικό του όρισμα είναι το αντικείμενο για το οποίο καλείται. Ο τελεστής επιστρέφει ένα αντικείμενο τύπου cplex το οποίο θα πρέπει να είναι το αντίθετο εκείνου για το οποίο καλείται. Για να δημιουργηθεί αυτό το αντικείμενο, καλείται ο constructor της κλάσης προκειμένου να δημιουργηθεί ένα νέο αντικείμενο με παραμέτρους το αντίθετο του πραγματικού και το φανταστικό μέρος του αντικειμένου στο οποίο εφαρμόζεται ο τελεστής. 1 class cplex { 2 float re, im; 3 public: 4 cplex ( float _re, float _im) { re = _re; im = _im; } 5 cplex operator -() { return cplex(-re, im); } 6 }; 14. (ΕΓΓ.168) Να αναφέρετε παράδειγμα για να εξηγήσετε την υπέρβαση ενός δυαδικού τελεστή (binary operator). Ας υποθέσουμε ότι έχουμε μία κλάση αναπράσταση μιγαδικών αριθμών με όνομα cplex της οποίας τα αντικείμενα έχουν δύο μέλη re και im που αντιπροσωποεύουν το πραγματικό και φανταστικό μέρος του μιγαδικού αριθμού αντίστοιχα. Τότε ο δυαδικός τελεστής + ο οποίος επιστρέφει το άθροισμα δύο αντικειμένων τύπου cplex θα μπορούσε να υλοποιηθεί όπως παρακάτω. Σημασιολογικά, θέλουμε ο τελεστής να εφαρμόζεται σε δύο αντικείμενα και να επιστρέφει το άθροισμά τους. Αυτό θα πρέπει να είναι ένα αντικείμενο cplex το οποίο θα έχει ως πραγματικό μέρος το άθροισμα των πραγματικών μερών των ορισμάτων του και φανταστικό μέρος αντίστοιχα το άθροισμα των φανταστικών. Οπότε, ο νέος τελεστής θα πρέπει να δηλωθεί ότι επιστρέφει ένα αντικείμενο cplex. Μιας και πρόκειται για δυαδικό τελεστή, το ένα του όρισμα θα είναι το αντικείμενο για το οποίο καλείται ενώ το άλλο αναφέρεται με το όνομα other στη λίστα παραμέτρων. Το σώμα του υπερφορτωμένου τελεστή καλεί τον constructor της κλάσης με δύο παραμέτρους: Η πρώτη (re + other.re ) είναι το άθροισμα του πραγματικού μέρους του αντικειμένου για το οποίο καλείται και του πραγματικού μέρους του αντικειμένου other, του δεύτερου δηλαδή τελεσταίου. Η δεύτερη παράμετρος (im + other.im) είναι το αντίστοιχο άθροισμα για τα φανταστικά μέρη των αντικειμένων. 1 class cplex { 2 float re, im; 3 public: 4 cplex ( float _re, float _im) { re = _re; im = _im; } 5 cplex operator +( cplex other) { return cplex( re + other.re, im + other. im); } 6 void print() { cout << "(" << re << ", " << im << ")" << endl; } 10

11 7 }; 15. (ΕΓΓ.169) Ποια η χρησιμότητα της αφηρημένης βασικής κλάσης; Με τη δήλωση των κατάλληλων κλάσεων δώστε ένα παράδειγμα πολλαπλής κληρονομικότητας. Αφηρημένη βασική κλάση ονομάζεται οποιαδήποτε κλάση έχει τουλάχιστον μία γνήσια εικονική μέθοδο, δηλαδή μια εικονική μέθοδο η οποία δηλώνεται αλλά δεν ορίζονται για αυτήν εντολές. Αυτό έχει ως αποτέλεσμα να μην μπορούν να δημιουργηθούν αντικείμενα αυτής της κλάσης. Τέτοιες κλάσεις χρησιμοποιούνται ως βασικές κλάσεις οι οποίες κληρονομούνται από άλλες. Λόγω της ύπαρξης μίας ή περισσότερων γνήσιων εικονικών συναρτήσεων, η παράγωγη κλάση θα πρέπει υποχρεωτικά να ορίσει τις γνήσιες εικονικές συναρτήσεις της βασικής κλάσης. Τέτοιες κλάσεις χρησιμοποιούνται κατά κανόνα στο σχεδιασμό βιβλιοθηκών προκειμένου να ορίσουν μία προγραμματιστική διασύνδεση (API) ανάμεσα στον πάροχο και το χρήστη της βιβλιοθήκης. Ένα παράδειγμα πολλαπλής κληρονομικότητας θα μπορούσε να είναι και μία κλάση αναπαράστασης ενός δικτυακού πολυμηχανήματος. Υποθέτοντας ότι έχουμε τρεις κλάσεις οι οποίες αναπαριστούν έναν εκτυπωτή, ένα σαρωτή και μία συσκευή τηλεομοιοτυπίας οι οποίες δίνονται παρακάτω: 1 class printer { 3 int numtrays; 4 void print() {... } 5 }; 6 class scanner { 7 public: 8 int dpi; 9 void scan() {... } 10 }; 11 class fax { 1 13 void send() {... } 14 void receive() {... } 15 }; τότε θα μπορούσαμε να ορίσουμε μία κλάση πολυμηχάνημα χωρίς να υλοποιήσουμε καμία από τις παραπάνω λειτουργίες με το μηχανισμό της πολλαπλής κληρονομικότητας: 1 class multi : public printer, public scanner, public fax { 2 }; Για τα αντικείμενα της νέας κλάσης μπορούμε να καλέσουμε οποιαδήποτε από τις μεθόδους print, scan, send και receive και/ή να προσπελάσουμε τα μέλη δεδομένων numtrays και dpi. 16. (ΕΓΓ.170) Επεξηγήστε με παράδειγμα την έννοια των υπερβατικών συναρτήσεων. Οι υπερβατικές συναρτήσεις είναι μέθοδοι για τις οποίες μπορεί να εκτελείται διαφορετικός κώδικας ανάλογα με τον τύπο του αντικειμένου για τον οποίο καλούνται. Η συνάρτηση που 11

12 τελικά καλείται μπορεί να έχει επανοριστεί (override) σε κάποια παράγωγη της αρχικής κλάση. Για να ενεργοποιηθεί ο μηχανισμός θα πρέπει στη δήλωση της μεθόδου να προηγηθεί η λέξη virtual. Για παράδειγμα, αν έχουμε μία κλάση parent με μία εικονική μέθοδο test η οποία τυπώνει το μήνυμα parent! όπως παρακάτω 1 class parent { 3 virtual void test() { cout << " parent!" << endl; } 4 }; τότε η παρακάτω συνάρτηση θα τυπώνει parent! αν της δοθεί ως παράμετρος ένα αντικείμενο τύπου parent. 1 void f( parent& a) 2 { 3 a.test(); 4 } Η ίδια συνάρτηση όμως θα τυπώσει το μήνυμα child! αν όμως της δοθεί ως παράμετρος ένα αντικείμενο της κλάσης child η οποία κληρονομεί από την parent και επανορίζει την test όπως παρακάτω: 1 class child : public parent { 3 void test() { cout << "child!" << endl; } 4 }; 17. (ΕΓΓ.171) Επεξηγήστε με παράδειγμα την χρησιμότητα του τελεστή this στην προσπέλαση των δεδομένων. Ο this είναι ένας δείκτης ο οποίος υπάρχει ως κρυφή παράμετρος μέσα σε κάθε κλήση μεθόδου. Η τιμή του είναι η διεύθυνση μνήμης στην οποία βρίσκεται το αντικείμενο για το οποίο καλείται η μέθοδος. Για παράδειγμα στην παρακάτω κλάση foo η κλήση της μεθόδου func έχει ως αποτέλεσμα την εκτύπωση της θέσης μνήμης στην οποία βρίσκεται το αντικείμενο: 1 class foo { 3 void func() { cout << this << endl; } 4 }; Μία πολλή συνηθισμένη χρήση του this είναι η αποαναφοροποίησή του προκειμένου να επιστρέψουμε το ίδιο το αντικείμενο, όπως στη μέθοδο self παρακάτω: 1 class foo { 3 void func() { cout << this << endl; } 4 foo self() { return *this; } 5 }; 12

13 18. (ΕΓΓ.172) Να γραφεί κώδικας στη C++ όπου ορίσετε την κλάση Stack και να γραφεί η συνάρτηση pop() που θα κάνει αφαίρεση στοιχείου από τη στοίβα. Μια πολύ απλή εκδοχή της κλάσης Stack είναι η παρακάτω. Μπορείτε να βρείτε μια πιο ολοκληρωμένη στην ιστοσελίδα του μαθήματος. 1 # include <iostream > 2 using namespace std; 3 4 # define STACK_SIZE class Stack { 7 private: 8 int p[ STACK_SIZE]; // Pinakas gia stoixeia 9 int n; // Plithos stoixeiwv stn stoiba public: 12 Stack() { n = 0; } void push(int a) { p[n++] = a; } 15 int pop() { return p[--n]; } 16 }; 19. (ΕΓΓ.173) Ποιος ο σκοπός της χρήσης της μεθόδου εγκατάστασης με αντιγραφή (copy constructor) με την ακόλουθη μορφή X::X(const X&). Οι constructors αυτού του τύπου χρησιμοποιούνται οποτεδήποτε θέλουμε να αρχικοποιήσουμε ένα αντικείμενο έτσι ώστε να είναι ακριβές αντίγραφο ενός άλλου. Αν δηλαδή έχουμε ένα αντικείμενο a μίας κλάσης foo για την οποία έχουμε ορίσει copy constructor και θέλουμε να δηλώσουμε ένα νέο αντικείμενο b το οποίο να είναι όμοιο με το a, γράφουμε: 1 foo b(a); Μια άλλη συνηθισμένη περίπτωση χρήσης τους είναι στην αρχικοποίηση των αντικειμένων που ορίζονται ως τυπικοί παράμετροι μιας συνάρτησης ή μεθόδου. Το αντικείμενο-τοπική μεταβλητή δημιουργείται έτσι ώστε να είναι ακριβές αντίγραφο του αντικειμένου που δίνεται ως πραγματική παράμετρος με την κλήση του copy constructor. Ορίζουμε τέτοιους constructors όταν η εξ ορισμού διαδικασία αντιγραφής αντικειμένων που χρησιμοποιεί η C++ δηλαδή η αντιγραφή ενός προς ένα των μελών του ενός αντικειμένου στο άλλο δεν είναι επαρκής. 20. (ΕΓΓ.174) Να γραφεί κώδικας στη C++ όπου ορίσετε την κλάση List και να γραφεί η συνάρτηση insert() που θα κάνει εισαγωγή στοιχείου στη λίστα. Μια υλοποίηση απλά συνδεδεμένης λίστας: 1 # include <iostream > 2 using namespace std; 3 13

14 4 class node { 5 public: 6 int value; 7 node* next; 8 9 node(int v) { value = v; } 10 }; class List { 13 private: 14 node* head; public: 17 List() { head = 0; } void insert(int v) { 20 node* n = new node(v); 21 n->next = head; 22 head = n; 23 } void print() { 26 node* current = head; 27 while ( current) { 28 cout << ":" << current ->value; 29 current = current ->next; 30 } 31 } 32 }; int main() 35 { 36 List l; 37 l. insert(5); 38 l. insert (10); 39 l. insert (15); 40 l.print(); 41 return 0; 42 } 21. (ΕΓΓ.175) Να γραφεί κώδικας στη C++ όπου ορίσετε την κλάση Queue και να γραφεί η συνάρτηση dequeue() που θα κάνει αφαίρεση στοιχείου από την ουρά. Μία απλή εκδοχή του ζητούμενου προγράμματος είναι η παρακάτω. Μια πιο πλήρης με κάποιο στοιχειώδη έλεγχο λαθών μπορείτε να βρείτε στην ιστοσελίδα του μαθήματος. 1 # include <iostream > 14

15 2 using namespace std; 3 4 # define QUEUE_SIZE class Queue { 7 private: 8 int p[ QUEUE_SIZE]; // Pinakas gia stoixeia 9 int head; // H kefaln tns listas 10 int tail; // H oura tns listas Queue() { head = 0; tail = 0; } void print() { 16 cout << "#" << head - tail << ": "; 17 for (int i = tail; i < head; ++i) 18 cout << p[i] << " "; 19 cout << endl; 20 } void push(int a) { p[head ++] = a; } 23 int dequeue() { return p[tail ++]; } 24 }; 22. (ΕΓΓ.176) Να γραφεί η συνάρτηση swap στη C++ η οποία θα παίρνει δύο ακεραίους με αναφορά και θα αντιμεταθέτει τις τιμές τους. 1 # include <iostream > 2 using namespace std; 3 4 void swap(int& a, int& b) 5 { 6 int t = a; 7 a = b; 8 b = t; 9 } int main() 12 { 13 int x, y; 14 cout << "x: "; cin >> x; 15 cout << "y: "; cin >> y; 16 swap(x,y); 17 cout << "x: " << x << " y: " << y << endl; 18 return 0; 15

16 19 } 23. (ΕΓΓ.177) Είναι σωστό να γραφεί κώδικας στη C++ όπως ο παρακάτω κώδικας (τεκμηριώστε την απάντησή σας): 1 int var = 100; 2 int* ptr; 3 cout << *ptr; Ο κώδικας είναι συντακτικά σωστός. Στην πρώτη γραμμή δηλώνεται μια μεταβλητή τύπου int και αρχικοποιείται. Στην δεύτερη δηλώνεται ένας δείκτης προς ακέραιο η οποία δεν παίρνει αρχική τιμή. Στην τρίτη τυπώνονται τα περιεχόμενα της θέσης μνήμης στην οποία δείχνει ο δεύτερος δείκτης. Όλα αυτά είναι συντακτικά σωστα. Όμως το πρόγραμμα δεν είναι "λογικά" σωστό με την έννοια ότι τα περιεχόμενα της θέσης μνήμης που τυπώνεται στην τρίτη γραμμή δεν έχουν αρχικοποιηθεί, περιέχουν δηλαδή σκουπίδια. 24. (ΕΓΓ.178) Εξηγήστε τη διαφορά στη λειτουργία μεταξύ αυτών των δύο προτάσεων. 1 Student s1( s0); 2 Student s1 = s0; Δεν υπάρχει καμία διαφορά. Και στις δύο περιπτώσεις καλείται ο copy constructor της κλάσης Student. Η εμφάνιση του τελεστή = μπορεί να δίνει την εντύπωση ότι καλείται ο κώδικας που αντιστοιχεί σε αυτόν τον τελεστή αλλά αυτό ισχύει μόνο σε περιπτώσεις που το αντικείμενο αριστερά από το = υπάρχει ήδη. Σε περίπτώσεις όπως η παραπάνω Student s1 = s0; δηλαδή όπου το αντικείμενο δεν υπάρχει αλλά δημιουργείται και αρχικοποιείται εκείνην τη στιγμή, καλείται ο copy constructor. 16

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

Υπερφόρτωση τελεστών Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας

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

Τελικό τεστ - απαντήσεις

Τελικό τεστ - απαντήσεις Τελικό τεστ - απαντήσεις Θεωρήστε το παρακάτω πρόγραμμα και απαντήστε στις ερωτήσεις που ακολουθούν. 1 class parent { 2 public: 3 int a; int b; 4 parent(int _a, int _b) {} 5 6 void f1(int x) { cout

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

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

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

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

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

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

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

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

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

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

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

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

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

ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης CreativeCommons.

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

Εισαγωγή. 1 Γενικά. 2 Προγράμματα σε C++ 5 Νοεμβρίου 2012

Εισαγωγή. 1 Γενικά. 2 Προγράμματα σε C++ 5 Νοεμβρίου 2012 Εισαγωγή 5 Νοεμβρίου 2012 1 Γενικά Η C++ αναπτύχθηκε με στόχο την ενσωμάτωση χαρακτηριστικών του αντικειμενοστρεφούς προγραμματισμού στη διαδικαστική C. Δεν θεωρείται αμιγής αντικειμενοστρεφής γλώσσα αλλά

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

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης

ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός

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

Σύνθεση και Κληρονομικότητα

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 10: Constructors και Destructors Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού Άδειες

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

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( ) ΤΕΛΕΣΤΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τι είναι οι τελεστές Χρήση τελεστών Υπερφόρτωση τελεστών Chain-linking Τελεστών Τελευταία ενημέρωση: Ιούνιος 2013 Εισαγωγή - 2 Τελεστής

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

Σύνθεση και Κληρονομικότητα

Σύνθεση και Κληρονομικότητα Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση

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

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου

Αντικειμενοστρέφεια. Henri Matisse, Harmony in Red, Κωστής Σαγώνας Νίκος Παπασπύρου Αντικειμενοστρέφεια Henri Matisse, Harmony in Red, 1908 Κωστής Σαγώνας Νίκος Παπασπύρου Ορισμοί αντικειμενοστρέφειας Ποιοι είναι οι ορισμοί των παρακάτω; Αντικειμενοστρεφής

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

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

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

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο

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

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

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

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

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

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

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

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

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

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

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

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

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

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

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

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

Εισαγωγή στον Προγραμματισμό με C++ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 9: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό Κωνσταντίνος Κουκουλέτσος Τμήμα

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

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:

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

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

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

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

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

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

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

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

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Οκτώβριος 2018 1/28 1 (implicit) μετατροπές 2 (Functions) 3 (Pointers) 4 (Arrays) 2/28 (implicit)

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

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

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

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

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

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

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

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

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

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

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ

«ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ «ΕΙΔΙΚΑ ΘΕΜΑΣΑ ΣΟΝ ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ» Κεφάλαιο 4: Αντικειμενοςτρεφήσ Προγραμματιςμόσ 1 4.1. Οριςμόσ φνθετων τφπων κλάςεων 2 Με εξαίρεςη τουσ βαςικούσ τύπουσ τησ Java (int, float, boolean, κλπ) τα

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

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

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

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

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

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

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

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

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

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

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

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

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

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

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++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

Εισαγωγή στην επιστήμη των υπολογιστών

Εισαγωγή στην επιστήμη των υπολογιστών Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα σύμφωνα

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

Ενδεικτική περιγραφή μαθήματος

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή. Ο Bjarne Stroustrup, εργαζόμενος στα εργαστήρια

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

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 7 η Πίνακες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

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

Κληρονομικότητα. 1 Γενικά. 2 Απλή κληρονομικότητα. 15 Ιανουαρίου 2013

Κληρονομικότητα. 1 Γενικά. 2 Απλή κληρονομικότητα. 15 Ιανουαρίου 2013 Κληρονομικότητα 15 Ιανουαρίου 2013 1 Γενικά Μία από τις βασικές σχεδιαστικές αρχές των αντικειμενοστρεφών γλωσσών προγραμματισμού είναι η δυνατότητα επαναχρησιμοποίησης κώδικα. Ένας από τους μηχανισμούς

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

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

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

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

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

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

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

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 6: Κατανομή και Δυναμική Διαχείριση Μνήμης, τελεστές new και delete, υπερφόρτωση μονομελών τελεστών Το περιεχόμενο

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

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

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

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

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

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

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

Στοίβες με Δυναμική Δέσμευση Μνήμης

Στοίβες με Δυναμική Δέσμευση Μνήμης ΕΠΛ 231 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ 10/02/10 Παύλος Αντωνίου Στοίβες με Δυναμική Δέσμευση Μνήμης Στοίβα: Στοίβα είναι μια λίστα που έχει ένα επιπλέον περιορισμό. Ο περιορισμός είναι ότι οι εισαγωγές

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 6: Διαχείριση Μνήμης & Δυναμικές Δομές Δεδομένων Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Δυναμικές Δομές Δεδομένων Γενικά Δυναμική Δέσμευση/Αποδέσμευση Μνήμης Δομή τύπου structure

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

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

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

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

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

Τι είναι κλάση Κλάση

Τι είναι κλάση Κλάση 35 Τι είναι κλάση Κλάση είναι μια συλλογή από μεταβλητές. Αλλιώς είναι ένα σύνολο από: δεδομένα που δηλώνουν τα χαρακτηριστικά της κλάσης (τι είναι) και συναρτήσεις που προδιαγράφουν την συμπεριφορά της

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ

ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ ΔΕΙΚΤΕΣ ΚΑΙ ΔΙΕΥΘΥΝΣΕΙΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Εισαγωγή στους δείκτες Το μοντέλο της μνήμης, σωρός και στοίβα Αναφορές Δείκτες και πίνακες Δέσμευση και αποδέσμευση μνήμης

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

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

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

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

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

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

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

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

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

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

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

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

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών ΜΟΡΥΕ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ Διαδικασιακός ή Διαδικαστικός (Procedural)

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

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

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 7: Υπερφόρτωση διμελών τελεστών Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

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

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

Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικειµενοστραφής Προγραµµατισµός Κλάσεις Αντικείµενα Ιεραρχία κλάσεων Κλάσεις. Ιδιότητες Συµπεριφορά Ιδιότητες (Μεταβλητές) Συµπεριφορά (Μέθοδοι) Κληρονοµικότητα Μέθοδοι επικάλυψης Η χρήση του

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

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

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

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

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

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23

Περιεχόμενα. Λίγα λόγια για αυτή την έκδοση... 23 Περιεχόμενα Λίγα λόγια για αυτή την έκδοση...... 23 Κεφάλαιο 1 Εισαγωγή... 25 O στόχος του βιβλίου και σε ποιους απευθύνεται... 27 Πώς να διαβάσετε αυτό το βιβλίο... 27 Εκπαίδευση από απόσταση... 29 Ιστορική

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Άδειες Χρήσης ΥΠΟΛΟΓΙΣΤΕΣ ΙI Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα. ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ Τμηματικός προγραμματισμός ονομάζεται η τεχνική σχεδίασης και ανάπτυξης των προγραμμάτων ως ένα σύνολο από απλούστερα τμήματα προγραμμάτων. Όταν ένα τμήμα προγράμματος επιτελεί ένα αυτόνομο

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

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

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

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

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

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη

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

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού

Εισαγωγή στην επιστήμη των υπολογιστών. Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού Εισαγωγή στην επιστήμη των υπολογιστών Λογισμικό Υπολογιστών Κεφάλαιο 9ο Γλώσσες Προγραμματισμού 1 Εξέλιξη Οι γλώσσες προγραμματισμού είναι σύνολα από προκαθορισμένες λέξεις οι οποίες συνδυάζονται σε προγράμματα

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

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

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