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

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

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

Transcript

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

2 Η γλώσσα C++ Σχεδιάστηκε το 1979 από τον Bjarne Stroustrup στα Bell Laboratories Βασίζεται στην C προσθέτοντας σύγχρονες δυνατότητες.1 Αντικειμενοστραφή Προγραμματισμό (Object-Oriented Programming).2 Γενικό Προγραμματισμό (Generic Programming) Είναι υπερσύνολο της γλώσσας C Χαροκόπειο Πανεπιστήμιο 2/50

3 Αντικειμενοστραφής Προγραμματισμός Object-Oriented Programming Γενική τεχνική προγραμματισμού Οργάνωση γύρω από τα δεδομένα. Ορίζουμε τα δεδομένα και τις συναρτήσεις που επιτρέπεται να πράξουν επάνω στα δεδομένα. Τρείς βασικές αρχές.1 Ενθυλάκωση (encaptulation).2 Πολυμορφισμός (polymorphism).3 Κληρονομικότητα (inheritance) Χαροκόπειο Πανεπιστήμιο 3/50

4 Ενθυλάκωση Encaptulation Μηχανισμός που συνδέει λογικά τον κώδικα και τα δεδομένα που αυτός ο κώδικας διαχειρίζεται. Διατηρεί και τον κώδικα και τα δεδομένα ασφαλή από εξωτερικούς παράγοντες. Αυτός ο συνδυασμός είναι ένα "αντικείμενο" Χαροκόπειο Πανεπιστήμιο 4/50

5 Ενθυλάκωση Encaptulation Μέσα σε ένα αντικείμενο, ο κώδικας, τα δεδομένα ή και τα δύο μπορούν να είναι ιδιωτικά (private) στο αντικείμενο ή δημόσια (public). Οτιδήποτε private (δεδομένα ή κώδικας) είναι γνωστό και προσβάσιμο μόνο σε άλλα μέρη του ίδιου αντικειμένου. Δεν μπορούν δηλαδή να χρησιμοποιηθούν από ένα κομμάτι του προγράμματος που υπάρχει εκτός του αντικειμένου. Όταν έχουν κάτι public (δεδομένα ή κώδικα) η πρόσβαση επιτρέπεται και από κώδικα που βρίσκεται εκτός αντικειμένου. Συνήθως τα public μέρη του αντικειμένου χρησιμοποιούνται για να προσφέρουν ένα μέσο διασύνδεσης του αντικειμένου με τον έξω κόσμο. Χαροκόπειο Πανεπιστήμιο 5/50

6 Πολυμορφισμός Polymorphism Η ιδέα του πολυμορφισμού συνοψίζεται σε μια φράση "one interface, multiple methods" Επιτρέπει σε μια διασύνδεση (interface) να ελέγχει την πρόσβαση σε μια γενική κλάση από υλοποιήσεις. Η ακριβής λειτουργία καθορίζεται από την φύση της περίπτωσης. Χαροκόπειο Πανεπιστήμιο 6/50

7 Παράδειγμα Πολυμορφισμού Ένα πραγματικό παράδειγμα πολυμορφισμού είναι ο θερμοστάτης. Ανεξάρτητα από την εγκατάσταση της θέρμανσης που έχετε στο σπίτι σας, π.χ πετρέλαιο, φυσικό αέριο, κ.τ.λ, ο θερμοστάτης λειτουργεί με ακριβώς τον ίδιο τρόπο. Ο θερμοστάτης είναι η διασύνδεση (interface) και η εγκατάσταση είναι η υλοποίηση (implementation). Εαν θέλουμε 25 βαθμούς, απλά βάζουμε τον θερμοστάτη στους 25 βαθμούς. Δεν μας ενδιαφέρει τι εγκατάσταση έχουμε. Χαροκόπειο Πανεπιστήμιο 7/50

8 Πολυμορφισμός Στον προγραμματισμό Η ίδια λογική με τον θερμοστάτη ισχύει και στον προγραμματισμό. Έστω πως έχουμε υλοποιήσει 2 στοίβες, η μία χρησιμοποιεί λίστα για την υλοποίηση της ενώ η άλλη έναν πίνακα. Θα παρέχουμε μια κοινή διασύνδεση μέσω της οποίας θα μπορούμε να διαχειριστούμε και τις δύο στοίβες. Η διασύνδεση αυτή θα παρέχει π.χ τις συναρτήσεις push και pop. Χαροκόπειο Πανεπιστήμιο 8/50

