Μεθοδολογίες Προγραμματισμού ΙΙ ΣΧΕΔΙΑΣΤΙΚΑ ΠΡΟΤΥΠΑ (2)

Slides:



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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Μέθοδοι που επιστρέφουν αντικείμενα Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Threading Building Blocks. Σύνοψη  Γενικά για TBBs  Tasks  Parallel for  Εσωτερική λειτουργία βιβλιοθήκης  Task graphs.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Λίστες παράλειψης (skip lists) TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AA A A A
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Αντικείμενα ως ορίσματα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα.
Κεφάλαιο 6 Threads. 2 Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά.
IT2000 vs IT2012 By Fotis Lavdas & Menelaos Makrigiannis.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 11: Χρήση δομών, εξωτερικών αρχείων και γραφικών στο Matlab Εαρινό εξάμηνο 2008.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors, equals, toString Αντικείμενα ως παράμετροι.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 3: Υλοποίηση μεθόδων.
1 HMMY Τεχνολογία Λογισμικού Διδάσκων Κώστας Κοντογιάννης Αναπλ. Καθηγητής, Ε.Μ.Π.
TEMPLATES, STL ΠΡΟΓΡΑΜΜΑΤΑ ΜΕ ΠΟΛΛΑ ΑΡΧΕΙΑ. ΑΝΑΚΕΦΑΛΑΙΩΣΗ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Ασκηση NextGen POS. Ι. Δεληγιάννης, Τμ. Πληροφορικής ΤΕΙ-Θ UNIFIED PROCESS - ΑΝΑΛΥΣΗ2.
Αντικειμενοστρεφής Προγραμματισμός Κλάσεις και άλλα θέματα Απόστολος Ζάρρας * βασισμένα και σε δουλειά του.
Σχεδίαση-Ανάπτυξη Εφαρμογών Πληροφορικής Αντώνιος Συμβώνης, ΕΜΠ, Slide 1 Week 4: Exceptions Εβδομάδα 4: Εξαιρέσεις [Exceptions]
Μεθοδολογίες Προγραμματισμού ΙΙ JUNIT - Test First Design
Πληροφοριακά Συστήματα και Βάσεις Δεδομένων
A model for Context-aware Databases. 19/04/20052 What is Context? Ο καθένας ορίζει το context διαφορετικά... “location, identities of nearby people and.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 7: Συμβολοσειρές.
Εισαγωγή στην Compute Unified Device Architecture (CUDA)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Συλλογές.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Σύνθεση αντικειμένων Παράδειγμα: Τμήμα πανεπιστημίου.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεθοδολογίες Προγραμματισμού ΙΙ Σχεδιαστικά Πρότυπα (2) Παναγιώτης Σφέτσος, PhD
ΠΟΛΥΜΟΡΦΙΣΜΟΣ, ΠΡΟΤΥΠΑ, ΚΑΘΙΕΡΩΜΕΝΗ ΒΙΒΛΙΟΘΗΚΗ ΠΡΟΤΥΠΩΝ Polymorphism, Templates, Standard Template Library (STL)
GUI Components and Events JavaMethods An Introduction to Object-Oriented Programming TM.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κληρονομικότητα Πολυμορφισμός – Late Binding.
Ολυμπιάδα Πληροφορικής
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δείκτες και Συμβολοσειρές (Pointers.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Μεθοδολογίες Προγραμματισμού ΙΙ Αναδόμηση Λογισμικού - 2 Software Refactoring - Εφαρμογές Παναγιώτης Σφέτσος, PhD
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές.
1 Εισαγωγή στη Java Χρήσιμες Διευθύνσεις Χαρακτηριστικά της Java Εργαλεία της Java Εργαλεία της Java Μεταγλώττιση στοιχειωδών εφαρμογών.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γενικευμένες κλάσεις Συλλογές.
Περίπτωση χρήσης: Process sale Από την ΠΧ στον κώδικα.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Copy Constructor Deep and Shallow Copies.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
ΟΣΣ Δεκεμβρίου 2004 Σχεδιασμός Λογισμικού Γλώσσες Προγραμματισμού ΙΙ ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ.
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές.
Threads Στον παραδοσιακό προγραμματισμό όταν ένα πρόγραμμα εκτελείται ονομάζεται process (διεργασία) και οι εντολές του εκτελούνται σειριακά η μία μετά.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 8: Κατασκευαστές. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής. Τμήμα.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 10: Αφηρημένες τάξεις. Διδάσκων: Νικόλαος Θ Λιόλιος, Καθηγητής.
1 Προγραμματισμός Διαδικτύου Ενότητα 3 : Κατηγορίες και κληρονομικότητα Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Μέθοδοι ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού - Κλάσεις ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Διαφάνειες: ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ Προσαρμογή 2014:
Εισαγωγή στον Προγ/μό Η/Υ
Εργαστηριακό σεμινάριο Χειμερινό εξάμηνο
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
Software Engineering for Web Applications
Εισαγωγή στον Προγ/μό Υπολογιστών
Βασικές έννοιες Αντικειμενοστραφούς Προγραμματισμού ΙΙ
ΖΩΓΡΑΦΙΚΗ - ΤΟ ΦΩΝΗΕΝ Ο ΣΗΜΕΡΑ ΘΑ ΜΑΘΟΥΜΕ :
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βασικές ένοιες Αντικειμενοστραφούς Προγραμματισμού
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Java 5 New Features 23-Aug-19.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Μεταγράφημα παρουσίασης:

Μεθοδολογίες Προγραμματισμού ΙΙ ΣΧΕΔΙΑΣΤΙΚΑ ΠΡΟΤΥΠΑ (2) ΕΦΑΡΜΟΓΕΣ Παναγιώτης Σφέτσος, PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Παναγιώτης Σφέτσος Μεθοδολογίες Προγραμματισμού ΙΙ

Factory Method (Εργοστάσιο) (1/5) Παράδειγμα 1ο : Υλοποίηση με Concrete Factor (- Creator) interface Product { } class ConcreteProduct implements Product { } //factory abstract class Creator { public void anOperation(){Product product = factoryMethod();} protected abstract Product factoryMethod(); } class ConcreteCreator extends Creator { protected Product factoryMethod() {System.out.println("H klasi ConcreteProduct tha ylopoihsei to stygmiotypo"); return new ConcreteProduct(); }} class Client { public static void main( String arg[] ) { Creator creator = new ConcreteCreator(); creator.anOperation();}} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Factory Method (Εργοστάσιο) (2/5) Παράδειγμα 2ο Στο παράδειγμα αυτό το ProductB θα αντιστρέφει το όνομα που εισάγεται. Το ProductΑ απλώς καλείται… abstract class Product { public void writeName(String name) {System.out.println("To onoma einai: "+name);}} class ProductA extends Product { } class ProductB extends Product { public void writeName(String name) { StringBuilder tempName = new StringBuilder().append(name); System.out.println("To antistrofo tou onomatos einai: " + tempName.reverse());}} class ProductFactory { Product createProduct(String type) { if(type.equals("B")) return new ProductB(); else return new ProductA();}} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Factory Method (Εργοστάσιο) (3/5) public class TestClientFactory { public static void main(String[] args) { ProductFactory pf = new ProductFactory(); Product prod; prod = pf.createProduct("A"); prod.writeName("Nikas Nikos"); prod = pf.createProduct("B"); } Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Factory Method (Εργοστάσιο) (4/5) Παράδειγμα 3ο Στο παράδειγμα αυτό θα δημιουργούμε στιγμιότυπα διαφορετικών τύπων σκύλων, ανάλογα με κριτήρια που δίνουμε…. interface Dog {public void ratsa ();} class Poodle implements Dog { public void ratsa() {System.out.println("H ratsa tou skyloy einai: Poodle"); }} class Rottweiler implements Dog { public void ratsa() {System.out.println("H ratsa tou skyloy einai: Rottweiler"); }} class SiberianHusky implements Dog { public void ratsa() {System.out.println("H ratsa tou skyloy einai: Husky"); }} class DogFactory { public static Dog getDog(String criteria) { if ( criteria.equals("A") ) return new Poodle(); else if ( criteria.equals("B") ) return new Rottweiler(); else if ( criteria.equals("C") ) return new SiberianHusky(); return null; }} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Factory Method (Εργοστάσιο) (5/5) class JavaFactoryPatternExample { public static void main(String[] args) { Dog dog = DogFactory.getDog("A"); dog.ratsa(); dog = DogFactory.getDog("B"); dog = DogFactory.getDog("C"); }} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Abstract Factory (Αφηρημένο Εργοστάσιο) (1/3) Παράδειγμα: Δημιουργία buttons – τύπου Windows ή Mac. Το αποτέλεσμα θα είναι ένα από τα δύο κουμπιά ανάλογα την παράμετρο που δίνουμε. Ο πελάτης (Application) δεν γνωρίζει ποιο GUIFactory δίνεται και ακόμη ποιο κουμπί θα δημιουργηθεί. Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Abstract Factory (Αφηρημένο Εργοστάσιο) (2/3) interface GUIFactory {public Button createButton();} class WinFactory implements GUIFactory { public Button createButton() { return new WinButton(); }} class MacFactory implements GUIFactory { return new MacButton(); }} interface Button {public void paint();} class WinButton implements Button { public void paint() { System.out.println("to koumpi einai typoy: WinButton"); }} class MacButton implements Button { System.out.println("to koumpi einai typoy: MacButton"); }} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Abstract Factory (Αφηρημένο Εργοστάσιο) (3/3) class Application { public Application(GUIFactory factory){ Button button = factory.createButton(); button.paint(); }} public class ApplicationRunner { public static void main(String[] args) { new Application(createOsSpecificFactory()); } public static GUIFactory createOsSpecificFactory() { int typos = 0; if (typos == 0) { return new WinFactory(); } else { return new MacFactory(); }}} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Template Method (Μέθοδος Υπόδειγμα) (1/3) Παράδειγμα: Διαφορετικές υλοποιήσεις μεθόδων σε διαφορετικά φαγητά… abstract class Meal { // template method public final void doMeal() { prepareIngredients(); cook(); eat(); cleanUp(); } public abstract void prepareIngredients(); public abstract void cook(); public void eat() {System.out.println("Mmm, poly nostimo...");} public abstract void cleanUp(); } Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Template Method (Μέθοδος Υπόδειγμα) (2/3) class FrikaseMeal extends Meal { //Override tis parakatv methodous public void prepareIngredients() {System.out.println("Arnaki, marouli, kremydakia");} public void cook() {System.out.println("Brasimo se hytra h katsarola...");} public void cleanUp() {System.out.println("Plisimo tvn piatvn...");}} class PsitiSardelaMeal extends Meal { public void prepareIngredients() {System.out.println(“Sardeles me ladi kai lemoni...");} public void cook() {System.out.println("Vazeis tis Sardeles sto tapsi kai tis psineis.....");} public void eat() {System.out.println("Oi psites Sardeles einai poly nostimes...");} public void cleanUp() {System.out.println("Kalo plysimo tvn piatvn");}} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ

Template Method (Μέθοδος Υπόδειγμα) (3/3) public class Demo { public static void main(String[] args) { Meal meal1 = new FrikaseMeal(); meal1.doMeal(); System.out.println(); Meal meal2 = new PsitiSardelaMeal(); meal2.doMeal(); }} Παναγιώτης Σφέτσος, Μεθοδολογίες Προγραμματισμού ΙΙ