Αντικειμενοστρεφής Προγραμματισμός¶
Επίσημο περίγραμμα μαθήματος του ΤΜΗΥΠ (Πανεπιστήμιο Πατρών), όπως δημοσιεύεται στη σελίδα του μαθήματος και στο συνημμένο αρχείο «Περίγραμμα Μαθήματος». Το κείμενο παρατίθεται αυτούσιο, χωρίς τα πρότυπα οδηγιών του εντύπου.
Στόχοι¶
- Εξοικείωση με τους μηχανισμούς χειρισμού πολυπλοκότητας στο διαδικαστικό και το αντικειμενοστρεφές παράδειγμα προγραμματισμού. Κατανόηση του βασικού νοητικού μοντέλου του αντικειμενοστρεφούς Προγραμματισμού (Object-Oriented programming paradigm) ανεξάρτητα γλώσσας προγραμματισμού. Εμπέδωση των διαφορών μεταξύ αντικειμενοστρεφούς και διαδικαστικού προγραμματισμού. Εξοικείωση με τις έννοιες αντικείμενο, κλάση, στιγμιότυπο, υπηρεσία, Κληρονομικότητα, Πολυμορφισμό, Χειρισμό εξαιρέσεων, Γραφικές διεπαφές, μηχανισμό χειρισμού συμβάντων, συλλογή σκουπιδιών, Νήματα, πολυ-νηματικές εφαρμογές, αξιοποίηση του Διαδικτύου ως μέσο αλληλεπίδρασης μεταξύ αντικειμένων. Κατανόηση των βασικών μηχανισμών υλοποίησης του αντικειμενοστρεφούς παραδείγματος χρησιμοποιώντας ως γλώσσα προγραμματισμού την Java. Ανάπτυξη προγράμματος με την αξιοποίηση των βασικών εννοιών του αντικειμενοστρεφούς παραδείγματος προγραμματισμού και των αντίστοιχων κατασκευών αντικειμενοστρεφών γλωσσών προγραμματισμού (Java/C++). Αξιοποίηση βιβλιοθηκών τρίτου κατασκευαστή. Κατανόηση κώδικα με στόχο την επέκταση της λειτουργικότητας του. Εξοικείωση με τις βασικές αρχές της τέχνης του προγραμματισμού (art of programming).
Περιεχόμενο (ύλη)¶
1.Περιορισμοί του διαδικαστικού προγραμματισμού. Η μετάβαση από τον Διαδικαστικό στον Αντικειμενοστρεφή Προγραμματισμό. H αλλαγή παραδείγματος προγραμματισμού (paradigm shift). Η σημασία του αντικειμενοστρεφούς παραδείγματος στην ανάπτυξη συστημάτων. 2. Βασικοί μηχανισμοί για αντιμετώπιση της πολυπλοκότητας. Αφαιρετικότητα στις διεργασίες, αφαιρετικότητα στα δεδομένα. Η αυξητική διαδικασία στην ανάπτυξη λογισμικού. 3. Το νοητικό μοντέλο του Αντικειμενοστρεφούς Προγραμματισμού και η σημασία του. Αντικείμενο, Κλάση, Στιγμιότυπο. Δομή και συμπεριφορά στιγμιοτύπων και κλάσεων. 4. Εισαγωγή στη γλώσσα προγραμματισμού Java. Η Java ως επέκταση της C. Η βασική βιβλιοθήκη της Java. Περιβάλλοντα ανάπτυξης εφαρμογών. 5. Το πρόγραμμα ως συνάθροιση αντικειμένων. Αφαιρετική αναπαράσταση δομής και συμπεριφοράς συστήματος. Βασικά διαγράμματα της UML. Διάγραμμα κλάσεων. Διάγραμμα αλληλεπίδρασης αντικειμένων. 6. Κληρονομικότητα, απλή και πολλαπλή. Η κατασκευή του interface. Πολυμορφισμός, early vs. late binding. 7. Διαχείριση εξαιρέσεων (exception handling). Συλλογή σκουπιδιών (Garbage collection). 8. Αφαιρετικότητα στην επικοινωνία με τον χρήστη. Γραφικές διεπαφές. Μηχανισμός διαχείρισης συμβάντων (Event Handling). 9. Υλοποίηση βασικών εννοιών του αντικειμενοστρεφούς παραδείγματος προγραμματισμού από την γλώσσα προγραμματισμού C++. Η βασική βιβλιοθήκη της C++. Templates, Vectors, ArrayList, LinkedList. Files και streams. 10. Εισαγωγή στην πολυ-νηματική επεξεργασία (Multithreading). 11. Υποστήριξη στην ανάπτυξη κατανεμημένων διαδικτυακών εφαρμογών (network programming). Το μοντέλο πελάτη – εξυπηρετητή. Servlets. Socket programming.
Αξιολόγηση¶
Τελική εξέταση (50-70%)
Εργαστηριακές Ασκήσεις (30-50%)
Βιβλιογραφία¶
- "Από τις Υπολογιστικές στις Κυβερνο-Φυσικές Διεργασίες και το IoT: Αντικείμενα και Υπηρεσίες", Κ. Θραμπουλίδης, ISBN 978-960-418-961-8, © 2022, Εκδόσεις Τζιόλα.
- Η ΤΕΧΝΗ ΚΑΙ ΕΠΙΣΤΗΜΗ ΤΗΣ JAVA: ΜΙΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Eric Roberts, 13958
- ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΣΕ JAVA: ΜΙΑ ΠΡΑΚΤΙΚΗ ΕΙΣΑΓΩΓΗ ΜΕ ΧΡΗΣΗ ΤΟΥ BLUEJ, DAVID J. BARNES, MICHAEL KOLLING.