9 Κληρονομικότητα Inheritance Κληρονομικότητα είναι η διαδικασία όπου ένα αντικείμενο κληρονομεί τις ιδιότητες ενός άλλου αντικειμένου. Με αυτόν τον τρόπο φτιάχνουμε ιεραρχικές κατηγοριοποιήσεις αντικειμένων. Για παράδειγμα ένα μήλο ανήκει στην κατηγορία φρούτο που με την σειρά της ανήκει στην κατηγορία φαγητό. Θα δείτε την κληρονομικότητα εκτεταμένα στα επόμενα μαθήματα προγραμματισμού, οπότε δεν θα δώσουμε πολύ έμφαση. Σημειώστε όμως πως η κληρονομικότητα είναι ένα από τα πιο σημαντικά χαρακτηριστικά του αντικειμενοστραφούς προγραμματισμού. Χαροκόπειο Πανεπιστήμιο 9/50

10 Ένα πρώτο πρόγραμμα 1 #include <iostream > 2 3 using namespace std ; 4 5 int main ( ) { 6 int i ; 7 8 cout << "output something.\n" ; / / s i n g l e l i n e comment 9 10 / * you can s t i l l use C s t y l e comments * / cout << "Enter a number: " ; / / i n p u t a number using >> 15 cin >> i ; / / now output a number using << 18 cout << i << " squared is " << i* i << endl ; return 0 ; 21 } Χαροκόπειο Πανεπιστήμιο 10/50

11 Είσοδος/Έξοδος I/O Τα header αρχεία της C++ έχουν διαφορετική ονομασία από της C. #include <iostream > Η παραπάνω εντολή χρησιμοποιείται για να μπορούμε να χρησιμοποιήσουμε τις μεθόδους εισόδου/εξόδου της C++. Είναι ουσιαστικά για την C++ ότι είναι το stdio.h για την C. Χαροκόπειο Πανεπιστήμιο 11/50

12 Namespaces Η C++ μας επιτρέπει να ορίσουμε ότι κάποια κομμάτια κώδικα ανήκουν σε περιοχές ονομάτων. π.χ namespace myname { } int temperature ; Οι περιοχές ονομάτων βοηθούν στην διαχείριση μεγάλων προγραμμάτων και στην χρήση πολλών βιβλιοθηκών ταυτόχρονα. Για να έχω πρόσβαση στην παραπάνω μεταβλητή πρέπει να γράψω myname : : temperature = 5 ; Χαροκόπειο Πανεπιστήμιο 12/50

13 Namespaces Με την χρήση των namespaces μπορώ να έχω πολλές μεταβλητές ή και συναρτήσεις με το ίδιο όνομα που ανήκουν όμως σε διαφορετικά namespaces. Έτσι μπορώ να αποφεύγω τα προβλήματα εαν θέλω να χρησιμοποιήσω π.χ ταυτόχρονα δύο διαφορετικές βιβλιοθήκες φτιαγμένες από διαφορετικούς κατασκευαστές. Ο κάθε κατασκευαστής θα έχει φροντίσει να συμπεριλάβει όλους τους τύπους και τις μεθόδους του στο δικό του namespace. Χαροκόπειο Πανεπιστήμιο 13/50

14 Namespaces Η standard C++ library βρίσκεται όλη στο namespace με όνομα std. Για να χρησιμοποιήσω οτιδήποτε ή θα γράψω π.χ std : : cout << "Print this" ; ή μπορώ στην αρχή του προγράμματος να δώσω using namespace std ; και άρα να εξηγήσω στον μεταγλωττιστή πως θέλω να χρησιμοποιώ συνέχεια από εδώ και πέρα το namespace std, χωρίς να το επαναλαμβάνω διαρκώς. Χαροκόπειο Πανεπιστήμιο 14/50

15 Είσοδος/Έξοδος cout << "output something\n" ; Η παραπάνω γραμμή εκτυπώνει στην οθόνη output something και αλλάζει γραμμή. Στην C++ ο τελεστής << χρησιμοποιείται εκτός από το left-shift και για να στείλουμε δεδομένα στην έξοδο (output operator). Το cout είναι για την C++ ότι είναι για την C το stdout. Μπορείτε να χρησιμοποιήσετε το cout και τον τελεστή << για να στείλετε στην τυπική έξοδο όλους τους βασικούς τύπους συμπεριλαμβανομένων και συμβολοσειρών. Χαροκόπειο Πανεπιστήμιο 15/50

