Περίπτωση χρήσης: Process sale Από την ΠΧ στον κώδικα.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Συλλογές, Στοίβες και Ουρές Σε πολλές εφαρμογές μας αρκεί η αναπαράσταση ενός δυναμικού συνόλου με μια δομή δεδομένων η οποία δεν υποστηρίζει την αναζήτηση.
Advertisements

Στοιχειώδεις Δομές Δεδομένων TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Τύποι δεδομένων στη Java • Ακέραιοι.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Λεκτική περιγραφή της περίπτωσης χρήσης «Διεκπεραίωση Πώλησης»
Μεθοδολογίες Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
JAVA και SQL Δαμιανός Χατζηαντωνίου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Προγραμματισμός ΙΙ Διάλεξη #7: Περισσότερες Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Πολυμορφισμός – Late Binding.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές Εξαιρέσεις.
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Διερεύνηση γραφήματος. Ένας αλγόριθμος διερεύνησης γραφήματος επισκέπτεται τους κόμβους του γραφήματος με μια καθορισμένη στρατηγική, π.χ. κατά εύρος.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
Γράφημα TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A Συνδυαστικό αντικείμενο που αποτελείται από.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Θεωρία Υπολογισμού Χρονική Πολυπλοκότητα και Μοντέλα.
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 4: Συμβολοσειρές και Δομές Ελέγχου. Διδάσκων: Νικόλαος Θ Λιόλιος,
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 6: Πίνακες και Παράμετροι στην main. Διδάσκων: Νικόλαος Θ Λιόλιος,
Αντικειμενοστραφής Προγραμματισμός Ι
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
Εισαγωγή στον Προγ/μό Η/Υ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διαγράμματα Κλάσεων Ανάλυση Συστημάτων 2007.
Οντοκεντρικός Προγραμματισμός
Εργαστηριακό σεμινάριο Χειμερινό εξάμηνο
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Software Engineering for Web Applications
Πίνακες και αλφαριθμητικά
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Αναδρομικές Εξισώσεις και Αφηρημένοι Τύποι Δεδομένων
Εισαγωγή στη Java (Μέρος Α’)
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ομαδοποίηση αντικειμένων
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Περίπτωση χρήσης: Process sale Από την ΠΧ στον κώδικα

Περίπτωση Χρήσης ΠΧ1: Διεκπεραίωση Πώλησης (Process sale) Κύριος χρήστης: Ταμίας … Βασική Ροή 1.Ο Πελάτης έρχεται σε ένα ταμείο POS για να αγοράσει προϊόντα. 2.Ο Ταμίας ξεκινά μια νέα πώληση. 3.Ο Ταμίας εισάγει τον κωδικό του προϊόντος και την ποσότητα. 4.Το Σύστημα καταγράφει το προϊόν και παρουσιάζει την περιγραφή, την τιμή και το τρέχον σύνολο. Ο ταμίας επαναλαμβάνει τα βήματα 3-4 μέχρι να δηλώσει την ολοκλήρωση της διαδικασίας. 5.Το Σύστημα εμφανίζει το συνολικό κόστος, συμπεριλαμβανομένων και των φόρων. 6.Ο Ταμίας ενημερώνει τον Πελάτη για το κόστος και ζητάει την πληρωμή. 7.Ο Πελάτης πληρώνει και το Σύστημα διαχειρίζεται την πληρωμή. 8.Το Σύστημα καταγράφει την ολοκληρωμένη πώληση και στέλνει πληροφορίες σχετικές με την πώληση και την πληρωμή στο εξωτερικό Λογιστικό σύστημα (για λογιστική επεξεργασία και υπολογισμό προμηθειών), καθώς και στο Αποθεματικό σύστημα (για την ενημέρωση των αποθεμάτων). 9.Το Σύστημα εκδίδει απόδειξη. 10.Ο Πελάτης αναχωρεί με την απόδειξη και τα προϊόντα.

Το Εννοιολογικό μοντέλο της περιοχής προβλήματος

Διάγραμμα Συνεργασίας

Διάγραμμα Ακολουθίας Περίπτωση χρήσης: Process sale

Το διάγραμμα Κλάσεων

