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

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

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

Transcript

1 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 6η

2 2 Ιστοσελίδα του µαθήµατος Θα τοποθετούνται οι διαφάνειες του επόµενου µαθήµατος Επικοινωνία:

3 3 Περιεχόµενα Constructors Overloading τελεστών Φίλιες συναρτήσεις/κλάσεις υναµική δηµιουργία αντικειµένων

4 4 Στόχοι εκµάθησης Constructors Ορισµοί Κλήση Εργαλεία const parameter modifier Inline συναρτήσεις Static µεταβλητές-µέλη Vectors Εισαγωγή στην κλάση vector

5 5 Constructors Αρχικοποίηση των αντικειµένων Αρχικοποίηση µερικών ή όλων των µεταβλητών που είναι µέλη του αντικειµένου Επιπρόσθετες λειτουργίες είναι δυνατές Είναι ειδική περίπτωση συνάρτησης-µέλους Καλέιται αυτόµατα όταν δηλώνεται το αντικείµενο Πολύ χρήσιµα εργαλεία Στηρίζουν τις αρχές του OOP

6 6 Ορισµοί Constructor Οι constructors ορίζονται όπως κάθε άλλη συνάρτηση-µέλος Εκτός από το ότι: 1. Πρέπει να έχουν το ίδιο όνοµα µε την κλάση τους 2. εν επιστρέφουν τιµή; Ούτε δηλώνονται ως void!