16 Είσοδος/Έξοδος cin >> i ; Ο τελεστής >> ακόμη σημαίνει right-shift αλλά όταν χρησιμοποιείται όπως παραπάνω τότε είναι ο τελεστής εισόδου (input operator). Η παραπάνω γραμμή αναθέτει στην μεταβλητή i μια τιμή από το πληκτρολόγιο. Το cin είναι για την C++ ότι είναι για την C το stdin. Μπορείτε να χρησιμοποιήσετε το cin και τον τελεστή >> για να διαβάσετε από την τυπική είσοδο όλους τους βασικούς τύπους συμπεριλαμβανομένων και συμβολοσειρών. Χαροκόπειο Πανεπιστήμιο 16/50

17 Είσοδος/Έξοδος Μπορείτε βέβαια να χρησιμοποιήσετε ακόμη τις printf() και scanf(). Συνήθως όμως στην C++ χρησιμοποιούμε τα cin και cout μιας και παρέχουν πιο εύκολη πρόσβαση στην είσοδο και στην έξοδο. cout << i << " squared is " << i* i << endl ; Μπορούμε για παράδειγμα να γράψουμε στην έξοδο πολλές φορές με την ίδια εντολή. Εδώ endl είναι το C++ αντίστοιχο του χαρακτήρα '\n'. Χαροκόπειο Πανεπιστήμιο 17/50

18 Δήλωση Τοπικών Μεταβλητών στην C++ Στην C++ μπορούμε να δηλώσουμε τοπικές μεταβλητές σε οποιοδήποτε σημείο ενός block. #include <iostream > using namespace std ; int main ( ) { cout << "Set A = { " for ( int i = 0 ; i < 10; i++) cout << i << " " ; } cout << "}" << endl ; Χαροκόπειο Πανεπιστήμιο 18/50

19 Τύπος bool στην C++ Η C++ παρέχει έναν τύπο bool ο οποίος μπορεί να πάρει τιμές true και false. #include <iostream > using namespace std ; int main ( ) { bool n = true ; } if ( n ) { cout << "n is true" << endl ; } else cout << "n is false" << endl ; Αυτόματη μετατροπή από bool σε int και ανάποδα, γίνεται έτσι ώστε η τιμή true να μετατρέπεται σε 1 και η false σε 0. Χαροκόπειο Πανεπιστήμιο 19/50

20 Εισαγωγή στις Κλάσεις Το πιο σημαντικό στοιχείο της C++ είναι η ύπαρξη των κλάσεων. Για να φτιάξουμε στην C++ ένα αντικείμενο πρέπει να ορίσουμε την γενική του μορφή χρησιμοποιώντας την δεσμευμένη λέξη class. Συντακτικά μια κλάση δηλώνεται περίπου όπως και μια εγγραφή (struct). Εκτός όμως από δεδομένα περιέχει και συναρτήσεις που διαχειρίζονται τα δεδομένα αυτά. Χαροκόπειο Πανεπιστήμιο 20/50

21 Εισαγωγή στις Κλάσεις Στοίβα (πρώτη προσπάθεια) 1 class stack { 2 private : 3 int array [ ] ; 4 int top ; 5 6 public : 7 void init ( ) ; 8 void push ( int i ) ; 9 int pop ( ) ; 10 } ; Μια κλάση μπορεί να περιέχει private και public στοιχεία. Στην παραπάνω κλάση τα array και top είναι προσωπικά που σημαίνει πως δεν μπορούν να προσπελαστούν από κώδικα που δεν είναι μέρος της κλάσης. Μπορούμε να έχουμε και συναρτήσεις που να είναι private και άρα να μπορούν να κληθούν μόνο από άλλες συναρτήσεις της κλάσης. Χαροκόπειο Πανεπιστήμιο 21/50

