- Έτος 1 · Εξάμηνο 2
- Αρχείο
Ετοιμαστείτε να βουτήξετε στον κόσμο των διαγραμμάτων UML και του σχεδιασμού συστημάτων! Σε αυτό το μάθημα, θα μάθουμε πώς να μοντελοποιούμε και να σχεδιάζουμε πληροφοριακά συστήματα από το μηδέν, κυριαρχώντας στην τέχνη του να μετατρέπουμε τις επιχειρηματικές απαιτήσεις σε στιβαρά, επεκτάσιμα λογισμικά συστήματα. Αν σας αρέσει να λύνετε προβλήματα και να σχεδιάζετε τη ραχοκοκαλιά των επιχειρήσεων, αυτό το μάθημα είναι για εσάς. Φέρτε τα καπέλα σκέψης σας και τη δημιουργικότητά σας!
Εβδομάδες
Εβδομάδα 1UML
Εβδομάδα 2Κατανόηση των Τροποποιητών Πρόσβασης και των Μεθόδων
Ασκήσεις εξάσκησης
1η Εργασία Επανάληψης
- Προθεσμία
- Χωρίς προθεσμία — για εξάσκηση
Εκφώνηση
Ερώτημα 1
α) Δημιουργήστε μία κλάση στο πρόγραμμά σας με το όνομα SalesDataApp.
β) Γράψτε μία στατική μέθοδο aboveTargetSales που λαμβάνει έναν πίνακα πωλήσεων και εκτυπώνει τις ημέρες όπου οι πωλήσεις ήταν πάνω από έναν συγκεκριμένο στόχο (π.χ., 1000 μονάδες).
γ) Γράψτε μία στατική μέθοδο highestSales που λαμβάνει έναν πίνακα πωλήσεων και εκτυπώνει την ημέρα με τις υψηλότερες πωλήσεις.
δ) Γράψτε μία στατική μέθοδο convertToDollars που λαμβάνει έναν πίνακα πωλήσεων σε ευρώ και μετατρέπει το ποσό σε δολάρια χρησιμοποιώντας την εξής φόρμουλα:
Dollars = Euros × 1.1
ε) Γράψτε μία στατική μέθοδο displaySales που λαμβάνει έναν πίνακα και εκτυπώνει τις πωλήσεις (σε δολάρια) με την αντίστοιχη ημέρα.
στ) Προσθέστε σχόλια στο πρόγραμμα για να εξηγήσετε τον κώδικα.
Παράδειγμα Εξόδου:
Days with sales above the target of 1000.00 units:
Day 2: 1200.50 units
Day 4: 1100.00 units
Day 5: 1300.50 units
Day 7: 1500.00 units
The highest sales were on Day 7: 1500.00 units
Sales amounts in Dollars:
Day 1: 990.00 USD
Day 2: 1320.55 USD
Day 3: 825.00 USD
Day 4: 1210.00 USD
Day 5: 1430.55 USD
Day 6: 880.00 USD
Day 7: 1650.00 USD
Ερώτημα 2
α) Δημιουργήστε μία κλάση στο πρόγραμμά σας με το όνομα FitnessTrackerApp.
β) Γράψτε μία στατική μέθοδο aboveTargetSteps που λαμβάνει έναν πίνακα βημάτων και εκτυπώνει τις ημέρες όπου τα βήματα ξεπέρασαν έναν συγκεκριμένο στόχο (π.χ., 10,000 βήματα).
γ) Γράψτε μία στατική μέθοδο highestSteps που λαμβάνει έναν πίνακα βημάτων και εκτυπώνει την ημέρα με τον μεγαλύτερο αριθμό βημάτων.
δ) Γράψτε μία στατική μέθοδο convertToKilometres που λαμβάνει έναν πίνακα βημάτων και μετατρέπει τα βήματα σε χιλιόμετρα με τη φόρμουλα:
Kilometres = Steps × 0.0008
ε) Γράψτε μία στατική μέθοδο displaySteps που λαμβάνει έναν πίνακα και εκτυπώνει τις αποστάσεις (σε χιλιόμετρα) με την αντίστοιχη ημέρα.
στ) Προσθέστε σχόλια στον κώδικα για να εξηγήσετε τη λειτουργία του.
Παράδειγμα Εξόδου:
Days with steps above the target of 10000 steps:
Day 2: 12000 steps
Day 4: 15000 steps
Day 5: 11000 steps
Day 7: 14000 steps
The highest steps were on Day 4: 15000 steps
Distances in Kilometres:
Day 1: 6.40 km
Day 2: 9.60 km
Day 3: 7.60 km
Day 4: 12.00 km
Day 5: 8.80 km
Day 6: 5.60 km
Day 7: 11.20 km
2η Εργασία Επανάληψης
- Προθεσμία
- Χωρίς προθεσμία — για εξάσκηση
Εκφώνηση
Ερώτημα 1
Δημιουργήστε μια κλάση με όνομα Vehicle. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητες speed (τύπος int) και fuel (τύπος double).
- Constructor που θα δέχεται ως παραμέτρους την αρχική ταχύτητα και το καύσιμο.
- Private ιδιότητες και τις αντίστοιχες μεθόδους get και set.
- Μέθοδο refuel(double amount) που θα προσθέτει την τιμή amount στην ιδιότητα fuel.
- Μέθοδο printStats() που θα εμφανίζει την ταχύτητα και το καύσιμο του οχήματος.
Δημιουργήστε μια κλάση Car που κληρονομεί την Vehicle. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητα brand (τύπος String), που θα δηλώνει τη μάρκα του αυτοκινήτου.
- Constructor που θα δέχεται ως παραμέτρους τα speed, fuel και brand, και θα καλεί τον constructor της γονικής κλάσης χρησιμοποιώντας super.
- Μέθοδο accelerate(int increment) που θα αυξάνει την ταχύτητα κατά την τιμή increment, αλλά μόνο εάν υπάρχει καύσιμο (π.χ., fuel > 0).
- Υπερκαλυμμένη μέθοδο printStats() που θα καλεί τη μέθοδο printStats() της γονικής κλάσης χρησιμοποιώντας super και θα εμφανίζει επιπλέον τη μάρκα του αυτοκινήτου.
Δημιουργήστε μια κλάση ElectricCar που κληρονομεί την Car. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητα batteryLevel (τύπος int, από 0 έως 100), που θα δηλώνει το ποσοστό φόρτισης της μπαταρίας.
- Constructor που θα δέχεται ως παραμέτρους τα speed, fuel, brand και batteryLevel, και θα καλεί τον constructor της γονικής κλάσης χρησιμοποιώντας super.
- Μέθοδο charge(int percentage) που θα αυξάνει το επίπεδο της μπαταρίας κατά το ποσοστό percentage χωρίς να ξεπερνά το 100.
- Υπερκαλυμμένη μέθοδο accelerate(int increment) που θα ελέγχει εάν η μπαταρία έχει αρκετή ενέργεια (batteryLevel > 10) πριν αυξήσει την ταχύτητα.
- Υπερκαλυμμένη μέθοδο printStats() που θα εμφανίζει επιπλέον το επίπεδο της μπαταρίας.
Στην κύρια κλάση App, κάντε τα εξής:
- Δημιουργήστε ένα αντικείμενο της Vehicle και καλέστε όλες τις μεθόδους του.
- Δημιουργήστε ένα αντικείμενο της Car και καλέστε όλες τις μεθόδους του, συμπεριλαμβανομένων και των μεθόδων που κληρονόμησε.
- Δημιουργήστε ένα αντικείμενο της ElectricCar και καλέστε όλες τις μεθόδους του, επιδεικνύοντας τη χρήση της super για πρόσβαση στις ιδιότητες της γονικής κλάσης.
Ερώτημα 2
Δημιουργήστε μια κλάση Employee. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητες name (τύπος String), salary (τύπος double).
- Constructor που θα δέχεται ως παραμέτρους το όνομα και τον μισθό.
- Private ιδιότητες και τις αντίστοιχες μεθόδους get και set.
- Μέθοδο increaseSalary(double percentage) που θα αυξάνει τον μισθό κατά την τιμή percentage.
- Μέθοδο printDetails() που θα εμφανίζει το όνομα και τον μισθό του υπαλλήλου.
Δημιουργήστε μια κλάση Manager που κληρονομεί την Employee. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητα department (τύπος String), που θα δηλώνει το τμήμα στο οποίο εργάζεται.
- Constructor που θα δέχεται ως παραμέτρους το name, το salary και το department, και θα καλεί τον constructor της γονικής κλάσης χρησιμοποιώντας super.
- Υπερκαλυμμένη μέθοδο printDetails() που θα καλεί τη μέθοδο printDetails() της γονικής κλάσης χρησιμοποιώντας super και θα εμφανίζει επιπλέον το τμήμα.
Δημιουργήστε μια κλάση Executive που κληρονομεί την Manager. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητα bonus (τύπος double), που θα δηλώνει το μπόνους που λαμβάνει ο διευθυντής.
- Constructor που θα δέχεται ως παραμέτρους το name, το salary, το department και το bonus, και θα καλεί τον constructor της γονικής κλάσης χρησιμοποιώντας super.
- Μέθοδο calculateTotalCompensation() που θα επιστρέφει το άθροισμα του μισθού και του μπόνους.
- Υπερκαλυμμένη μέθοδο printDetails() που θα εμφανίζει το όνομα, τον μισθό, το τμήμα και το συνολικό εισόδημα (μισθός + μπόνους).
Στην κύρια κλάση App, κάντε τα εξής:
- Δημιουργήστε ένα αντικείμενο της Employee και καλέστε όλες τις μεθόδους του.
- Δημιουργήστε ένα αντικείμενο της Manager και καλέστε όλες τις μεθόδους του, συμπεριλαμβανομένων και των μεθόδων που κληρονόμησε.
- Δημιουργήστε ένα αντικείμενο της Executive και καλέστε όλες τις μεθόδους του, επιδεικνύοντας τη χρήση της super για πρόσβαση στις ιδιότητες της γονικής κλάσης.
Ερώτημα 3
Δημιουργήστε μια κλάση Shape. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητα color (τύπος String), που θα δηλώνει το χρώμα του σχήματος.
- Constructor που θα δέχεται ως παράμετρο το color.
- Private ιδιότητα και την αντίστοιχη μέθοδο get και set.
- Μέθοδο calculateArea() που θα επιστρέφει 0 (double).
- Μέθοδο printDetails() που θα εμφανίζει το χρώμα του σχήματος.
Δημιουργήστε μια κλάση Rectangle που κληρονομεί την Shape. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητες width και height (τύπος double).
- Constructor που θα δέχεται ως παραμέτρους το color, το width και το height, και θα καλεί τον constructor της γονικής κλάσης χρησιμοποιώντας super.
- Υπερκαλυμμένη μέθοδο calculateArea() που θα υπολογίζει και θα επιστρέφει το εμβαδόν του ορθογωνίου (πλάτος × ύψος).
- Υπερκαλυμμένη μέθοδο printDetails() που θα καλεί τη μέθοδο printDetails() της γονικής κλάσης χρησιμοποιώντας super και θα εμφανίζει επιπλέον το πλάτος, το ύψος και το εμβαδόν του ορθογωνίου.
Δημιουργήστε μια κλάση Circle που κληρονομεί την Shape. Η κλάση αυτή πρέπει να έχει:
- Ιδιότητα radius (τύπος double), που θα δηλώνει την ακτίνα του κύκλου.
- Constructor που θα δέχεται ως παραμέτρους το color και το radius, και θα καλεί τον constructor της γονικής κλάσης χρησιμοποιώντας super.
- Υπερκαλυμμένη μέθοδο calculateArea() που θα υπολογίζει και θα επιστρέφει το εμβαδόν του κύκλου (π.χ., π × ακτίνα × ακτίνα).
- Υπερκαλυμμένη μέθοδο printDetails() που θα καλεί τη μέθοδο printDetails() της γονικής κλάσης χρησιμοποιώντας super και θα εμφανίζει επιπλέον την ακτίνα και το εμβαδόν του κύκλου.
Στην κύρια κλάση App, κάντε τα εξής:
- Δημιουργήστε ένα αντικείμενο της Shape και καλέστε τη μέθοδο printDetails() για να ελέγξετε τη βασική συμπεριφορά της.
- Δημιουργήστε ένα αντικείμενο της Rectangle, ορίστε τιμές για πλάτος και ύψος και καλέστε τις μεθόδους calculateArea() και printDetails().
- Δημιουργήστε ένα αντικείμενο της Circle, ορίστε τιμή για την ακτίνα και καλέστε τις μεθόδους calculateArea() και printDetails().
Επισκόπηση
Καλώς ήρθατε στο μάθημα Μοντελοποίησης & Σχεδίασης Συστημάτων! Στην τάξη αυτή, θα εξετάσουμε τον κόσμο της UML (Unified Modeling Language), μιας ισχυρής γλώσσας που χρησιμοποιείται για να απεικονίσουμε το σχέδιο ενός συστήματος. Η UML μας βοηθά να κατανοήσουμε και να επικοινωνήσουμε καλύτερα τα συστατικά και τη δομή των λογισμικών συστημάτων μέσω μιας σειράς στάνταρ διαγραμμάτων.
Κατά τη διάρκεια του εξαμήνου, θα καλύψουμε διάφορους τύπους διαγραμμάτων UML, με κάθε τύπο να εξυπηρετεί έναν συγκεκριμένο σκοπό και να προσφέρει μοναδικές δυνατότητες. Θα μάθουμε να δημιουργούμε διαγράμματα κλάσεων, διαγράμματα ακολουθίας, διαγράμματα δραστηριοτήτων, και πολλά άλλα, ώστε να μπορέσουμε να αποτυπώσουμε πλήρως τη δομή και τη λειτουργία ενός συστήματος.
Επιπλέον, η τάξη θα περιλαμβάνει μία μεγάλη εργασία, η οποία θα είναι το επίκεντρο της αξιολόγησης για το μάθημα. Η εργασία αυτή θα μας ζητήσει να εφαρμόσουμε τις γνώσεις που έχουμε αποκτήσει και να δημιουργήσουμε ένα πλήρες σύνολο UML διαγραμμάτων για ένα σύστημα της επιλογής μας. Η εργασία αυτή δεν είναι μόνο μια ευκαιρία να εξασκηθούμε σε όσα μάθαμε, αλλά και να κατανοήσουμε τη σημασία της μοντελοποίησης στη διαδικασία σχεδίασης λογισμικού.
Ετοιμαστείτε για ένα ταξίδι στον κόσμο της λογισμικής ανάλυσης και σχεδίασης, όπου οι ιδέες σας θα αποκτούν σχήμα μέσω της UML!
Επανάληψη στη Java
Πριν όμως προχωρήσουμε στην UML, θα πρέπει να βεβαιωθούμε πως είμαστε καλά προετοιμασμένοι και θυμόμαστε όλα όσα μάθαμε το προηγούμενο εξάμηνο. Είναι σημαντικό να έχουμε πλήρη κατανόηση των βασικών εννοιών της Java, καθώς οι δεξιότητες αυτές θα μας βοηθήσουν να κατανοήσουμε καλύτερα την UML και τις εφαρμογές της. Επομένως, για όποιον αισθάνεται πως δεν θυμάται καλά ή χρειάζεται μια επανάληψη, καλό θα ήταν να ολοκληρώσει τις επαναληπτικές ασκήσεις που ακολουθούν. Έτσι, θα βεβαιωθεί ότι βρίσκεται σε ένα καλό επίπεδο πριν ξεκινήσει να μαθαίνει την UML και τα συναφή με αυτήν.