Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu)

Podobne dokumenty
Laboratorium 8 Diagramy aktywności

Programowanie obiektowe

Diagram stanów Laboratorium 9

Java. Programowanie Obiektowe Mateusz Cicheński

Metody Metody, parametry, zwracanie wartości

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Dokumentacja do API Javy.

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Programowanie i projektowanie obiektowe

Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Aplikacje RMI Lab4

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Iteracyjno-rozwojowy cykl oprogramowania 4

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

public enum Environment { Development("Deweloperskie"), Test("Testowe"), Production("Produkcyjne"); private String name;

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Wykład 12. Programowanie serwera MS SQL 2005 w C#

Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.

Wykład 7: Pakiety i Interfejsy

Zaawansowane aplikacje WWW - laboratorium

Przykład 1 Iteracja 2 tworzenia oprogramowania Diagramy klas i sekwencji:

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy


Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Języki i metody programowania Java Lab2 podejście obiektowe

Klasy i obiekty cz II

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Wstęp. Ale po co? Implementacja

Laboratorium Programowania Kart Elektronicznych

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Przykład -

Języki i metody programowania Java. Wykład 2 (część 2)

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Wykład 4: Klasy i Metody

Kompozycja i dziedziczenie klas

Projektowanie oprogramowania: wzorce architektoniczne i projektowe

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Programowanie obiektowe

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Programowanie obiektowe

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Programowanie obiektowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Programowanie obiektowe

Wieloplatformowe aplikacje sieciowe. dr inż. Juliusz Mikoda mgr inż. Anna Wawszczak

Bartosz Jachnik - Kino

Kurs programowania. Wykład 9. Wojciech Macyna

Podejście obiektowe do budowy systemów rozproszonych

Metryki. Przykłady pomiaru złożoności modułowej i międzymodułowej oprogramowania. autor: Zofia Kruczkiewicz

Projektowanie obiektowe. dr Jarosław Skaruz

METODY PROGRAMOWANIA

Programowanie obiektowe i zdarzeniowe

Połączenia między bazami danych i programem w języku Java część 2

Platformy Programistyczne Podstawy języka Java

Programowanie w języku Java. Kolekcje

Aplikacje bazodanowe. dr inż. Arkadiusz Mirakowski

Modelowanie obiektowe

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Przykłady interfejsu TCP i UDP w Javie

Iteracyjno-rozwojowy cykl oprogramowania cykl 2. Java Zofia Kruczkiewicz 1

Java Platform Micro Edition

Wzorce logiki dziedziny

1. Uruchomić i skonfigurować środowisko tworzenia aplikacji i serwer aplikacji.

Laboratorium 2_3_4 Wzorce oprogramowania zastosowane w modelu obiektowym (wg Alan Shalloway, James R.Trott)

Polimorfizm. dr Jarosław Skaruz

Programowanie obiektowe

Przewodnik krok po kroku:

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Programowanie obiektowe

Wykorzystywanie parsera DOM w programach Java i PL/SQL

Aplikacje w środowisku Java

KLASY, INTERFEJSY, ITP

Na przykładzie języków Java, C# i odrobiny C++ Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wywoływanie metod zdalnych

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Programowanie w Javie wykład 8 Interfejsy

PROGRAMOWANIE DYNAMICZNE

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();

Akademia ETI. Wprowadzenie do programowania w Javie PG Java User Group Przemysław Kulesza

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Remote Method Invocation 17 listopada 2010

Transkrypt:

Dr inż. Wojciech Koziński maj 2007 ZS ISEP WE PW Przykład zastosowania notacji UML dla realizacji zastosowania wzorca Mediator (materiały dla studentów na prawach rękopisu) Opis systemu (wzorca Mediator): Systemy programowe składają się zwykle ze znacznej liczby klas. Logika współdziałania znacznej liczby jest złożona i rośnie wraz z komplikacją systemu. W przypadku, gdy każda klasa musi zawierać informacje o metodach wszystkich innych współdziałających klas, utrzymanie i rozbudowa takiego systemu stają się coraz trudniejsze. Wzorzec Mediator pozwala na rozluźnienie powiązań między poszczególnymi klasami. Specjalizowana klasa Mediator zawiera informacje o metodach znajdujących się w innych klasach (przykładowo klasa Colleague). Klasy informują klasę Mediator o zmianach, z kolei klasa Mediator informuje pozostałe, które oczekują na wiadomość o tym fakcie. Diagram przypadków użycia. strona1/7

Diagram klas: Diagram czynności (activity diagram) współpraca trzech obiektów. strona2/7

Diagram sekwencji realizacja przypadku użycia setup: Diagram sekwencji realizacja przypadku użycia samplemeeting: strona3/7

Diagram sekwencji realizacja przypadku użycia changed: strona4/7

Kod wygenerowany na podstawie diagramu klas UML: ==== Code generated by Sun Studio Enterprise 8.1 ==== import java.util.arraylist; * Communications Manager class which inherits from Mediator * main class which simulates the system public class CommunicationsManager extends Mediator { public static void main(string[] args) { public void setup() { public void samplemeeting() { public void changed(colleague person) { ======================================================= public abstract class Mediator { private Vector<Colleague> colleagues = new Vector<Colleague>(); public void addcolleague(colleague col) { public abstract void changed(colleague col); =========================================================== * abstract class for all colleagues. A Colleague knows its mediator public abstract class Colleague { private Mediator mediator; public void addmediator(mediator med) { public void changed() { ============================================================== public class TeamMember extends Colleague { * instance variables String name; * instance variables String meeting; private Vector<String> meetings = new Vector<String>(); * a constructor public TeamMember(String aname) { public void meeting(string atimeanddate) { public String currentmeeting() { return null; public void newmeeting(string atimeanddate) { ================================================================= strona5/7

Kod uzupełniony z przykładowymi rezultatami działania: ============ MEDIATOR ============================= // Communications Manager class which inherits from Mediator // main class which simulates the system public class CommunicationsManager extends Mediator { public static void main(string args[]) { CommunicationsManager c = new CommunicationsManager(); c.setup(); c.samplemeeting(); public void setup() { String teammembers[] = {"John", "Denise", "Phoebe", "Isobel", "Andrew", "Ian"; System.out.println("--- TEAM MEMBERS ---"); for (String str : teammembers) { addcolleague(new TeamMember(str)); System.out.println(str); public void samplemeeting() { // This is just an example; manager would not normally initiate this. TeamMember aperson; // possibilities elementat(i), firstelement(), lastelement() aperson = (TeamMember) (colleagues.elementat(3)); System.out.println("--- MEETING CALLED ---"); aperson.addmediator(this); aperson.meeting("9.00 am 10 Nov 2006"); public void changed (Colleague person) { TeamMember tm; String themeeting = ((TeamMember)person).currentMeeting(); System.out.println("--- MESSAGE DISSEMINATED ---"); for (Colleague col : colleagues) { tm = (TeamMember) col; if (col!= person) tm.newmeeting(themeeting); ========================================================================== // Mediator based system import java.util.*; public abstract class Mediator { public Vector<Colleague> colleagues = new Vector<Colleague>(); public void addcolleague(colleague col) { colleagues.addelement(col); public abstract void changed (Colleague col); strona6/7

========================================================================== // abstract class for all colleagues. A Colleague knows its mediator public abstract class Colleague { private Mediator mediator; public void addmediator(mediator med) { mediator = med; public void changed() { mediator.changed(this); ========================================================================= import java.util.vector; public class TeamMember extends Colleague { // instance variables String name, meeting; Vector<String> meetings = new Vector<String>(); // a constructor public TeamMember(String aname) { name = aname; public void meeting(string atimeanddate) { meeting = atimeanddate; System.out.println("Generating a meeting " + atimeanddate + " by " + name); changed(); public String currentmeeting() { return meeting; public void newmeeting(string atimeanddate) { meetings.addelement(atimeanddate); System.out.println("Adding meeting " + atimeanddate + " for " + name); ========================================================================== --- TEAM MEMBERS --- John Denise Phoebe Isobel Andrew Ian --- MEETING CALLED --- Generating a meeting 9.00 am 10 Nov 2006 by Isobel --- MESSAGE DISSEMINATED --- Adding meeting 9.00 am 10 Nov 2006 for John Adding meeting 9.00 am 10 Nov 2006 for Denise Adding meeting 9.00 am 10 Nov 2006 for Phoebe Adding meeting 9.00 am 10 Nov 2006 for Andrew Adding meeting 9.00 am 10 Nov 2006 for Ian strona7/7