7 7 Παράδειγµα ορισµού Constructor Ορισµός κλάσης µε constructor: class DayOfYear { public: DayOfYear(int monthvalue, int dayvalue); //Constructor initializes month & day void input(); void output(); private: int month; int day; }

8 8 Χρήσιµες παρατηρήσεις Παρατηρήστε το όνοµα του constructor: DayOfYear Ίδιο µε το όνοµα της κλάσης του! Η δήλωση του Constructor δεν έχει τύπο επιστροφής Ούτε void! Ο Constructor τοποθετείται στο τµήµα public Καλείται όταν δηλώνονται τα αντικείµενα Εάν δηλωθεί ως private, δεν θα µπορούµε να δηλώσουµε αντικείµενα!

9 9 Κλήση των Constructors ήλωση αντικειµένων: DayOfYear date1(7, 4), date2(5, 5); Τα αντικείµενα δηµιουργούνται εδώ Καλείται ο Constructor Οι τιµές στις παρενθέσεις περνιούνται ως ορίσµατα στον constructor Οι µεταβλητές-µέλη month, day αρχικοποιούνται: date1.month 7 date2.month 5 date1.dat 4 date2.day 5

10 10 Ισοδυναµία Constructor Θεωρήστε: DayOfYear date1, date2 date1.dayofyear(7, 4); // ILLEGAL! date2.dayofyear(5, 5); // ILLEGAL! Με πρώτη µατιά OK ΕΝ ΕΠΙΤΡΕΠΕΤΑΙ να καλούµε τους constructors όπως τις άλλες συναρτήσεις-µέλη!

11 11 Κώδικας Constructor Ο ορισµός ενός Constructor είναι ίδιος µε αυτόν των άλλων συναρτήσεων-µελών: DayOfYear::DayOfYear(int monthvalue, int dayvalue) { month = monthvalue; day = dayvalue; } Παρατηρήστε το ίδιο όνοµα γύρω από τα :: Προσδιορίζει έναν constructor εν υπάρχει τύπος επιστροφής

12 12 Εναλλακτικός ορισµός Ο προηγούµενος ορισµός είναι ιδσοδύναµος µε: DayOfYear::DayOfYear( int monthvalue, int dayvalue ) : month(monthvalue), day(dayvalue) { } Η τρίτη γραµµή ονοµάζεται Τµήµα αρχικοποίησης Το σώµα µένει κενό

13 13 Άλλος ένας σκοπός του Constructor Όχι απλώς να αρχικοποιήσει τα δεδοµένα Το σώµα δεν χρειάζεται να είναι κενό Ελέγξει την εγκυρότητα των δεδοµένων! Να επιβεβαιώσει ότι µόνο έγκυρες τιµές ανατίθενται στις ιδιωτικές µεταβλητές της κλάσης Ισχυρή αρχή του OOP

14 14 Overloaded Constructors Μπορούµε να κάνουµε overload τους constructors όπως και τις απλές συναρτήσεις Θυµηθείτε: µια υπογραφή (signature)αποτελείται από: Όνοµα της συνάρτησης Λίστα παραµέτρων Να παρέχουµε constructors για όλες τις πιθανές λίστες ορισµάτων

15 Παράδ. κλάσης µε constructor (1/3) 15

16 Παράδ. κλάσης µε constructor (2/3) 16

17 Παράδ. κλάσης µε constructor (3/3) 17

18 18 Constructor χωρίς ορίσµατα Προκαλεί σύγχυση µε απλές συναρτήσεις χωρίς ορίσµατα: Καλούνται µε την εξής σύνταξη: callmyfunction(); Με τις κενές παρανθέσεις ηλώσεις αντικειµένων χωρίς αρχικοποίηση: DayOfYear date1; // Ορθό! DayOfYear date(); // ΛΑΘΟΣ!

19 19 Ρητές κλήσεις στον Constructor Μπορούµε να καλέσουµε τον constructor ΞΑΝΑ, µετά τη δήλωση του αντικειµένου Θυµηθείτε: στην περίπτωση εκείνη ο constructor κλήθηκε αυτόµατα Τον καλούµε µε τον όνοµα του αντικειµένου; Τυπική κλήση συνάρτησης-µέλους Εύκολος τρόπος για να θέτουµε τιµές στις µεταβλητές-µέλη Μέθοδος αρκετά διαφορετική από την τυπική κλήση συνάρτησης-µέλους

20 20 Παράδ. ρητής κλήσης Constructor Μια τέτοια κλήση επιστρέφει ένα ανώνυµο αντικείµενο Το οποίο µπορεί κατόπιν να αντεθεί Στην πράξη: DayOfYear holiday(7, 4); Ο Constructor καλείται στη δήλωση του αντικειµένου Τώρα για επαν-αρχικοποίηση : holiday = DayOfYear(5, 5); Ρήτη κλήση constructor Επιστρέφει ανώνυµο αντικείµενο Ανατίθεται ξανά στο υπάρχον αντικείµενο

21 21 Default Constructor Ορίζεται ως : constructor χωρίς ορίσµατα Πάντα πρέπει να ορίζουµε κάποιον Αυτό-δηµιουργειται? ΝΑΙ & ΌΧΙ Εάν δεν έχει οριστεί ΚΑΝΕΝΑΣ constructor ΝΑΙ Εάν έχει οριστεί κάποιος ΌΧΙ Εάν δεν υπάρχει default constructor: εν µπορούµε να δηλώσουµε το: MyClass myobject; Χωρίς αρχικοποιητές

22 22 Μεταβλητές-µέλη τύπου κλάσης Οι µεταβλητές-µέλη µιας κλάσης µπορεί να είναι οποιουδήποτε τύπου Ακόµα και αντικείµενα άλλων κλάσεων! Στην περίπτωση αυτή χρειαζόµαστε ειδική σύνταξη για τους constructors Ώστε να µπορούν να καλέσουν τον constructor του αντικειµένου-µέλους τους

23 Παράδ. µεταβλητής-µέλους τύπου 23 κλάσης (1/5)

24 Παράδ. µεταβλητής-µέλους τύπου 24 κλάσης (2/5)

25 Παράδ. µεταβλητής-µέλους τύπου 25 κλάσης (3/5)

26 Παράδ. µεταβλητής-µέλους τύπου 26 κλάσης (4/5)

27 Παράδ. µεταβλητής-µέλους τύπου 27 κλάσης (1/5)

28 28 Μέθοδοι περάσµατος παραµέτρων Αποδοτικότητα µεθόδων περάσµατος παραµέτρων Call-by-value Απαιτεί δηµιουργία αντιγράφου Κόστος Call-by-reference έσµευση θέσης (Placeholder) για το πραγµατικό όρισµα Η πιο αποδοτική µέθοδος Αµελητέα διαφορά για τους βασικούς τύπους Για κλάσεις/αντικείµενα καθαρό πλεονέκτηµα Call-by-reference είναι επιθυµητό Ειδικά για µεγάλους τύπους δεδοµένων, όπως κλάσεις

29 29 Ο const parameter modifier Μεγάλοι τύποι δεδοµένων (τυπικά κλάσεις) Επιθυµητό να χρησιµοποιούµε pass-by-reference Ακόµα και εάν η συνάρτηση δεν πρόκειται να κάνει τροποποιήσεις Προστασία ορίσµατος Χρήση του προσδιοριστή constant Αποκαλείται επίσης constant call-by-reference παράµετρος Τοποθετείστε τη λέξη-κλειδί const πριν τον τύπο Κάνει το όρισµα να είναι "read-only" Προσπάθεια τροποποίησής του προκαλεί compiler error

30 30 Χρήση του const Εάν δεν χρειάζονται τροποποιήσεις Προστασία των παραµέτρων µε την const Προστασία όλων αυτών των παραµέτρων Αυτό περιλαµβάνει και τις παραµέτρους των συναρτήσεων-µελών της κλάσης

31 31 Συναρτήσεις Inline Για συναρτήσεις που δεν είναι µέλη: Χρήση της λέξης-κλειδί inline στη δήλωση της συνάρτησης καθώς και στο heading της συνάρτησης Για τις συναρτήσεις-µέλη: Τοποθετούµε την υλοποίηση (κώδικα) για την συνάρτηση ΜΕΣΑ ΣΤΗ δήλωση της κλάσης γίνεται αυτόµατα inline Χρήση µόνο για σύντοµες συναρτήσεις Στην ουσία, η κλήση αντικαθίσταται από τον πλήρη κώδικα Απολοιφή του overhead Πιο αποδοτικό, αλλά µόνο όταν είναι σύντοµη!

32 32 Συναρτήσεις-µέλη Inline Ορισµοί συναρτήσεων-µελών Συνήθως ορίζονται χωριστά, σε διαφορετικό αρχείο Μπορούν να οριστούν ΜΕΣΑ στον ορισµό της κλάσης Κάνει τη συνάρτηση "in-line" Ξανά: χρήση µόνο για µικρές συναρτήσεις Πιο αποδοτικά Εάν είναι πολύ µεγάλη είναι λιγότερο αποδοτική!

33 33 Static Μέλη Static µεταβλητές-µέλη Όλα τα αντικείµενα της κλάσης µοιράζονται ένα αντίγραφο Όταν τροποποιείται η µεταβλητή αυτή από ένα αντικείµενο όλα τα αντικείµενα της κλάσης βλέπουν την αλλαγή Αρχικοποιούνται εκτός κλάσης Χρήσιµο για ιχνηλάτηση Πόσο συχνά καλείται µια συνάρτηση-µέλος Πόσα αντικείµενα της κλάσης υπάρχουν σε µια δεδοµένη στιγµή Τοποθετήστε τη λέξη-κλειδί static πριν τον τύπο δεδοµένων

34 34 Συναρτήσεις Static Οι συναρτήσεις-µέλη µπορεί και αυτές να είναι static Εάν δεν χρειάζεται προσπέλαση στα δεδοµένα του αντικειµένου Και πρέπει να είναι µέλος της κλάσης Την κάνουµε συνάρτηση static Μπορεί να κληθεί εκτός της κλάσης Από αντικείµενα που δεν ανήκουν στην κλάση: Π.χ., Server::getTurn(); Καθώς και από αντικείµενα της κλάσης Συνήθης µέθοδος: myobject.getturn(); Μπορούν να χρησιµοποιούν µόνο τα static δεδοµένα, και συναρτήσεις!

35 35 Παράδειγµα Static Μελών (1/4)

36 36 Παράδειγµα Static Μελών (2/4)

37 37 Παράδειγµα Static Μελών (3/4)

38 38 Παράδειγµα Static Μελών (4/4)

39 39 Η κλάση Vector της STL Εισαγωγή στην κλάση Vector Θυµηθείτε: οι πίνακες έχουν σταθερό µέγεθος Vectors: πίνακες που µικραίνουν και µεγαλώνουν κατά την εκτέλεση του προγράµµατος Προέρχονται από την Standard Template Library (STL)

40 40 Τα βασικά για την κλάση Vector Όµοια µε τους πίνακες: Έχει βασικό τύπο Αποθηκεύει συλλογή από τιµές του βασικού τύπου ηλώνεται διαφορετικά: Σύνταξη: vector<base_type> Προσδιορίζει µια template class Οποιοσδήποτε τύπος µπορεί να αποτελέσει το Base_Type Παράγει µια νέα κλάση για διανύσµατα αυτού του τύπου Παράδειγµα δήλωσης: vector<int> v;

41 41 Χρήση του Vector vector<int> v; v είναι ένα vector τύπου int Καλεί τον default constructor της κλάσης ηµιουργείται ένα κενό vector Υποστηρίζουν δεικτοδότηση για την προσπέλαση όπως και οι πίνακες Αλλά για την προσθήκη στοιχείων: Πρέπει να κληθεί η συνάρτηση-µέλος push_back Συνάρτηση-µέλος size() Επιστρέφει τον τρέχοντα αριθµό των στοιχείων του vector

42 42 Παράδειγµα του Vector (1/2)

43 43 Παράδειγµα του Vector (2/2)

44 44 Αποδοτικότητα του Vector Συνάρτηση-µέλος capacity() Επιστρέφει το µέγεθος µνήµης που είναι δεσµευµένο εν είναι το ίδιο µε το size() Συνήθως, capacity > size Αυξάνει αυτόµατα όταν χρειαστεί Εάν η αποδοτικότητα είναι µείζον θέµα: Μπορούµε να θέσουµε τις συµπεριφορές χειρωνακτικά v.reserve(32); //sets capacity to 32 v.reserve(v.size()+10); //sets capacity to 10 more than size

45 45 Περίληψη (1/2) Constructors: αυτόµατη αρχικοποίηση των αντικειµένων Καλούνται όταν δηλώνονται τα αντικείµενα Ο Constructor έχει το ίδιο όνοµα µε την κλάση Ο Default constructor δεν έχει παραµέτρους Πάντα θα πρέπει να τον ορίζουµε Μεταβλητές-µέλη της class Μπορεί να είναι αντικείµενα άλλης κλάσης Απαιτούν τµήµα-αρχικοποίησης

46 46 Περίληψη (2/2) Constant call-by-reference παράµετροι Πιο αποδοτικά σε σχέση µε τις call-by-value Μπορούµε να κάνουµε inline πολύ µικρούς ορισµούς συναρτήσεων Βελτιώνουν την αποτελεσµατικότητα Static µεταβλητές-µέλη Κοινές για όλα τα αντικείµενα της κλάσης Κλάσεις Vector Όπως: πίνακες που µεγαλώνουν και µικραίνουν δυναµικά

47 47 Περιεχόµενα Constructors Overloading τελεστών Φίλιες συναρτήσεις/κλάσεις υναµική δηµιουργία αντικειµένων

48 48 Στόχοι εκµάθησης Βασικός µηχανισµός overloading τελεστών Μοναδιαίοι τελεστές Ως συναρτήσεις-µέλη Friends και αυτόµατη µετατροπή τύπων Συναρτήσεις friend, κλάσεις friend Constructors για αυτόµατη µετατροπή τύπων References και overloading << και >> Τελεστές: =, [], ++, --

49 49 Υπερφόρτωση Τελεστών (1/2) Τελεστές +, -, %, ==, etc. Είναι και αυτοί συναρτήσεις! Απλά καλούνται µε διαφορετική σύνταξη:x + 7 "+" είναι δυαδικός τελεστής µε x και 7 ως τελεστέους είτε το ως εξής: +(x, 7) "+" είναι το όνοµα της συνάρτησης x, 7 είναι τα ορίσµατα Η συνάρτηση "+" επιστρέφει το άθροισµα των ορισµάτων της

50 50 Υπερφόρτωση Τελεστών (2/2) Ενσωµατωµένοι τελεστές π.χ., +, -, =, %, ==, /, * Λειτουργούν ήδη στη C++ για built-in τύπους Στο συνήθη δυαδικό συµβολισµό Μπορούµε να τους υπερφορτώσουµε! Για να λειτουργούν µε τους δικούς µας τύπους! Για να προσθέσουµε "Chair types", ή "Money types" Όπως µας εξυπηρετεί Πάντοτε υπερφορτώνουµε για παρόµοιες λειτουργίες!

51 51 Τα βασικά της υπερφόρτωσης Υπερφόρτωση τελεστών ΠΟΛΥ όµοιο µε την υπερφόρτωση συναρτήσεων Ο τελεστής παίζει το όνοµα της συνάρτησης Παράδειγµα δήλωσης: const Money operator +(const Money& amount1, const Money& amount2); Υπερφορτώνει το + για τελεστέους τύπου Money Χρησιµοποιεί const παραµέτρους µε αναφορά για εποδοτικότητα Η επιστρεφόµενη τιµή είναι τύπου Money Επιτρέπει πρόσθεση αντικειµένων "Money"

52 52 Ορισµός + για Money

53 53 Υπερφόρτωση == Τελεστής ισότητας, == Επιτρέπει σύγκριση αντικειµένων τύπου Money ήλωση: bool operator ==(const Money& amount1, const Money& amount2); Επιστρέφει τύπο bool type για ισότητα true/false εν είναι συνάρτηση-µέλος (όπως δεν είναι και ο τελεστής + )

54 54 Ορισµός == για Money

55 Constructors που επιστρέφουν 55 αντικείµενα Ο Constructor είναι µια "void" συνάρτηση? Τον αντιµετωπίζουµε ως τέτοιο, αλλά δεν είναι Είναι µια ειδικού τύπου συνάρτηση Με ξεχωριστές ιδιότητες ΜΠΟΡΕΙ να επιστρέφει µια τιµή! Θυµηθείτε τη δήλωση return στην υπερφόρτωση του "+" για τύπους Money: return Money(finalDollars, finalcents); Επιστρέφει ένα στιγµιότυπο της κλάσης Money! Έτσι, ο constructor στην πραγµατικότητα επιστέφει ένα αντικείµενο! Αποκαλείται ανώνυµο αντικείµενο

56 56 Επιστροφή µιας const τιµής Θεωρήστε ξανά τον τελεστή "+": const Money operator +(const Money& amount1, const Money& amount2); Επιστρέφει ένα const αντικείµενο? Γιατί? είτε την επίπτωση του να επιστρέψουµε ένα non-const αντικείµενο για να το αντιληφθείτε

57 57 Επιστροφή µιας non-const τιµής Θεωρήστε no const στη δήλωση: Money operator +( const Money& amount1, const Money& amount2); Θεωρήστε την έκφραση που καλεί: m1 + m2 Όπου τα m1 και m2 είναι αντικείµενα τύπου Money Το αντικείµενο που επιστρέφεται είναι τύπου Money Μπορούµε να κάνουµε διάφορα πράγµατα µε τα αντικείµενα! Όπως για παράδειγµα, να καλέσουµε τις συναρτήσεις-µέλη τους

58 58 Τι µπορούµε να κάνουµε µε nonconst αντικείµενα Μπορούµε να καλέσουµε συναρτήσεις-µέλη: Να εκτελέσουµε τις συναρτήσεις-µέλη του αντικειµένου που επιστρέφεται από την πράξη m1+m2: (m1+m2).output(); //Νόµιµο εν υπάρχει πρόβληµα, τίποτε δεν αλλάζει (m1+m2).input(); //ΝΟΜΙΜΟ! ΠΡΟΒΛΗΜΑ! //Νόµιµο, αλλά ΤΡΟΠΟΠΟΙΕΙ κάτι! Επιτρέπει τροποποίηση ενός ανώνυµου αντικειµένου! εν µπρούµε να το επιτρέψουµε! Συνεπώς ορίσουµε το αντικείµενο επιστροφής να είναι const

59 59 Υπερφόρτωση µοναδιαίων τελεστών Η C++ έχει µοναδιαίους τελεστές: Ορίζονται ως να δέχονται έναν τελεστέο π.χ., - (άρνηση) x = -y; Άλλοι µοναδιαίοι τελεστές: ++, -- // Θέτει το x ίσο µε το αρνητικό του y Οι µοναδιαίοι τελεστές µπορούν επίσης να υπερφορτωθούν

60 60 Υπερφόρτωση του - για Money ήλωση υπερφόρτωσης του - Τοποθετείται εκτός δήλωση της κλάσης: const Money operator (const Money& amount); Σηµειώστε: δέχεται µόνο ένα όρισµα Ο τελεστής "-" υπερφορτώνεται δύο φορές! Για δυο τελεστέους/ορίσµατα (δυαδικός) Για έναν τελεστέο/όρισµα (µοναδιαίος) Πρέπει να υπάρχουν ορισµοί και για τις δυο περιπτώσεις

61 61 Overloaded "-" Definition Ορισµός υπερφόρτωσης "-": const Money operator (const Money& amount) { return Money(-amount.getDollars(), -amount.getcents()); } Εφαρµόζει τον µοναδιαίο τελεστή - σε built-in τύπους, για τους οποίους η πράξη είναι γνωστή Επιστρέφει ανώνυµο αντικείµενο

62 62 Χρήση υπερφορτωµένου "-" Θεωρήστε το: Money amount1(10), amount2(6), amount3; amount3 = amount1 amount2; Καλεί τον δυαδικό υπερφορτωµένο "-" amount3.output(); //Αποτέλεσµα $4.00 amount3 = -amount1; Καλεί τον µοναδιαίο υπερφορτωµένο "-" amount3.output() // Αποτέλεσµα -$10.00

63 Υπερφορτωµένοι τελεστές ως 63 συναρτήσεις-µέλη Στα προηγούµενα παραδείγµα: ανεξάρτητες συναρτήσεις Ορισµένες έξω από κλάσεις Μπορεί να γίνει υπερφόρτωση ως "member operator" Θεωρείται συνάρτηση-µέλος όπως και οι υπόλοιπες Όταν ο τελεστής είναι συνάρτηση-µέλος: Μόνο ΜΙΑ παράµετρος, όχι δυο! Το καλούν αντικείµενο λειτουργεί ως 1 st παράµετρος

64 64 Παράδειγµα Member Operator Money cost(1, 50), tax(0, 15), total; total = cost + tax; Εάν ο "+" υπερφορτωθεί ως member operator: Η µεταβλητή/αντικείµενο cost είναι το καλούν αντικείµενο Το αντικείµενο tax είναι το µοναδικό όρισµα Σκεφτείτε το ως εξής: total = cost.+(tax); ήλωση του "+" στον ορισµό της κλάσης: const Money operator +(const Money& amount); Σηµειώστε το µοναδικό όρισµα του τελεστή

65 65 Συναρτήσεις const Πότε να κάνουµε µια συνάρτηση const? Οι constant συναρτήσεις δεν επιτρέπεται να τροποποιούν τα δεδοµένα-µέλη της κλάσης Τα const objects µπορούν να καλούν ΜΟΝΟ constant συναρτήσεις-µέλη Το καλό στυλ απαιτεί: Κάθε συνάρτηση-µέλος που δεν πρόκειται να τροποποιήσει τα δεδοµένα θα πρέπει να δηλώνεται ως const Χρήση της λέξης-κλειδί const µετά τη δήλωση της συνάρτησης και στο heading της

66 Υπερφόρτωση Κλήσης Συνάρτησης () 66 Τελεστής κλήσης συνάρτησης, ( ) Πρέπει να υπερφορτωθεί ως συνάρτηση-µέλος Επιτρέπει τη χρήση των αντικειµένων όπως µια τυπική συνάρτηση Μπορεί να υπερφορτωθεί για όλους τους πιθανούς αριθµούς ορισµάτων Παράδειγµα: Aclass anobject; anobject(42); Εάν υπερφορτωθεί ο ( ) καλεί την υπερφορτωµένη έκδοση

67 67 Άλλες υπερφορτώσεις &&,, και τελεστής comma Οι προκαθορισµένες εκδόσεις τους δουλεύουν για bool τύπους Θυµηθείτε: χρησιµοποιούν την short-circuit εκτίµηση Όταν υπερφορτωθούν, δεν την χρησιµοποιούν πλέον Χρησιµοποιούν την πλήρη εκτίµηση Γενικώς, θα πρέπει να αποφεύγουµε την υπερφόρτωσή τους

68 68 Συναρτήσεις Friend (1/2) εν είναι συναρτήσεις-µέλη Θυµηθείτε: υπερφόρτωση τελεστών ως µη συναρτήσεις-µέλη Προσπελάζουν τα δεδοµένα διαµέσου συναρτήσεων accessor και mutator Πολύ αναποτελεσµατικό (κόστος στις κλήσεις) Οι Friends µπορούν να προσπελάσουν άµεσα τα ιδιωτικά δεδοµένα της κλάσης εν υπάρχει κόστος, είναι πιο αποτελεσµατικό Συνεπώς: το καλύτερο είναι να κάνουµε friends τις nonmember operator υπερφορτώσεις!

69 69 Συναρτήσεις Friend (1/2) Συναρτήσεις Friend µιας κλάσης εν είναι συνάρτηση-µέλος Έχει άµεση πρόσβαση στα ιδιωτικά δεδοµένα της κλάσης Όπως και οι συναρτήσεις-µέλη της κλάσης Χρήση της λέξης-κλειδί friend πριν από τη δήλωση της συνάρτησης Καθορίζεται ΜΕΣΑ στον ορισµό της κλάσης εν είναι όµως συναρτήσεις-µέλη της κλάσης!

70 70 Χρήση συναρτήσεων Friend Υπερφόρτωση τελεστών Είναι η πιο κοινή χρήση των friends Βελτιώνει την αποδοτικότητα Αποφεύγει την ανάγκη κλήσης συναρτήσεων- µελών accessor/mutator Friend µπορεί να είναι οποιαδήποτε συνάρτηση

71 71 Αναγκαιότητα συναρτήσεων Friend Οι Friend είναι καθαρές? To πνεύµα του OOP επιβάλλει όλοι οι τελεστές και οι συναρτήσεις να είναι µέλη της κλάσης Πιστεύεται ότι οι friends παραβιάζουν τις βασικές αρχές του OOP Έχουν πλεονεκτήµατα? Για τους τελεστές: πάρα πολλά! Επιτρέπουν αυτόµατα µετατροπή τύπων Υποστηρίζουν την ενθυλάκωση: οι friends είναι µέσα σε κάποιον ορισµό κλάσης Βελτιώνουν την απόδοση

72 72 Κλάσεις Friend Ολόκληρες κλάσεις µπορεί να είναι friends Όοµοια µε τις συναρτήσεις που είναι friend σε µια κλάση Παράδειγµα: class F is friend of class C Όλες οι συναρτήσεις-µέλη της κλάσης F είναι friends της κλάσης C H friend-ship δεν αίρεται Σύνταξη: friend class F; Μπαίνει µέσα στον ορισµό της κλάσης, η οποία δίνει την εξουσιοδότηση στην F

73 73 Αναφορές (References) Αναφορά (Reference) ορίζεται ως: Όνοµα µιας θέσης αποθήκευσης Παρόµοια µε το δείκτη Παράδειγµα µιας stand alone reference: int robert; int& bob = robert; bob είναι αναφορά στη θέσης αποθήκευσης του robert Οι αλλαγές στο bob θα επηρρεάσουν το robert

74 74 Χρήση Αναφορών Είναι σχετικά επικίνδυνες Χρήσιµες σε µερικές περιπτώσεις: Call-by-reference Συχνά χρησιµοποιείται για την υλοποίηση του µηχανισµού αυτού Επιστρέφοντας µια αναφορά Επιτρέπει υλοποιήσεις υπερφόρτωσης τελεστών να γραφούν πιο φυσικά Σκεφτείτε το ως επιστροφή ενός "alias" σε µια µεταβλητή

75 75 Επιστροφή Αναφορών Σύνταξη: double& samplefunction(double& variable); double& and double are different Πρέπει να ταιριάζουν στη δήλωση και στο heading της συνάρτησης Το επιστρεφόµενο item πρέπει να έχει µια αναφορά Όπως µια µεταβλητή αυτού του τύπου εν µπορεί να είναι εκφράσεις όπως: "x+5" εν υπάρχει µέρος στη µνήµη στο οποίο να αναφερθεί

76 76 Παράδειγµα επιστροφής αναφοράς Παράδειγµα ορισµού συνάρτησης: double& samplefunction(double& variable) { return variable; } Απλό παράδειγµα επίδειξης των εννοιών Κύρια χρήση: Σε µερικούς υπερφορτωµένους τελεστές

77 77 Υπερφόρτωση των >> και << Επιτρέπει είσοδο και έξοδο των αντικειµένων που φτιάχνουµε Παρόµοια µε την υπερφόρτωση των άλλων τελεστών Βελτιώνει την αναγνωσιµότητα των προγραµµάτων Επιτρέπει: cout << myobject; cin >> myobject; Αντί για την ανάγκη να γράφουµε: myobject.output();

78 78 Υπερφόρτωση << Τελεστής << Χρησιµοποιείται µε cout Είναι δυαδικός τελεστής Παράδειγµα: cout << "Hello"; Ο τελεστής είναι ο << Ο 1 ος τελεστέος είναι το προκαθορισµένο αντικείµενο cout Από τη βιβλιοθήκη iostream Ο 2 ος τελεστέος είναι το αλφαριθµητικό "Hello"

79 79 Υπερφόρτωση << Τελεστέοι του << Το αντικείµενο cout, της κλασης ostream Η δική µας κλάση Θυµηθείτε την κλάση Money Χρησιµοποιούσε τη συνάρτηση-µέλος output() Θα ήταν προτιµότερο να χρησιµοποιούσαµε τον τελεστή <<: Money amount(100); cout << "I have " << amount << endl; αντί για το: cout << "I have "; amount.output();

80 80 Τιµή επιστροφής υπερφορτωµένου >> Money amount(100); cout << amount; Ο τελεστής << πρέπει να επιστρέφει κάποια τιµή Για να επιτρέψουµε διαδοχικά ορίσµατα: cout << "I have " << amount; (cout << "I have ") << amount; Τα παραπάνω είναι ισοδύναµα Τι επιστρέφει? cout object! Επιστρέφει αντικείµενο κλάσης του πρώτου ορίσµατος,ostream

81 81 Παρ. υπερφόρτωσης << και >> (1/5)

82 Παρ. υπερφόρτωσης << και >> (2/5) 82

83 Παρ. υπερφόρτωσης << και >> (3/5) 83

84 Παρ. υπερφόρτωσης << και >> (4/5) 84

85 Παρ. υπερφόρτωσης << και >> (5/5) 85

86 86 Τελεστής ανάθεσης, = Θα πρέπει να υπερφορτωθεί ως member operator Υπερφορτώνεται αυτόµατα Εξ ορισµού τελεστής ανάθεσης: Αντιγραφή µελος-προς-µέλος Μεταβλητές-µέλη ενός αντικειµένου στις αντίστοιχες µεταβλητές-µέλη του άλλου αντικειµένου Η εξ ορισµού συµπεριφορά είναι OK για απλές κλάσεις Αλλά για δείκτες πρέπει να γράψουµε τον δικό µας τελεστή ανάθεσης!

87 87 Increment και Decrement Κάθε τελεστής έχει δυο εκδόσεις Προθεµατικός τελεστής: ++x; Μεταθεµατικός τελεστής: x++; Πρέπει να γίνει η διάκριση στην υπερφόρτωση Τυπικά υπερφορτώνεται η προθεµατική έκδοση Προσθέτουµε 2 ο παράµετρο τύπου int Μεταθεµατική Απλά ένα σύµβολο για τον compiler!

88 88 Υπερφόρτωση τελεστή πίνακα, [ ] Μπορούµε να υπερφορτώσουµε τον [ ] Για να χρησιµοποιείται για αντικείµενα των κλάσεων που ορίζουµε Ο τελεστής πρέπει να επιστρέφει µια αναφορά! Ο τελεστής [ ] πρέπει να είναι συνάρτηση- µέλος!

89 89 Περίληψη (1/2) Οι built-in τελεστές της C++ µπορούν να υπερφορτωθούν για να λειτουργήσουν για τις δικές µας κλάσεις Οι τελεστές είναι απλά συναρτήσεις Οι συναρτήσεις friend έχουν άµεση πρόσβαση στα ιδιωτικά δεδοµένα των κλάσεων Οι τελεστές µπορούν να υπερφορτωθούν ως συναρτήσεις µέλη Ο 1 ος τελεστέος είναι το καλούν αντικείµενο

90 90 Περίληψη (2/2) Οι συναρτήσεις friend απλά προσθέτουν αποδοτικότητα εν χρειάζονται, εάν υπάρχουν αρκετές συναρτήσεις accessors/mutators Οι αναφορές ονοµατίζουν µια µεταβητή µε ένα alias Μπορούµε να υπερφορτώσουµε τους << και >> Ο τύπος επιστροφής είναι µια αναφορά σε τύπο stream

91 91 Περιεχόµενα Constructors Overloading τελεστών Φίλιες συναρτήσεις/κλάσεις υναµική δηµιουργία αντικειµένων

92 92 Πίσω στις κλάσεις Ο τελεστής -> Σύντοµος συµβολισµός Συνδυάζει τους τελεστές: dereference (*) και dot (.) Καθορίζει το µέλος της κλάσης που δείχνεται από τον συγκεκριµένο δείκτη Παράδειγµα: MyClass *p; p = new MyClass; p->grade = "A"; //Equivalent to: (*p).grade = "A";

93 93 Ο δείκτης this Οι ορισµοί των συναρτήσεων-µελών πολλές φορές χρειάζεται να αναφέρονται στο καλούν αντικείµενο Χρήση του προκαθορισµένου δείκτη this Αυτόµατα δείχνει στο καλούν αντικείµενο: Class Simple { public: void showstuff() const; private: int stuff; }; Οι συναρτήσεις-µέλη µπορούν να χρησιµοποιούν οποιονδήποτε από τα παρακάτω για προσπέλαση: cout << stuff; cout << this->stuff;

94 94 Υπερφόρτωση τελεστή ανάθεσης (1/2) Ο τελεστής ανάθεσης επιστρέφει αναφορά Έτσι ώστε αλυσίδες αναθέσεων να είναι πιθανές π.χ., a = b = c; Θέτει τα a και b ίσα µε το c Ο τελεστής πρέπει να επιστρέφει ίδιο τύπο µε αυτόν αριστερά του Για να επιτρέψει τις αλυσίδες Ο δείκτης this βοηθάει σ αυτό!

95 95 Υπερφόρτωση τελεστή ανάθεσης (2/2) Θυµηθείτε: Ο τελεστής ανάθεσης πρέπει να είναι µέλος της κλάσης Έχει µόνο µια παράµετρο Ο αριστερός τελεστέος είναι το καλούν αντικείµενο s1 = s2; Σκεφτείται το ως εξής: s1.=(s2); s1 = s2 = s3; Απαιτεί (s1 = s2) = s3; Έτσι το (s1 = s2) πρέπει να επιστρέφει αντικείµενο του ίδιου τύπου µε τον τύπο του s1 Και να το περάσει στο = s3 ;

96 96 Ορισµός υπερφορτωµένου τελεστή = Παράδειγµα µε χρήση της κλάσης string: StringClass& StringClass::operator=(const StringClass& rtside) { } if (this == &rtside) // if right side same as left side return *this; else { capacity = rtside.length; length length = rtside.length; delete [] a; a = new char[capacity]; for (int I = 0; I < length; I++) a[i] = rtside.a[i]; return *this; }

97 97 Ρηχά και βαθιά αντίγραφα Ρηχό αντίγραφο Η ανάθεση αντιγράφει µόνο τα περιεχόµενα των µεταβλητών-µελών Η εξ ορισµού ανάθεση και ο copy constructor Βαθύ αντίγραφο είκτες, εµπλέκεται δυναµική µνήµη Πρέπει να βρούµε πού δείχνει ο δείκτης για να πάρουµε τα δεδοµένα του για αντιγραφή Γράψτε το δικό σας τελεστή ανάθεσης και copy constructor για τις περιπτώσεις αυτές!

98 98 Η ανάγκη για destructor υναµικά δεσµευµένες µεταβλητές εν εξαλείφονται µέχρι να διαγραφούν Εάν οι δείκτες είναι δηµόσια δεδοµένα της κλάσης Την αποδέσµευση µπορεί να την κάνουν άλλες εξωτερικές της κλάσης συναρτήσεις Εάν οι δείκτες είναι ιδιωτικά µόνο δεδοµένα της κλάσης υναµικά δεσµεύουν πραγµατικά δεδοµένα Στον constructor Πρέπει να υπάρχει τρόπος για να τα αποδεσµεύσουµε όταν καταστραφεί το αντικείµενο Απάντηση: ο destructor!

99 99 Destructor Η αντίθετη έννοια του constructor Καλείται αυτόµατα όταν το αντικείµενο βρεθεί out-ofscope Η εξ ορισµού έκδοση καταστρέφει µόνο τις συνήθεις µεταβλητές και όχι τις δυναµικές Ορίζεται όπως ο constructor, αλλά προσθέτουµε το tilde ~ MyClass::~MyClass() { //Perform delete clean-up duties }

100 100 Copy Constructors Καλούνται αυτόµατα όταν: 1. ηλώνεται ένα αντικείµενο κλάσης και αρχικοποιείται σε κάποιο άλλο αντικείµενο 2. Όταν µια συνάρτηση επιστρέφει αντικείµενο 3. Όταν όρισµα τύπου κλάσης περνάει ως πραγµατικό όρισµα σε µια κλήση-µε-τιµή Απαιτεί προσωρινό αντίγραφο του αντικειµένου Ο copy constructor το δηµιουργεί Εξ ορισµού copy constructor Όπως και ο εξ ορισµού τελεστής ανάθεσης "=", εκτελεί αντιγραφή µέλος-προς-µέλος είκτες γράψτε το δικό του copy constructor!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΗΓλώσσαΠρογραµµατισµού 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. Ελένη Τουσίδου, Ph.D.

ΗΓλώσσαΠρογραµµατισµού 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++ (The C++ Programming Language)

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

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

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

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

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

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

Η Γλώσσα Προγραµµατισµού 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. Πίνακες.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Υπερφόρτωση Τελεστών Υπερφόρτωση Τελεστών Υπερφόρτωση του τελεστή ανάθεσης τιμής (=) Υπερφόρτωση των αριθμητικών τελεστών (+, -, *, /) Υπερφόρτωση των αριθμητικών τελεστών ανάθεσης (+=, -=, *=, /=) Υπερφόρτωση των συσχετιστικών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

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 δεσµεύει

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπερφόρτωση Αντικείμενα σαν ορίσματα ΥΠΕΡΦΟΡΤΩΣΗ H κλάση Car Μια κλάση που κρατάει την θέση ενός αυτοκινήτου. Μέθοδος move(): μετακινεί το αυτοκίνητο κατά μία

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29. 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29. 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή (Πρόχειρο σχέδιο - Μαθήµατος 3) p23-29 5. ΣΥΝΑΡΤΗΣΕΙΣ 5.1 Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή Η συνάρτηση είναι void, δεν επιστρέφει κάποια τιµή. //Oρισµός συνάρτησης χωρίς παραµέτρους // 12.

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αντικείμενα στη Java. Παύλος Εφραιμίδης. Java Αντικείμενα στη Java 1 Αντικείμενα στη Java Παύλος Εφραιμίδης Java Αντικείμενα στη Java 1 Αντικείμενα (Objects) στην Java Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας

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

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

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

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

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

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors). Κατασκευαστές Μέθοδοι Κατασκευής (Constructors). Οι κατασκευαστές (constructors) είναι μέθοδοι που εκτελούνται όταν κατασκευάζεται ένα αντικείμενο. Μια τάξη μπορεί να έχει αρκετούς κατασκευαστές, οι οποίοι

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 3: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αριθμητική Δεικτών Δείκτες και Πίνακες Παραδείγματα Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

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

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1)

