ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D.
|
|
- Ἕκτωρ Αναστασιάδης
- 8 χρόνια πριν
- Προβολές:
Transcript
1 1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 9η Ιστοσελίδα του µαθήµατος 2 ll06.htm Θα τοποθετούνται οι διαφάνειες του επόµενου µαθήµατος Επικοινωνία: dimitris@skyblue.csd.auth.gr etousido@uth.gr Περιεχόµενα 3 Πολυµορφισµός & Εικονικές συναρτήσεις (Polymorphism & Virtual functions) ιαχείριση εξαιρέσεων (Exception Handling) 1
2 Στόχοι εκµάθησης Τα βασικά των εικονικών συναρτήσεων Καθυστερηµένη σύνδεση (late binding) Υλοποίηση εικονικών συναρτήσεων Πότε χρησιµοποιούµε εικονικές συναρτήσεις Abstract κλάσεις και καθαρά εικονικές συναρτήσεις είκτες και εικονικές συναρτήσεις Συµβατότητα εκτεταµένων τύπων Downcasting και upcasting C++ κάτωαπότοκάλυµµα µε εικονικές συναρτήσεις 4 Βασικά των εικονικών συναρτήσεων 5 Πολυµορφισµός (Polymorphism) Συσχέτιση πολλών εννοιών µε µια ΜΙΑ συνάρτηση Οι εικονικές συναρτήσεις παρέχουν αυτή τη δυνατότητα Θεµελιώδης αρχή του αντικειµενοστραφούς προγραµµατισµού! Εικονικός ή Υπερβατικός (Virtual) Υπάρχει στην ουσία, αλλά όχι στην πράξη Εικονική ή υπερβατική συνάρτηση (virtual function) Μπορεί να χρησιµοποιηθεί πριν οριστεί Παράδειγµα µε Σχήµατα (1/2) 6 Ας το δούµε µέσα από ένα παράδειγµα: Κλάσεις για διάφορα είδη σχηµάτων Ορθογώνια, κύκλοι, ελλείψεις, κ.τ.λ. Κάθε σχήµα είναιένααντικείµενο διαφορετικής κλάσης εδοµένα ορθογωνίου: height, width, center point εδοµένα κύκλου: center point, radius Όλες παράγονται από µια βασική κλάση: Figure Απαιτούν τη συνάρτηση: draw() ιαφορετικές εντολές σχεδίασης για κάθε σχήµα 2
3 Παράδειγµα µε Σχήµατα (2/2) 7 Κάθε κλάση χρειάζεται διαφορετική συνάρτηση draw Μπορούµενατηνονοµάσουµε "draw" σε κάθε κλάση, έτσι: Rectangle r; Circle c; r.draw(); //Καλεί τη draw της κλάσης Rectangle c.draw(); // Καλεί τη draw της κλάσης Circle Μέχρι στιγµής δεν παρουσιάστηκε κάτι διαφορετικό από αυτά που γνωρίζουµε Παράδειγµα µε Σχήµατα: center() 8 Η γονική κλάση Figure περιέχει συναρτήσεις που εφαρµόζονται σε όλα τα figures; Θεωρήστε τη: center(): µετακινεί ένα figure στοκέντροτης οθόνης ιαγράφει το πρώτο, κατόπιν το ξανασχεδιάζει Έτσι η Figure::center() θα χρησιµοποιούσε τη συνάρτηση draw() για να ξανασχεδιάσει Επιπλοκές! Ποια συνάρτηση draw()? Ποιας κλάσης? 9 Παράδειγµα µε Σχήµατα: νέο Figure Θεωρήστε ότι ένα νέο είδος figure εµφανίζεται: Triangle class που παράγεται από την κλάση Figure Ησυνάρτησηcenter() κληρονοµείται από την κλάση Figure Θα δουλέψει για τα triangles? Χρησιµοποιεί τη draw(), η οποία είναι διαφορετική για κάθε figure! Εάν χρησιµοποιήσει τη Figure::draw() δεν θα δουλέψει για τα triangles Θέλουµε ηκληρονοµούµενη συνάρτηση center() να χρησιµοποιήσει τη συνάρτηση Triangle::draw() ΌΧΙ τη συνάρτηση Figure::draw() Αλλά η κλάση Triangle ΕΝ ΕΙΧΕ ΓΡΑΦΤΕΙ όταν γράφτηκε η Figure::center()! Η τελευταία δεν γνωρίζει triangles! 3
4 Παράδειγµα µε Σχήµατα: Virtual! 10 Ηαπάντησηείναιοιεικονικές συναρτήσεις Λένε στον compiler: εν γνωρίζω πώς υλοποιείται η συνάρτηση Περίµενε µέχρι να χρησιµοποιηθεί στο πρόγραµµα Τότε, πάρε την υλοποίηση από το αντικείµενο όπου ανήκει Αποκαλείται καθυστερηµένη σύνδεση (late binding) ή δυναµική σύνδεση (dynamic binding) Οι εικονικές συναρτήσεις υλοποιούν τον µηχανισµό τουlate binding Εικονικές συναρτήσεις: άλλο παράδειγµα 11 Πρόγραµµα record-keeping για κατάστηµα ανταλλακτικών αυτοκινήτων Κρατά τις πωλήσεις (sales) εν γνωρίζει ακόµα όλες τις πωλήσεις Πρώτα:µόνο τις τακτικές retail πωλήσεις Αργότερα: Discount sales, mail-order, κ.τ.λ. Εξαρτάται και από άλλους παράγοντες εκτός από την τιµή, φόρο 12 Εικονικές συναρτήσεις: ανταλλακτικά Το πρόγραµµαπρέπει: Να υπολογίζει τις καθηµερινές µεικτές πωλήσεις Υπολογίζει µεγαλύτερη/µικρότερη πώληση της ηµέρας Ίσως µέσηπώλησηανάµέρα Όλα προέρχονται από επιµέρους λογαριασµούς Αλλά πολλές συναρτήσεις για υπολογισµό λογαριασµών θα προστεθούν αργότερα! Όταν προστεθούν διαφορετικοί τύποι πωλήσεων! Έτσι, ησυνάρτησηπουθαυπολογίζειένα λογαριασµό θα είναι εικονική! 4
5 Ορισµός κλάσης Sale 13 class Sale public: Sale(); Sale( double theprice ); double getprice( void ) const; virtual double bill( void ) const; double savings( const Sale& other ) const; ; private: double price; Μέλη: savings και τελεστής < 14 double Sale::savings(const Sale& other) const return (bill() other.bill()); bool operator <(const Sale& first, const Sale& second) return (first.bill() < second.bill()); Παρατηρήστε ότι ΚΑΙ ΟΙ ΥΟ χρησιµοποιούν τη συνάρτηση-µέλος bill()! Κλάση Sale 15 Αναπαριστά πωλήσεις ενός αντικειµένου χωρίς επιπρόσθετες εκπτώσεις ή επιβαρύνσεις Παρατηρήστε τη δεσµευµένη λέξη "virtual" στη δήλωση της συνάρτησης-µέλος bill Επίδραση: αργότερα, οι παραγόµενες από τη Sale κλάσεις µπορούν να ορίσουν τις ΙΚΕΣ ΤΟΥΣ εκδόσεις της συνάρτησης bill Οι άλλες συναρτήσεις-µέλη της Sale θα χρησιµοποιήσουν εκείνη την έκδοση της bill, ανάλογα µετοαντικείµενο της παραγόµενης κλάσης! εν θα χρησιµοποιήσουν αυτόµατα την έκδοση της κλάσης Sale! 5
6 Ορισµός παραγόµενης κλάσης DiscountSale class DiscountSale : public Sale public: DiscountSale(); DiscountSale(double theprice,double thediscount); double getdiscount( void ) const; void setdiscount( double newdiscount ); double bill( void ) const; 16 ; private: double discount; Υλοποίηση της συνάρτησης bill() της κλάσης DiscountSale (1/2) 17 double DiscountSale::bill( void ) const double fraction = discount/100; return (1 fraction)*getprice(); Ο προσδιοριστής "virtual" δεν µπαίνει στην υλοποίηση της συνάρτησης Γίνεται αυτόµατα εικονική και στην παραγόµενη κλάση Ούτε η δήλωση (στο interface) απαιτείται να έχει τη λέξη "virtual" (αλλά συνήθως τη βάζουµε) Υλοποίηση της συνάρτησης bill() της κλάσης DiscountSale (2/2) 18 Εικονική συνάρτηση σε βασική κλάση: Γίνεται αυτόµατα εικονική στην παραγόµενη κλάση Στη δήλωση της παραγόµενης κλάσης (στο interface) εν χρειάζεται να υπάρχει η δεσµευµένη λέξη "virtual" Αλλά συνήθως τη βάζουµε, για να διευκολύνουµε την αναγνωσιµότητα 6
7 Η παραγόµενη κλάση DiscountSale 19 Στην κλάση DiscountSale, ησυνάρτηση-µέλος bill() υλοποιείται διαφορετικά από ότι στην κλάση Sale Εξειδικευµένα για "discounts" Οι συναρτήσεις-µέλη savings και "<" Θα χρησιµοποιήσουν αυτό τον ορισµό τηςbill() για όλατααντικείµενα της κλάσης DiscountSale! Αντί να χρησιµοποιήσουν την εξ ορισµού έκδοση που υπάρχει στην κλάση Sales! Virtual: Ισχυρός µηχανισµός! 20 Θυµηθείτε ότι η κλάση Sale γράφτηκε πολύ πριν την παραγόµενη κλάση DiscountSale Οι συναρτήσεις-µέλη savings και "<" µεταγλωττίστηκαν πριν ακόµα συλλάβουµετηνιδέα της κλάσης DiscountSale Πάραυτα, µια κλήση όπως η: DiscountSale d1, d2; d1.savings(d2); Στην savings() ηκλήσηστηνbill() γνωρίζει ότι πρέπει να χρησιµοποιήσει τον ορισµό τηςbill() που υπάρχει στην κλάση DiscountSale Ισχύς! Virtual: Πώς? 21 Η συγγραφή C++ προγραµµάτων: Υποθέτουµε ότι γίνεται µε µαγικό τρόπο! Αλλά η εξήγηση αφορά την καθυστερηµένη σύνδεση (late binding) Οι εικονικές συναρτήσεις υλοποιούν τον µηχανισµό του late binding Λένε στον compiler να περιµένει µέχρι η συνάρτηση να χρησιµοποιηθεί στο πρόγραµµα Αποφασίζει ποιον ορισµό ναχρησιµοποιήσει µεβάση το καλούν αντικείµενο Πολύ σηµαντική αρχή του OOP! 7
8 Υπέρβαση (overriding) 22 Οορισµός µιας εικονικής συνάρτησης αλλάζει σε µια παραγόµενη κλάση Λέµε ότι έχει γίνει υπέρβασή της Παρόµοιο µε τονεπαν-ορισµό Θυµηθείτε: για τις τυπικές συναρτήσεις Έτσι: Αλλαγή εικονικών συναρτήσεων: overridden Αλλαγή µη-εικονικών συναρτήσεων: redefined 23 Εικονικές συναρτήσεις:γιατί όχι όλες? Καθαρή υπεροχή των εικονικών συναρτήσεων, όπως έχουµε δει Ένα, αλλά σηµαντικό, µειονέκτηµα: overhead! Χρησιµοποιεί περισσότερο αποθηκευτικό χώρο Late binding είναι µια διαδικασία "on the fly", έτσι το πρόγραµµα εκτελείταιπιοαργά Έτσι, εάν οι εικονικές συναρτήσεις δεν χρειάζονται πραγµατικά, δενθαπρέπειναχρησιµοποιούνται Καθαρά εικονικές συναρτήσεις (pure virtual functions) 24 Στηβασικήκλάση, ίσως να µην έχει νόηµα να υπάρχει ορισµός για κάποιες ή όλες από τις συναρτήσεις-µέλη της! Ο σκοπός της είναι απλά για να παράγονται άλλες κλάσεις από αυτή Θυµηθείτε την κλάση Figure Όλα τα figures είναι αντικείµενα παραγόµενων κλάσεων Rectangles, circles, triangles, κ.τ.λ. ΗκλάσηFigure δεν γνωρίζει πώς να σχεδιάσει (draw)! Την κάνουµε pure virtual function: virtual void draw() = 0; 8
9 Abstract βασικές κλάσεις 25 Οι pure virtual functions δεν χρειάζονται ορισµό Εξαναγκάζονται όλες οι παραγόµενες κλάσεις να ορίσουν τις δικές τους εκδόσεις των συναρτήσεων Μια κλάση που έχει µια ή περισσότερες pure virtual functions είναι µια: abstract base class Μπορεί να χρησιµοποιηθεί µόνο ως βασική κλάση εν µπορούν να δηµιουργηθούν αντικείµενα από αυτή Αφού δεν έχει πλήρεις ορισµούς όλων των µελών της! Εάν µια παραγόµενη κλάση δεν µπορέσει να ορίσει όλα τα pure που κληρονόµησε, τότε: Είναι και αυτή µια abstract base class Συµβατότητα εκτεταµένων τύπων 26 Έστω ότι: ηκλάσηderived παράγεται από τη Base Τα αντικείµενα Derived µπορούν να ανατεθούν σε αντικείµενα τύπου Base Αλλά ΌΧΙ ανάποδα! Θεωρήστε το προηγούµενο παράδειγµα: Ένα DiscountSale Είναι ένα Sale, αλλά το αντίστροφο δεν είναι αληθές 27 Παράδ. Συµβατότητα εκτεταµένων τύπων class Pet public: string name; virtual void print() const; ; class Dog : public Pet public: string breed; virtual void print() const; ; 9
10 Κλάσεις Pet και Dog 28 Έστωσαν τώρα οι δηλώσεις: Dog vdog; Pet vpet; Παρατηρήστε ότι οι µεταβλητές-µέλη name και breed είναι public Για χάρην του παραδείγµατος Χρήση των κλάσεων Pet και Dog 29 Ο,τιδήποτε είναι dog Eίναι ένα pet: vdog.name = "Tiny"; vdog.breed = "Great Dane"; vpet = vdog; Αυτές οι αναθέσεις είναι επιτρεπτές Μπορούµενααναθέσουµε τιµές σε τύπογονέα, αλλά όχι το αντίστροφο Ένα pet εν είναι ένα dog (όχι αναγκαστικά) Το πρόβληµα Slicing 30 Παρατηρήστε ότι η τιµή που ανατίθεται στο vpet χάνει το πεδίο της breed! cout << vpet.breed; Παράγει ERROR µήνυµα! Αποκαλείται Πρόβληµα Slicing Ίσως φαίνεται αποδεκτό Το dog µετακινήθηκε στη µεταβλητή Pet, και συνεπώς θα έπρεπε να αντιµετωπίζεται ως ένα Pet Και εποµένως δεν θα πρέπει να έχει τις ιδιότητες ενός "dog" Προκαλεί ενδιαφέρουσα φιλοσοφική συζήτηση 10
11 ιορθώνοντας το Πρόβληµα Slicing 31 Στη C++, το πρόβληµα slicing είναι µπελάς Θα θέλαµενααναφερόµαστε στο πεδίο breed, παρόλο που αντιµετωπίζεται ως ένα Pet Μπορούµε νατοκάνουµε αυτόµε τους δείκτες σε δυναµικές µεταβλητές Παράδειγµαπροβλήµατος Slicing 32 Pet *ppet; Dog *pdog; pdog = new Dog; pdog->name = "Tiny"; pdog->breed = "Great Dane"; ppet = pdog; εν µπορούµεναπροσπελάσουµε τοπεδίο breed του αντικειµένου που δείχνεται από τον δείκτη ppet: cout << ppet->breed; //ILLEGAL! Παράδειγµαπροβλήµατος Slicing 33 Πρέπει να χρησιµοποιήσουµε την εικονική συνάρτηση-µέλος: ppet->print(); Καλεί την συνάρτηση-µέλος print της κλάσης Dog! Επειδή είναι virtual Η C++ περιµένει ναδεισετιείδους αντικείµενο δείχνει ο δείκτης ppet πριν κάνει τη σύνδεση µε µια συγκεκριµένη κλήση συνάρτησης 11
12 Εικονικοί Destructors 34 Θυµηθείτε: οι destructors πρέπει να αποδεσµεύσουν τη δυναµικά δεσµευµένη µνήµη Θεωρήστε τη δήλωση: Base *pbase = new Derived; delete pbase; Θα καλέσει τον destructor της βασικής κλάσης παρόλο που δείχνει σε αντικείµενο κλάσης Derived! Εάν κάνουµετονdestructor virtual τότε λύνουµετο πρόβληµα! Καλή πολιτική για όλους τους destructors να είναι εικονικοί Προσαρµογή (casting) 35 Θεωρήστε το: Pet vpet; Dog vdog; vdog = static_cast<dog>(vpet); //ILLEGAL! εν µπορούµενακάνουµε cast ένα pet ώστε να γίνει ένα dog, αλλά: vpet = vdog; // Legal! vpet = static_cast<pet>(vdog); //Also legal! Το upcasting είναι OK Από τύπο-απογόνου σε τύπο-προγόνου Downcasting 36 Το downcasting είναι επικίνδυνο! Κάνοντας casting απότύποπρογόνουσετύποαπογόνου Υποθέτει ότι προστίθεται πληροφορία Μπορεί να γίνει µε dynamic_cast: Pet *ppet; ppet = new Dog; Dog *pdog = dynamic_cast<dog*>(ppet); Έγκυρο, αλλά επικίνδυνο! Σπάνια εφαρµόζουµε downcasting εξαιτίας των παγίδων Πρέπει να προσέχουµε την πληροφορία που προστίθεται Όλες οι συναρτήσεις-µέλη πρέπει να είναι εικονικές 12
13 Εσωτερική λειτουργία των Εικονικών Συναρτήσεων Χρειάζεται απλώς να ξέρουµε πώςνατις χρησιµοποιήσουµε! Αρχή της Απόκρυψης Πληροφορίας Πίνακας Εικονικών Συναρτήσεων (Virtual function table) Τον δηµιουργεί ο compiler Έχει δείκτες για κάθε εικονική συνάρτηση-µέλος είχνει στη θέση του σωστού κώδικα για τη συνάρτηση αυτή Τα αντικείµενα αυτών των κλάσεων έχουν επίσης ένα δείκτη είχνει στον Πίνακα Εικονικών Συναρτήσεων 37 Περίληψη 1 38 Ηκαθυστερηµένη σύνδεση αναβάλλει την απόφαση για το ποια συνάρτηση-µέλος θα κληθεί µέχρι την εκτέλεση του προγράµµατος Στη C++, οι εικονικές συναρτήσεις χρησιµοποιούν καθυστερηµένη σύνδεση Οι καθαρά εικονικές συναρτήσεις δεν έχουν ορισµό Οι κλάσεις µε µια τουλάχιστον εικονική συνάρτηση είναι/λέγονται abstract εν µπορούµε ναδηµιουργήσουµεαντικείµενα µιας abstract κλάσης Χρησιµοποιούνται µόνο ως βασική κλάση για να παραχθούν άλλες Περίληψη 2 39 Αντικείµενα µιας παραγόµενες κλάσης µπορούν να ανατεθούν σε αντικείµενα µιας βασικήςτουςκλάσης Τα χαρακτηριστικά της παραγόµενης κλάσης χάνονται; Πρόβληµα slicing Ανάθεση δεικτών και δυναµικά αντικείµενα Επιτρέπουν διόρθωση του προβλήµατος slicing Κάνουµε όλους τους destructors εικονικούς Καλή προγραµµατιστική τακτική Εγγυάται σωστή αποδέσµευση της µνήµης 13
14 Περιεχόµενα 40 Πολυµορφισµός & Εικονικές συναρτήσεις (Polymorphism & Virtual functions) ιαχείριση εξαιρέσεων (Exception Handling) Στόχοι εκµάθησης 41 Τα βασικά της ιαχείρισης Εξαιρέσεων (exception handling) Ορίζοντας κλάσεις εξαιρέσεων Πολλαπλά throws και catches Καθορισµοί για exception Τεχνικές προγραµµατισµού για ιαχείριση Εξαιρέσεων Πότε να στέλνουµε exceptions Ιεραρχίες κλάσεων Exceptions Εισαγωγικά 42 Τυπική προσέγγιση στην ανάπτυξη: Γράφουµεπρογράµµαταυποθέτονταςότιταπράγµατα θα πάνε όπως τα σχεδιάσαµε Φτιάχνουµε τον πυρήνα της λειτουργικότητας Κατόπιν, λαµβάνουµε µέριµνα για εξαιρετικές περιπτώσεις Λειτουργίες exception-handling στη C++ Χειρισµός εξαιρετικών καταστάσεων Μηχανισµός σηµατοδοτεί ασυνήθη κατάσταση Άλλο µέρος του κώδικα χειρίζεται την exception 14
15 Τα βασικά του exception-handling 43 Υπονοείται ότι πρέπει να χρησιµοποιούνται σπάνια Σε ειδικές περιπτώσεις ύσκολα διδάσκονται τόσο µεγάλα παραδείγµατα Προσέγγιση: Απλά παιδικά παραδείγµατα, στα οποία φυσιολογικά δεν θα χρησιµοποιούνταν exception-handling Να έχουµε στοµυαλό µας τη µεγάλη εικόνα Απλό παράδειγµα 44 Φανταστείτε: σπάνια ξεµένουµε από γάλα: cout << "Enter number of donuts:"; cin >> donuts; cout << "Enter number of glasses of milk:"; cin >> milk dpg = donuts/static_cast<double>(milk); cout << donuts << "donuts.\n"; << milk << "glasses of milk.\n"; << "You have " << dpg << "donuts for each glass of milk.\n"; Ο βασικός κώδικας υποθέτει ότι δεν θα ξεµείνουµε από γάλα Απλό παράδειγµα if-else 45 Παρατηρήστε: Εάν τελειώσει το γάλα διαίρεση µε τοµηδέν! Το πρόγραµµαθαπρέπειναλαµβάνει µέριµνα για την περίπτωση που ξεµείνουµε απόγάλα Μπορούµεαπλάναχρησιµοποιήσουµε τηδοµή if-else: if (milk <= 0) cout << "Go buy some milk!\n"; else Παρατηρήστε: όχι exception-handling εδώ 15
16 Παράδειγµα Exception Handling 46 Συζήτηση του παραδείγµατος 47 Κώδικας µεταξύ των δεσµευµένων λέξεων try και catch Ίδιος κώδικας όπως και στην κανονική έκδοση, εκτός απότοότιηδήλωσηif είναι απλούστερη: if( milk <= 0 ) throw donuts; Καθαρότερος κώδικας Εάν "no milk" κάνε κάτι κατ εξαίρεση Αυτό το κάτι κατ εξαίρεση παρέχεται µετά από τη δεσµευµένη λέξη catch Συζήτηση του παραδείγµατος 48 Το µπλοκ try Χειρίζεται την κανονική κατάσταση Το µπλοκ catch Χειρίζεται την κατ εξαίρεση κατάσταση Παρέχει διαχωρισµό του κανονικού από τον κατ εξαίρεση κώδικα Βέβαια για το απλό αυτό παράδειγµα δεν είναι κάτι σπουδαίο, αλλά στη γενική περίπτωση είναι σηµαντικός µηχανισµός 16
17 Το µπλοκ try 49 Ηβασικήµέθοδος της διαχείρισης εξαιρέσεων είναι το try-throw-catch Το µπλοκ try: try Some_Code; Περιέχει τον κώδικα για τον βασικό αλγόριθµο, όταν όλα πηγαίνουν καλά throw 50 Μέσα στο µπλοκ try, όταν συµβεί κάτι ασυνήθιστο: try Code_To_Try if (exceptional_happened) throw donuts; More_Code Ηδεσµευµένη λέξη throw ακολουθείται από τον τύπο της εξαίρεσης Αποκαλείται "throwing an exception" Το µπλοκ catch 51 Όταν κάτι is thrown πηγαίνει κάπου Στη C++, η ροή του ελέγχου πηγαίνει από το try-block στο catch-block Έξοδος από το try-block και ο έλεγχος µεταφέρεται στο catch-block Η εκτέλεση του catch block αποκαλείται called "catching the exception" Η διαχείριση των εξαιρέσεωνς πρέπει να γίνεται σε κάποιο catch block 17
18 Περισσότερα για το catch-block 52 Θυµηθείτε: catch( int e ) cout << e << " donuts, and no milk!\n"; << " Go buy some milk.\n"; Μοιάζει µεορισµό συνάρτησηςµε παράµετρο int! εν είναι συνάρτηση, αλλά λειτουργεί παρόµοια Το throw είναι όπως η κλήση συνάρτησης Ηπαράµετρος στο catch-block 53 Θυµηθείτε: catch(int e) Το "e" αποκαλείται παράµετρος του catch-block Κάθε catch block µπορείναέχειτοπολυµια παράµετρο Κάνει δυο πράγµατα: 1. Το όνοµα του τύπου καθορίζει τo είδος που µπορεί να πιάσει το catch-block 2. Παρέχει ένα όνοµα γιατηντιµήπου συλλαµβάνειται, ώστε να µπορούµενακάνουµε διάφορα πράγµατα µετηντιµήαυτή Ορίζοντας κλάσεις από exceptions 54 Ηδήλωσηthrow µπορεί να πετάξει τιµές οποιουδήποτε τύπου Κλάση exception Περιέχει αντικείµενα µεπληροφορίαπουis thrown Μπορεί να έχει διαφορετικούς τύπους αναγνωρίζοντας κάθε πιθανή κατάσταση εξαίρεσης Παρόλ αυτά είναι µια κλάση Ονοµάζεται "exception class" εξαιτίας του πώς χρησιµοποιείται 18
19 ΠαράδειγµακλάσηςException 55 Θεωρήστε το: class NoMilk public: NoMilk() NoMilk( int howmany ) : count( howmany ) int getcount() const return count; private: int count; ; throw NoMilk(donuts); Ενεργοποεί τον constructor της κλάσης of NoMilk Πολλαπλά throws και catches 56 Το try-block τυπικά µπορεί να πετάξει οποιοδήποτε αριθµό exceptions, διαφορετικών τύπων Φυσικά, πετάει µόνο µια κάθε φορά Αφού η δήλωση throw τερµατίζει το try-block Αλλά διαφορετικοί τύποι µπορεί να πεταχτούν Κάθε catch block πιάνει µόνο έναν τύπο Είναι σύνηθες να τοποθετούµε πολλά catch-blocks µετά από κάθε try-block Για να πιάσουµε όλεςτιςπιθανέςexceptions που µπορεί να πεταχτούν Catching 57 Ησειράτωνcatch blocks είναι σηµαντική Τα catch-blocks δοκιµάζονται µετησειρά εµφάνισής τους µετά το try-block Το πρώτο ταίριασµα είναι αυτό που χειρίζεται την εξαίρεση! Θεωρήστε το: catch ( ) Αποκαλείται "catch-all", "default" exception handler Πιάνει οποιαδήποτε εξαίρεση Βεβαιωθείτε ότι το catch-all τοποθετείται ΜΕΤΑ από τις πιο ειδικές exceptions! Ή οι άλλες δεν θα πιαστούν ποτέ! 19
20 Τετριµµένη Exception κλάση 58 Θεωρήστε το: class DivideByZero εν έχει µεταβλητές-µέλη εν έχει συναρτήσεις-µέλη (εκτός από τον default constructor) Τίποτε άλλο, εκτός από το όνοµάτης Όπου δεν χρειάζεται να κάνουµεκάτιµετηντιµήτης εξαίρεσης Χρησιµοποιείται απλά για να πιάνεται στο catch block Μπορούµε να παραλείπουµετηνπαράµετρο του catch block 59 Throwing exception από συνάρτηση Μια συνάρτηση µπορεί να πετάξει µια exception Οι καλούντες µπορεί να έχουν διαφορετικές αντιδράσεις Μερικές µπορεί να επιθυµούν τερµατισµό του προγράµµατος Μερικές µπορεί να συνεχίζουν, ή να κάνουν κάτι άλλο Είναι λογικό να πιάνουµε µια exception στην καλούσα συνάρτηση Τοποθετούµετονκώδικαµέσα σε try-block Χειριζόµαστε την exception στο catch-block µετά το try-block 60 Παράδειγ. exception από συνάρτηση Θεωρήστε το: try quotient = safedivide(num, den); catch (DivideByZero) ΗσυνάρτησηsafeDivide() πετάει µια exception DividebyZero Την οποία χειρίζεται το catch-block της καλούσας συνάρτησης 20
21 Καθορισµός των exception 61 Οι συναρτήσεις που δεν πιάνουν exceptions Θα πρέπει να προειδοποιούν τους χρήστες τους ότι θα µπορούσαν να πετάξουν µια exception Αλλάδεντηνπιάνουνοιίδιες! Θα πρέπει να απαριθµούµε αυτέςτιςexceptions: double safedivide(int top, int bottom) throw (DividebyZero); Αποκαλείται "exception specification" ή "throw list" Θα πρέπει να εµφανίζεται στη δήλωση και στον ορισµό Εάν δεν υπάρχει throw list όλοι οι τύποι Λίστα των throw 62 Εάν µια συνάρτηση πετάξει µια exception την οποία δεν καθορίζει στη λίστα των throws: εν υπάρχει λάθος (compile ή run-time) Καλείται αυτόµατα η συνάρτηση unexpected() Εξ ορισµού συµπεριφορά είναι το τερµατισµός Μπορούµενατροποποιήσουµετησυµπεριφορά Το ίδιο αποτέλεσµα εάνδενβρεθείcatchblock Περίληψητηςλίσταςτωνthrow 63 void somefunction() throw(dividebyzero, OtherException); //Exception types DividebyZero or OtherException //treated normally. All others invoke unexpected() void somefunction() throw (); //Empty exception list, all exceptions invoke //unexpected() void somefunction(); //All exceptions of all types treated normally 21
22 Παραγόµενες κλάσεις 64 Θυµηθείτε: τα αντικείµενα µιας παραγόµενης κλάσης είναι επίσης αντικείµενα της βασικής κλάσης Θεωρήστε το: ηκλάσηd παράγεται από την κλάση B Εάν η B είναι στη λίστα των throws Αντικείµενα της κλάσης D που πετάγονται ως exceptions, θα αντιµετωπίζονται κανονικά, αφού είναι επίσης αντικείµενα της κλάσης B Σηµειώστε: δεν γίνεται αυτόµατο type casting: Το να πεταχτεί double δεν είναι το ίδιο µετονα πεταχτεί ένας int Ησυνάρτησηunexpected() 65 Εξ ορισµού ενέργεια: τερµατισµός του προγράµµατος εν χρειάζονται ειδικά includes ή directives using Συνήθως δεν χρειάζεται να την ξαναορίσουµε Αλλά, έχουµεαυτήτηδυνατότητα: Χρησιµοποιούµετηset_unexpected() Οι λεπτοµέρειες είναι πέρα από το αντικείµενο αυτού του µαθήµατος Πότε πετάµε exceptions 66 Σύνηθες να διαχωρίζουµε throws και catches Σε διαφορετικές συναρτήσεις Throwing συνάρτηση: Απαριθµήστε τις exceptions στην λίστα των throws Στηδήλωσηκαιστονορισµό Catching συνάρτηση: ιαφορετική συνάρτηση, ίσως σε διαφορετικό αρχείο 22
23 Προτιµώµενη throw-catch: throw 67 void functiona() throw (MyException) throw MyException(arg); Η συνάρτηση πετάει exception όπως δήλωσε Προτιµώµενη throw-catch: catch Τότε κάποια άλλη συνάρτηση: void functionb( void ) try functiona(); catch( MyException e ) // Handle exception 68 Exceptions που δεν πιάστηκαν 69 Πρέπει να πιάνουµε κάθεexception Εάν όχι το πρόγραµµατερµατίζεται Καλείται η συνάρτηση terminate() Θυµηθείτε για τις συναρτήσεις Εάν η exception δεν υπάρχει στην λίστα των throw: καλείται η unexpected() Με τη σειρά της καλεί την terminate() Έτσι, έχουµε τοίδιοαποτέλεσµα 23
24 Κατάχρηση των exceptions 70 Οι exceptions αλλάζουν τη ροή του ελέγχου Χάνεται οέλεγχοςτηςροής Θα πρέπει να χρησιµοποιούνται µε µέτρο Καλός κανόνας: Εάν επιθυµούµε µια "throw": εξετάστε το ενδεχόµενο να γράψετε τον κώδικα χωρίς αυτή Εάν υπάρχει εναλλακτική ακολουθήστε τη Ιεραρχίες κλάσεων exceptions 71 Είναι χρήσιµες; Θεωρήστε το: ΗκλάσηDivideByZero παράγεται από τη: κλάση exception ArithmeticError Όλα τα catch-blocks για την ArithmeticError θα πιάσουν και την DivideByZero Εάν η ArithmeticError είναι δηλωµένη στην λίστα των throws, τότε η DividebyZero θα εξεταστεί εκεί Έλεγχος διαθέσιµης µνήµης Ο τελεστής new πετάει exception bad_alloc εάν δεν υπάρχει αρκετή µνήµη: try NodePtr pointer = new Node; catch (bad_alloc) cout << "Ran out of memory!"; // Can do other things here as well Στη βιβλιοθήκη <new>, και namespace std 72 24
25 Ξαναπετώντας µια exception 73 Είναιέγκυροναπετάειοκώδικαςµια exception ΜΕΣΑ σε ένα catch-block! Μόνο σε σπάνιες περιπτώσεις Την πετάει σε κάποιο catch-block υψηλότερα στην αλυσίδα εκτέλεσης Μπορούµε να ξαναπετάξουµε την ίδια ή νέα exception rethrow; Throws same exception again throw newexceptionup; Throws new exception to next catch-block 25
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 10η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα
ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language)
1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 9η: Ερωτήσεις 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cp
Η Γλώσσα Προγραµµατισµού 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 Θα
Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιαχείριση Εξαιρέσεων. Εισαγωγή στη ιαχείριση Εξαιρέσεων
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 6η: 06/04/2006 1 ιαχείριση
Η Γλώσσα Προγραµµατισµού 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 Θα
ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D.
1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 4η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall06.htm
Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πίνακες Αντικειμένων Όπως στην C μπορούμε να έχουμε πίνακες από
Η Γλώσσα Προγραµµατισµού 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 Θα
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 7: C++ TEMPLATES, ΥΠΕΡΦΟΡΤΩΣΗ ΤΕΛΕΣΤΩΝ, ΕΞΑΙΡΕΣΕΙΣ Χειρισμός Εξαιρέσεων ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ
ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language)
1 ΗΓλώσσαΠρογραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Ελένη Τουσίδου, Ph.D. Χειµώνας 2006 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall06.htm
Η Γλώσσα Προγραµµατισµού 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 Θα
Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 6η: 06/04/2006 1 ιαχείριση
Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Εισαγωγή στην C++ Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 5η Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα τοποθετούνται
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε
ΠΟΛΥΜΟΡΦΙΣΜΟΣ. 4.1 Κληρονομικότητα και Αρχή της Υποκατάστασης
ΠΟΛΥΜΟΡΦΙΣΜΟΣ Λόγω της θεμελιώδους σημασίας της έννοιας του πολυμορφισμού (polymorphism) στην αντικειμενοστρεφή σχεδίαση, κρίνεται σκόπιμο στο σημείο αυτό του βιβλίου να αναλυθεί εκτενέστερα. Ο πολυμορφισμός
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 6: C++ ΚΛΑΣΕΙΣ, ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ, ΠΟΛΥΜΟΡΦΙΣΜΟΣ Πολυμορφισμός ΔΙΔΑΣΚΟΝΤΕΣ:Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 6η: Ερωτήσεις 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm
Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 16-17: Πολυμορφισμός (Polymorphism) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: -Υπερφόρτωση (Overloading), Μεθόδων (Method Overloading), Τελεστών (Operator Overloading (C++, C#))
Προγραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 17η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Προσθήκη ελέγχου ορίων σε πίνακες χρησιμοποιώντας σχεδιότυπα τάξεων
Χειρισµός Σφαλµάτων. Γρηγόρης Τσουµάκας. Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης. Έκδοση:
Χειρισµός Σφαλµάτων Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Έκδοση: 2010.12.06 Σφάλµατα, Σφάλµατα, Σφάλµατα 2 εν υπάρχουν προγράµµατα χωρίς λογικά λάθη Υλοποίηση που
Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and
Σύνθεση και Κληρονομικότητα
Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση
Αντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 11: Χειρισμός Σφαλμάτων Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό
υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 είκτες
υναµική διαχείριση µνήµης στη C++ Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: είκτες στη C++ Οι τελεστές new και delete Destructors Ορισµός τελεστών κλάσεων Ο δείκτης this ΕΠΛ 132 Αρχές Προγραµµατισµού
Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#
Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct
Κλάσεις και Αντικείµενα
Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ
Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 9 : ΕΞΑΙΡΕΣΕΙΣ ΚΑΙ Ο ΧΕΙΡΙΣΜΟΣ ΤΟΥΣ EXCEPTIONS & EXCEPTION HANDLING Εξαιρέσεις (Exceptions) Γνωμικό της Μηχανικής Λογισμικού: το 80% της δουλειάς των μηχανικών
Σύνθεση και Κληρονομικότητα
Σύνθεση και Κληρονομικότητα Σύνθεση (composition) Κληρονομικότητα (inheritance) Υπερφόρτωση κληρονομημένων μελών Εικονικές συναρτήσεις και Πολυμορφισμός Αφηρημένες (abstract) βασικές κλάσεις 1 Σύνθεση
Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων
Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων Διαχείριση λαθών Εξαιρέσεις Δημιουργία Ανίχνευση Διαχείριση Βασικοί τύποι εξαιρέσεων Δημιουργία τύπων εξαίρεσης 2 Αντιμετώπιση λαθών Υπάρχουν λάθη χρόνου
Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack
Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2
Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 5η: 29/03/2006 & 30/03/2006
Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 7η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Αλφαριθµητικά Κλάση string
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 7η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα
Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1
Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2
Υπερφόρτωση τελεστών
Υπερφόρτωση τελεστών 19 Νοεμβρίου 2012 1 Γενικά Στα προηγούμενα είδαμε ότι ορίζοντας μία κλάση, ορίζουμε ένα νέο τύπο τον οποίο μπορούμε να χρησιμοποιήσουμε για να δηλώσουμε αντικείμενα αυτής της νέας
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα
Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Πίνακες.
1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 3η Ιστοσελίδα του µαθήµατος 2 http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα
Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 3.1,3.3-3.4: Συναρτήσεις I ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 11-1 Μη- οµηµένος Προγραµµατισµός Το πρόγραµµα στα αριστερά δεν είναι Αρθρωτό (δεν έχει σωστή δοµή). Όλη η λειτουργικότητα
Κλάσεις και αντικείμενα #include <iostream.h<
Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void
Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά
Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object
Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά
Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο
Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές
6. Εξαιρέσεις στη γλώσσα Java
6. Εξαιρέσεις στη γλώσσα Java Με το τέλος αυτού του κεφαλαίου θα μπορείτε: Να ορίζετε εξαιρέσεις Να εξηγείτε γιατί είναι σημαντικός ο χειρισμός των εξαιρέσεων Να γράφετε κώδικα για να συλλαμβάνετε εξαιρέσεις
Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. Συλλογές και Επαναλήπτες. Συλλογές - Collections
Προγραµµατισµός ΙΙ Ηγλώσσααντικειµενοστραφούς προγραµµατισµού Java ιδάσκων ηµήτριος Κατσαρός, Ph.D. @ Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας ιάλεξη 14η: 31/08/2006 1 Συλλογές
2.1 Αντικειµενοστρεφής προγραµµατισµός
2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες
Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6
Ανασκόπηση Μια εφαρµογή Java είναι ένα σύνολο από συνεργαζόµενες κλάσεις Εβδοµάδα 2: Αντικείµενα, Κλάσεις και Μέθοδοι Εισαγωγή στον Προγραµµατισµό,,, Slide 1 Εισαγωγή στον Προγραµµατισµό,,, Slide 2 Ανασκόπηση:
Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT
= Αντικειμενοστραφείς Γλώσσες Προγραμματισμού Ιωάννης Παπαδόπουλος Τμήμα Φυσικής, Πανεπιστήμιο Ιωαννίνων Δεκέμβριος 2018 1/18 = 2/18 = 1 αντικειμένων Μέθοδοι αντιγράφου (copy constructor) Κατασκευή μέσω
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA
Abstract classes, Interfaces ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Αφαιρέσεις στη Java Abstract μέθοδοι και abstract κλάσεις Interfaces (=διασυνδέσεις, διεπαφές) Instanceof Παραδείγματα κώδικα Αφηρημένες
ΑΠΛΗ ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ Μηχανισµός υλοποίησης των σχέσεων γενίκευσης/εξειδίκευσης µεταξύ κλάσεων Η σχέση εξειδίκευσης «υποκλάση-της» (subclass-of)είναι γνωστή σαν σχέση «είναι ένα» (isa) ή «είναι ένα είδος» (ako:
public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);
Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας
ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 10: Exceptions handling (Χειρισμός εξαιρέσεων)
ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 10: Exceptions handling (Χειρισμός εξαιρέσεων) Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 10 Exceptions handling (Χειρισμός εξαιρέσεων)
Αντικειµενοστρεφής Προγραµµατισµός
16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη
Εξαιρέσεις. try, catch, finally, throw, throws
Εξαιρέσεις try, catch, finally, throw, throws Εξαιρέσεις Πολλές φορές όταν προγραµµατίζουµε σε κάποια γλώσσα προγραµµατισµού συµβαίνουν διάφορα σφάλµατα που οφείλονται είτε σε διάφορες αιτίες όπως σε λάθη
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κληρονομικότητα Downcasting Πολυμορφισμός Late Binding
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Downcasting Πολυμορφισμός Late Binding tostring και equals Είπαμε ότι η Java για κάθε αντικείμενο «περιμένει» να δει τις μεθόδους tostring και
Αναφορές, είκτες και Αλφαριθμητικά
Αναφορές, είκτες και Αλφαριθμητικά Ο τελεστής αναφοροποίησης Αναφορές είκτες Πίνακες και δείκτες Ο τελεστής new και delete υναμικοί πίνακες είκτες προς συναρτήσεις Αλφαριθμητικά της C Πίνακες Αλφαριθμητικών
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 6: Κατανομή και Δυναμική Διαχείριση Μνήμης, τελεστές new και delete, υπερφόρτωση μονομελών τελεστών Το περιεχόμενο
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (
Πληροφορική 2. Γλώσσες Προγραμματισμού
Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση
Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods
(Object Oriented Programming) Υπερφόρτωση (Overloading) Υπέρβαση (Overriding) - Upcasting Downcasting Final classes, methods PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε
1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι
1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της
2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008
Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει
- Το πρόγραµµα σας δίνει τα αναµενόµενα αποτελέσµατα.
Α.Μ. ΒΑΘΜΟΣ ΣΧΟΛΙΑ 1349 FAIL Δεν ελήφθη άσκηση 1482 1556 1559 1562 1563 1565 1566 FAIL - Στην initialize πρέπει να κάνετε έλεγχο αν η malloc αποτυγχάνει για κάθε κλήση της, άρα και για δέσµευση χώρου για
ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ
ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο
Δομές Δεδομένων & Αλγόριθμοι
Ουρές Ουρές Περίληψη Η ΟυράΑΔΤ Υλοποίηση με κυκλικό πίνακα Αυξανόμενη Ουρά βασισμένη σε πίνακα Interface ουράς στην C++ Η Ουρά ADT Η ΑΔΤ Ουρά αποθηκεύει αυθαίρετα αντικείμενα Οι εισαγωγές και διαγραφές
ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός
ΜΑΘΗΜΑ: Αντικειμενοστρεφής Προγραμματισμός ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης CreativeCommons.
Αντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java
Εισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα
12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ. υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string
12. ΑΛΦΑΡΙΘΜΗΤΙΚΑ υο είδη αλφαριθµητικών Τα αλφαριθµητικά της C πίνακες τύπου char Ta αντικείµενα της κλάσης string Aλφαριθµητικά της C int main() const int max=80; char str[max); //κάθε char δεσµεύει
Αντικειμενοστραφής Προγραμματισμός
Κλάσεις Αντικειμενοστραφής Προγραμματισμός Κλάσεις-Αντικείμενα Ένα παράδειγμα Συναρτήσεις κατασκευής (Constructors) Συνάρτηση καταστροφής (Destructor) Συναρτήσεις πρόσβασης (Access Functions) Συνάρτηση
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο
ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ
ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:
Οντοκεντρικός Προγραμματισμός
Οντοκεντρικός Προγραμματισμός Ενότητα 6: C++ ΚΛΑΣΕΙΣ, ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ, ΠΟΛΥΜΟΡΦΙΣΜΟΣ Κληρονομικότητα ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής
Πρόγραµµα 9.1 Πέρασµα δεδοµένων στην µνήµη
9.1 Γενικά Οι εφαρµογές που δηµιουργούνται από ένα προγραµµατιστή µπορούν ανά πασά στιγµή να καταρρεύσουν από κάποιο λάθος κατά την λειτουργία τους. Αυτές οι καταστάσεις συµβαίνουν από αµέλεια του προγραµµατιστή
Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java
Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,
Στοίβες - Ουρές. Στοίβα (stack) Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής
Στοίβες - Ουρές Γιάννης Θεοδωρίδης, Νίκος Πελέκης, Άγγελος Πικράκης Τµήµα Πληροφορικής οµές εδοµένων 1 Στοίβα (stack) οµή τύπουlifo: Last In - First Out (τελευταία εισαγωγή πρώτη εξαγωγή) Περιορισµένος
Επισκόπηση. Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων. Λεπτοµέρειες υλοποίησης αλγορίθµων
Επισκόπηση Κατανεµηµένα Συστήµατα Ι Μάθηµα Βασικής Επιλογής, Χειµερινού Εξαµήνου Τοµέας Εφαρµογών και Θεµελιώσεων Χρήστος Κονίνης Ορέστης Ακριβόπουλος Example Τρίτη, 9 Νοεµβρίου 2010 Υπολογιστικό 1. Αποφασίζουµε
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων
Λογισµικό (Software SW) Γλώσσες
Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
02 Αντικειμενοστρεφής Προγραμματισμός
02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object
Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA
Οντοκεντρικός Προγραμματισμός ΦΡΟΝΤΙΣΤΗΡΙΟ JAVA Τι θα συζητήσουμε σήμερα Πώς υλοποιούμε συσχετίσεις μεταξύ κλάσεων απλές και πολλαπλές συσχετίσεις κληρονομικότητα Static, final Overloading Overriding Hiding
Wrapper Classes, Abstract Classes and Interfaces
Wrapper Classes, Abstract Classes and Interfaces Εβδοµάδα 3: Κλάσεις συσκευαστές, αφηρηµένες κλάσεις και διαπροσωπείες Αντικείµενα και µη-αντικείµενα Η Java παρέχει τύπους αντικειµένων και απλούς τύπους
ΕΞΑΙΡΕΣΕΙΣ. Εξαιρέσεις προκαλούνται. από το σύστηµα. από το πρόγραµµα
ΕΞΑΙΡΕΣΕΙΣ Εξαίρεση (Exception): Ένα συµβάν κατά τον χρόνο εκτέλεσης (π.χ. αδυναµία ανοίγµατος αρχείου ή ανάγνωσης πληροφορίας, µη ύπαρξη αντικειµένου στη στοίβα) που απαιτεί ειδικό χειρισµό. Ονοµάζεται
Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )
ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση
Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης
Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης 3 Φεβρουαρίου 2013 1 Ομάδα Α - Ερωτήσεις Γενικών Γνώσεων 1. (ΕΓΓ.155) Τι είναι το αντικείμενο και ποια τα χαρακτηριστικά του; Περιγράψτε το
Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.
58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο
ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ
ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Είδη καλουπωμάτων Μετατροπές και έλεγχοι τύπου Τελευταία ενημέρωση: Οκτώβριος 2013 Εισαγωγή - 2 Όπως και στη Java, στη C++
ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor
ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal
ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal Δοµή προγράµµατος 1. Δοµή προγράµµατος program όνοµα_προγράµµατος(αρχείο_1, αρχείο_2,...αρχείο_ν); ΕΠΙΚΕΦΑΛΙΔΑ ΒΙΒΛΙΟΘΗΚΕΣ uses όνοµα_βιβλιοθήκης,όνοµα_βιβλιοθήκης;
Στοιχειώδης προγραμματισμός σε C++
Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Ένα ιστόγραμμα τιμών μετράει για ένα σύνολο από τιμές πόσες φορές εμφανίστηκε η κάθε τιμή. Για παράδειγμα
Ειδικά Θέματα Προγραμματισμού
Ειδικά Θέματα Προγραμματισμού Ενότητα 3: Τύποι Δεδομένων - Τελεστές Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.
Τελικό τεστ - απαντήσεις
Τελικό τεστ - απαντήσεις Θεωρήστε το παρακάτω πρόγραμμα και απαντήστε στις ερωτήσεις που ακολουθούν. 1 class parent { 2 public: 3 int a; int b; 4 parent(int _a, int _b) {} 5 6 void f1(int x) { cout
ΕΠΛ 012. JavaScripts
ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές
Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -