K10 ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Χειμερινό Εξάμηνο 2021-2022
Νέα Προθεσμία Υποβολής: Τρίτη 25 Ιανουαρίου 2022
Νέα Προθεσμία Υποβολής: Πέμπτη 3 Μαρτίου 2022
Νέα Προθεσμία Υποβολής: Παρασκευή 14 Ιανουαρίου 2022
Νέα Προθεσμία Υποβολής: Τετάρτη 15 Δεκεμβρίου 2021
Γενικά Στοιχεία
Εξάμηνο: Γ'
Χρόνος και τόπος παραδόσεων:
- Πέμπτη, 9:00 - 11:00 (περιττοί αριθμοί μητρώου) και
11:00 - 13:00 (άρτιοι αριθμοί μητρώου),
αίθουσα Α2
- Παρασκευή, 11:00 - 13:00 (άρτιοι αριθμοί μητρώου) και
13:00 - 15:00 (περιττοί αριθμοί μητρώου),
αίθουσα Α2
(Σημείωση: Ενδέχεται, κάποια(ες) φορά(ές) να χρειαστεί να γίνει
μάθημα για φοιτητές με περιττούς αριθμούς μητρώου σε ώρες που
έχουν καθορισθεί για φοιτητές με άρτιους αριθμούς μητρώου ή αντίστροφα.
Στην περίπτωση αυτή θα ενημερωθείτε εγκαίρως.)
Διδάσκουσα: Ιζαμπώ Καράλη (izambo)
Υπεύθυνοι εργαστηρίων:
- Σπυρίδων Ξεργιάς (xergias)
- Αθανασία Κολοβού (akolovou)
- Νίκος Περδικοπάνης (nikosp)
Συνεργάτες:
- Γιώργος Καστρίνης (gkastrinis)
- Εργκύς Ντόνα (e.dona)
- Βασίλειος-Μάριος Αναστασίου (astyanax)
- Στέφανος Σταμάτης (stef)
- Ορέστης Πολυχρονίου (orestis
amazon.com)
- Νίκος Ποθητός (pothitos)
- Αλέξανδρος Καλτσουνίδης (cs2190008)
- Αλέξανδρος Ντογραματζής (ntogram)
- Ευθύμης Τσιλιώνης (eftsilio)
- Κατερίνα Ρουσσάκη (cs2200015)
- Δημήτριος Σουμής (cs2200018)
Φιλική Συμμετοχή:
- Δημήτρης Δημητρίου
- Γιώργος Μουράτος
- Δημήτρης Μυστριώτης
- Χριστίνα Παπασωτήρη
- Χρήστος Φουκανέλης
Περιεχόμενο Μαθήματος
Έννοιες/Γλωσσικές Δομές Αντικειμενοστραφούς Προγραμματισμού
Η Γλώσσα Προγραμματισμού C++
Η Γλώσσα Προγραμματισμού Java
Προγραμματισμός σε Αντικειμενοστραφές Περιβάλλον
- Μάθημα 1: Σύνοψη μαθήματος.
- Μάθημα 2: Βήματα από τον διαδικαστικό στον αντικειμενοστραφή
προγραμματισμό.
- Μάθημα 3: Γενικά για τον αντικειμενοστραφή προγραμματισμό και τις κλάσεις.
Μηχανισμοί του αντικειμενοστραφούς προγραμματισμού.
Ιδιότητες του αντικειμενοστραφούς προγραμματισμού.
- Μάθημα 4:
- Δομή προγραμμάτων C++. Μεταγλώττιση προγραμμάτων C++.
Αρχεία-επικεφαλίδες.
(Παραδείγματα).
- Διαδικαστικός Προγραμματισμός σε C++ (Ι):
- Μάθημα 5: Διαδικαστικός Προγραμματισμός σε C++ (II):
- Μάθημα 6:
- Χώροι Ονομάτων
(Παραδείγματα)
- Τύποι ορισμένοι από το χρήστη.
- Μάθημα 7: Ορισμός νέων τύπων, εισαγωγή στις κλάσεις.
- Ορισμός νέου τύπου μέσω struct - Προσδιορισμός ορατότητας
( Παράδειγμα )
- Συνοπτική παρουσίαση του δείκτη this
- Μάθημα 8:
- Μάθημα 9: Συζήτηση επί των ασκήσεων της Α' Ομάδας
- Μάθημα 10:
- Σύνοψη περί ορισμού κλάσεων, οργάνωσης αρχείων κώδικα
με ορισμούς και χρήση κλάσεων και συναρτήσεων
κατασκευής-καταστροφής
- Συναρτήσεις-μέλη inline
(Παράδειγμα )
- Συναρτήσεις-μέλη inline και
συναρτήσεις κατασκευής-καταστροφής,
χρήση member initializer list.
(Παράδειγμα ).
- Σύνθεση κλάσεων, χρήση default τιμών σε συναρτήσεις
κατασκευής, χρήση member initializer list
(Παράδειγμα)
- Μάθημα 11:
- Σύνοψη περί ορισμού κλάσεων
- Εξάσκηση πάνω στον ορισμό αντικειμένων και
την συμπεροφορά των συναρτήσεων κατασκευής και καταστροφής
- Συναρτήσεις κατασκευής αντιγράφων
(Παράδειγμα)
- Μάθημα 12:
- Επαναορισμός του τελεστή ανάθεσης:
(Παράδειγμα)
- Αρχικοποίηση κατά τη σύνθεση κλάσεων
- Αρχικοποίηση μελών-δεδομένων τύπου δείκτη
- Μάθημα 13:
- Σύνοψη θεμάτων προς αντιμετώπιση όταν ορίζονται νέοι τύποι
- Συναρτήσεις κατασκευής αντιγράφων και Σύνθεση Κλάσεων
(Παράδειγμα)
- Επαναορισμός του τελεστή ανάθεσης και Σύνθεση Κλάσεων
(Παράδειγμα)
- Συζήτηση σχετικά με την επιλογή τύπου στην αναπαράσταση μελών δεδομένων
- Μάθημα 14:
- Πέρασμα παραμέτρων συναρτήσεων και επιστροφής τιμής
τους κατά τιμή
(Παράδειγμα).
- Πέρασμα παραμέτρων συναρτήσεων και επιστροφής
τιμής τους κατ'αναφορά
(Παράδειγμα).
- Συζήτηση για τον ορισμό και χρήση move constructor και
move assignment operator (C++11)
- Σταθερά μέλη κλάσεων, στατικά μέλη κλάσεων
(Παράδειγμα ).
Τύποι ορισμένοι από το χρήστη: Το παράδειγμα των πτήσεων.
- Μάθημα 15:
- Εισαγωγή στην κληρονομικότητα
- Προβληματισμοί σχετικά με την κληρονομικότητα.
- Κληρονομικότητα στη C++: αναπαράσταση και χρήση
αντικειμένων, ορατότητα
Παράδειγμα I
- Μάθημα 16:
- Σύνοψη θεμάτων σχετικών με τη κληρονομικότητα
- Κληρονομικότητα στη C++: αρχικοποίηση - καταστροφή
Παράδειγμα II
- Εισαγωγή στις εικονικές συναρτήσεις.
- Μάθημα 17:
- Μάθημα 18:
- Μάθημα 19: Εισαγωγή στη Java: ιστορικά στοιχεία και λειτουργικότητα.
Το περιβάλλον εκτέλεσης
(Παραδείγματα).
Μεταβλητές στη Java - Τύποι.
- Μάθημα 20:
- Διαβαθμήσεις ορατότητας, modifiers
- Είδη κλάσεων στην Java
- Αρχικοποίηση στιγμιοτύπων στη Java - χρήση block αρχικοποίησης
Παραδείγματα
- Εισαγωγή στην κληρονομικότητα στη Java
- Μάθημα 21: Κληρονομικότητα στη Java (συνέχεια)
Παραδείγματα
- Μάθημα 22:
- Στατικά μέλη στη Java - Αρχικοποίηση κλάσεων - Αρχικοποίηση Interfaces
- Εμβέλεια στατικών μεθόδων
- Στατικά και μη-στατικά μέλη: εμβέλεια, τρόπος χρήσης, αρχικοποιήσεις
- Αρχικοποίηση κλάσεων
- Αρχικοποίηση interfaces
(Παραδείγματα)
- Συζήτηση για τα πακέτα της Java (Παράδειγμα)
- Συζήτηση για αναπαραστάσεις μελών, φιλικές συναρτήσεις, επαναορισμούς τελεστών στη C++
- Μάθημα 23:
- Σεμιναριακή παρουσίαση του συστήματος I/O της C++
- Σεμιναριακή παρουσίαση των templates της C++ και generics της Java
Υλικό Σεμιναρίου
Το εργαστήριο απεθύνεται στους φοιτητές του Γ' Εξαμήνου.
Η συμμετοχή στην εξεταστική του διαδικασία είναι υποχρεωτική
για όλους τους φοιτητές.
Βιβλιογραφία
κι ένα από τα παρακάτω:
- Bruce Eckel, "Τρόπος Σκέψης στη C++, Τόμος 1",
εκδόσεις Μ. Γκιούρδας, 2009
- Bjarne Strοustrup, "Η Γλώσσα Προγραμματισμού C++"
(Τέταρτη Αμερικάνικη Έκδοση), εκδόσεις "Κλειδάριθμος", 2014
- Bjarne Strοustrup, "Προγραμματισμός με τη C++", 2η έκδοση,
εκδόσεις "Παπασωτηρίου", 2018
- Γ. Τσελίκης, "C++: Από τη Θεωρία στην Εφαρμογή",
έκδοση "Γ. Τσελίκης", 2019
Συμπληρωματικό Εκπαιδευτικό Υλικό για τη C++
Συμπληρωματική Βιβλιογραφία του Μαθήματος για τη Java
Το εκπαιδευτικό υλικό από το site της ORACLE για τη Java:
The Java Tutorials: Learning the Java Language
Φόρουμ/Λίστα επικοινωνίας
Βασικό μέσο επικοινωνίας, ενημέρωσης και διατύπωσης/επίλυσης
αποριών σχετικά με το μάθημα είναι
ένα φόρουμ (λίστα) επικοινωνίας που βρίσκεται στη διεύθυνση
http://lists.di.uoa.gr.
Σύμφωνα και με αυτά που ήδη ξέρετε για τη χρήση του, από το μάθημα Κ04,
η παρακολούθηση του φόρουμ/λίστας είναι ανοικτή σε οποιονδήποτε, αλλά
για να μπορεί κάποιος να στείλει και μηνύματα πρέπει να κάνει εγγραφή
εδώ. Πριν προχωρήσετε
στην αίτησή εγγραφής σας, διαβάστε προσεκτικά τους κανόνες εγγραφής που
αναφέρονται στη σχετική σελίδα. Επισημαίνεται ότι το όνομα χρήστη που
πρέπει να δώσετε κατά την εγγραφή σας είναι το
stdXXXXX/studXXXX/gradXXXX σας, καθώς και σαν e-mail αυτό που
σας παρέχεται από το τμήμα.
Τέλος, διαβάστε πολύ προσκετικά και τους
κανόνες του φόρουμ.
Το μάθημα του eclass
Λογισμικό Μαθήματος
- Χρηση του GCC compiler για την C++
(g++)
- Χρήση της Java SE Platform (JDK)
Εκτενέστερη Βιβλιογραφία
- Stanley B. Lippman, Josee Lajoie, "C++ Primer" (3rd Edition),
Addison-Wesley, 1998
- Stanley B. Lippman, Josee Lajoie, Barbara E. Moo,
"C++ Primer" (5th Edition), Addison-Wesley, 2012
- Robert Lafore,
"Αντικειμενοστρεφής προγραμματισμός με τη C++", εκδόσεις Κλειδάριθμος,
2006
- Marc Gregoire, Nicholas A. Solter, Scott J. Kleper,
"Professional C++ Programming", Wrox, 2011
- Paul Wang,
"Standard C++ with Object-orientated Programming", Brooks Cole, 2000
- Bruce Eckel,
"Thinking In Java" (Fourth Edition),
Prentice Hall, 2006
- Russel Winder, Graham Roberts,
"Developing Java Software" (3nd Edition),
John Wiley and Sons, 2006
- Eric Roberts,
"The Art and Science of Java",
Prentice Hall, 2007
- Ken Arnold, James Gosling, David Holmes,
"The Java Programming Language" (Fourth Edition),
Addison-Wesley Professional, 2005
- Bertrand Meyer, "Object-Oriented Software Construction" (2nd Edition),
Prentice Hall, 2000
Χρήσιμοι Σύνδεσμοι
- Η σελίδα του μαθήματος
Κ04-Εισαγωγή στον Προγραμματισμό
- Π. Σταματόπουλου,
Απλή χρήση UNIX
- Ν. Ποθητού:
Αποσφαλμάτωση στις γλώσσες C/C++ και ευκολίες του vim
- Είσοδος - έξοδος στη C++:
- Ανάπτυξη κώδικα C++ για συγκεκριμένο πρόβλημα - Εισαγωγή στη Standard Template Library (από παλαιότερες παραδόσεις)
Κώδικας/Σημειώσεις: Νίκος Ποθητός
-
The C++ Resources Network
- cppreference.com
-
Java Platform, SE8, API Specification
-
Description of Java Conceptual Diagram
- NetBeans Website
- Eclipse Website
-
The C++ Programming Language: from
Bjarne Stroustrup
-
The Java Language Environment: Contents (A White Paper, May 1996)
by: James Gosling and Henry McGilton
-
The Java Tutorials
-
The Java Language Specification (Java SE 8 Edition),
James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Alex Buckley (2015)
-
Ελεύθερη απ'ευθείας ηλεκτρονική διάθεση των βιβλίου του Bruce Eckel
-
Programming -- Principles and Practice Using C++ :
Η σελίδα του βιβλίου του B. Stroustrup
-
C++: από τη Θεωρία στην Εφαρμογή :
Η σελίδα του βιβλίου του Γ. Τσελίκη
- Dr. Dobb's Journal Interview with Alex Stepanov
- Keynote by James Gosling about the origins of Java
-
The Java Virtual Machine Specification, Java SE 8 Edition
Κι ακόμα ...
Ασκήσεις/Εργασία
Το μάθημα συνοδεύεται από ένα πρακτικό μέρος που αποτελείται
από ομάδες ασκήσεων και μια τελική εργασία.
Τα παραδοτέα θα ελεγχθούν σε περιβάλλον Linux.
Σημείωση: Θα ακολουθήσει προφορική εξέταση των εργασιών
Βαθμολογία
Γραπτά: | 0.6
|
Ασκήσεις/Εργασία: | 0.3
|
Βαθμός Εργαστηρίου: | 0.1
|