22 Εισαγωγή στις Κλάσεις Στοίβα (πρώτη προσπάθεια) 1 class stack { 2 private : 3 int array [ ] ; 4 int top ; 5 6 public : 7 void init ( ) ; 8 void push ( int i ) ; 9 int pop ( ) ; 10 } ; Μια κλάση μπορεί να περιέχει private και public στοιχεία. Οι συναρτήσεις παραπάνω είναι public που σημαίνει πως μπορούν να κληθούν από οποιοδήποτε άλλο κώδικα. Χαροκόπειο Πανεπιστήμιο 21/50

23 Εισαγωγή στις Κλάσεις Στοίβα (πρώτη προσπάθεια) Αφού δηλώσουμε μια κλάση μπορούμε να φτιάξουμε αντικείμενα δηλώνοντας μεταβλητές του αντίστοιχου τύπου. int main ( ) { } stack mystack ; Το αντικείμενο mystack είναι ένα στιγμιότυπο της stack. Η κλάση λοιπόν είναι μια λογική αφαίρεση, ενώ ένα αντικείμενο είναι αληθινό (με την έννοια πως υπάρχει μέσα στην μνήμη του υπολογιστή). Χαροκόπειο Πανεπιστήμιο 22/50

24 Εισαγωγή στις Κλάσεις Στοίβα (πρώτη προσπάθεια) Εκτός βέβαια από την δήλωση της κλάσης πρέπει να δώσουμε και την υλοποίηση των μεθόδων της κλάσης. void stack : : init ( ) { top = 0 ; } Πρέπει να χρησιμοποιήσουμε τον τελεστή :: (scope resolution operator) που λέει στον μεταγλωττιστή πως αυτή η έκδοση της init() ανήκει στην κλάση stack. Χαροκόπειο Πανεπιστήμιο 23/50

25 Εισαγωγή στις Κλάσεις Μια στοίβα (πρώτη προσπάθεια) Για να προσπελάσουμε μια μέθοδο ή δεδομένα μιας κλάσης πρέπει να χρησιμοποιήσουμε (όπως και στις δομές) τον τελεστή τελεία. int main ( ) { stack stack1, stack2 ; } stack1. init ( ) ; Ο παραπάνω κώδικας φτιάχνει δυο ξεχωριστά αντικείμενα. Στην συνέχεια καλή την συνάρτηση init() του αντικειμένου stack1. Το αντικείμενο stack2 δεν αρχικοποιείται. Χαροκόπειο Πανεπιστήμιο 24/50

26 Εισαγωγή στις Κλάσεις Στοίβα (πρώτη προσπάθεια) Μέσα σε μια συνάρτηση μια κλάσης μπορούμε να έχουμε πρόσβαση στις μεταβλητές της κλάσεις χωρίς την χρήση του τελεστή τελεία. void stack : : push ( int i ) { if ( top == 100) { cout << "Stack is full." << endl ; return ; } array [ top++] = i ; } int stack : : pop ( ) { if ( top == 0) { cout << "Stack underflow." << endl ; return 0 ; } return array[ top ] ; } Χαροκόπειο Πανεπιστήμιο 25/50

27 Εισαγωγή στις Κλάσεις Στοίβα (πρώτη προσπάθεια) Το παρακάτω κομμάτι κώδικα δεν περνάει από τον μεταγλωττιστή αφού προσπαθούμε να έχουμε πρόσβαση σε private μέρη της κλάσης εκτός της κλάσης. int main ( ) { } stack mystack ; mystack. init ( ) ; mystack. top = 1 ; / / COMPILE ERROR! mystack. array [ 0 ] = 6 ; / / COMPILE ERROR! Χαροκόπειο Πανεπιστήμιο 26/50

28 Εισαγωγή στις Κλάσεις Στοίβα (πρώτη προσπάθεια) Τι τυπώνει το παρακάτω κομμάτι κώδικα; int main ( ) { stack mystack ; mystack. init ( ) ; for ( int i = 0 ; i < 10; i++) mystack. push ( i ) ; } for ( int i = 0 ; i < 10; i++) cout << mystack. pop ( ) << endl ; Χαροκόπειο Πανεπιστήμιο 27/50