Ο κώδικας σε Java public class ProcesSaleHandler { public static void main(String[] args) { Store store = new Store(); Register reg = new Register(store); store.addRegister(reg); // ΣΥΜΒΑΝ 1: makeNewSale() reg.makeNewSale("19/3/2010", "10:24"); // ΣΥΜΒΑΝ 2: enterItem(itemID, quantity) - Επαναληπτική διαδικασία... // εισάγουμε τον κωδικό του προϊόντος και την ποσότητα reg.enterItem("x1", 4); // εισάγουμε ένα ακόμη προϊόν με την ποσότητα reg.enterItem("x7", 3); // εισάγουμε ένα ακόμη προϊόν με την ποσότητα reg.enterItem("x5", 2); // ΣΥΜΒΑΝ 3: reg.endSale(); // ΣΥΜΒΑΝ 4: makePayment(amount) }

public class Store { private Register reg; private ArrayList prodCat; public Store() { prodCat = new ArrayList(); makeInitialStore(); // Δημιουργεί ένα αρχικό κατάστημα } public void addRegister(Register reg) { this.reg = reg; } // Δημιουργεί ένα αρχικό κατάστημα και πραγματοποιεί κάποιες αρχικές συναλλαγές. private void makeInitialStore(){ // Δημιουργεί και καταχωρεί στο κατάστημα 5 προϊόντα prodCat.add(new Item("x1", "Σαμπουάν", 4.35)); prodCat.add(new Item("x2", "Σαπούνι", 1.28)); prodCat.add(new Item("x3", "Μαλακτικό Ρούχων", 8.72)); prodCat.add(new Item("x4", "Οδοντόκρεμα ΑΙΧ", 2.45)); prodCat.add(new Item("x5", "Οδοντόβουρτσα ΑΙΚ", 2.90)); //Εμφάνισε τα προϊόντα System.out.println("Διαθέσιμα προϊόντα στο κατάστημα"); printItems(); }

public Item findItem(String itemId) { Iterator itr = prodCat.iterator(); while (itr.hasNext()) { // 2.1.1: getItem() Item item = (Item) itr.next(); if (item.getltemlD().equals(itemId)) { return item; } return null; } public void printItems() { Iterator itr = prodCat.iterator(); while (itr.hasNext()) { Item item = (Item) itr.next(); System.out.println(item); } System.out.println("\n"); }

public class Register { private Store store; private Sale currentSale; public Register(Store store) { this.store = store; } public void makeNewSale(String date, String time) { currentSale = new Sale(date, time); System.out.println("\n" + currentSale); } // 2. ΣΥΜΒΑΝ public void enterItem(String itemID, int quantity) { // 2.1: πρώτα βρίσκουμε το Προϊόν Item item = store.findItem(itemID); // 2.1.2: if (item==null) System.out.println(itemID + " Ανύπαρκτο προϊόν"); else // 2.2: μετά δημιουργούμε μία γραμμή πώλησης με το προϊόν, η οποία εμφανίζει // και το τρέχον σύνολο currentSale.enterLineItem(item,quantity); } // 3. ΣΥΜΒΑΝ public void endSale(){ System.out.println("ΓΕΝΙΚΟ ΣΥΝΟΛΟ: " + currentSale.getTotal()); System.out.println(" "); }

public class Sale { private String date; private String time; private double total =0; private ArrayList saleLines; public Sale(String date, String time) { this.date = date; this.time = time; this.saleLines = new ArrayList(); }

// 2.2.a[item found] public void enterLineItem(Item item, int quantity) { // 2.2.1: δημιουργείται μία γραμμή πώλησης SalesLineItem sli = new SalesLineItem(item, quantity); // 2.2.2: η γραμμή πώλησης προστίθεται στον πίνακα saleLines της Sale saleLines.add(sli); // 2.2.3: η γραμμή πώλησης ενημερώνεται με το τρέχον σύνολο total+=sli.getSubTotal(); // 2.2.4: το σύστημα εμφανίζει την γραμμή πώλησης showLineItem(sli); } public void showLineItem(SalesLineItem sli) { System.out.println(sli); //System.out.println(sli.getDescription() + " " + // sli.getPrice() + " " + sli.getQuantity() + " " + sli.getSubTotal()); } public double getTotal() { return total; }

public class SalesLineItem { private Item item; private int quantity; public SalesLineItem(Item item, int quantity) { this.item = item; this.quantity = quantity; } public double getSubTotal() { double subTotal = item.getPrice() * quantity; return(subTotal); } public String getDescription() { return item.getDescription(); } public double getPrice() { return item.getPrice(); } public int getQuantity() { return quantity; } public String toString() { return ("SalesLineItem: " + item.getltemlD() + " Description: " + item.getDescription() + " Price: " + item.getPrice() + " Quantity: " + quantity + " = Ποσό: " + getSubTotal()); }

public class Item { private String itemID; private String description; private double price; public Item(String itemID, String description, double price) { this.itemID = itemID; this.description = description; this.price = price; } public void setDescription(String description) { this.description = description; } public void setItemID(String itemID) { this.itemID = itemID; } public void setPrice(double price) { this.price = price; } public String getltemlD() { return itemID; } public double getPrice() { return price; } public String getDescription() { return description; }