3222 Προγραμματισμός Υπολογιστών με Java

Υποχρεωτικό Μάθημα Πυρήνα, B’ εξάμηνο, 6 μονάδες ECTS

Διδάσκων: Καθηγητής Α’ Βαθμίδας Βασίλειος Σύρης (Α-Λ), Διδάσκων βάσει του ΠΔ 407/80, Χρήστος Κούτσικας (Μ-Ω)

URL: https://eclass.aueb.gr/courses/INF176/

Περιεχόμενο

Δομή ενός προγράμματος Java και εντολές ελέγχου. Κλάσεις και αντικείμενα: συναρτήσεις δημιουργίας, μεταβλητές στιγμιότυπου, στατικές μεταβλητές, αναφορές σε αντικείμενα. Μέθοδοι: εμβέλεια μεθόδων, απόκρυψη κώδικα, υπερφόρτωση μεθόδων, στατικές μέθοδοι. Πακέτα. Κληρονομικότητα και πολυμορφισμός: βελτιστοποίηση ιεραρχίας κλάσεων και επαναχρησιμοποίηση κώδικα, πολυμορφική επεξεργασία και δυναμική δέσμευση μεθόδων, αφηρημένες και τελικές κλάσεις και μέθοδοι, δημιουργία και χρήση διεπαφών. Σχεδίαση με αντικειμενοστρεφή προγραμματισμό: προσδιορισμός και υλοποίηση σχέσεων μεταξύ κλάσεων, προσδιορισμός ιδιοτήτων και λειτουργιών κλάσεων. Δομές δεδομένων και συλλογές: αυτό-αναφερόμενες κλάσεις και δυναμική δέσμευση μνήμης, συνδεδεμένες λίστες, πίνακες, ουρές, στοίβες, λίστες, διάσχιση, σύνολα, χάρτες. Γενικεύσεις. Είσοδος και έξοδος: ροές bytes/χαρακτήρων, ροές αντικειμένων, φίλτρα, διασυνδέσεις και τάξεις για είσοδο και έξοδο, σειριακή και τυχαία προσπέλαση αρχείων. Χειρισμός εξαιρέσεων.

Μαθησιακά Αποτελέσματα

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

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

Προαπαιτούμενα Μαθήματα

Δεν υπάρχουν υποχρεωτικά προαπαιτούμενα μαθήματα Όμως, συνιστάται ο φοιτητής να έχει εξεταστεί επιτυχώς στο μάθημα «Εισαγωγή στον Προγραμματισμό Υπολογιστών» σε προηγούμενο εξάμηνο.

Συνιστώμενη Βιβλιογραφία

  • Java Προγραμματισμός, Η. Μ. Deitel, P. J. Deitel (μετάφραση από αγγλικό πρωτότυπο), 10η έκδοση, Εκδόσεις Γκιούρδα, 2015.
  • Πλήρες Εγχειρίδιο της Java 7, R. Cadenhead (μετάφραση από αγγλικό πρωτότυπο), 6η έκδοση, Εκδόσεις Γκιούρδα, 2013.
  • Η Τέχνη και Επιστήμη της Java, E. S. Roberts (μετάφραση από αγγλικό πρωτότυπο), Εκδόσεις Κλειδάριθμος, 2008.

Διδακτικές και Μαθησιακές Μέθοδοι

Διαλέξεις (2 διαλέξεις των 2 ωρών εβδομαδιαίως), φροντιστήρια (1 φροντιστήριο των 2 ωρών εβδομαδιαίως), ατομικές φροντιστηριακές εργασίες στο εργαστήριο και 3 ομαδικές προγραμματιστικές εργασίες κατ’ οίκον.

Μέθοδοι Αξιολόγησης/Βαθμολόγησης

Ο τελικός βαθμός ισούται µε τον βαθμό της γραπτής τελικής εξέτασης (η οποία έχει άριστα το 8), αν αυτός είναι μικρότερος από 4, και, αν ο βαθμός της γραπτής τελικής εξέτασης είναι τουλάχιστον 4, µε τον βαθμό της γραπτής τελικής εξέτασης προσαυξημένο μέχρι και 2 μονάδες, ανάλογα µε την επίδοση στις 3 ομαδικές προγραμματιστικές εργασίες. Οι 3 ομαδικές προγραμματιστικές εργασίες εξετάζονται προφορικά στο τέλος του εξαμήνου και ο βαθμός είναι ατομικός για κάθε φοιτητή.