K10 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Χειμερινό Εξάμηνο 2009-2010
Προθεσμία Υποβολής: Παρασκευή 26 Φεβρουαρίου
Προθεσμία Υποβολής: Δευτέρα 18 Ιανουαρίου
Γενικά Στοιχεία
Εξάμηνο: Γ'
Χρόνος και τόπος παραδόσεων:
- Τρίτη, 9:00 - 11:00 (περιττοί αριθμοί μητρώου) και
11:00 - 13:00 (άρτιοι αριθμοί μητρώου),
αίθουσα Α2
- Πέμπτη, 9:00 - 11:00 (άρτιοι αριθμοί μητρώου) και
11:00 - 13:00(περιττοί αριθμοί μητρώου),
αίθουσα Α2
(Σημείωση: Ενδέχεται, κάποια(ες) φορά(ές) να χρειαστεί να γίνει
μάθημα για φοιτητές με περιττούς αριθμούς μητρώου σε ώρες που
έχουν καθορισθεί για φοιτητές με άρτιους αριθμούς μητρώου ή αντίστροφα.
Στην περίπτωση αυτή θα ενημερωθείτε εγκαίρως.)
Διδάσκουσα: Ιζαμπώ Καράλη (izambo)
Μεταπτυχιακοί συνεργάτες:
- Στέφανος Σταμάτης (stef)
- Νίκος Ποθητός (pothitos)
- Λουκία Καρανικόλα (lkaranik)
- Δημήτρης Ράπτης (grad0954)
- Χρύσα Τζούμα (grad1005)
- Γιώργος Καστρίνης (std05008)
- Γεώργιος Καφουσόπουλος (std05078)
- Δημήτρης Ραβιόλος (std04142)
- Αριστοτέλης Γλεντής (arisg)
Φιλική Συμμετοχή:
- Θοδωρής Γεωργίου
- Ορέστης Πολυχρονίου
- Βίκυ Πάρρυ
Σεμινάριο-Θέματα C#: Δημήτρης-Ηλίας Γκανάτσιος
Σεμινάριο-Θέματα Java: Βασίλης Παπαταξιάρχης
Εγκατάσταση και διαχείριση συστήματος φόρουμ:
- Δημήτρης-Ηλίας Γκανάτσιος
- Στέφανος Σταμάτης
- Γιώργος Καστρίνης
Συντονισμός φόρουμ μαθήματος:
- Θοδωρής Γεωργίου
- Δημήτρης Ραβιόλος
- Βίκυ Πάρρυ
Περιεχόμενο Μαθήματος
Έννοιες/Γλωσσικές Δομές Αντικειμενοστραφούς Προγραμματισμού
Η Γλώσσα Προγραμματισμού C++
Προγραμματισμός σε Αντικειμενοστραφές Περιβάλλον
- Μάθημα 1: Σύνοψη μαθήματος.
- Μάθημα 2: Προγραμματιστικά περιβάλλοντα.
Γενικά για τον αντικειμενοστραφή προγραμματισμό και τις κλάσεις.
Μηχανισμοί του αντικειμενοστραφούς προγραμματισμού.
- Μάθημα 3: Τύποι ορισμένοι από το χρήστη.
- Μάθημα 4: Ιδιότητες του αντικειμενοστραφούς προγραμματισμού.
Ονοματολογία για τις κλάσεις. Κλάσεις και αφηρημένοι τύποι
δεδομένων.
- Μάθημα 5: Δομή προγραμμάτων C++. Μεταγλώττιση προγραμμάτων C++.
Αρχεία-επικεφαλίδες.
(Παραδείγματα).
Διαδικαστικός Προγραμματισμός σε C++ (I):
- Εμβέλεια ονομάτων
(Παραδείγματα).
- Εισαγωγή στην επώνυμη εμβέλεια: η περίπτωση των Χώρων Ονομάτων
- Μάθημα 6:
- Μάθημα 7: Διαδικαστικός Προγραμματισμός σε C++ (II):
Εκφράσεις, τελεστές, εντολές, ενσωματωμένοι τύποι δεδομένων.
Ορίσματα στη συνάρτηση main. Παραλλαγές Παραδείγματος
Διαδικαστικού Προγραμματισμού.
( Παραδείγματα ).
- Μάθημα 8: Διαδικαστικός Προγραμματισμός σε C++ (III):
- Μάθημα 9: Ορισμός νέων τύπων, κλάσεις. Αφαίρεση στα δεδομένα.
- Μάθημα 10:
- accessors/mutators, δομή προγραμμάτων με κλάσεις
( Παράδειγμα ).
- Συναρτήσεις-μέλη inline
( Παράδειγμα ).
- Συναρτήσεις κατασκευής-καταστροφής
- Μάθημα 11: Συναρτήσεις κατασκευής-καταστροφής (συνέχεια)
(
Παράδειγμα ).
- Μάθημα 12: Σύνθεση κλάσεων, χρήση default τιμών σε συναρτήσεις κατασκευής,
χρήση initializer list
(Παράδειγμα).
- Μάθημα 13:
- Συναρτήσεις κατασκευής αντιγράφων.
(
Παράδειγμα ).
- Επαναορισμός του τελεστή ανάθεσης.
(
Παράδειγμα).
- Μάθημα 14:
- Αρχικοποίηση μελών-δεδομένων τύπου δείκτη
Προβληματική -
Ασφαλής .
- Σύνθεση κλάσεων (συνέχεια)
(Παράδειγμα)
- Σύνθεση κλάσεων και ο τελεστής ανάθεσης
(Παράδειγμα)
- Συναρτήσεις κατασκευής - καταστροφής: λειτουργία
κατά το πέρασμα παραμέτρων συναρτήσεων και επιστροφής τιμής
τους κατά τιμή
(Παράδειγμα).
Συναρτήσεις κατασκευής - καταστροφής: λειτουργία κατά το πέρασμα
παραμέτρων συναρτήσεων και επιστροφής τιμής τους κατ'αναφορά
(Παράδειγμα).
- Μάθημα 15:
- Μάθημα 16: Εισαγωγή στους τύπους βιβλιοθήκης και την STL (
Κώδικας/Σημειώσεις για την STL)
- Μάθημα 17:
- Μάθημα 18:
- Μάθημα 19:
- Μάθημα 20:
- Μάθημα 21:
- Είσοδος - έξοδος στη C++
(Παραδείγματα).
- Ανάπτυξη κώδικα C++ για συγκεκριμένο πρόβλημα με αντικειμενοστραφή
μοντελοποίηση.
- Μάθημα 22: Ανάπτυξη κώδικα C++ για συγκεκριμένο πρόβλημα (συνέχεια).
- Μάθημα 23: Σεμινάριο Java (Μέρος I)
(
Διαφάνειες (Μέρος I) )
- Μάθημα 24: Σεμινάριο Java (Μέρος II)
- Μάθημα 25: Σεμινάριο C# (Μέρος I)
- Μάθημα 26:
- Επανάληψη μέσω παραδείγματος υλοποίησης σε C++
(Κώδικας).
- Σεμινάριο C# (Μέρος II), Συνοπτική παρουσίαση της γλώσσας F#.
Βιβλιογραφία
- Οι Σημειώσεις του Μαθήματος (PDF)
( Διαφορές από τις Σημειώσεις του 2005)
- Bruce Eckel, "Τρόπος Σκέψης στη C++, Τόμος 1", εκδόσεις Μ. Γκιούρδας,
2009
(Κεφάλαια από 1ο έως και 15ο).
- Bjarne Strοustrup, "Η Γλώσσα Προγραμματισμού C++"
(Τρίτη Αμερικάνικη Έκδοση), εκδόσεις "Κλειδάριθμος", 1999
(Εκτός των Κεφαλαίων 13, 14, 17, 18, 19, 20, 22 και 25).
Ανάπτυξη κώδικα C++ για συγκεκριμένο πρόβλημα - Εισαγωγή στη Standard Template Library
- Κώδικας/Σημειώσεις: Νίκος Ποθητός
Φόρουμ/Λίστα επικοινωνίας
Βασικό μέσο επικοινωνίας, ενημέρωσης και διατύπωσης/επίλυσης
αποριών σχετικά με το μάθημα είναι
ένα φόρουμ (λίστα) επικοινωνίας που βρίσκεται στη διεύθυνση
http://lists.di.uoa.gr.
Σύμφωνα και με αυτά που ήδη ξέρετε για τη χρήση του, από το μάθημα Κ04,
η παρακολούθηση του φόρουμ/λίστας είναι ανοικτή σε οποιονδήποτε, αλλά
για να μπορεί κάποιος να στείλει και μηνύματα πρέπει να κάνει εγγραφή
εδώ. Πριν προχωρήσετε
στην αίτησή εγγραφής σας, διαβάστε προσεκτικά τους κανόνες εγγραφής που
αναφέρονται στη σχετική σελίδα. Επισημαίνεται ότι το όνομα χρήστη που
πρέπει να δώσετε κατά την εγγραφή σας είναι το
stdXXXXX/studXXXX/gradXXXX σας, καθώς και σαν e-mail αυτό που
σας παρέχεται από το τμήμα.
Τέλος, διαβάστε πολύ προσκετικά και τους
κανόνες του φόρουμ.
Λογισμικό Μαθήματος
- Στο δίκυο των SUNs, υπάρχει ο GCC compiler για την C++
κάτω από τον κατάλογο /usr/sfw/bin/
(εκτελέσιμο g++)
-
SSH GUI Terminal (PuTTY) και
Μηχανήματα στο εργαστήριο των SUNs.
Εκτενέστερη Βιβλιογραφία
- Stanley B. Lippman, Josee Lajoie, "C++ Primer" (3rd Edition),
Addison-Wesley, 1998
- Stanley B. Lippman, Josee Lajoie, Barbara E. Moo,
"C++ Primer" (4th Edition), Addison-Wesley, 2005
- Bjarne Stroustrup, "Προγραμματισμός με τη C++,
Εκδόσεις Παπασωτηρίου, 2009
- Robert Lafore,
"Αντικειμενοστρεφής προγραμματισμός με τη C++", εκδόσεις Κλειδάριθμος,
2005
- Herbert Schildt, "C++: The Complete Reference" (2nd Edition),
McGraw-Hill, 1995
- Nicholas A. Solter, Scott J. Kleper,
"Professional C++ Programming", Hungry Minds Inc,U.S., 2005
- Till Jeske, "C++ Nitty Gritty", Addison-Wesley, 2000
(Pearson Education, 2002)
- H.M. Deitel and P.J. Deitel, "C++:How to program" (3rd Edition),
Prentice Hall, 2001
- Bertrand Meyer, "Object-Oriented Software Construction" (2nd Edition),
Prentice Hall, 2000
- Paul Wang,
"Standard C++ with Object-orientated Programming", Brooks Cole, 2000
- Russel Winder, Graham Roberts, "Developing Java Software" (2nd Edition),
John Wiley and Sons, 2000
- Juan Dent H.,
"An Academic Overview of the .NET Framework with an Emphasis
on Object Orientation Using C#", Microsoft Corporation, 2003
Χρήσιμοι Σύνδεσμοι
Κι ακόμα ...
Εργασία
Το μάθημα συνοδεύεται από ένα πρακτικό μέρος που αποτελείται
από ομάδες ασκήσεων και μια τελική εργασία.
: Δευτέρα 22 Φεβρουαρίου.
Οδηγίες Υποβολής.
Για τις ασκήσεις, θα ακολουθήσει προφορική εξέταση
(οι δοκιμές θα γίνουν σε περιβάλλον UNIX, στο δίκτυο των SUNs).
| Γραπτά: | 0.7
|
| Ασκήσεις: | 0.3
|