Advanced, complete projects

Κάποια Java projects για το μάθημα ακολουθούν. Είναι σημαντικό να τα μελετήσετε όλα και να προσπαθήσετε να καταλάβετε τη λογική τους (κυρίως στη σχεδίαση και στη μετατροπή των απαιτήσεων σε κλάσεις)

Οδηγίες για την παραγωγή τεκμηρίωσης Javadoc από Eclipse, εδώ.

Λυμένα θέματα εδώ.

Όλα τα παρακάτω Java projects έρχονται με (α) καταγραφή και ανάλυση απαιτήσεων (στο φάκελο reqs), (β) σχεδίαση (στο φάκελο dgn), (γ) ελέγχους, και, (δ) documentation (στο φάκελο doc). Είναι πολύ σημαντικό να μελετήσετε:

  • (i) σχεδίαση σε σχέση με την αρχιτεκτονική του λογισμικού και το σχετικό διάγραμμα πακέτων, το πώς τα υποσυστήματα συνδέονται με interfaces, the manager classes implementing the interfaces and exporting the functionality of the package to the rest of the system, abstract coupling, factories, καθώς και το πώς έχουμε διαχωρίσει τη front-end διαπροσωπεία από τη back-end λειτουργικότητα.
  • (ii) την ανάλυση απαιτήσεων, (iii) τους ελέγχους και (iv) την τεκμηρίωση.
  • Μπορείτε να πάρετε και μια μικρή, στοιχείώδη πρόγευση από JavaFX Graphical User Interfaces

Ιδού και τα projects:

Βίντεο Διαλέξεων

Μπορείτε να δείτε κάποια uploaded videos στο Panos Vassiliadis YouTube channel στην playlist ΜΥY301 Software Development.

Διδακτικά Βιβλία

Η σχετική λίστα, όπως έχει δηλωθεί και στο σύστημα Εύδοξος (πατήστε εδώ για το ακ. έτος 2023-2024) είναι η εξής:

  • Αντικειμενοστρεφής Σχεδίαση: UML, Αρχές, Πρότυπα Και Ευρετικοί Κανόνες, Α. Χατζηγεωργίου, Κλειδάριθμος, ISBN 960-209-882-1. Κωδικός Βιβλίου στον Εύδοξο: 13600
  • Ανάπτυξη Προγραμμάτων σε Java: αφαιρέσεις, προδιαγραφές, και αντικειμενοστρεφής σχεδιασμός, B. Liskov and J. Guttag, Κλειδάριθμος, ISBN 978-960-461-063-1. Κωδικός Βιβλίου στον Εύδοξο: 13596

Handouts (all in one)

Όλες οι σημειώσεις για τα θέματα που θα πραγματευθεί το μάθημα βρίσκονται σε ένα αρχείο εδώ (pdf).

Διαφάνειες && Scripts

Στη συνέχεια, οι ίδιες σημειώσεις παρατίθενται οργανωμένες ανά θεματική ενότητα, μαζί με τα αντίστοιχα projects (exported as Eclipse projects in .zip format).

1. Εισαγωγικά του μαθήματος

Βασικές σημειώσεις [pptx]

Οδηγίες για το σχηματισμό ομάδων [pptx].

Top programming languages -- Annual IEEE Spectrum study [local (zip)]

HackerRank's developer skills -- see here a [local copy]

2. Βασικές αρχές αντικειμενοστρεφούς προγραμματισμού

Βασικές σημειώσεις [pptx].

Ασκήσεις επανάληψης [pdf].

Κάποια scripts:
  [a small library example] [files and strings]
  [Bookstore example, as a counterexample of how NOT to use inheritance] [the same example as a simple and acceptable design]

3. Use cases

Βασικές σημειώσεις [pptx]

A template for Use Cases [pdf] and [in source format].

Lab material for use cases: Ηλεκτρονικό Βιβλιοπωλείο (εκτεταμένη εκφώνηση) [εκφώνηση άσκησης σε pdf] [the same pdf, in 2in1 format] [ Ανάλυση της εκφώνησης για εξαγωγή use cases, όπως έγινε στο lab (pdf)]

4. Διαγράμματα UML

Βασικές σημειώσεις [pptx]

Παραδείγματα πιο εξεζητημένων σχεδιάσεων είναι σε όλα τα αναλυτικά projects που παρατίθενται εδώ. Ενδεικτικά: Race simulation.

Επίσης το παράδειγμα από το εστιατόριο στην άκρη του σύμπαντος: [folder with documents for an example] also as [ all files in source+pdf format]. Also: [source code as Eclipse prj + the class diagram].

5. Ανάλυση και Σχεδίαση

Βασικές σημειώσεις [pptx]

Παραδείγματα μετάβασης από απαιτήσεις σε σχεδίαση είναι σε όλα τα αναλυτικά projects που παρατίθενται εδώ. Ενδεικτικά: Restaurant Weekly Evaluation.

Σκελετικό παράδειγμα μηχανογράφησης πιτσαρίας. Αρχική εκδοχή: Eclipse project as .zip, και, πιο ολοκληρωμένη εκδοχή Eclipse project as .zip.

Lab material for design: Ηλεκτρονικό Βιβλιοπωλείο (short version) [εκφώνηση άσκησης σε pdf, in 2in1 format] για το παράδειγμα του Ηλ. Βιβλιοπωλείου, εδώ λυμένο ως [ZIP]. Η ανάλυση της εκφώνησης όπως έγινε στο μάθημα, το Νοέμβρη του 2019.

Lab material for design: TimeSeries Segmentation [εκφώνηση άσκησης σε pdf] για το παράδειγμα του πώς σπάμε μια χρονοσειρά σε φάσεις, εδώ λυμένο ως [ZIP].

Ακούστε τον John Ousterhout να μιλά για τη φιλοσοφία της σχεδίασης του λογισμικού, την αξία της ενθυλάκωσης και της οργάνωσης σε modules, τον ύπουλο τρόπο με τον οποίο η πολυπλοκότητα σιγά σιγά διαβρώνει ένα σύστημα, και την αξία του να καταλαβαίνεις τι είναι και τι δεν είναι σημαντικό σε μια σχεδίαση... "Software should be designed for ease of reading, not ease of writing."

6. Βασικές αρχές αντικειμενοστρεφούς σχεδίασης

Βασικές σημειώσεις [pptx]

Παραδείγματα εφαρμογής των αρχών αντικειμενοστρεφούς σχεδίασης είναι σε όλα τα αναλυτικά projects που παρατίθενται εδώ. Ενδεικτικά: διάσπαση χρονοσειράς.

Σε ένα σεμινάριο που συγκέντρωσε σχεδόν όλους τους "πατριάρχες" της Πληροφορικής, ο John Guttag μιλά για Abstract Data Types (κλικ εδώ) (τη στιγμή που τα γράφω αυτά, video is best viewed in Chrome). Όπου o J. Guttag λέει τον όρο "Abstract Data Type" εσείς καταλαβαίνετε "Interface". Αν δεν καταλαβαίνετε κάποια πράγματα, δεν πειράζει, δείτε μέχρι το τέλος.

7. Testing

Βασικές σημειώσεις [pptx]

To Eclipse συνιστά το εξής vogella tutorial on Eclipse and JUnit to get you started.

Παραδείγματα ελέγχων είναι σε όλα τα αναλυτικά projects που παρατίθενται εδώ. Ενδεικτικά: Advanced Bookstore.

8. Programming

Βασικές σημειώσεις [pptx]

Τι αναμένεται στο τέλος απο σας...

Ένα λυμένο διαγώνισμα θα βρείτε εδώ .

To probe further...

Επίτηδες δε λέω ποιος και πού έγραψε το παρακάτω (και όχι, δεν ήταν στα Αγγλικά). Για σας...

"At some point you have to recognize what world it is that you belong to; what power rules it and from what source you spring; that there is a limit to the time assigned you, and if you don’t use it to free yourself it will be gone and will never return. Concentrate every minute ... on doing what’s in front of you with precise and genuine seriousness, tenderly, willingly, with justice. And on freeing yourself from all other distractions. Yes, you can—if you do everything as if it were the last thing you were doing in your life, and stop being aimless, stop letting your emotions override what your mind tells you, stop being hypocritical, self-centered, irritable."

Τελευταία ενημέρωση: 2022/09/26