29 Υπερφόρτωση Συναρτήσεων Function Overloading Η C++ μας δίνει την δυνατότητα να ορίσουμε πολλές συναρτήσεις με το ίδιο όνομα αρκεί να έχουν διαφορετικά σύνολα παραμέτρων (διαφορετικούς τύπους). Για να δούμε γιατί είναι χρήσιμη η υπερφόρτωση συναρτήσεων θυμηθείτε τις συναρτήσεις της C int abs(int j) float fabs(double d) long labs(long l) Παρόλο που οι συναρτήσεις κάνουν ουσιαστικά την ίδια δουλειά, είμαστε υποχρεωμένοι να διατηρούμε 3 ξεχωριστά ονόματα. Χαροκόπειο Πανεπιστήμιο 28/50

30 Υπερφόρτωση Συναρτήσεων Function Overloading Στην C++ μπορούμε να διατηρήσουμε ένα όνομα. 1 #include <iostream > 2 using namespace std ; 3 4 int abs ( int i ) { 5 cout << "using integer abs()" << endl ; 6 return i < 0? i : i ; 7 } 8 9 double abs ( double d ) { 10 cout << "using double abs()" << endl ; 11 return d < 0. 0? d : d ; 12 } long abs ( long l ) { 15 cout << "using long abs()" << endl ; 16 return l < 0? l : l ; 17 } int main ( ) { 20 cout << abs( 10) << endl ; 21 cout << abs( 11.0) << endl ; 22 cout << abs( 9L ) << endl ; 23 } Χαροκόπειο Πανεπιστήμιο 29/50

31 Υπερφόρτωση Συναρτήσεων Function Overloading Το πρόγραμμα της προηγούμενης διαφάνειας τυπώνει: using integer abs() 10 using double abs() 11 using long abs() 9 Γενικά για να κάνουμε υπερφόρτωση παραμέτρων πρέπει ο τύπος και/ή ο αριθμός των παραμέτρων κάθε υπερφορτωμένης συνάρτησης να διαφέρουν. Δεν αρκεί να διαφέρουν μόνο στον τύπο επιστροφής. Χαροκόπειο Πανεπιστήμιο 30/50

32 Υπερφόρτωση Τελεστών Operator Overloading Η C++ μας επιτρέπει να υπερφορτώσουμε τελεστές π.χ +, -, κ.τ.λ ώστε να συμπεριφέρονται διαφορετικά ανάλογα με το αντικείμενο. Για παράδειγμα η χρήση του τελεστή << στην περίπτωση του cout << "output" είναι ακριβώς αυτή η περίπτωση. Επειδή είναι κάπως πολύπλοκο αυτό το θέμα, θα το εξετάσουμε σε λεπτομέρεια αργότερα. Χαροκόπειο Πανεπιστήμιο 31/50

33 Κληρονομικότητα Inheritance Στην C++ η κληρονομικότητα υποστηρίζεται επιτρέποντας σε μια κλάση να εισάγει μια άλλη κλάση μέσα στον ορισμό της. Μπορούμε έτσι να φτιάξουμε μια ιεραρχία κλάσεων, από την πιο γενική προς την πιο συγκεκριμένη. Πρώτα ορίζουμε την βασική κλάση (base class), που ορίζει τις ιδιότητες εκείνες που είναι κοινές σε όλα τα αντικείμενα που θα κληρονομήσουν την κλάση αυτή. Μια κλάση που κληρονομεί την βασική κλάση, μπορεί να προσθέσει και ιδιότητες πιο συγκεκριμένες. Χαροκόπειο Πανεπιστήμιο 32/50

34 Κληρονομικότητα Inheritance class building { int floors ; public : int getfloors ( ) { / *... * / } void setfloors ( int floors ) { / *... * / } } ; class house : public building { int bedrooms ; int bathrooms ; public : / *... * / } ; Η κλάση house (derived) έχει πρόσβαση μόνο στα public μέλη της κλάσης building. Για να έχει πρόσβαση και σε μέλη που δεν είναι public πρέπει στην κλάση building να χρησιμοποιήσουμε την πρόσβαση protected. Χαροκόπειο Πανεπιστήμιο 33/50

35 Κληρονομικότητα Inheritance Η κληρονομικότητα μας επιτρέπει να κάνουμε και δυναμικό πολυμορφισμό, με την χρήση συναρτήσεων που αποκαλούνται virtual. Επειδή στα επόμενα εξάμηνα θα έχετε ένα μάθημα σε Java και ένα μάθημα για αντικειμενοστραφή προγραμματισμό, δεν θα μπούμε ακόμη σε λεπτομέρειες. Χαροκόπειο Πανεπιστήμιο 34/50

