Το μάθημα αναφέρεται στους μηχανισμούς χειρισμού πολυπλοκότητας στην ανάπτυξη εφαρμογών και εστιάζει στο Αντικειμενοστρεφές παράδειγμα προγραμματισμού και στην αξιοποίηση του για ανάπτυξη εφαρμογών. Εισάγει βασικές έννοιες για αφαιρετική περιγραφή του συστήματος (Unified Modeling Language – UML)
Εστιάζει στην κατανόηση του νοητικού μοντέλου (conceptual model) του αντικειμενοστρεφούς προγραμματισμού και στους μηχανισμούς της γλώσσας προγραμματισμού που υλοποιούν τις βασικές αυτές έννοιες. Χρησιμοποιεί ως γλώσσα προγραμματισμού την Java. Προϋποθέτει γνώση του διαδικαστικού προγραμματισμού και της Γλώσσας προγραμματισμού C.
Οργανώθηκε ως μάθημα επιλογής 7ου εξαμήνου στο Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών (Electrical & Computer Engineering) του Πανεπιστημίου Πατρών. Πρόσφατα μεταφέρθηκε στο 2ο έτος ως μάθημα κορμού.
Το μάθημα έχει ως βάση το Teaching Object-Oriented Programming - A Constructivism-Based Approach
Το μάθημα έχει στόχο την:
Εξοικείωση με τους μηχανισμούς χειρισμού πολυπλοκότητας. Κατανόηση του βασικού νοητικού μοντέλου του αντικειμενοστρεφούς Προγραμματισμού (Object Oriented programming paradigm).
Εμπέδωση των βασικών διαφορών μεταξύ αντικειμενοστρεφούς και διαδικαστικού προγραμματισμού.
Κατανόηση των βασικών μηχανισμών υλοποίησης του αντικειμενοστρεφούς παραδείγματος χρησιμοποιώντας ως γλώσσα προγραμματισμού την Java.
Εξοικείωση με τις βασικές αρχές της τέχνης του προγραμματισμού (art of programming).
Εισαγωγή στο μάθημα. Η σημασία του Λογισμικού για τον Ηλεκτρολόγο Μηχανικό. Ενσωματωμένα συστήματα. Συστήματα Μηχανοτρονικής. Cyber-Physical systems. Διαδίκτυο Αντικειμένων. Σύγχρονες τάσεις.
Βασικοί μηχανισμοί για αντιμετώπιση της πολυπλοκότητας. Αφαιρετικότητα στις διεργασίες, αφαιρετικότητα στα δεδομένα. Επίπεδο αφαιρετικότητας υλικού-HAL.
Περιορισμοί του διαδικαστικού προγραμματισμού. Η μετάβαση από τον Διαδικαστικό στον Αντικειμενοστρεφή Προγραμματισμό. H αλλαγή παραδείγματος προγραμματισμού (paradigm shift).
Εισαγωγή στην Τεχνολογία αντικειμένων. Αντικείμενο, Κλάση, Στιγμιότυπο. Το πρόγραμμα ως συνάθροιση αντικειμένων. Βασικά διαγράμματα της UML. Διάγραμμα κλάσεων. Διάγραμμα αλληλεπίδρασης αντικειμένων.
Το νοητικό μοντέλο του Αντικειμενοστρεφούς Προγραμματισμού. Εισαγωγή στη γλώσσα προγραμματισμού Java. Η Java ως επέκταση της C. Η βασική βιβλιοθήκη της Java. Περιβάλλοντα ανάπτυξης εφαρμογών.
Κληρονομικότητα, απλή και πολλαπλή. Η κατασκευή του interface.
Πολυμορφισμός, early vs. late binding.
Αφαιρετικότητα στην επικοινωνία με τον χρήστη. Γραφικές διεπαφές. Το Abstract Window Toolkit (awt).
Μηχανισμός διαχείρισης συμβάντων (Event Handling).
Διαχείριση εξαιρέσεων (exception handling). Συλλογή απορριμμάτων (Garbage collection).
Πολυ-νηματική επεξεργασία (Multithreding).
Εισαγωγή στην ανάπτυξη κατανεμημένων διαδικτυακών εφαρμογών (network programming). Ανάπτυξη πελάτη – εξυπηρετητή. Servlets. Socket programming. Αυξάνοντας την αφαιρετικότητα στο προγραμματισμού πάνω από το διαδίκτυο. Το παράδειγμα της Java. Το Διαδίκτυο των Αντικειμένων (ΙοΤ). Υποστήριξη στην Υπηρεσιοστρεφή αρχιτεκτονική (Service Oriented Architecture).
Το αντικειμενοστρeφές παράδειγμα σε άλλες γλώσσες, C++, C#, Python.
Διάλεξη - Φροντιστήριο
Εργαστήριο
Εργασίες
Παράδοση εργαστηριακών ασκήσεων
Παράδοση εργασίας
Παρουσίαση - Εξέταση εργασίας
Τελική γραπτή εξέταση
Βασικά Συγγράμματα (Εύδοξος)
ΑΝΑΠΤΥΞΗ ΠΡΟΓΡΑΜΜΑΤΩΝ ΣΕ JAVA
Κωδικός Βιβλίου στον Εύδοξο: 13596
Έκδοση: 1η/2007
Συγγραφείς: BARBARA LISKOV, JOHN GUTTAG
ISBN: 978-960-461-063-1
Διαθέτης (Εκδότης): ΕΚΔΟΣΕΙΣ ΚΛΕΙΔΑΡΙΘΜΟΣ ΕΠΕ
Αντικειμενοστρεφής προγραμματισμός - JAVA
Κωδικός Βιβλίου στον Εύδοξο: 9298
Έκδοση: 3η έκδ./2005
Συγγραφείς: Θραμπουλίδης Κλεάνθης
ISBN: 960-418-033-9
Διαθέτης (Εκδότης): ΕΚΔΟΣΕΙΣ Α. ΤΖΙΟΛΑ & ΥΙΟΙ Ο.Ε.
Java Προγραμματισμός (Κωδικός Βιβλίου στον Εύδοξο: 50659320)
Η ΤΕΧΝΗ ΚΑΙ ΕΠΙΣΤΗΜΗ ΤΗΣ JAVA: ΜΙΑ ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ (Κωδικός Βιβλίου στον Εύδοξο: 13958)
Πρόσθετη Βιβλιογραφία
Introduction to Programming Using Java
Sixth Edition, Version 6.0, June 2011 link
Free, on-line textbook on introductory programming, which uses Java as the language of instruction.
Thinking in Java
3rd Edition link
Free Electronic Book
Άλλες πηγές
Java programming notes written to fill in missing or weak topics in textbooks
Στην κεντρική Βιβλιοθήκη μπορείτε να βρείτε αρκετά εκπαιδευτικά βοηθήματα για το μάθημα.
Γενικοί
The GNU Compiler Collection
A Linux-like environment for Windows
Teaching Object-Oriented Programming
Teaching Object-Oriented Programming: A Constructivism-Based Approach
Δικτυακός τόπος βιβλίου "Διαδικαστικός Προγραμματισμός C"
Δικτυακός τόπος βιβλίου "Αντικειμενοστρεφής προγραμματισμός - Java"
On programming Languages
Programming by Example Home Page
Resource on Computer Languages
Programming Language Comparison
Java programming Language
Τεκμηρίωση της Βασικής Βιβλιοθήκης της Java
Java 2 Platform, Standard Edition
A complete environment for applications development with Java
The Java Language Specification
Written by the inventors of the technology, The Java Language Specification, Third Edition is the definitive technical reference for the Java programming language. If you want to know the precise meaning of the language's constructs, this is the source for you.
The book provides complete, accurate, and detailed coverage of the Java programming language.
JDK Java Development Kit (JDK)
BlueJ The interactive Java environment.
Eclipse and Java for Total Beginners Free Video Tutorials
C programming Language
Περιβάλλοντα Ανάπτυξης Περιβάλλοντα εξάσκησης με τον Διαδικαστικό προγραμματισμό και την C
C Standard Library Περιλιπτική αναφορά στη Βασική βιβλιοθήκη της C
“The GNU C library, described in this document, defines all of the library functions that are specified by the ANSI C standard,…”.
Programming in C: A Tutorial by Brian W. Kernighan
This ``tutorial'' is presented as a historical document, not as a tutorial.(δες διτυακό τόπο)
Crimson Editor A professional source editor for Windows Δοκιμάστε τη χρήση του στα πλαίσια του εργαστηρίου.
GCC, the GNU Compiler Collection
Brian W. Kernighan: Programming in C: A Tutorial
Γενικές Πληροφορίες για το μάθημα (Επιδιωκόμενα μαθησιακά αποτελέσματα, Δεξιότητες, Προαπαιτήσεις, Πιστωτικές μονάδες ECTS, κλπ) εδώ
Παλιά Ιστοσελίδα Μαθήματος http://seg.ece.upatras.gr/Courses/OT/index.htm