Αντικείμενα (Objects) στην Java. Αντικείμενα στη Java. Δημιουργία Αντικειμένων. Δηλώσεις Μεταβλητών (2) Ο τελεστής new (1) Αντικείμενα (Objects) στην Java Αντικείμενα στη Java Παύλος Εφραιμίδης Ένα πρόγραμμα Java κατά την εκτέλεσή του δημιουργεί αντικείμενα τα αντικείμενα αλληλεπιδρούν, στέλνοντας μηνύματα το ένα στο άλλο

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

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

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

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

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

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

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

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

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

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Συναρτήσεις - Εξωτερικές μεταβλητές - Κανόνες εμβέλειας - Διάρκεια

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

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

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

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

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

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

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

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

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

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

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

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

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

είκτες και Πίνακες (2)

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

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor ΕισαγωγήστουςΗ/Υ PHP Hypertext Preprocessor ΤιείναιηPHP; PHP είναιµία server-based scripting language σχεδιασµένη ειδικά για το web. Σε µία html σελίδα µπορούµε να ενσωµατώσουµε php κώδικα που εκτελείται

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

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

Δεδομένα, τελεστές, είσοδος/έξοδος

Δεδομένα, τελεστές, είσοδος/έξοδος 2 Δεδομένα, τελεστές, είσοδος/έξοδος Τι θα δούμε σε αυτό το μάθημα 1. βασικοί τύποι δεδομένων 2. ακέραιοι 3. κινητής υποδιαστολής 4. ο τύπος decimal 5. χαρακτήρες 6. bool 7. string 8. χρήση μεταβλητών

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 Constructors (Κατασκευαστές) Ειδικός τύπος μεθόδων που δημιουργούν αντικείμενα μιας κλάσης και: Εκτελούνται κατά την αρχικοποίηση των αντικειμένων

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

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

Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης Ερωτήσεις και απαντήσεις στα θέματα του κανονισμού κατάρτισης 3 Φεβρουαρίου 2013 1 Ομάδα Α - Ερωτήσεις Γενικών Γνώσεων 1. (ΕΓΓ.155) Τι είναι το αντικείμενο και ποια τα χαρακτηριστικά του; Περιγράψτε το

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

Συναρτήσεις και διαδικασίες

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι 1 ΕΙΣΑΓΩΓΗ Η γλώσσα προγραµµατισµού Java είναι ισχυρά τυποποιηµένη (strongly typed), που σηµαίνει ότι κάθε µεταβλητή και κάθε έκφραση έχει κάποιο τύπο, ο οποίος πρέπει να είναι γνωστός κατά το χρόνο της

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 17-1 Εισαγωγή Στις προηγούµενες διαλέξεις µάθαµε πώς να δηλώνουµε, αρχικοποιούµε και να επεξεργαζόµαστε πίνακες. Σήµερα θα µελετήσουµε

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

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

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

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

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

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

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

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

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

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

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

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

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