36 Constructors Είναι συνήθες κάποιο μέρος ενός αντικειμένου να χρειάζεται αρχικοποίηση πριν χρησιμοποιηθεί. Στην περίπτωση της στοίβας που είδαμε προηγουμένως, είχαμε μια συνάρτηση init() την οποία έπρεπε να καλέσουμε αμέσως αφού φτιάχναμε ένα αντικείμενο. Η C++ μας παρέχει την έννοια του constructor για ακριβώς αυτή την διαδικασία. Χαροκόπειο Πανεπιστήμιο 35/50

37 Constructors Στοίβα (δεύτερη προσπάθεια) Μια συνάρτηση constructor είναι μια ειδική συνάρτηση που είναι μέλος μιας κλάσης και έχει το ίδιο όνομα με την κλάση. class stack { private : int array [ ] ; int top ; } ; public : stack ( ) ; / / c o n s t r u c t o r void push ( int i ) ; int pop ( ) ; Προσέξτε πως ο constructor δεν έχει τύπο επιστροφής. Χαροκόπειο Πανεπιστήμιο 36/50

38 Constructors Στοίβα (δεύτερη προσπάθεια) class stack { private : int array [ ] ; int top ; } ; public : stack ( ) ; / / c o n s t r u c t o r void push ( int i ) ; int pop ( ) ; stack : : stack ( ) { top = 0 ; cout << "Stack initialized." << endl ; } Τυπώνουμε το μήνυμα για λόγους εκμάθησης. Συνήθως οι constructors δεν τυπώνουν τίποτα, απλά αρχικοποιούν κατάλληλα. Χαροκόπειο Πανεπιστήμιο 37/50

39 Constructors Ο constructor καλείται αυτόματα όταν ένα αντικείμενο δημιουργείται. Για καθολικά ή στατικά αντικείμενα (μεταβλητές) καλείται μια φορά ενώ για τοπικά αντικείμενα, κάθε φορά που "εκτελείται" η δήλωση του αντικειμένου. Χαροκόπειο Πανεπιστήμιο 38/50

40 Constructors Στοίβα (δεύτερη προσπάθεια) void function ( ) { stack T ; } T. push ( 5 ) ; cout << T. pop ( ) << endl ; int main ( ) { stack S ; Το πρόγραμμα θα εκτυπώσει Stack initialized. 2 Stack initialized. 5 Stack initialized. 5 S. push ( 2 ) ; cout << S. pop ( ) << endl ; } function ( ) ; function ( ) ; Χαροκόπειο Πανεπιστήμιο 39/50

41 Destructors Το ακριβώς αντίθετο του constructor είναι ο destructor. Πολλές φορές ένα αντικείμενο χρειάζεται να πραγματοποιήσει μερικές λειτουργίες πριν καταστραφεί. Για παράδειγμα το αντικείμενο μπορεί να έχει δεσμεύσει δυναμικά μνήμη από το σύστημα και πρέπει να την επιστρέψει. Άλλες φορές μπορεί να έχει ανοίξει ένα αρχείο και να πρέπει να το κλείσει. Χαροκόπειο Πανεπιστήμιο 40/50

42 Destructors Στοίβα (δεύτερη προσπάθεια) Ο destructor έχει το ίδιο όνομα με τον constructor με την διαφορά πως ξεκινάει με ένα ~. class stack { private : int array [ ] ; int top ; } ; public : stack ( ) ; ~stack ( ) ; / / d e s t r u c t o r void push ( int i ) ; int pop ( ) ; stack : : ~ stack ( ) { cout << "Stack destroyed." << endl ; } Χαροκόπειο Πανεπιστήμιο 41/50

43 Constructors και Destructors Στοίβα (δεύτερη προσπάθεια) void function ( ) { stack T ; } T. push ( 5 ) ; cout << T. pop ( ) << endl ; int main ( ) { stack S ; S. push ( 2 ) ; cout << S. pop ( ) << endl ; Το πρόγραμμα θα εκτυπώσει Stack initialized. 2 Stack initialized. 5 Stack destroyed. Stack initialized. 5 Stack destroyed. Stack destroyed. } ; function ( ) ; function ( ) ; Χαροκόπειο Πανεπιστήμιο 42/50

