2ο εξάμηνο


Μάθημα: Αντικειμενοστραφής Προγραμματισμός Ι



Κωδικός Μαθήματος: MK10
Επίπεδο Μαθήματος: Προπτυχιακό
Τύπος Μαθήματος: Ειδικού Υποβάθρου
Εξάμηνο: 2
Πιστωτικές Μονάδες: 5
Εβδομαδιαίες Ώρες διδασκαλίας: 4
Erasmus: Ναι
Ιστοσελίδα: eclass.uowm.gr/courses/ICTE209/
Γλώσσα διδασκαλίας:Ελληνική
Γενικές Ικανότητες:

• Αναζήτηση, ανάλυση και σύνθεση δεδομένων και πληροφοριών, με τη χρήση και των
απαραίτητων αντικειμενοστραφών τεχνολογιών ανάπτυξης λογισμικού.
• Λήψη αποφάσεων
• Αυτόνομη εργασία
• Ομαδική εργασία
• Σχεδιασμός και διαχείριση έργων
• Προαγωγή της ελεύθερης, δημιουργικής και επαγωγικής σκέψης

Περιεχόμενο:

Το μάθημα εισάγει τους φοιτητές στις έννοιες που σχετίζονται με τον Αντικειμενοστραφή προγραμματισμό,  στοχεύοντας στην εκμάθηση της πιο δημοφιλούς γλώσσας αντικειμενοστραφούς προγραμματισμού, την Java. Οι φοιτητές θα έρθουν σε επαφή με έννοιες όπως η αφαίρεση, ο πολυμορφισμός, και θα δουν πως αυτές υλοποιούνται μέσω της κληρονομικότητας, της περιεκτικότητας και των διασυνδέσεων. Στο μάθημα γίνεται αναφορά στην διαχείριση ρευμάτων και αρχείων, σε τεχνικές αποσφαλμάτωσης του κώδικα και στη διαχείριση δυναμικών συνόλων δεδομένων. Οι φοιτητές θα εξασκηθούν στη χρήση νημάτων με στόχο τη δημιουργία πολυνηματικών εφαρμογών. Επίσης, οι φοιτητές θα αποκτήσουν πρακτική εμπειρία στην χρήση των παραπάνω εννοιών μέσα από την ενασχόλησή τους με την γλώσσα προγραμματισμού Java, τόσο μέσα από μια σειρά εργαστηριακών μαθημάτων, όσο και μέσα από προγραμματιστικές εργασίες.

 

Ενότητες μαθήματος:

 

  • Ενότητα 1: Εισαγωγή στον Αντικειμενοστραφή Προγραμματισμό, βασικές έννοιες, είδη και γενιές γλωσσών προγραμματισμού, η γλώσσα Java (ιστορικό, εκδόσεις, τεχνολογίες, πλεονεκτήματα)
  • Ενότητα 2: Ανάπτυξη κώδικα Java, το πρώτο πρόγραμμα, τελεστές, εντολές ελέγχου, δομές επανάληψης, εντολές εισόδου- εξόδου, βασικές βιβλιοθήκες/ πακέτα, περιβάλλοντα IDE
  • Ενότητα 3: Κλάσεις & Αντικείμενα, υλοποίηση κλάσεων και αντικειμένων στη Java, σχεδιασμός κλάσεων, τρόποι δημιουργίας και χρήσης, δεδομένα μέλη, συναρτήσεις μέλη, κατασκευαστές, τύποι πρόσβασης σε δεδομένα και συναρτήσεις.  
  • Ενότητα 4: Κλάσεις & Αντικείμενα, modifiers, συναρτήσεις get, set, toString,   έννοιες const, static, η έννοια της υπερφόρτωσης, διαχείριση συμβολοσειρών.
  • Ενότητα 5: Σύνολα δεδομένων, μονοδιάστατοι και δισδιάστατοι πίνακες, Αrraylists, τρόποι προσπέλασης, Iterators 
  • Ενότητα 6: Περιεκτικότητα, αντικείμενα ως δεδομένα μέλη κλάσεων , τρόπος χειρισμού των αντικειμένων, παραδείγματα χρήσης περιεκτικότητας
  • Ενότητα 7: Κληρονομικότητα, υλοποίηση ιεραρχίας κλάσεων, υπερκλάσεις, υποκλάσεις, override συναρτήσεων, παραδείγματα χρήσης κληρονομικότητας σε σχέση με την επιλογή της περιεκτικότητας.
  • Ενότητα 8: Πολυμορφισμός, αφηρημένες κλάσεις,  δυναμική και στατική σύνδεση, μετατροπή τύπων δεδομένων, παραδείγματα πολυμορφισμού
  • Ενότητα 9: Διασυνδέσεις (Interfaces),  ορισμός, στόχοι, «πολλαπλή» κληρονομικότητα
  • Ενότητα 10: Εξαιρέσεις, διαχείριση εξαιρέσεων, ιεραρχία, αλυσιδωτές εξαιρέσεις, τρόπος υλοποίησης νέων εξαιρέσεων, εντοπισμός λαθών. 
  • Ενότητα 11: Γραφική διασύνδεση χρήστη, εισαγωγή στην βιβλιοθήκη Swing,  συστατικά στοιχεία γραφικών διεπαφών, χρώματα, γραμματοσειρές, σχήματα, διαχειριστές γεγονότων 
  • Ενότητα 12: Παράλληλος Προγραμματισμός, Νήματα, προτεραιότητες, χρονοπρογραμματισμός, συγχρονισμός
  • Ενότητα 13:  Αρχεία/ Βάσεις Δεδομένων, είσοδος και έξοδος σε αρχεία, δημιουργία βάσης δεδομένων, σύνδεση  με πρόγραμμα, POJO (Plain Old Java Objects)
