====== Αντικειμενοστραφής Προγραμματισμός ====== ===== Πρόγραμμα Διαλέξεων ===== ^ Ημέρα ^ Ώρες ^ Αίθουσα ^ Διδάσκων ^ | Τετάρτη | 9.00 - 11.00 | Αμφ. 115 | Γιώργος Θάνος | | Παρασκευή | 9.00 - 11.00 | Αμφ. 115 | Γιώργος Θάνος | ===== Θεωρία Μαθήματος ===== Μπορείτε να βρείτε τμήματα της θεωρίας του μαθήματος παρακάτω: * [[java:toc|Θεωρεία Java]] * [[cpp:toc|Θεωρεία C++]] ===== Στόχοι του Μαθήματος ===== Στόχος του μαθήματος είναι η γνώση και η χρήση των βασικών εννοιών του αντικειμενοστραφούς προγραμματισμού, με χρήση των γλωσσών προγραμματισμού Java και C++. Ειδικότερα το μάθημα πραγματεύεται τα παρακάτω θέματα: * Κλάσεις και Αντικείμενα * Κληρονομικότητα και ιεραρχίες κλάσεων * Υπερφόρτωση συναρτήσεων * Yπερφόρτωση τελεστών (μόνο για C++) * Πολυμορφισμός * Διεπαφές και abstract classes * Εξαιρέσεις * Νήματα * File I/O * C++ Templates και Java Generics * Java Collections Framework * C++, STL * Network I/O (μόνο για Java) * Γραφικό περιβάλλον επικοινωνίας με Swing (μόνο για Java) Με την ολοκλήρωση του μαθήματος οι φοιτητές θα πρέπει να κατέχουν τις παραπάνω έννοιες και να μπορούν να τις χρησιμοποιούν κατά την συγγραφή προγραμμάτων σε γλώσσες Java και C++. Για τους φοιτητές του παλαιού ΠΠΣ η ύλη παραμένει μόνο Java. ===== Πολιτική του Μαθήματος και Διαδικασία Αξιολόγησης ===== ==== Για τους φοιτητές του νέου ΠΠΣ ==== Το μάθημα περιλαμβάνει κατ' ελάχιστον πέντε (5) υποχρεωτικές εργασίες. Η αξιολόγηση των φοιτητών γίνεται μέσω των εργασιών με βάση τα εξής κριτήρια: * Όλες οι εργασίες πρέπει να παραδοθούν και να πάρουν προβιβάσιμο βαθμό. * Ο τελικός βαθμός προκύπτει από το βαθμό των εργασιών. Κάθε εργασία συμμετέχει στον τελικό βαθμό με διαφορετικό βάρος. * Κάθε εργασία έχει συγκεκριμένη ημερομηνία (deadline) έως την οποία πρέπει να παραδοθεί. * Μία εργασία της επιλογής σας μπορεί να υποβληθεί ή να επανυποβληθεί και μετά την εξεταστική του Ιουνίου έως το τέλος Αυγούστου. Σε αυτή την περίπτωση ο βαθμός θα περαστεί το Σεπτέμβριο. ==== Για τους φοιτητές του παλαιού ΠΠΣ ==== Για τους φοιτητές του παλαιού ΠΠΣ είναι υποχρεωτική η εκπόνηση εργασίας. Η αξιολόγηση των φοιτητών θα γίνει με εξέταση στο εργαστήριο ή εξ' αποστάσεως. Οι φοιτητές καλούνται να γράψουν κώδικα. Από τις εξετάσεις αποκλείονται φοιτητές που δεν έχουν παραδώσει εργασία. Η επαναληπτική εξέταση Σεπτεμβρίου είναι όμοια με αυτή του Ιουνίου. ===== Πολιτική αντιγραφών ===== Φοιτητές που έχουν αντιγράψει σε εργασία ή τελική εξέταση αποκλείονται από το μάθημα για το τρέχον ακαδημαϊκό έτος. ===== Συγγράμματα ===== Προτεινόμενα συγγράμματα στον Εύδοξο. - Java, 4η έκδοση, W. Savitch, Εκδόσεις Α. Τζιόλα & Υιοί Ο.Ε., 2007, Θεσ/νίκη - Απόλυτη Java, W. Savitch, Στέλλα Παρίκου & ΣΙΑ Ο.Ε., 2009, Αθήνα Άλλα συγγράμματα που προτείνονται ==== Για τη γλώσσα Java ==== - [[ http://docs.oracle.com/javase/tutorial/ | Orable Java Documentation]] - Bruce Eckel, [[ http://inf-server.inf.uth.gr/~gthanos/tij3/ | Thinking in Java, 3rd edition]] - Joshua Bloch, [[ https://www.google.gr/search?q=effective+java+2n+edition&ie=UTF-8&sa=Search&channel=fe&client=browser-ubuntu&hl=en&gws_rd=cr,ssl&ei=Ch_SVILwC4G2UdSEgZAP | Effective Java (2nd Edition) ]] - Deitel & Deitel, [[ https://www.google.gr/search?q=effective+java+2n+edition&ie=UTF-8&sa=Search&channel=fe&client=browser-ubuntu&hl=en&gws_rd=cr,ssl&ei=Ch_SVILwC4G2UdSEgZAP#channel=fe&hl=en-GR&q=java+how+to+program+9th+edition+pdf | Java How to Program ]] - Brian Goetz, Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, Doug Lea, [[ https://www.google.gr/search?q=effective+java+2n+edition&ie=UTF-8&sa=Search&channel=fe&client=browser-ubuntu&hl=en&gws_rd=cr,ssl&ei=Ch_SVILwC4G2UdSEgZAP#channel=fe&hl=en-GR&q=java+concurrency+in+practice+pdf | Java Concurrency in Practice]] ==== Για τη γλώσσα C++ ==== * Deitel & Deitel, C Προγραμματισμός (7η έκδοση), [[http://www.mgiurdas.gr/biblia/c-programmatismos-7i-ekdosi|Γκιούρδας]] (διανέμεται στο μάθημα Προγραμματισμός Ι) ή [[https://www.google.gr/search?q=deitel+c+how+to+program+pdf|εδώ για την αγγλική έκδοση]]. * Bruce Eckel, [[http://inf-server.inf.uth.gr/~gthanos/ticpp2-v1/html/Frontmatter.html| Thinking in C++, vol 1, 2nd edition]] * Bruce Eckel, [[http://inf-server.inf.uth.gr/~gthanos/ticpp2-v2/html/TicV2.html|Thinking in C++, vol 2, 2nd edition]] * Savitch, [[http://inf-server.inf.uth.gr/courses/CE630/cpp_fall08/books/Savitch_Absolute_Cpp_1st_Ed_free.pdf| Absolute C++, 1st edition]]