44 Συναρτήσεις Inline Το προσδιοριστικό inline μας επιτρέπει να πούμε στον μεταγλωττιστή να δημιουργήσει ένα αντίγραφο του κώδικα μιας συνάρτησης, για να αποφευχθεί μια κλήση. 1 #include <iostream > 2 3 inline double cube ( const double s ) { 4 return s * s * s ; 5 } 6 7 int main ( ) { 8 double side ; 9 10 std : : cout << "Enter the side length of your cube: " ; 11 std : : cin >> side ; cout << "Volume of cube = " << cube ( side ) << std : : endl ; 14 } Δίνει απλά μια συμβουλή στον μεταγλωττιστή, ο οποίος δεν είναι υποχρεωμένος να την ακολουθήσει. Χαροκόπειο Πανεπιστήμιο 43/50

45 Αναφορές Η C++ παρέχει ένα μηχανισμό ώστε να κάνουμε κλήση μέσω αναφοράς χωρίς δείκτες. Επιτρέπει την δημιουργία ψευδώνυμων μεταβλητών. 1 int main ( ) { 2 int x = 5 ; 3 4 std : : cout << x << std : : endl ; 5 6 int& alias = x ; / / d i f f e r e n t name f o r x 7 alias++; 8 9 std : : cout << x << std : : endl ; 10 } Μια μεταβλητή αναφοράς πρέπει να αρχικοποιείται πάντα, αλλιώς προκύπτει συντακτικό λάθος. Κάθε λειτουργία στην αναφορά γίνεται απευθείας στην μεταβλητή της οποίας η αναφορά είναι ψευδώνυμο. Χαροκόπειο Πανεπιστήμιο 44/50

46 Κλήση μέσω Αναφοράς 1 #include <iostream > 2 3 void square ( int &vref ) { 4 vref *= vref ; 5 } 6 7 int main ( ) { 8 int x = 5 ; 9 10 square ( x ) ; 11 std : : cout << x << std : : endl ; 12 } Αντί για να χρησιμοποιούμε δείκτες μπορούμε να κάνουμε κλήση μέσω αναφοράς με την χρήση αναφορών. Χαροκόπειο Πανεπιστήμιο 45/50

47 Προεπιλεγμένα Ορίσματα Η C++ μας επιτρέπει να θέσουμε προεπιλεγμένες τιμές για τα ορίσματα μιας συνάρτησης. 1 #include <iostream > 2 3 double log ( double x, double base = 2) { 4 / / implementation 5 } 6 7 int main ( ) { 8 std : : cout << log(1024) << std : : endl ; 9 std : : cout << log ( 9, 3) << std : : endl ; 10 } Για να θέσουμε προεπιλεγμένη τιμή σε ένα όρισμα είμαστε υποχρεωμένοι να θέσουμε προεπιλεγμένες τιμές σε όλα τα ορίσματα που ακολουθούν από τα δεξιά. Χαροκόπειο Πανεπιστήμιο 46/50

48 Πρότυπα Συναρτήσεων Η C++ μας επιτρέπει μέσω της λέξης κλειδιού template να φτιάξουμε συναρτήσεις οι οποίες παραμετροποιούνται με τύπους. 1 template<class T> 2 T max ( T value1, T value2, T value3 ) 3 { 4 T max = value1 ; 5 if ( value2 > max ) 6 max = value2 ; 7 if ( value3 > max ) 8 max = value3 ; 9 return max ; 10 } int main ( ) { 13 int c1, c2, c3 ; 14 std : : cin >> c1 >> c2 >> c3 ; 15 std : : cout << max ( c1, c2, c3 ) << std : : endl ; double f1, f2, f3 ; 18 std : : cin >> f1 >> f2 >> f3 ; 19 std : : cout << max ( f1, f2, f3 ) << std : : endl ; 20 } Χαροκόπειο Πανεπιστήμιο 47/50

49 Πρότυπα Συναρτήσεων Ο μεταγλωττιστής μόλις συναντήσει την κλήση της συνάρτησης καταλαβαίνει μέσω των παραμέτρων τον τύπο και δημιουργεί την κατάλληλη συνάρτηση μπορούμε να έχουμε παραπάνω από μια template παράμετρο τα templates είναι μια από τις πιο δυνατές και πιο σημαντικές δυνατότητες της C++ και είναι ο βασικός μηχανισμός του Γενικού Προγραμματισμού (Generic Programming). Χαροκόπειο Πανεπιστήμιο 48/50