Αναμενόμενα μαθησιακά αποτελέσματα:

Με την επιτυχή ολοκλήρωση του μαθήματος οι φοιτητές θα είναι σε θέση να:

  • Κατανοούν σε βάθος τις βασικές αρχές του Αντικειμενοστραφή Προγραμματισμού.
  • Σχεδιάζουν αντικειμενοστραφείς εφαρμογές.
  • Κατανοούν σε βάθος τις έννοιες της ενθυλάκωσης, του πολυμορφισμού και της κληρονομικότητας.
  • Κατανοούν σε βάθος τη δομή των κλάσεων, των μελών και των μεθόδων τους.
  • Κατανοούν σε βάθος τις αφηρημένες κλάσεις και τη χρήση τους.
  • Κατανοούν τη χρήση και λειτουργία των πινάκων, των συμβολοσειρών και των συλλογών στη γλώσσα Java.
  • Σχεδιάζουν και να αναπτύσσουν απλές και σύνθετες εφαρμογές με τη γλώσσα Java.
  • Σχεδιάζουν και να αναπτύσσουν γραφικά περιβάλλοντα διεπαφής με τη γλώσσα Java.
  • Κατανοούν σε βάθος το μηχανισμό εξαιρέσεων της Java και να δημιουργούν νέες εξαιρέσεις.
  • Κατανοούν σε βάθος και να δημιουργούν παράλληλο κώδικα με χρήση νημάτων.
  • Αναγνωρίζουν λάθη στον κώδικα και να τα διορθώνουν.
  • Αξιολογούν λύσεις και να επιλέγουν την πιο κατάλληλη για την εφαρμογή της σε πραγματικά προβλήματα.
Προαπαιτούμενα:

Κανένα

Τρόπος Παράδοσης:

Διαλέξεις και εργαστήρια

Χρήση Τεχνολογιών Πληροφορίας και επικοινωνιών:

Χρήση λογισμικού παρουσιάσεων, Χρήση Η/Υ στις Εργαστηριακές ασκήσεις, Ολοκληρωμένα Περιβάλλοντα ανάπτυξης εφαρμογών ανοικτού κώδικα, Υλοποιημένες ασκήσεις, Πρόσθετες ασκήσεις για υλοποίηση από τους φοιτητές, E-mail για την επικοινωνία με τους φοιτητές, Υποστήριξη μαθησιακής διαδικασίας μέσω της ηλεκτρονικής πλατφόρμας Ε-class

Οργάνωση Διδασκαλίας:

Δραστηριότητα Φόρτος    Εργασίας Εξαμήνου

Διαλέξεις 26
Εργαστηριακές Ασκήσεις           26
Ομαδικές Εργασίες 26
Αυτοτελής Μελέτη 47
Σύνολο Μαθήματος 125

 

Αξιολόγηση Φοιτητών:

Η αξιολόγηση των φοιτητών πραγματοποιείται με:

  • Γραπτή αξιολόγηση
  • Εργαστηριακή εξέταση
  • Ανάπτυξη εφαρμογών (Ομαδικές Εργασίες)

Η γραπτή αξιολόγηση αποσκοπεί στο να εξετάσει τις

γνώσεις των φοιτητών πάνω στη διδαχθείσα ύλη και να

αποτυπώσει το βαθμό αφομοίωσής της. Περιλαμβάνει

ερωτήσεις πολλαπλών επιλογών, ερωτήσεις ελεύθερων

αλλά και σύντομων απαντήσεων, αξιολόγηση κώδικα,

ανάπτυξη κώδικα.

 

Η εργαστηριακή εξέταση αποσκοπεί στο να διαπιστώσει το

βαθμό εξοικείωσης των φοιτητών με την ανάπτυξη

εφαρμογών Java σε πραγματικό χρόνο. Περιλαμβάνει

ανάπτυξη σύντομης εφαρμογής.

 

Οι ομαδικές εργασίες πραγματοποιούνται σε ομάδες 2 ατόμων  και περιλαμβάνουν ανάπτυξη εφαρμογών σε Java. Οι εργασίες κατατίθενται ηλεκτρονικά.

 

Η τελική αξιολόγηση των φοιτητών προκύπτει ως ακολούθως:

60% Βαθμός Γραπτής εξέτασης+ 20% Βαθμός ομαδικών εργασιών + 20%Βαθμός  Εργαστηριακής εξέτασης

Προτεινόμενη Βιβλιογραφία:
  1. Savitch Walter, Απόλυτη Java (περιέχει CD), ΣΤΕΛΛΑ ΠΑΡΙΚΟΥ & ΣΙΑ.
  2. Deitel Paul J.,Deitel Harvey M., Java προγραμματισμός, Χ. ΓΚΙΟΥΡΔΑ 
  3. H. Schildt. Οδηγός της Java, Εκδόσεις Γκιούρδας.
  4. E. Lervik και V.B. Havdal, Java με UML. Εκδόσεις Κλειδάριθμος.
  5. Γ. Λιακέας, Εισαγωγή στην Java, Εκδόσεις Κλειδάριθμος.
  6. R. Cadenhead και L. Lemay, Πλήρες εγχειρίδιο της Java 2,  Μ. Γκιούρδας.

Περιοδικά

  • Science of Computer programming, Elsevier
  • Journal of Systems and Software, Elsevier
  • Proceedings of the ACM on Programming Languages, ACM
Διδάσκων: Μπίμπη Σταματία