Software Engineering for Web Applications

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
Advertisements

Δαμιανός Χατζηαντωνίου Οικονομικό Πανεπιστήμιο Αθηνών
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
POINTERS, AGGREGATION, COMPOSITION. POINTERS TO OBJECTS.
Βασικά διαγράμματα σε UML
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
OO Design Principles Ανάπτυξη Λογισμικού (Software Development) ΠΛΥ 308.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Φροντιστήρια Εισηγητής: Σπύρος Αργυρόπουλος Μέλος ΕΤΕΠ Εργαστήριο Προγραμματισμού & Τεχνολογίας Ευφυών Συστημάτων.
Μεθοδολογίες Προγραμματισμού ΙΙ Μ Ε Τ Ρ Ι Κ Ε Σ ΑΝΤΚΕΙΜΕΝΟΣΤΡΕΦΟΥΣ ΣΧΕΔΙΑΣΗΣ Ποιότητα Λογισμικού Παναγιώτης Σφέτσος, PhD
Μεθοδολογίες Προγραμματισμού ΙΙ Έλεγχος Λογισμικού - ECLIPSE JUNIT – TDD TFD + Refactoring Παναγιώτης Σφέτσος, PhD
Μηχανική Λογισμικού ΙΙ
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Εβδομάδα 2: Υπο-τύποι και πολυμορφισμός [sub-typing and polymorphism]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
Μεθοδολογίες Προγραμματισμού ΙΙ
Ποιότητα Λογισμικού Ενότητα 6: Μέτρηση της κάλυψης των ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής.
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
Ποιότητα Λογισμικού Ενότητα 4: Παράδειγμα Ελέγχου. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό Κλάσεις και αντικείμενα Κλάσεις και αντικείμενα Κατασκευαστές κλάσεων (constructors) Κατασκευαστές κλάσεων.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
Ποιότητα Λογισμικού Ενότητα 3: Σουίτες Ελέγχων. Διδάσκων: Γεώργιος Κακαρόντζας, Καθηγητής Εφαρμογών. Τμήμα Μηχανικών Πληροφορικής, Τεχνολογικής Εκπαίδευσης.
Εισαγωγή στον αντικειμενοστραφή προγραμματισμό
ΚΛΗΡΟΝΟΜΙΚΟΤΗΤΑ ΠΟΛΥΜΟΡΦΙΣΜΟΣ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ Θεματολόγιο Κληρονομικότητα Παράδειγμα Κληρονομικότητα – Βελτιωμένο Παράδειγμα Ενθυλάκωση : public – private.
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πολυμορφισμός.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Έλεγχος Ονομάτων (Name Control) Για ένα πρόγραμμα που αποτελείται από πολλά τμήματα κάποια από τα οποία έχουν πιθανώς γραφτεί από άλλους προγραμματιστές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
1 Κεφάλαιο 2 Εισαγωγή στον αντικειμενοστραφή προγραμματισμό.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές) Ένα μεγάλο παράδειγμα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Παράδειγμα Κληρονομικότητας Γενικευμένες κλάσεις.
Κωδικός Θ: ΤΠ4003, Κωδικός Ε: ΤΠ4103 (ΜΕΥ/Υ) Ώρες (Θ - ΑΠ - Ε): Προαπαιτούμενα: ΤΠ2003,2103.
ΟΣΣ2 - 4 Δεκεμβρίου 2005 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
Εισαγωγή στον Προγ/μό Η/Υ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Διαγράμματα Κλάσεων Ανάλυση Συστημάτων 2007.
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Κληρονομικότητα [inheritance]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Κλάσεις και αντικείμενα
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
8.1 Θεματικό πλαίσιο για σύστημα παρακολούθησης ασθενών σε νοσοκομείο
Wrapper Classes, Abstract Classes and Interfaces
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Προγραμματισμός κινητών συσκευών
Πληροφοριακά Συστήματα: Μοντελοποίηση με UML
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Υπο-τύποι και πολυμορφισμός
Κληρονομικότητα [inheritance]
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Software Engineering for Web Applications Reverse Engineering examples ι Παναγιώτης Σφέτσος, PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 1/10 Classes Class (package, αν είναι abstract, …) Τμήμα attributes Τμήμα Μεθόδων Γράφεις: Class if abstract Method if constructor, abstract, … Method signature Attribute type Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 2/10 Classes package simpleBookstoreDemo;   public class Item { public Item(){title="";price=-1.0;} public Item(String aTitle, double aPrice){title = aTitle; price=aPrice;} public void showDetails() { System.out.println(title + "\t\t Price:" + price);} public double getPrice() {return price;} public double getFinalPrice() {return price;} protected String title; protected double price; } Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 4/10 Απεικονίσεις Σχέσεων Dependency : class A uses class B Aggregation : class A has a class B Composition : class A owns a class B Inheritance : class B is a Class A (or class A is extended by class B) Realization : class B realizes Class A (or class A is realized by class B) Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 3/10 Εξάρτηση (dependency) - Η σχέση εξάρτησης απεικονίζει ότι ο εξαρτημένος χρησιμοποιεί κώδικα του εξαρτώμενου - Αν αλλάξει ο κώδικας της εξαρτώμενης κλάσης, ίσως πρέπει να αλλάξει και ο κώδικας της εξαρτημένης κλάσης Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 5/10 Συσχέτιση (Association) class Asset { ... } class Player { Asset asset; public Player(Assest purchasedAsset) { ... } /*Set the asset via Constructor or a setter*/ } - Απεικονίζει το ότι κατά τη διάρκεια εκτέλεσης κάποια εργασίας τα αντικείμενα των δύο κλάσεων συνυπάρχουν και συνεργάζονται - Tο multiplicity δηλώνει το εύρος των επιτρεπόμενων τιμών σχετικών με το πόσα αντικείμενα συνεργάζονται 5, 10, 0..1, 1..10, 1..*, 0..*, κλπ. Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 6/10 Συσχέτιση (Association) Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 7/10 Συσχέτιση (Association) public class ItemManager { private ArrayList<Item> allItems; … } - κάθε αντικείμενο της κλάσης ItemManager συσχετίζεται με μια συλλογή από αντικείμενα της Item Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 8/10 Συσχέτηση (Association) package simpleBookstoreDemo;   public class Item { ... } public class Book extends Item { public class CD extends Item { public class ItemManager { private ArrayList<Item> allItems; Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 9/10 Συνάθροιση (Aggregation) σαν την Συσχέτιση (Association) - Απεικονίζει, όπως και στη Συσχέτιση – μιας μορφής, το ότι κατά τη διάρκεια εκτέλεσης κάποια εργασίας τα αντικείμενα των δύο κλάσεων συνυπάρχουν και συνεργάζονται class Asset { ... } class Player { List assets; public void AddAsset(Asset newlyPurchasedAsset) { assets.Add(newlyPurchasedAssest); ... } ... } Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παραδείγματα – 10/10 Σύνθεση (Composition) - Ένα αντικείμενο της κλάσης B_Class αποτελεί σύνθεση αντικειμένων της kκλάσης C_Class. public class Piece { ... } public class Player { Piece piece = new Piece(); /*Player owns the responsibility of creating the Piece*/ ... } Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Plugin Eclipse – 1/6 Εγκατάσταση του ObjectAid UML Explorer στο Eclipse, Help -> Install New Software… Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Plugin Eclipse – 2/6 2. Βάζουμε την διεύθυνση URL : http://www.objectaid.net/update στο πεδίο Work with Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Plugin Eclipse – 3/6 3. Πατάμε Add και βάζουμε το ObjectAid στο πεδία Name και μετά --> OK Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Plugin Eclipse – 4/6 4. Επιλέγουμε τα plugins που θέλουμε και πατάμε Next Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Plugin Eclipse – 5/6 5. Δεχόμαστε το Licence Agreement και πατάμε Finish Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Plugin Eclipse – 6/6 6. Το plugin εγκαθίσταται………. 7. Εμφανίζει ένα μήνυμα (warning), απαντάμε Ok και το αγνοούμε… 8. Επανεκκίνηση του eclipse Δημιουργία Class Diagram Στον Project Explorer, δεξί Click στο Project’s name -> New -> Other. Στο μενού πατάμε Class Diagram και το πλήκτρο Next. Δίνουμε την διαδρομή του κώδικα και όνομα στο διάγραμμα που θα παραχθεί. Ανοίγει ο editor και τραβάμε (Drag and Drop) όλες τις κλάσεις. Το διάγραμμα παράγεται. Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παράδειγμα -1/5 (javacodegeeks) package com.javacodegeeks.eclipse; public interface Vehicle { public void drive(); public void streer(int direction); public void stop(); } package com.javacodegeeks.eclipse; public class Car implements Vehicle{ int weels; int doors; @Override public void drive() { } public void streer(int direction) { } public void stop() {} } package com.javacodegeeks.eclipse; public class Truck implements Vehicle{ @Override public void drive() { } public void streer(int direction) { } public void stop() {} } Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παράδειγμα -2/5 package com.javacodegeeks.eclipse; public class AstonMartin extends Car { String label; public void bar() {}; } package com.javacodegeeks.eclipse; public class Ferrari extends Car { String badge; public void foo (){ } } Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παράδειγμα -3/5 package com.javacodegeeks.eclipse; public class Man extends Truck { @Override public void drive() { // TODO Auto-generated method stub } public void streer(int direction) { public void stop() { } } Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παράδειγμα -4/5 package com.javacodegeeks.eclipse; public class Scania extends Truck{ @Override public void drive() { // TODO Auto-generated method stub } public void streer(int direction) { public void stop() { Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Παναγιώτης Σφέτσος, Software Engineering - II Παράδειγμα -5/5 Παναγιώτης Σφέτσος, Software Engineering - II Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