50 Λέξεις κλειδιά της C++ Η C++ εκτός από τις λέξεις κλειδιά της C έχει και πολλές νέες λέξεις κλειδιά. asm, bool, catch, class, const_cast, delete, dynamic_cast, explicit, false, friend, inline, mutable, namespace, new, operator, private, protected, public, reinterpret_cast, static_cast, template, this, throw, true, try, typeid, typename, using, virtual, wchar_t Χαροκόπειο Πανεπιστήμιο 49/50

51 Μεταγλωττιστής C++ Τα αρχεία της C++ έχουν συνήθως κατάληξη.cpp.c και τα header.hpp.h Ο μεταγλωττιστής της GNU για την γλώσσα C++ καλείται με την χρήση της εντολής g++. Χαροκόπειο Πανεπιστήμιο 50/50

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++ Εντολές εισόδου - εξόδου Εισαγωγή στη C++ Το πρώτο πρόγραμμα //my first program #include using namespace std; int main(){ cout

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

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

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

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

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

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

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

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

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

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( ) ΣΥΜΒΟΛΟΣΕΙΡΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Ο τύπος string Μετατροπή από και προς τον τύπο string Βασικές μέθοδοι Χρήση Ελληνικών Συναρτήσεις C εκτύπωσης και ανάγνωσης Τελευταία

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

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

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

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

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

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

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

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

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

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

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;.. Επιλογή - Επανάληψη Η εντολή if-else Ο τελεστής παράστασης συνθήκης H εντολή switch Η εντολές for και while Η εντολή do-while Η εντολές break - continue - goto Μαθηματικές συναρτήσεις Λέξεις κλειδιά στη

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ηµιουργία και χειρισµός LIFO λιστών µεταβλητού µήκους µε στοιχεία ακεραίους αριθµούς. Γενίκευση για χειρισµό λιστών πραγµατικών

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

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

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

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

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

ΣΤΟΙΧΕΙΑ ΤΗΣ ΓΛΩΣΣΑΣ 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

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

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

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

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

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

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

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

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραμματισμού

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

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

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

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

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

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

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

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

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

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

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

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

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ

ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ ΚΑΛΟΥΠΩΜΑΤΑ & ΜΕΤΑΤΡΟΠΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Είδη καλουπωμάτων Μετατροπές και έλεγχοι τύπου Τελευταία ενημέρωση: Οκτώβριος 2013 Εισαγωγή - 2 Όπως και στη Java, στη C++

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραµµατισµού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Αρχές Τεχνολογίας Λογισμικού Εργαστήριο Κωδικός Μαθήματος: TP323 Ώρες Εργαστηρίου: 2/εβδομάδα (Διαφάνειες Νίκου Βιδάκη) 1 JAVA Inheritance Εβδομάδα Νο. 3 2 Προηγούμενο μάθημα (1/2) Τι είναι αντικείμενο?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

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

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

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

Συναρτήσεις και Πίνακες Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

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

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

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

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

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

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

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

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

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

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

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

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

public void printstatement() { System.out.println("Employee: " + name + " with salary: " + salary);

public void printstatement() { System.out.println(Employee:  + name +  with salary:  + salary); Κληρονομικότητα Η κληρονομικότητα (inheritance) αποτελεί έναν από τους χαρακτηριστικότερους μηχανισμούς των αντικειμενοστρεφών γλωσσών προγραμματισμού. Επιτρέπει την δημιουργία μιας νέας κλάσης απορροφώντας

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

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

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

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

ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Πέρασμα μεταβλητών, Templates, Συσχετίσεις μεταξύ κλάσεων ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡ/ΣΜΟΣ C++ Μ. Ρήγκου (rigou@ceid.upatras.gr) Τι θα συζητήσουμε σήμερα Πέρασμα με τιμή και με αναφορά Template functions και classes

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

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

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

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch; ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι είναι ; Συναρτήσεις Αυτόνομα τμήματα κώδικα (υποπρογράμματα) που πραγματοποιούν μια καθορισμένη εργασία. Χρήσιμες για περιπτώσεις που ο ίδιος υπολογισμός επαναλαμβάνεται πολλές φορές

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

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

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

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

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

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

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

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

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

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

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

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