K10 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Χειμερινό Εξάμηνο 2011-2012
Προθεσμία Υποβολής: Παρασκευή 16 Μαρτίου 2012
Νέα Προθεσμία Υποβολής: Παρασκευή 10 Φεβρουαρίου 2012
Προθεσμία Υποβολής: Παρασκευή 20 Ιανουαρίου 2012
Γενικά Στοιχεία
Εξάμηνο: Γ'
Χρόνος και τόπος παραδόσεων:
- Τρίτη, 9:00 - 11:00 (περιττοί αριθμοί μητρώου) και
11:00 - 13:00 (άρτιοι αριθμοί μητρώου),
αίθουσα Α2
- Πέμπτη, 9:00 - 11:00 (άρτιοι αριθμοί μητρώου) και
11:00 - 13:00(περιττοί αριθμοί μητρώου),
αίθουσα Α2
(Σημείωση: Ενδέχεται, κάποια(ες) φορά(ές) να χρειαστεί να γίνει
μάθημα για φοιτητές με περιττούς αριθμούς μητρώου σε ώρες που
έχουν καθορισθεί για φοιτητές με άρτιους αριθμούς μητρώου ή αντίστροφα.
Στην περίπτωση αυτή θα ενημερωθείτε εγκαίρως.)
Διδάσκουσα: Ιζαμπώ Καράλη (izambo)
Μεταπτυχιακοί συνεργάτες:
- Στέφανος Σταμάτης (stef)
- Νίκος Ποθητός (pothitos)
- Λουκία Καρανικόλα (lkaranik)
- Γιώργος Καστρίνης (grad1054)
- Γεώργιος Καφουσόπουλος (grad1073)
- Αναστασίου Βασίλειος-Μάριος (std06066)
- Διαμαντόπουλος Παναγιώτης (std06028)
- Αριστοτέλης Γλεντής (arisg)
- Ορέστης Πολυχρονίου (grad1142)
Φιλική Συμμετοχή:
- Εργκύς Ντόνα
- Βίκυ Πάρρυ
- Παναγιώτης Σάκκος
Σεμινάριο-Θέματα C#: Δημήτρης-Ηλίας Γκανάτσιος
Σεμινάριο-Θέματα Java: Βασίλης Παπαταξιάρχης
Σεμινάριο-Θέματα F#: Αγγελος Μπιμπούδης
Εγκατάσταση και διαχείριση συστήματος φόρουμ:
- Δημήτρης-Ηλίας Γκανάτσιος
- Στέφανος Σταμάτης
- Γιώργος Καστρίνης
Συντονισμός φόρουμ μαθήματος:
- Θοδωρής Γεωργίου
- Δημήτρης Ραβιόλος
- Εργκύς Ντόνα
- Βίκυ Πάρρυ
Περιεχόμενο Μαθήματος
Έννοιες/Γλωσσικές Δομές Αντικειμενοστραφούς Προγραμματισμού
Η Γλώσσα Προγραμματισμού C++
Προγραμματισμός σε Αντικειμενοστραφές Περιβάλλον
- Μάθημα 1: Σύνοψη μαθήματος.
- Μάθημα 2: Προγραμματιστικά περιβάλλοντα.
Γενικά για τον αντικειμενοστραφή προγραμματισμό και τις κλάσεις.
Μηχανισμοί του αντικειμενοστραφούς προγραμματισμού.
- Μάθημα 3: Δομή προγραμμάτων C++. Μεταγλώττιση προγραμμάτων C++.
Αρχεία-επικεφαλίδες.
(Παραδείγματα).
Διαδικαστικός Προγραμματισμός σε C++ (I):
Εκφράσεις, τελεστές, εντολές, ενσωματωμένοι τύποι δεδομένων.
Ορίσματα στη συνάρτηση main. Παραλλαγές Παραδείγματος
Διαδικαστικού Προγραμματισμού.
( Παραδείγματα ).
- Μάθημα 4: Τύποι ορισμένοι από το χρήστη.
- Μάθημα 5: Ιδιότητες του αντικειμενοστραφούς προγραμματισμού.
Ονοματολογία για τις κλάσεις. Κλάσεις και αφηρημένοι τύποι
δεδομένων.
- Μάθημα 6: Εμβέλεια ονομάτων
(Παραδείγματα).
- Μάθημα 7: Εμβέλεια ονομάτων (συνέχεια).
Εισαγωγή στην επώνυμη εμβέλεια: η περίπτωση των Χώρων Ονομάτων
(Παραδείγματα).
- Μάθημα 8: Διαδικαστικός Προγραμματισμός σε C++ (IΙ):
- Μάθημα 9: Διαδικαστικός Προγραμματισμός σε C++ (IΙI):
- Μάθημα 10:
- Μάθημα 11:
- Ορισμός νέου τύπου μέσω struct - Προσδιορισμός ορατότητας
( Παράδειγμα ).
- Ορισμός νέου τύπου μέσω class
( Παράδειγμα ).
- Ο δείκτης this
( Παράδειγμα ).
- accessors/mutators, δομή προγραμμάτων με κλάσεις
( Παράδειγμα ).
- Συναρτήσεις-μέλη inline. Συναρτήσεις κατασκευής-καταστροφής.
( Παράδειγμα )
Συμπληρωματικό εκπαιδευτικό υλικό:
Δηλώσεις κλάσεων
- Μάθημα 12:
- Συναρτήσεις κατασκευής-καταστροφής
(
Παράδειγμα ).
Συμπληρωματικό εκπαιδευτικό υλικό:
Πίνακες αντικειμένων
- Εισαγωγή στη Σύνθεση Κλάσεων.
- Μάθημα 13:
- Σύνθεση κλάσεων, χρήση default τιμών σε συναρτήσεις κατασκευής,
χρήση initializer list
(Παράδειγμα)
- Αρχικοποίηση μελών-δεδομένων τύπου δείκτη
Προβληματική -
Ασφαλής .
- Εισαγωγή στις συναρτήσεις κατασκευής αντιγράφων.
- Μάθημα 14:
- Συναρτήσεις κατασκευής αντιγράφων (συνέχεια)
(
Παράδειγμα ).
- Επαναορισμός του τελεστή ανάθεσης
(
Παράδειγμα).
- Σύνθεση κλάσεων (συνέχεια)
(
Παράδειγμα) -
Σύνθεση κλάσεων: συναρτήσεις κατασκευής αντιγράφων και ο τελεστής ανάθεσης
(Παράδειγμα)
Συμπληρωματικό εκπαιδευτικό υλικό:
(
constructor - copy constructor - assignment operator )
- Μάθημα 15:
- Συναρτήσεις κατασκευής - καταστροφής: λειτουργία
κατά το πέρασμα παραμέτρων συναρτήσεων και επιστροφής τιμής
τους κατά τιμή
(Παράδειγμα).
- Συναρτήσεις κατασκευής - καταστροφής: λειτουργία κατά το πέρασμα
παραμέτρων συναρτήσεων και επιστροφής τιμής τους κατ'αναφορά
(Παράδειγμα).
- Σταθερές και κλάσεις, σταθερά μέλη κλάσεων, στατικά μέλη κλάσεων
( Παράδειγμα ).
- Τύποι ορισμένοι από το χρήστη:
Το παράδειγμα των πτήσεων
.
- Μάθημα 16:
Εισαγωγή στην κληρονομικότητα
(Παράδειγμα
).
- Μάθημα 17:
Προβληματισμοί σχετικά με την κληρονομικότητα.
- Μάθημα 18:
Ασκήσεις στην κληρονομικότητα .
- Μάθημα 19:
Συμπληρωματικό εκπαιδευτικό υλικό:
(
constructors/destructors in class composition, class inheritance and function calls )
- Μάθημα 20:
- Εικονικές συναρτήσεις σε αναφορές
(Παράδειγμα).
- Πλήρως εικονικές συναρτήσεις (pure virtual) -
αφηρημένες κλάσεις (abstract base classes)
(Παράδειγμα ).
- Μάθημα 21:
Συμπληρωματικό εκπαιδευτικό υλικό:
(
virtual/pure virtual συναρτήσεις )
- Μάθημα 22:
- Μάθημα 23:
Είσοδος - έξοδος στη C++:
Συμπληρωματικό εκπαιδευτικό υλικό:
- Μάθημα 24:Ανάπτυξη κώδικα C++ για συγκεκριμένο πρόβλημα:
Κώδικας για μια διαδικαστική αντιμετώπιση.
- Μάθημα 25: Ανάπτυξη κώδικα C++ για συγκεκριμένο πρόβλημα (συνέχεια):
αντικειμενοστραφής μοντελοποίηση.
- Μάθημα 26:
Σεμινάριο Java (Μέρος I)
(
Διαφάνειες (Μέρος I) )
- Μάθημα 27: Σεμινάριο Java (Μέρος II)
Διαφάνειες (Μέρος II)
compiled - decompiled κώδικας με χρήση του DJ java decompiler.
- Μάθημα 28: Σεμινάριο C# (Μέρος I)
Διαφάνειες
- Μάθημα 29: Σεμινάριο C# (Μέρος II)
- Μάθημα 30: Ανάπτυξη κώδικα C++ για συγκεκριμένο πρόβλημα (συνέχεια):
Συνολικός κώδικας.
- Μάθημα 31: Ανάπτυξη κώδικα C++ για συγκεκριμένο πρόβλημα (συνέχεια):
Μια εναλλακτική προσέγγιση.
Βιβλιογραφία
και ένα από τα παρακάτω:
- Bruce Eckel, "Τρόπος Σκέψης στη C++, Τόμος 1",
εκδόσεις Μ. Γκιούρδας, 2009
- Bjarne Strοustrup, "Η Γλώσσα Προγραμματισμού C++"
(Τρίτη Αμερικάνικη Έκδοση), εκδόσεις "Κλειδάριθμος", 1999
- Bjarne Strοustrup, "Προγραμματισμός με τη C++",
εκδόσεις "Παπασωτηρίου", 2009
Ανάπτυξη κώδικα 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
Χρήσιμοι Σύνδεσμοι
Κι ακόμα ...
Εργασία
Το μάθημα συνοδεύεται από ένα πρακτικό μέρος που αποτελείται
από ομάδες ασκήσεων και μια τελική εργασία.
| Γραπτά: | 0.7
|
| Ασκήσεις: | 0.3
|