Koncepcja, projekt i implementacja wielowarstwowego systemu informatycznego Inżynieria oprogramowania Zofia Kruczkiewicz

Wielkość: px
Rozpocząć pokaz od strony:

Download "Koncepcja, projekt i implementacja wielowarstwowego systemu informatycznego Inżynieria oprogramowania Zofia Kruczkiewicz"

Transkrypt

1 Koncepcja, projekt i implementacja wielowarstwowego systemu informatycznego Inżynieria oprogramowania Zofia Kruczkiewicz 1

2 Literatura 1. Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Stephen H. Kan, Metryki i modele w inżynierii jakości oprogramowania, Mikom, Jacobson, Booch, Rumbaung, The Unified Software Development Process,Addison Wesley, Shalloway A.,Trott James R.,Projektowanie zorientowane obiektowo. Wzorce projektowe. Gliwice, Helion, Robert C. Martin, Micah Martin, Agile Programowanie zwinne. Zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C#, Helion D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe

3 Zagadnienia 1. Wielowarstwowa architektura systemu informatycznego 2. Ocena i poprawa (refaktoryzacja) architektury wielowarstwowej systemu informatycznego 3. Wzorce projektowe stosowane przy budowie wielowarstwowej aplikacji internetowej 4. Przykład części warstwy biznesowej z obiektami typu POJO w projekcje typu Java Class Library Zastosowanie UML do modelowania tej warstwy 5. Zasady procesu zwinnego 6. Przykłady architektury wielowarstwowej aplikacji internetowej typu EE 7. Warstwa zasobów - baza danych w systemie baz danych Derby 8. Warstwa integracji w projekcje typu Java Class Library Zastosowanie wzorca projektowego typu Domain Store 9. Warstwa biznesowa: komponenty typu EJB + obiekty POJO 10. Warstwa prezentacji - JSF 11. Dodatek 3

4 1. Wielowarstwowa architektura systemu informatycznego 4

5 Definicja systemu informatycznego (wykład 1) Nieformalny system informacyjny: zasoby osobowe - ludzie Formalny system informacyjny: procedury zarządzania, bazy wiedzy Techniczny system informacyjny: Sprzęt Oprogramowanie Bazy danych, bazy wiedzy System informatyczny jest to zbiór powiązanych ze sobą elementów nieformalnych, formalnych i technicznych, którego funkcją jest przetwarzanie danych przy użyciu techniki Techniczny system informacyjny zorganizowany zespół środków technicznych (komputerów, oprogramowania, urządzeń teletransmisyjnych itp.) służący do gromadzenia, przetwarzania i przesyłania informacji 5

6 Java EE 7 ze strony Pięciowarstwowy model logicznego rozdzielania zadań [6] Warstwa klienta Klienci aplikacji, aplety, aplikacje i inne elementy z graficznym interfejsem użytkownika Warstwa prezentacji Strony JSP, serwlety i inne elementy interfejsu użytkownika Warstwa biznesowa Komponenty EJB i inne obiekty biznesowe Interakcja z użytkownikiem, urządzenia i prezentacja interfejsu użytkownika Logowanie, zarządzanie sesją, tworzenie zawartości, formatowania i dostarczanie Logika biznesowa, transakcje, dane i usługi Warstwa integracji JMS, JDBC, konektory i połączenia z systemami zewnetrznymi Warstwa zasobów Bazy danych, systemy zewnętrzne i pozostałe zasoby Adaptery zasobów, systemy zewnętrzne, mechanizmy zasobów, przepływ sterowania Zasoby, dane i usługi zewnętrzne 6

7 Komponent element do budowy warstw skompilowany moduł programowy, funkcjonalność dostarczana za pomocą interfejsu, zdolny do współdziałania z innymi komponentami oraz innymi częściami systemu informatycznego. 7

8 Elementy tworzenia oprogramowania struktura (wykład 1) Ludzie Proces Wzorzec Uczestnicy Projekt Rezultat Produkt Automatyzacja Narzędzia 8

9 2. Ocena i poprawa (refaktoryzacja) architektury wielowarstwowej systemu informatycznego [6] 9

10 Ocena oprogramowania metryki Refaktoryzacja to poprawa struktury oprogramowania bez utraty funkcjonalności w celu poprawy jego metryk: wydajności funkcjonalności kosztu jakości oprogramowania: Testowalności Pielęgnowalności Wieloużywalności Zrozumiałości Stopnia osiągniętej abstrakcji 10

11 Refaktoryzacja architektury wielowarstwowej - część 1 1. Przeniesienie kodu dostępu do danych logicznie lub fizycznie bliżej rzeczywistego źródła danych warstwa integracji 2. Przeniesienie kodu logiki przetwarzania z klienta i warstwy prezentacji warstwy biznesowej zawierającej fasadowe komponenty sesyjne typu Control. Komponenty Business Delegate typu Control hermetyzują dostęp do warstwy biznesowej z warstwy prezentacji. Servlety lub JSP zawierają logikę biznesową i prezentacyjną Klient Servlety lub JSP Kod dostępu do danych Baza danych Warstwa klienta Warstwa prezentacji Warstwa zasobów Servlety lub JSP zawierają logikę prezentacyjną oraz fasadę rozdzielającą warstwy Komponent sesyjny zawiera logikę biznesową Logika dostępu do danych Klient Servlety, JSP Business Delegate 1 Komponent sesyjny typu fasada Kod dostępu do danych Baza danych Warstwa klienta Warstwa prezentacji Warstwa biznesowa Warstwa integracji Warstwa 11 zasobów

12 Refaktoryzacja architektury wielowarstwowej - część 2 3. Należy zdefiniować obiektowy model danych, który zbudowany jest z obiektów danych typu Entity 12

13 3. Wzorce projektowe stosowane przy budowie wielowarstwowej aplikacji internetowej 13

14 Wzorce projektowe Dobrze zbudowany system obiektowy jest pełen wzorców obiektowych Wzorzec to zwyczajowo przyjęte rozwiązanie typowego problemu w danym kontekście Strukturę wzorca przedstawia się w postaci diagramu klas Zachowanie się wzorca przedstawia się za pomocą diagramu sekwencji Wzorce projektowe: Wzorzec reprezentuje powiązanie problemu z rozwiązaniem (wg Booch G., Rumbaugh J., Jacobson I., UML przewodnik użytkownika) Wzorzec to pomysł, który okazał się użyteczny w jednym rzeczywistym kontekście i prawdopodobnie będzie użyteczny w innym. (Martin Fowler) 14

15 3.1. Wzorzec uniwersalny kreacyjny stosowany w każdej z warstw: Fabryka obiektów oddzielenie tworzenia obiektów od zarządzania nimi i używania ich Fabryka_bazowa Fabryka_1 Fabryka_2 Klient Fasada Klasa_1 Klasa_2 Klasa_3 Warstwa 1 Warstwa 2 15

16 3.2. Wzorzec uniwersalny strukturalny: Fasada hermetyzacja logiki biznesowej Klient 1 Klasa_A Klasa_1 Klient 1 fasada A Klasa_A Klasa_1 Klient 2 Klasa_B Klasa_2 Klient 2 Klasa_B Klasa_2 Klient 3 Klasa_C Klasa_3 Klient 3 fasada B Klasa_C Klasa_3 Warstwa 1 Warstwa 2 Warstwa 1 Warstwa 2 16

17 3.3. Wzorzec uniwersalny czynnościowy kreacyjny stosowany w każdej z warstw: : Strategia zastosowanie polimorfizmu do wyboru algorytmu Strategia Strategia_1 Strategia_2 Klient Fasada Kontekst Kontekst_1 Kontekst_3 Warstwa 1 Warstwa 2 17

18 3.4. Wzorzec EE warstwy prezentacji: FrontController scentralizowany punkt dostępowy dla obsługi żądań w warstwie prezentacji [6] Wywołanie metod z warstwy biznesowej np. za pośrednictwem wzorca ApplicationService (następny slajd) 18

19 3.5. Wzorce EE warstwy biznesowej: SessionFacade, ApplicationService udostępnianie i centralizacja logiki biznesowej kilku komponentów i usług biznesowych [6] Centralizacja logiki biznesowej realizowanej w różnorodny sposób Udostępnianie logiki biznesowej logika biznesowej wykonana w 19 projekcie

20 3.6. Wzorzec EE warstwy integracji: DomainStore (ORM) oddzielenie mechanizmów trwałości od modelu obiektowego [6] Warstwa biznesowa Odwzorowany model obiektowy z warstwy biznesowej

21 4. Przykład części warstwy biznesowej z obiektami typu POJO Zastosowanie UML do modelowania tej warstwy 21

22 Model procesu wytwarzania oprogramowania - czyli model cyklu życia oprogramowania wykład 1 Tworzenie technicznego systemu informacyjnego jest powiązane z: budową oprogramowania: co i jak wykonać? kiedy wykonać? wdrażaniem oprogramowania Modelowanie struktury i dynamiki systemu Implementacja systemu, struktury i dynamiki generowanie kodu Perspektywa koncepcji co należy wykonać? Perspektywa specyfikacji jak należy używać? Perspektywa implementacji jak należy wykonać? model problemu np. przedsiębiorstwa wymagania analiza (model konceptualny ) testy modelu projektowanie (model projektowy: architektura sprzętu i oprogramowania; dostęp użytkownika; przechowywanie danych) testy projektu programowanie (specyfikacja programu : deklaracje, definicje; dodatkowe struktury danych: struktury pojemnikowe, pliki, bazy danych) testy oprogramowania wdrażanie testy wdrażania 22

23 System informacyjny Katalogu tytułów i książek 1. Opis biznesowy świata rzeczywistego 2. Sformułowanie wymagań funkcjonalnych i niefunkcjonalnych aplikacji 3. Model analizy aplikacji oparty na diagramie przypadków użycia 4. Model projektowy i implementacja warstwy biznesowej warstwy biznesowej oparty na diagramie klas i diagramie sekwencji tworzony metodą iteracyjno-rozwojową, sterowany realizacją przypadków użycia 23

24 1. Opis biznesowy świata rzeczywistego w języku klienta - Katalog tytułów i książek (wg wykład 4) 1.1. Opis zasobów ludzkich Co robią pracownicy? 1.2. Przepisy i strategia firmy Co ogranicza działalność firmy? 1.3. Dane techniczne Dane ilościowe: ilu pracowników, ile danych, jak często, Dane o lokalizacji firmy Dane o klientach firmy Dane o używanym sprzęcie i oprogramowaniu 24

25 2. Lista wymagań Lista wymagań funkcjonalnych całej aplikacji 1. System zawiera katalog tytułów 2. System zawiera dwa typy egzemplarzy do wypożyczenia: książki i kasety z nagraniami dźwiękowymi książek. 3. Każdy egzemplarz zawiera tytuł, nazwisko autora, ISBN, wydawnictwo, jeśli jest to książka oraz dodatkowo nazwisko aktora, jeżeli jest to nagranie dźwiękowe. 4. Może wystąpić wiele egzemplarzy książek oraz kaset z tymi samymi tytułami. Każdy egzemplarz, zarówno książka i kaseta, posiadają numer niepowtarzający się w ramach pozostałych identycznych danych (ISBN lub ISBN i nazwisko aktora). 4. W celu znalezienia tytułu należy podać ISBN lub ISBN i nazwisko aktora, jeżeli należy odszukać tytuł nagranej książki. 5. W celu wybrania właściwego egzemplarza należy podać ISBN, jeśli jest to książka oraz dodatkowo nazwisko aktora, jeśli jest to kaseta oraz numer egzemplarza. 6. Zarówno egzemplarze typu książka lub kaseta, mogą być przeznaczane do wypożyczenia na okres umowny oraz na okres ściśle określony. Lista wymagań niefunkcjonalnych 1. Wstawianie danych o tytułach i egzemplarzach może odbywać się tylko przez uprawnione osoby 2. Wyszukiwanie informacji powinno odbywać się samodzielnie przez klienta 3. Operacje zarządzania i wyszukiwania informacji mogą być dokonane przez Internet przez aplikację uruchamianą przez przeglądarkę lub bez jej pośrednictwa 25

26 3. Diagram przypadków użycia całej aplikacji Katalog tytułów i książek 26

27 AKTOR OPIS PRZYPADKI UŻYCIA Bibliotekarz Bibliotekarz jest odpowiedzialny za utrzymywanie zasobów biblioteki (wstawianie i usuwanie: tytułów książek, egzemplarzy książek). Może on również przeszukiwać zasoby katalog tytułów i egzemplarzy książek Dodaj tytul Dodaj egzemplarz Wyszukiwanie tytulow Wyszukiwanie egzemplarzy Klient Klient może jedynie przeszukiwać zasoby katalog tytułów i egzemplarzy książek Wyszukiwanie tytulow Wyszukiwanie egzemplarzy 27

28 PU Szukanie tytulu OPIS CEL: Poszukiwanie tytulu WS (warunki wstępne): może być wywołany z PU Wyszukiwanie tytulow, PU Wyszukiwanie egzemplarzy, PU Dodaj tytul, PU Dodaj egzemplarz WK (warunki końcowe): podanie tytułu zawierającego identyczne dane, jakie posiada tytuł wzorcowy lub podanie informacji o braku tytułu PRZEBIEG: 1. Szukanie tytułu przebiega według atrybutów: ISBN (obowiązkowo) oraz aktor (jeśli jest to wymagane) zgodnie z danymi tytułu podanego do przypadku użycia 2. Jeśli istnieje tytuł o podanych atrybutach, zwracany jest tytuł z zasobów wypożyczalni, w przeciwnym wypadku zwracana jest informacja o braku tytułu. PU Wyszukiwanie tytulow OPIS CEL: Wyszukiwanie tytulow WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): wyszukanie tytułu o podanym atrybutach obowiązkowych ISBN lub ISBN i aktor w przypadku nagrania dźwiękowego lub podanie informacji o braku tytułu PRZEBIEG: 1. Należy podać atrybuty tytułu: ISBN jako obowiązkowa dana oraz dodatkowo aktor, jeśli poszukiwany jest tytuł książki jako nagranie dźwiękowe. Tworzony jest tytuł wzorcowy do wyszukiwania rzeczywistego tytułu 2. Należy wywołać PU Szukanie tytułu. Należy sprawdzić, czy tytuł o podanych atrybutach już istnieje. Jeśli nie, należy zakończyć PU podając informację o braku tytułu, w przeciwnym wypadku należy podać 28 znaleziony tytuł.

29 PU Szukanie egzemplarza OPIS CEL: Poszukiwanie egzemplarza WS (warunki wstępne): może być wywołany z PU Wyszukiwanie egzemplarzy, PU Dodaj egzemplarz WK (warunki końcowe): podanie egzemplarza zawierającego identyczne dane, jakie posiada egzemplarz wzorcowy lub podanie informacji o braku egzemplarza PRZEBIEG: 1. Szukanie egzemplarza przebiega według atrybutu: numer egzemplarza (obowiązkowo) zgodnie z danymi tytułu podanego do przypadku użycia. Przeszukiwane są egzemplarze należące do konkretnego tytułu 2. Jeśli istnieje egzemplarz o podanym numerze, zwracany jest egzemplarz z zasobów wypożyczalni, w przeciwnym wypadku zwracana jest informacja o braku egzemplarza. PU Wyszukiwanie egzemplarzy OPIS CEL: Wyszukiwanie egzemplarzy książek o podanym tytule WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): wyszukanie egzemplarza o tytule zgodnym z podanymi atrybutami obowiązkowymi ISBN lub ISBN i aktor w przypadku nagrania dźwiękowego oraz podanym numerze lub podanie informacji o braku egzemplarza PRZEBIEG: 1. Należy podać atrybuty tytułu: ISBN jako obowiązkowa dana oraz dodatkowo aktor, jeśli poszukiwany jest tytuł książki jako nagranie dźwiękowe. Tworzony jest tytuł wzorcowy do wyszukiwania rzeczywistego tytułu 2. Należy wywołać PU Szukanie tytułu. Należy sprawdzić, czy tytuł o podanych atrybutach już istnieje. Jeśli nie, należy zakończyć PU podając informację o braku tytułu. 3. Należy utworzyć wzorcowy egzemplarz zawierający numer podany do wyszukiwania egzemplarza 29 i przekazać go do PU Szukanie egzemplarza. Wynik podany przez wywołany PU jest wynikiem końcowy.

30 PU Dodaj tytul OPIS CEL: Wstawienie nowego tytułu WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): dodanie tytułu o podanych atrybutach obowiązkowych: tytul, autor, ISBN, wydawnictwo oraz nazwisko aktora gdy to nagranie dźwiękowe, lub informacja o istnieniu takiego tytułu PRZEBIEG: 1. Należy podać atrybuty tytułu: tytul, autor, ISBN, wydawnictwo oraz jeśli jest to nagranie dźwiękowe, to nazwisko aktora. Należy utworzyć tytuł do wyszukiwania i ewentualnego wstawienia. 2. Należy wywołać PU Szukanie tytulu. Należy sprawdzić, czy tytuł o podanych atrybutach juz istnieje. Jeśli tak, należy zakończyć PU, w przeciwnym wypadku należy wstawić nowy tytuł. PU Dodaj egzemplarz OPIS CEL: Wstawianie nowego egzemplarza WS (warunki wstępne): inicjalizacja przez uruchomienie programu (np. otwarcie strony WWW, start aplikacji) WK (warunki końcowe): wstawienie egzemplarza o tytule zgodnym z podanymi atrybutami obowiązkowymi ISBN lub ISBN i aktor w przypadku nagrania dźwiękowego oraz podanym numerze i ewentualnie atrybucie do określania terminu zwrotu, jeśli należy wstawić egzemplarz z wyznaczonym terminem zwrotu lub podanie informacji o istnieniu takiego egzemplarza PRZEBIEG: 1. Należy podać atrybuty tytułu: ISBN jako obowiązkowa dana oraz dodatkowo aktor, jeśli poszukiwany jest tytuł książki jako nagranie dźwiękowe. Tworzony jest tytuł wzorcowy do wyszukiwania rzeczywistego tytułu 2. Należy wywołać PU Szukanie tytułu. Należy sprawdzić, czy tytuł o podanych atrybutach już istnieje. Jeśli nie, należy zakończyć PU podając informację o braku tytułu. 3. Należy utworzyć egzemplarz zawierający numer podany do wyszukiwania egzemplarza oraz atrybut terminu zwrotu, jeśli jest to wymagane i należy przekazać go do PU Szukanie egzemplarza. Jeśli nie istnieje egzemplarz o danym numerze, należy wstawić ten egzemplarz, w przeciwnym wypadku należy podać 30 informację o istnieniu takiego egzemplarza.

31 Produkt Modele (wykład 1) Modele: Abstrakcja systemu Przedstawianie różnych perspektyw systemu Związki między modelami Model use-case Model analizy Model projektu Model wdrożenia Model implementacji Model testów 31

32 3.1. Analiza wspólności identyfikacja klas bazowych (wg wykład 4) Przypadki użycia Atrybuty Wykryte klasy bazowe PU Szukanie tytulu PU Wyszukiwanie tytulow PU Dodaj tytul PU Szukanie egzemplarza PU Wyszukiwanie egzemplarzy PU Dodaj egzemplarz tytul autor wydawnictwo ISBN numer klasa typu Entity : TTytul_ksiazki klasy typu Entity : TTytul_ksiazki (zawiera atrybuty tytułu, posiada książki wstawia i wyszukuje je), TEgzemplarz (książka) 32

33 3.2. Analiza zmienności - identyfikacja podklas (wg wykład 4) Przypadki użycia Atrybuty Wykryte podklasy PU Szukanie tytulu PU Wyszukiwanie tytulow PU Dodaj tytul PU Szukanie egzemplarza PU Wyszukiwanie egzemplarzy PU Dodaj egzemplarz aktor termin klasa TTytul_ksiazki_na_kasecie typu Entity, która dziedziczy od klasy TTytul_ksiazki Wyróżniono egzemplarze zwykłe typu TEgzemplarz, oraz egzemplarze TEgzemplarz_termin z dodatkowo oznaczonym terminem oddania - rozróżniane w ramach danego tytułu książki zwyklej (TTytul_ksiazki ) lub nagranej w postaci dźwiękowej (TTytul_ksiazki_na_kasecie) za pomocą numeru 33

34 3.3. Analiza wspólności i zmienności - identyfikacja typów relacji (wg wykład 4) Zależność między obiektami typu TTytul_ksiazki oraz TEgzemplarz są w relacji 1 do 0..*. Związek ten dziedziczą obiekty typu TTytul_ksiazki_na_kasecie. Implementacja związku: kolekcja obiektów typu TEgzemplarz w klasie typu TTytul_ksiazki Związek 0..* do 1 między obiektami typu TEgzemplarz oraz TTytul_ksiazki są dziedziczone przez obiekty typu TEgzemplarz_termin. Stąd zwykłe książki mogą być oznaczone jedynie numerami lub numerami i terminem zwrotu. Dotyczy to również książek w postaci nagrań dźwiękowych. Implementacja związku: referencja typu TTytul_ksiazki w klasie typu TEgzemplarz 34

35 3.3 (cd). Analiza wspólności i zmienności - identyfikacja typów relacji Oszacowania dla przyjętego modelu powiązań: Liczba obiektów z rodziny TTytul_ksiazki: 5000, Przybliżony największy rozmiar obiektu z rodziny TTytul_ksiazki: R1 Przybliżony największy rozmiar obiektu z rodziny TEgzemplarz: R2 Średnia liczba książek na 1 obiekt z rodziny typu TTytul_ksiazki: 50 Liczba wszystkich książek: Oszacowania dla częściowo równoważnego modelu dziedziczenia: TTytul_ksiazki TTytul_ksiazki _na_kasecie TEgzemplarz TEgzemplarz_termin Liczba obiektów z rodziny TTytul_ksiazki: 5000, Przybliżony największy rozmiar obiektu z rodziny TTytul_ksiazki: R1 Przybliżony największy rozmiar obiektu z rodziny TEgzemplarz: R1+R2 Średnia liczba książek na 1 obiekt z rodziny typu TTytul_ksiazki: 50 Liczba wszystkich książek: Przyjęty model powiązań Model oparty na dziedziczeniu Rozmiar pamięci 5000*R *50*R2 5000*R *50*(R1 + R2) Liczba przeszukań obiektów z rodziny TEgzemplarz od 1 do ( ) Od 1 do 5000*50 35

36 3.4. Analiza wspólności i zmienności - identyfikacja wzorców projektowych (wg wykład 4) Wykryto związki silnej agregacji między tytułem i egzemplarzem egzemplarz nie może istnieć bez tytułu. Wybrano wzorzec strategii do implementacji obiektów typu TEgzemplarz Zastosowano klasę TAplikacja typu Control jako wzorzec fasady do oddzielenia obiektów typu Entity od pozostałej części systemu oraz klasę typu Control jako wzorzec fabryki obiektów (TFabryka) do tworzenia różnych typów tytułów oraz egzemplarzy. 36

37 4 Model projektowy oraz implementacja warstwy biznesowej oparty na diagramie klas i diagramie sekwencji tworzony metodą iteracyjno-rozwojową sterowany realizacją przypadków użycia (szczegóły w Dodatku do wykładu). Efekt końcowy: slajdy

38 Implementacja powiązań Metody przypadków użycia Decyzja projektowa Wzorzec fasady Wzorzec strategii Wzorzec fabryki obiektów 38

39 Dodaj tytul void TAplikacja::dodaj_tytul(String dane[]) 39

40 Dodaj egzemplarz TTytul_ksiazki TAplikacja::dodaj_ksiazke(String dane1[], String dane2[]) 40

41 Wyszukiwanie tytulow TTytul_ksiazki TAplikacja::Wyszukaj_tytul (String[] dane) 41

42 (11) Wyszukiwanie egzemplarzy TEgzemplarz TAplikacja::Wyszukaj_egzemplarz (String[] dane1, String[] dane2) 42

43 package wypozyczalnia1; import java.util.arraylist; public class TAplikacja { private ArrayList<TTytul_ksiazki> mtytul_ksiazki = new ArrayList<TTytul_ksiazki>(); public TAplikacja () {/* */ } public static void main (String[] t) {/* */ } public ArrayList<TTytul_ksiazki> gettytul_ksiazki () {/* */ } public void settytul_ksiazki (ArrayList<TTytul_ksiazki> val) {/* */ } } public TTytul_ksiazki Szukaj_tytul (TTytul_ksiazki tytul_) {/* */ } public void dodaj_tytul (String[] dane) {/* */ } public TTytul_ksiazki dodaj_ksiazke (String[] dane1, String[] dane2) {/* */ } public TTytul_ksiazki Wyszukaj_tytul (String[] dane) {/* */ } public TEgzemplarz Wyszukaj_egzemplarz (String[] dane1, String[] dane2) {/* */ } package wypozyczalnia1; public class TEgzemplarz { private int numer; private TTytul_ksiazki mtytul_ksiazki; } public TEgzemplarz () {/* */ } public int getnumer () {/* */ } public void setnumer (int numer_) {/* */ } public TTytul_ksiazki gettytul_ksiazki () {/* */ } public void settytul_ksiazki (TTytul_ksiazki val) {/* */ } public boolean equals (Object ob) {/* */ } public String tostring () {/* */ } 43

44 package wypozyczalnia1; import java.util.date; public class TEgzemplarz_termin extends TEgzemplarz { private Date termin; } public Date gettermin () {/* */ } public void settermin (Date termin) {/* */ } public boolean termin_minal (Date termin_) {/* */ } public String tostring () {/* */ } package wypozyczalnia1; public class TFabryka { } public TTytul_ksiazki Podaj_tytul (String[] dane) {/* */ } public TEgzemplarz Podaj_egzemplarz (String[] dane) {/* */ } 44

45 package wypozyczalnia1; import java.util.arraylist; public class TTytul_ksiazki { private String wydawnictwo; private String ISBN; private String tytul; private String autor; private ArrayList<TEgzemplarz> mksiazka = new java.util.arraylist<tegzemplarz>(); public TTytul_ksiazki () {/* */ } public String getwydawnictwo () {/* */ } public void setwydawnictwo (String e) {/* */ } public String gettytul () {/* */ } public void settytul (String a) {/* */ } public String getisbn () {/* */ } public void setisbn (String ISBN_) {/* */ } public String getautor () {/* */ } public void setautor (String autor_) {/* */ } public String getaktor () {/* */ } public void setaktor (String autor_) {/* */ } public ArrayList<TEgzemplarz> getksiazka () {/* */ } public void setksiazka (ArrayList<TEgzemplarz> mksiazka_) {/* */ } public String tostring () {/* */ } public boolean equals (Object ob) {/* */ } public void dodaj_ksiazke (String[] dane) {/* */ } public TEgzemplarz Szukaj_egzemplarz (TEgzemplarz egzemplarz_) {/* */ } } package wypozyczalnia1; public class TTytul_ksiazki_na_kasecie extends TTytul_ksiazki { private String aktor; public String getaktor () {/* */ } public void setaktor (String aktor) {/* */ } public String tostring () {/* */ } } 45

46 Proponowany kod funkcji main w klasie fasadowej TAplikacja public static void main(string t[]) // your code here {TAplikacja ap = new TAplikacja(); String t1[] = {"1", "1", "1", "1", "1"}; //t1, t2, t3 tablice łańcuchów do tworzenia tytułu książki zwyklej pierwszy łańcuch String t2[] = {"1", "2", "2", "2", "2"}; // jest informacją dla fabryki, jaki obiekt wygenerować String t3[] = {"1", "3", "3", "3", "3"}; // 1 oznacza utworzenie obiektu klasy TTytul_ksiazki, a pozostałe łańcuchy to kolejno // autor, tytul, ISBN, wydawnictwo dla uproszczenia w postaci cyfr - obiekty do wstawiania String t4[] = {"3", "1", "1", "1", "1", "1"}; // t4, t5,t6 tablice łańcuchów do tworzenia tytułu książki jako nagranie dźwiękowe String t5[] = {"3", "2", "2", "2", "2", "2"}; // pierwszy łańcuch jest informacją dla fabryki, jaki obiekt wygenerować String t6[] = {"3", "4", "4", "4", "4", "4"}; // 3 oznacza utworzenie obiektu klasy TTytul_ksiazki_na_kasecie, a pozostałe //łańcuchy to kolejno autor, tytul, ISBN, wydawnictwo, aktor dla uproszczenia w postaci cyfr- obiekty do wstawiania ap.dodaj_tytul(t1); ap.dodaj_tytul(t2); ap.dodaj_tytul(t2); //naruszenie integralności danych tytułów ap.dodaj_tytul(t3); ap.dodaj_tytul(t4); ap.dodaj_tytul(t5); ap.dodaj_tytul(t5); //naruszenie integralności danych tytułów ap.dodaj_tytul(t6); String lan = ap.gettytul_ksiazki().tostring(); System.out.println(lan); String d1[] = {"0", "1"}; // d1, d2, d3 - tablice łańcuchów do tworzenia wzorcowego tytułu książki zwyklej do wyszukiwania String d2[] = {"0", "2"}; // pierwszy łańcuch jest informacją dla fabryki, jaki obiekt wygenerować: 0 oznacza generowanie String d3[] = {"0", "5"}; // obiektu klasy TTytul_ksiazki, drugi łańcuch jest ISBN obiekty do wyszukiwania String d4[] = {"2", "1", "1"}; //d4, d5 - tablice łańcuchów do tworzenia wzorcowego tytułu książki jako nagranie dźwiękowe String d5[] = {"2", "4", "4"}; //pierwszy łańcuch 2 oznacza generowanie obiektu typu TTytul_ksiazki_na_kasecie // drugi łańcuch to ISBN, trzeci jest nazwiskiem aktora-obiekty do wyszukiwania String tr1[] = {"0", "1"}; //tablice tr1 i tr2 zawierają informację o tworzeniu obiektu typu TEgzemplarz: pierwszy łańcuch String tr2[] = {"0", "2"}; //równy 0 oznacza tworzenie obiektu typu typu TEgzemplarz, drugi jest numerem egzemplarza String tr3[] = {"1", "3", "April 10, 2008, 00:00:00 GMT"}; //pierwszy łańcuch równy 1 oznacza tworzenie obiektu klasy 46 String tr4[] = {"1", "2", "April 10, 2008, 00:00:00 GMT"}; //TEgzemplarz_termin, drugi oznacza numer, trzeci termin

47 // W trakcie tworzenia kodu aplikacji można odsłaniać kod z // komentarza w celu przetestowania kolejnych przypadków użycia TTytul_ksiazki pom = ap.dodaj_ksiazke(d1, tr1); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d2, tr1); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d2, tr1); //naruszenie integralności danych książek if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d2, tr2); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d3, tr2); //naruszenie integralności danych książek if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d4, tr3); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d4, tr3); //naruszenie integralności danych książek if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d4, tr4); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d5, tr2); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } } System.out.println("Wyszukiwanie"); System.out.println(ap.Wyszukaj_tytul(t5).toString()); System.out.println(ap.Wyszukaj_egzemplarz(d4, tr4).tostring()); 47

48 Działanie próbne kodu warstwa biznesowej jako element składowy realizacji wzorca Application Service po wykonaniu modelu i impelentacji poszczególnych przypadków użycia 48

49 5. Zasady procesu zwinnego [5] 49

50 1. Zasada pojedynczej odpowiedzialności (Single-Responsibility Principle SRP) Żadna klasa nie może być modyfikowana z więcej niż jednego powodu. 1) Klasa obsługująca reguły biznesowe nie powinna zarządzać trwałością 2) Klasa tworząca obiekty nie powinna ich używać 3) Oddzielanie wzajemnie powiązanych odpowiedzialności- np. obiektowa idea katalogu książek: Zmiana sposobu przechowywania treści książki: papierowej lub w formie nagrania - tylko modyfikacja kodu klas z rodziny TTytul_ksiazki, TTytul_ksiazki_na_kasecie Zmiana czasu przeznaczonego na wypożyczenie egzemplarza książki standardowy czas lub ściśle związany z egzemplarzem książki TEgzemplarz, TEgzemplarz_termin 50

51 2. Zasada otwarte-zamknięte (Open/Closed Principle OCP) Składniki oprogramowania (klasy, moduły, funkcje itp.) powinny być otwarte na rozbudowę, ale zamknięte dla modyfikacji. 1) Stosowanie dziedziczenia, polimorfizmu, implementacji interfejsów tylko w takich przypadkach, gdy istnieje możliwość zmian. 2) Należy wyeliminować rozpoznawanie klas zarządzanych lub używanych np. instrukcją switch przez klasy, które używają lub zarządzają tymi klasami 3) Przykłady: obiektowa idea katalogu książek: Zmiana strategii przechowywania treści książki (z papierowej do formy nagrania) - tylko modyfikacja kodu klas przez polimorfizm i dziedziczenie: tylko klasa TTytul_ksiazki_na_kasecie Zmiana czasu przeznaczonego na wypożyczenie egzemplarza książki z czasu standardowego do czasu lub ściśle związanym z egzemplarzem książki: tylko klasa TEgzemplarz_termin 51

52 3. Zasada podstawiania Liskov Musi istnieć możliwość zastępowania typów bazowych ich podtypami. Jest to warunek zasady otwarte-zamknięte (OCP). 1) Klasa potomna nie może mieć mniejszej funkcjonalności niż jej klasa bazowa. Podstawianie klasy potomnej powinno następować automatycznie, bez potrzeby rozpoznawania typu obiektu np. instrukcją switch 2) Przykład: obiektowa idea katalogu książek: automatyczne dostosowanie się do formy przechowywania zawartości książki (klasy: TTytul_ksiazki, TTytul_ksiazki_na_kasecie) automatyczne dostosowanie się do czasu wypożyczania książki, niezależnie od jej formy przechowywania zawartości (klasy: TEgzemplarz, TEgzemplarz_termin) 52

53 4. Zasada odwracania zależności (Dependancy Inversion Principle DIP) A. Moduły wysokopoziomowe nie powinny zależeć od modułów niskopoziomowych. Obie grupy modułów powinny zależeć od abstrakcji B. Abstrakcje nie powinny zależeć od szczegółowych rozwiązań. To szczegółowe rozwiązania powinny zależeć od abstrakcji. 1. Strategia programu nie powinna zależeć od szczegółowych rozwiązań w zakresie implementacji. 2. Interfejsy są związane ze swoimi właścicielami, a nie implementującymi je klasami 3. Warstwa strategii może być wielokrotnie używana w dowolnym kontekście pod warunkiem, że moduły niższego poziomu implementują interfejs usług strategii 53

54 4 A - Podział oprogramowania na poziomy abstrakcji Warstwy niższe zależą od wyższych Eliminacja zależności przechodniej: warstwa strategii warstwa narzędzi Eliminacja zależności bezpośredniej: warstwa strategii warstwa mechanizmu 54

55 4 B- Zasady procesu zwinnego - przykład Fabryka abstrakcyjna Abstract Factory Warstwa strategii Warstwa mechanizmu 55

56 5. Zasada segregacji interfejsów (Interface Segregation Principle ISP) Klasa implementująca nie powinna być zmuszana do zależności od metod, których nie używa. 1) Separacja przez implementowanie wielu interfejsów 2) Dziedziczenie wielobazowe 56

57 Przykład ISP -Trzy różne interfejsy xxxui -Możliwa jedna implementacja UI -Możliwa definicja: -void g(depositui depositui, TransferUI transferui) -Możliwe wywołania: g(ui, ui); g(ui1, ui2); gdzie ui, ui1, ui2 są obiektami klasy implementującej interfejs UI. 57

58 Podsumowanie zasad procesu zwinnego Kluczowy mechanizm niskiego poziomu Podwyższa odporność kodu na zmiany Prowadzi do tworzenia kodu wielokrotnego użycia 58

59 6. Przykłady architektury wielowarstwowej aplikacji internetowej typu EE 59

60 (1)Architektura aplikacji pięciowarstwowej Java EE 7.0 JavaServer Faces Baza danych katalog Warstwa integrująca (EntityManager, ) Technologia TopLink Wzorce: Domain Store Technologia Transfer Object EclipseLink fasady (XXXController) fabryki obiektów Warstwa zasobów Warstwa integracji Komponent ApplicationBean1 EJB Wzorzec fasady usług Obiektowy model danych Wzorce: fasady TAplikacja fabryki obiektów strategii Warstwa biznesowa Warstwa biznesowa SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec typu ManagedBean fasady sesji Warstwa prezentacji Strony JSF Strony JSF Strony JSF Warstwa prezentacji Przeglądarka Klient1 - Przeglądarka Klient2 - Przeglądarka Klient3 - klient klient klient Warstwa klienta

61 (2)Architektura aplikacji pięciowarstwowej Java EE 7.0 JavaServer F Baza danych Warstwa zasobów katalog Warstwa integrująca (EntityManager, ) Technologia EclipseLink TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integrująca (EntityManager, ) Technologia EclipseLink TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integrująca (EntityManager, ) Technologia EclipseLink TopLink Wzorce: Domain Store Transfer Object fasady (XXXController) fabryki obiektów Warstwa integracji Obiektowy model danych Wzorce: fasady TAplikacja fabryki obiektów strategii Komponent EJB Obiektowy model danych Wzorce: fasady TAplikacja fabryki obiektów strategii Obiektowy model danych Wzorce: fasady TAplikacja fabryki obiektów strategii (1) (2) (3) Komponent EJB Komponent EJB Warstwa biznesowa ApplicationBean1 Wzorzec fasady usług SessionBean1 Komponent (1) Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent (2) Wzorzec typu ManagedBean fasady sesji SessionBean1 Komponent Wzorzec (3) typu ManagedBean fasady sesji (1) Strony JSF (2) Strony JSF (3) Strony JSF Warstwa prezentacji Przeglądarka Klient1 - Przeglądarka Klient2 - Przeglądarka Klient3 - (1) klient (2) klient (3) klient Warstwa klienta

62 Przykład tworzenia aplikacji wielowarstwowej opartej na (1) architekturze. 62

63 7. Warstwa zasobów (EIS)- baza danych w systemie baz danych Derby 63

64 Zakładanie pustej bazy danych dla systemu baz danych Derby (1) 64

65 Zakładanie pustej bazy danych katalog w systemie baz danych Derby (2) 65

66 Utworzona pusta baza danych 66

67 7. Warstwa integracji w projekcje Java Class Library. Zastosowanie wzorca projektowego typu Domain Store. 67

68 Diagram klas uproszczony schemat warstwy integracji Część klas należących do Persistence Library Do wykonania fasady warstwy integracji 68

69 Dodanie adnotacji do klas typu dane ( Entity ) wspierających mapowanie obiektowo-relacyjne 69

70 Zmiana typu klas danych na (10) dodano adnotacje, nowe atrybuty (Id, Ksiazka) z metodami. Należy zestandaryzować nazwy metod dostępu do składowych mksiazka oraz Ksiazka! 70

71 71

72 72

73 73

74 Wstawienie do modułu typu Persistence Unit wybrane klasy typu Entity 74

75 Wygenerowane tabele bazy danych po uruchomieniu wielowarstowej aplikacji internetowej KATALOG.TEGZEMPLARZ 75

76 KATALOG. 76

77 8. Warstwa biznesowa: komponenty typu EJB + obiekty POJO Realizacja: PU Dodaj tytul PU Dodaj egzemplarz + połączenie z warstwą integracji 77

78 Interfejs komponentu EJB 78

79 Komponent EJB 79

80 Projekt warstwy biznesowej z definicją komponentu EJB Definicja komponentu EJB Definicja interfejsu warstwy biznesowej Projekt z kodem warstwy biznesowej utworzonej w procesie iteracyjnorozwojowym (rozdział 4 + Dodatek) i uzupełniony o warstwę integracji opartą na technologii ORM (rozdział 7) 80

81 8. Warstwa prezentacji JSF Przykład implementacji PU Dodaj tytul 81

82 Komponent typu ManagedBean //komponent EJB połączenie //warstw: biznesowej oraz integracji //z warstwą prezentacji //dane wyprowadzone na stronę JSF //dane wprowadzone na stronie JSF //do komponentu EJB //z komponentu EJB 82

83 Strona JSF: dodaj_tytul.xhtml Wywołanie metody komponentu typu Managed Bean 83

84 Strona JSF: lista_tytulow.xhtml Wywołanie właściwości items typu DataModel z komponentu typu Managed Bean model widoku typu datatable 84

85 Projekt typu Java Web Application zawierający elementy warstwy prezentacji Kod warstwy prezentacji (internetowej) Projekt zawierający kod interfejsu warstwy biznesowej i integracji 85

86 Widok stron: dodaj_tytul.xhtml oraz lista_tytulow.xhtml 86

87 Dodatek 1. Refaktoryzacja warstwy prezentacji 2. Refaktoryzacja warstwy biznesowej 3. Tworzenie warstwy integracji 4. Modelowanie i implementacja logiki biznesowej Katalogu tytułów i książek 87

88 1. Refaktoryzacja warstwy prezentacji 88

89 Ukrywanie zasobów przed klientem za pomocą konfiguracji kontenera uwierzytelnianie i autoryzacja JSP Sprawdzanie zabezpieczeń JSP Klient JSP Klient Kontroler JSP JSP JSP Warstwa klienta Warstwa prezentacji Warstwa klienta Możliwy dostęp jedynie przez kontroler Warstwa prezentacji 89

90 Przebieg uwierzytelniania (logowania) 90

91 Bazy użytkowników i grup, Użytkownik, Grupa, Rola 91

92 Rodzaje mechanizmów bezpieczeństwa w kontenerach (kod do zarządzania aplikacją przez serwer aplikacji m.in. Bezpieczeństwem aplikacji) Deklaratywne mechanizmy bezpieczeństwa deklarowane za pomocą tzw. deployment descriptors (deskryptory aplikacji np. web.xml dla aplikacji typu web ). Deskryptory jako zewnętrzny element aplikacji zawierają informację specyfikującą role bezpieczeństwa i wymagania dostępu są mapowane w role specyficzne dla środowiska oraz użytkowników i polisy bezpieczeństwa. Programowe mechanizmy bezpieczeństwa - są osadzone w aplikacji i służą do podejmowanie decyzji o bezpieczeństwie. Uzupełniają deklaratywne mechanizmy bezpieczeństwa lepiej wyrażają model bezpieczeństwa aplikacji. API mechanizmów programowych: metody interfejsu EJBContext metody interfejsu HttpServletRequest. Metody te pozwalają na podejmowanie decyzji biznesowych opartych na rolach bezpieczeństwa nadawcy lub zdalnego odbiorcy Adnotacje lub metadane są używane do specyfikowania informacji wewnątrz pliku z kodem klasy. Kiedy aplikacja jest uruchamiana, informacja ta jest używana lub pokrywana przez deskryptor aplikacji. klient") public class Page1 extends AbstractPageBean { //... } 92

93 2. Refaktoryzacja warstwy biznesowej 93

94 Refaktoryzacja warstwy biznesowej 1 Obiekty danych typu Entity (obiekty biznesowe) z warstwy biznesowej są udostępniane klientom w innych warstwach za pomocą fasadowych komponentów sesyjnych typu Control (komponent typu fasada - hermetyzujący dostęp do usług biznesowych) Klient Logika biznesowa Obiekty Entity A Obiekty Entity B Klient Komponent sesyjny typu fasada Logika biznesowa Obiekty Entity A Obiekty Entity B Logika transakcyjna Warstwa prezentacji lub klienta Obiekty Entity C Warstwa biznesowa Warstwa prezentacji lub klienta Logika transakcyjna zarządzająca przez obiekty typu entity lub zarządzana przez kontener lub zarządzana przez specjalizowane komponenty Warstwa biznesowa Obiekty Entity C 94

95 Refaktoryzacja warstwy biznesowej 2 Komponenty sesyjne typu Control (pośredniczące w dostępie do obiektów danych typu Entity ) z warstwy biznesowej są udostępniane klientom w innych warstwach za pomocą obiektów fasadowych typu Control (hermetyzujących dostęp do warstwy biznesowej- komponentów Business Delegate) Komponent sesyjny 1 Obiekty Entity 1 Business Delegate 1 Komponent sesyjny 1 Obiekty Entity 1 Klient Komponent sesyjny 2 Obiekty Entity 2 Klient Business Delegate 1 Komponent sesyjny 2 Obiekty Entity 2 Komponent sesyjny 3 Obiekty Entity 3 Business Delegate 1 Komponent sesyjny 3 Obiekty Entity 3 Warstwa prezentacji lub klienta Warstwa biznesowa Warstwa prezentacji lub klienta Warstwa biznesowa 95

96 Refaktoryzacja warstwy biznesowej 3 Sesyjne komponenty fasadowe typu Control (każdy komponent jako odrębna usługa biznesowa), hermetyzujące obiekty danych typu Entity z warstwy biznesowej są udostępniane klientom w innych warstwach. Zwykłe obiekty sesyjne są jedynie pośrednikami obiektów Entity, natomiast nie hermetyzują całych usług, które wymagają odwołania do wielu zwykłych komponentów sesyjnych. Klient 1 Komponent sesyjny 1 Obiekty Entity 1 Klient 1 Komponent Sesyjny typu fasada A Obiekty Entity 1 Klient 2 Komponent sesyjny 2 Obiekty Entity 2 Klient 2 Obiekty Entity 2 Klient 3 Komponent sesyjny 3 Obiekty Entity 3 Klient 3 Komponent sesyjny typu fasada B Obiekty Entity 3 Warstwa prezentacji lub klienta Warstwa biznesowa Warstwa prezentacji lub klienta Warstwa biznesowa 96

97 3. Tworzenie warstwy integracji 97

98 Wydzielanie kodu dostępu do danych Kod dostępu do danych jest wydzielany z klas, które są używane do spełniania również innych celów Kod dostępu do danych powinno umieszczać się logicznie i fizycznie bliżej źródła danych Dowolna klasa Dowolna klasa Kod dostępu do danych Baza danych Kod dostępu do danych Baza danych Warstwa klienta, prezentacji lub biznesowa Warstwa zasobów Warstwa klienta, prezentacji lub biznesowa Warstwa integracji Warstwa zasobów 98

99 Refaktoryzacja dostępu do danych pula połączeń Liczba połączeń kodu dostępu do danych (DAO) z bazą danych jest ograniczona Połączenia kodu dostępu do danych (DAO) nie zawsze są wykorzystywane, lecz są utrzymywane, ponieważ otwarcie połączenia z bazą danych zabiera i zasoby Pula połączeń kodu dostępu do danych (DAO) pozwala racjonalnie zarządzać połączeniami aplikacji z bazą danych DAO Połączenia aktywne wolne DAO Połączenia zwrócone do puli Połączenia aktywne wolne DAO Baza danych DAO Baza danych DAO Połączenie aktywne wykorzystywne DAO Połączenie aktywne wykorzystywne Warstwa prezentacji, biznesowa lub integracji Warstwa zasobów Warstwa prezentacji, biznesowa lub integracji Warstwa zasobów

100 4. Modelowanie i implementacja logiki biznesowej Katalogu tytułów i książek 100

101 Projekt przypadku użycia Dodaj tytul za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. Definiowanie kodu metod realizujących przypadek użycia na podstawie diagramów sekwencji 101

102 (1) Dodaj tytul void TAplikacja::dodaj_tytul(String dane[]) 102

103 //TAplikacja public void dodaj_tytul(string dane[]) { } TFabryka fabryka = new TFabryka(); TTytul_ksiazki tytul = fabryka.podaj_tytul(dane); if (Szukaj_tytul(tytul) == null) mtytul_ksiazki.add(tytul); 103

104 (2) TTytul_ksiazki TFabryka::Podaj_tytul (String[] dane) 104

105 (3) Szukanie tytulu TTytul_ksiazki TAplikacja::Szukaj_tytul(TTytul_ksiazki tytul_) 105

106 //TAplikacja private ArrayList <TTytul_ksiazki> mtytul_ksiazki = new ArrayList < TTytul_ksiazki >(); public TTytul_ksiazki Szukaj_tytul (TTytul_ksiazki tytul_ ) { int idx; if ((idx=mtytul_ksiazki.indexof(tytul_))!=-1 ) { tytul_=mtytul_ksiazki.get(idx); return tytul_; } return null; } 106

107 (4) boolean TTytul_ksiazki::equals(Object ob) [getisbn().equals(((ttytul_ksiazki) ob).getisbn())] [getaktor().equals(((ttytul_ksiazki) ob).getaktor())] 107

108 public boolean equals(object ob) { boolean rezultat = false; if (getisbn().equals(((ttytul_ksiazki) ob).getisbn())) if (getaktor().equals(((ttytul_ksiazki) ob).getaktor())) rezultat = true; return rezultat; } 108

109 // ten kod powinien działać po uzupełnieniu kodu dla wskazanych klas // biorących udział w wykonanych przypadkach użycia oraz // po wykonaniu metody tostring() w tych klasach (TTytul_ksiazki oraz TTytul_ksiazki_na_kasecie) i gettytul_ksiazki() w klasie TAplikacja public static void main(string t[]) // your code here { TAplikacja ap = new TAplikacja(); String t1[] = {"1", "1", "1", "1", "1"}; //t1, t2, t3 tablice łańcuchów do tworzenia tytułu książki zwyklej pierwszy łańcuch String t2[] = {"1", "2", "2", "2", "2"}; // jest informacją dla fabryki, jaki obiekt wygenerować String t3[] = {"1", "3", "3", "3", "3"}; // 1 oznacza utworzenie obiektu klasy TTytul_ksiazki, a pozostałe łańcuchy to kolejno // autor, tytul, ISBN, wydawnictwo dla uproszczenia w postaci cyfr - obiekty do wstawiania String t4[] = {"3", "1", "1", "1", "1", "1"}; // t4, t5,t6 tablice łańcuchów do tworzenia tytułu książki jako nagranie //dźwiękowe String t5[] = {"3", "2", "2", "2", "2", "2"}; // pierwszy łańcuch jest informacją dla fabryki, jaki obiekt wygenerować String t6[] = {"3", "4", "4", "4", "4", "4"}; // 3 oznacza utworzenie obiektu klasy TTytul_ksiazki_na_kasecie, a pozostałe //łańcuchy to kolejno autor, tytul, ISBN, wydawnictwo, aktor dla uproszczenia w postaci cyfr- obiekty do wstawiania ap.dodaj_tytul(t1); ap.dodaj_tytul(t2); ap.dodaj_tytul(t2); //naruszenie integralności danych tytułów ap.dodaj_tytul(t3); ap.dodaj_tytul(t4); ap.dodaj_tytul(t5); ap.dodaj_tytul(t5); //naruszenie integralności danych tytułów ap.dodaj_tytul(t6); String lan = ap.gettytul_ksiazki().tostring(); System.out.println(lan); } 109

110 Projekt przypadku użycia Dodaj egzemplarz za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. Definiowanie kodu metod realizujących przypadek użycia na podstawie diagramów sekwencji 110

111 (5) Dodaj egzemplarz TTytul_ksiazki TAplikacja::dodaj_ksiazke(String dane1[], String dane2[]) 111

112 //TAplikacja public TTytul_ksiazki dodaj_ksiazke(string dane1[], String dane2[]) { TTytul_ksiazki pom, pom1 = null; TFabryka fabryka = new TFabryka(); pom = fabryka.podaj_tytul(dane1); if ((pom1 = Szukaj_tytul(pom))!= null) pom1.dodaj_ksiazke(dane2); return pom1; } 112

113 (6)Szukaj egzemplarz TEgzemplarz TTytul_ksiazki::Szukaj_egzemplarz(TEgzemplarz egzemplarz_) 113

114 //TTytul_ksiazki private ArrayList <TEgzemplarz> mksiazka = new ArrayList < TEgzemplarz >(); public TEgzemplarz Szukaj_egzemplarz (TEgzemplarz egzemplarz_ ) { int idx; if ((idx=mksiazka.indexof(egzemplarz_))!=-1 ) { egzemplarz_=mksiazka.get(idx); return egzemplarz; } return null; } 114

115 (7) boolean TEgzemplarz::equals(Object ob) 115

116 (8) void TTytul_ksiazki::dodaj_ksiazke(String dane[]) 116

117 //TTytul_ksiazki public void dodaj_ksiazke(string dane[]) { } TFabryka fabryka = new TFabryka(); TEgzemplarz nowa; nowa = fabryka.podaj_egzemplarz(dane); if (Szukaj_egzemplarz(nowa) == null) { } mksiazka.add(nowa); nowa.settytul_ksiazki(this); 117

118 (9) TEgzemplarz TFabryka::Podaj_egzemplarz (String[] dane) 118

119 Proponowany kod funkcji main w klasie fasadowej TAplikacja public static void main(string t[]) // your code here {TAplikacja ap = new TAplikacja(); String t1[] = {"1", "1", "1", "1", "1"}; //t1, t2, t3 tablice łańcuchów do tworzenia tytułu książki zwyklej pierwszy łańcuch String t2[] = {"1", "2", "2", "2", "2"}; // jest informacją dla fabryki, jaki obiekt wygenerować String t3[] = {"1", "3", "3", "3", "3"}; // 1 oznacza utworzenie obiektu klasy TTytul_ksiazki, a pozostałe łańcuchy to kolejno // autor, tytul, ISBN, wydawnictwo dla uproszczenia w postaci cyfr - obiekty do wstawiania String t4[] = {"3", "1", "1", "1", "1", "1"}; // t4, t5,t6 tablice łańcuchów do tworzenia tytułu książki jako nagranie dźwiękowe String t5[] = {"3", "2", "2", "2", "2", "2"}; // pierwszy łańcuch jest informacją dla fabryki, jaki obiekt wygenerować String t6[] = {"3", "4", "4", "4", "4", "4"}; // 3 oznacza utworzenie obiektu klasy TTytul_ksiazki_na_kasecie, a pozostałe //łańcuchy to kolejno autor, tytul, ISBN, wydawnictwo, aktor dla uproszczenia w postaci cyfr- obiekty do wstawiania ap.dodaj_tytul(t1); ap.dodaj_tytul(t2); ap.dodaj_tytul(t2); //naruszenie integralności danych tytułów ap.dodaj_tytul(t3); ap.dodaj_tytul(t4); ap.dodaj_tytul(t5); ap.dodaj_tytul(t5); //naruszenie integralności danych tytułów ap.dodaj_tytul(t6); String lan = ap.gettytul_ksiazki().tostring(); System.out.println(lan); String d1[] = {"0", "1"}; // d1, d2, d3 - tablice łańcuchów do tworzenia wzorcowego tytułu książki zwyklej do wyszukiwania String d2[] = {"0", "2"}; // pierwszy łańcuch jest informacją dla fabryki, jaki obiekt wygenerować: 0 oznacza generowanie String d3[] = {"0", "5"}; // obiektu klasy TTytul_ksiazki, drugi łańcuch jest ISBN obiekty do wyszukiwania String d4[] = {"2", "1", "1"}; //d4, d5 - tablice łańcuchów do tworzenia wzorcowego tytułu książki jako nagranie dźwiękowe String d5[] = {"2", "4", "4"}; //pierwszy łańcuch 2 oznacza generowanie obiektu typu TTytul_ksiazki_na_kasecie // drugi łańcuch to ISBN, trzeci jest nazwiskiem aktora - obiekty do wyszukiwania String tr1[] = {"0", "1"}; //tablice tr1 i tr2 zawierają informację o tworzeniu obiektu typu TEgzemplarz: pierwszy łańcuch String tr2[] = {"0", "2"}; //równy 0 oznacza tworzenie obiektu typu typu TEgzemplarz, drugi jest numerem egzemplarza String tr3[] = {"1", "3", "April 10, 2008, 00:00:00 GMT"}; //pierwszy łańcuch równy 1 oznacza tworzenie obiektu klasy String tr4[] = {"1", "2", "April 10, 2008, 00:00:00 GMT"}; //TEgzemplarz_termin, drugi oznacza numer, trzeci termin 119

120 TTytul_ksiazki pom = ap.dodaj_ksiazke(d1, tr1); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d2, tr1); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d2, tr1); //nie wstawi powtórzenie numeru ksiażki if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d2, tr2); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d3, tr2); //nie wstawi brak tytułu if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d4, tr3); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d4, tr3); //nie wstawi powtórzenie numeru ksiażki if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d4, tr4); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } pom = ap.dodaj_ksiazke(d5, tr2); if (pom!= null) { System.out.println(pom.getKsiazka().toString()); } } 120

121 Tak może działać aplikacja po wykonaniu poszczególnych przypadków użycia 121

122 Projekt przypadku użycia Wyszukiwanie tytulow za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. Definiowanie kodu metod realizujących przypadek użycia na podstawie diagramów sekwencji 122

123 (10) Wyszukiwanie tytulow TTytul_ksiazki TAplikacja::Wyszukaj_tytul (String[] dane) 123

124 Projekt przypadku użycia Wyszukiwanie egzemplarzy za pomocą diagramu sekwencji i diagramu klas. Diagram klas jest uzupełniany metodami zidentyfikowanymi podczas projektowania scenariusza przypadku użycia za pomocą diagramu sekwencji. Definiowanie kodu metod realizujących przypadek użycia na podstawie diagramów sekwencji 124

125 (11) Wyszukiwanie egzemplarzy TEgzemplarz TAplikacja::Wyszukaj_egzemplarz (String[] dane1, String[] dane2) 125

126 package wypozyczalnia1; import java.util.arraylist; public class TAplikacja { private ArrayList<TTytul_ksiazki> mtytul_ksiazki = new ArrayList<TTytul_ksiazki>(); public TAplikacja () {/* */ } public static void main (String[] t) {/* */ } public ArrayList<TTytul_ksiazki> gettytul_ksiazki () {/* */ } public void settytul_ksiazki (ArrayList<TTytul_ksiazki> val) {/* */ } } public TTytul_ksiazki Szukaj_tytul (TTytul_ksiazki tytul_) {/* */ } public void dodaj_tytul (String[] dane) {/* */ } public TTytul_ksiazki dodaj_ksiazke (String[] dane1, String[] dane2) {/* */ } public TTytul_ksiazki Wyszukaj_tytul (String[] dane) {/* */ } public TEgzemplarz Wyszukaj_egzemplarz (String[] dane1, String[] dane2) {/* */ } package wypozyczalnia1; public class TEgzemplarz { private int numer; private TTytul_ksiazki mtytul_ksiazki; } public TEgzemplarz () {/* */ } public int getnumer () {/* */ } public void setnumer (int numer_) {/* */ } public TTytul_ksiazki gettytul_ksiazki () {/* */ } public void settytul_ksiazki (TTytul_ksiazki val) {/* */ } public boolean equals (Object ob) {/* */ } public String tostring () {/* */ } 126

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

Laboratorium 2_3_4 Wzorce oprogramowania zastosowane w modelu obiektowym (wg Alan Shalloway, James R.Trott) Laboratorium Wzorce oprogramowania zastosowane w modelu obiektowym (wg Alan Shalloway, James R.Trott) Implementacja warstwy biznesowej stosującej wzorce obiektowe oprogramowania laboratorium2_ 3_4 1 Identyfikacja

Bardziej szczegółowo

Tworzenie systemów informatycznych. Inżynieria oprogramowania Zofia Kruczkiewicz

Tworzenie systemów informatycznych. Inżynieria oprogramowania Zofia Kruczkiewicz Tworzenie systemów informatycznych Inżynieria oprogramowania Zofia Kruczkiewicz 1 Literatura 1. Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, 2004 2. Stephen H. Kan, Metryki i modele

Bardziej szczegółowo

Tworzenie systemów informatycznych. Inżynieria oprogramowania Zofia Kruczkiewicz

Tworzenie systemów informatycznych. Inżynieria oprogramowania Zofia Kruczkiewicz Tworzenie systemów informatycznych Inżynieria oprogramowania Zofia Kruczkiewicz 1 Zagadnienia 1. Wielowarstwowa architektura systemu informatycznego 2. Refaktoryzacja architektury wielowarstwowej systemu

Bardziej szczegółowo

Tworzenie systemów informatycznych. Inżynieria oprogramowania Zofia Kruczkiewicz

Tworzenie systemów informatycznych. Inżynieria oprogramowania Zofia Kruczkiewicz Tworzenie systemów informatycznych Inżynieria oprogramowania Zofia Kruczkiewicz 1 Zagadnienia 1. Wielowarstwowa architektura systemu informatycznego 2. Refaktoryzacja architektury wielowarstwowej systemu

Bardziej szczegółowo

Wybrane aspekty projektowania - budowa wielowarstwowego modelu implementacji, zastosowanie wzorców projektowych Wykład 7 część 2

Wybrane aspekty projektowania - budowa wielowarstwowego modelu implementacji, zastosowanie wzorców projektowych Wykład 7 część 2 Wybrane aspekty projektowania - budowa wielowarstwowego modelu implementacji, zastosowanie wzorców projektowych Wykład 7 część 2 Zofia Kruczkiewicz Zofia Kruczkiewicz Wyklad_INP002017_7, część 2 1 Literatura

Bardziej szczegółowo

Modelowanie i analiza. warstwy biznesowej aplikacji

Modelowanie i analiza. warstwy biznesowej aplikacji Modelowanie i analiza warstwy biznesowej aplikacji 1. Warstwa biznesowa aplikacji, refaktoryzacja warstwy biznesowej, refaktoryzacja systemu informatycznego 2. Przykład tworzenia warstwy biznesowej systemu

Bardziej szczegółowo

Wykład 1 Inżynieria Oprogramowania

Wykład 1 Inżynieria Oprogramowania Wykład 1 Inżynieria Oprogramowania Wstęp do inżynierii oprogramowania. Cykle rozwoju oprogramowaniaiteracyjno-rozwojowy cykl oprogramowania Autor: Zofia Kruczkiewicz System Informacyjny =Techniczny SI

Bardziej szczegółowo

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa integracji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Ukrycie logiki dostępu do danych w osobnej warstwie 2. Oddzielenie mechanizmów trwałości od modelu obiektowego Pięciowarstwowy

Bardziej szczegółowo

Tworzenie warstwy prezentacji w wielowarstwowej aplikacji Przykład w środowisku Visual Web JSP

Tworzenie warstwy prezentacji w wielowarstwowej aplikacji Przykład w środowisku Visual Web JSP Tworzenie warstwy prezentacji w wielowarstwowej aplikacji Przykład w środowisku Visual Web JSP Autor Zofia Kruczkiewicz Programowanie i wdrażanie systemów informatycznych 1. Wykonanie formularzy typy JSP

Bardziej szczegółowo

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania Diagramy klas i sekwencji: Relacja 1 do 0..* między klasami modelu obiektowego Cele laboratorium 3 Dokończyć 1-y etap z lab2. 2-i etap projektu.

Bardziej szczegółowo

Programowanie komponentowe 5

Programowanie komponentowe 5 Budowa warstwy klienta w architekturze typu klient-serwer zbudowanych z komponentów typu EE - klient desktopowy i internetowy. Zastosowanie komponentów opartych na technologii EJB 3.2. na podstawie https://docs.oracle.com/javaee/7/jeett.pdf

Bardziej szczegółowo

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:

Bardziej szczegółowo

Literatura. J. Nilsson: Applying Domain-Driven Design and Patterns,With Examples in C# and.net, Addison-Wesley Professional, 2006

Literatura. J. Nilsson: Applying Domain-Driven Design and Patterns,With Examples in C# and.net, Addison-Wesley Professional, 2006 Literatura Booch G., Rumbaugh J., Jacobson I., Język UML. Przewodnik użytkownika, Seria: Inżynieria oprogramowania, Warszawa, WNT, 2002. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Wzorce

Bardziej szczegółowo

Projekt INP Instrukcja 1. Autor Dr inż. Zofia Kruczkiewicz

Projekt INP Instrukcja 1. Autor Dr inż. Zofia Kruczkiewicz Projekt INP002017 Instrukcja 1 Autor Dr inż. Zofia Kruczkiewicz I. Czynności wykonane zgodnie z harmonogramem grupy w tygodniach 1-6 1. Czynności (str. 3-12) wg instrukcji do lab3: http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/inp002017/lab_inp002017_3.pdf

Bardziej szczegółowo

Tworzenie warstwy prezentacji drugi etap Przykład z laboratorium5_6. Autor Zofia Kruczkiewicz Wzorce oprogramowania laboratorium7_8

Tworzenie warstwy prezentacji drugi etap Przykład z laboratorium5_6. Autor Zofia Kruczkiewicz Wzorce oprogramowania laboratorium7_8 Tworzenie warstwy prezentacji drugi etap Przykład z laboratorium5_6 Autor Zofia Kruczkiewicz Wzorce oprogramowania laboratorium7_8 1. Wykonanie formularzy typy JSP zawierających wieloużywalne formularze

Bardziej szczegółowo

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2 Modelowanie i analiza systemów informatycznych 1. Warstwowa budowa systemów informatycznych 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wstęp do modelowania systemów

Bardziej szczegółowo

Przykład 1 Iteracja 1 tworzenia oprogramowania

Przykład 1 Iteracja 1 tworzenia oprogramowania Przykład 1 Iteracja 1 tworzenia oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji: Relacja 1 do 0..*

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6 Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie http://docs.oracle.com/javaee/6/tutorial/doc/ Aplikacja internetowa tworzona na podstawie bazy danych. Programowanie komponentowe 2, Zofia

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7 Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

Laboratorium 8 Diagramy aktywności

Laboratorium 8 Diagramy aktywności Laboratorium 8 Diagramy aktywności Zofia Kruczkiewicz Zofia Kruczkiewicz Lab_INP002017_8 1 Modelowanie zachowania obiektów za pomocą diagramów aktywności. Modelowanie zachowania obiektów za pomocą diagramów

Bardziej szczegółowo

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz

Projektowanie oprogramowania. Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz Projektowanie oprogramowania Warstwa integracji z bazą danych oparta na technologii ORM Platforma Java EE Autor: Zofia Kruczkiewicz 1 Wykonanie czterowarstwowej aplikacji EE z dostępem do bazy danych,

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP Laboratoria 5-7- część 1 Identyfikacja klas reprezentujących logikę biznesową projektowanego oprogramowania, definicja atrybutów i operacji klas oraz związków między klasami - na podstawie analizy scenariuszy

Bardziej szczegółowo

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

Iteracyjno-rozwojowy cykl oprogramowania cykl 2. Java Zofia Kruczkiewicz 1 Iteracyjno-rozwojowy cykl oprogramowania cykl 2 Java Zofia Kruczkiewicz 1 Kod klasy Uchwyt Java Zofia Kruczkiewicz 2 package katalog1; public class Uchwyt { private Tytul_ksiazki mtytul_ksiazki; public

Bardziej szczegółowo

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1 Charakterystyka oprogramowania obiektowego 1. Definicja systemu informatycznego 2. Model procesu wytwarzania oprogramowania - model cyklu życia oprogramowania 3. Wymagania 4. Problemy z podejściem nieobiektowym

Bardziej szczegółowo

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1 Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1 Zofia Kruczkiewicz 1 Literatura 1. Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, 2004 2. Stephen H. Kan, Metryki i modele w

Bardziej szczegółowo

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1

Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Iteracyjno-rozwojowy proces tworzenia oprogramowania Wykład 3 część 1 Zofia Kruczkiewicz 1 Zunifikowany iteracyjno- przyrostowy proces tworzenia oprogramowania kiedy? Przepływ działań Modelowanie przedsiębiorstwa

Bardziej szczegółowo

Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Warstwa prezentacji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. Warstwa prezentacji wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe. 1. Definicja warstwy prezentacji - pięciowarstwowy model logicznego rozdzielania zadań 2. Podstawowe przypadki - analiza

Bardziej szczegółowo

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1

Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1 Wprowadzenie, podstawowe pojęcia, projekt a produkt Wykład1 Zofia Kruczkiewicz 1 Literatura 1. Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, 2004 2. Stephen H. Kan, Metryki i modele w

Bardziej szczegółowo

Podstawowe informacje o technologii Java EE 7

Podstawowe informacje o technologii Java EE 7 Podstawowe informacje o technologii Java EE 7 na podstawie https://docs.oracle.com/javaee/7/jeett.pdf Programowanie komponentowe 2 Programowanie komponentowe 2, Zofia Kruczkiewicz 1 I. Wielowarstwowa architektura

Bardziej szczegółowo

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom.

Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Instrukcja tworzenia aplikacji EE na bazie aplikacji prezentowanej na zajęciach lab.4 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie systemów informatycznych Przekształcenie

Bardziej szczegółowo

Instrukcja 1 Laboratorium z Podstaw Inżynierii Oprogramowania. Relacja 1 do 1..0 instrukcja z lab1

Instrukcja 1 Laboratorium z Podstaw Inżynierii Oprogramowania. Relacja 1 do 1..0 instrukcja z lab1 Instrukcja 1 Laboratorium z Podstaw Inżynierii Oprogramowania Relacja 1 do 1..0 instrukcja z lab1 Cele laboratorium 1 Należy: wybrać projekt z podanej listy dostępnej za pomocą linku podanego w w laboratorium

Bardziej szczegółowo

problem w określonym kontekście siły istotę jego rozwiązania

problem w określonym kontekście siły istotę jego rozwiązania Wzorzec projektowy Christopher Alexander: Wzorzec to sprawdzona koncepcja, która opisuje problem powtarzający się wielokrotnie w określonym kontekście, działające na niego siły, oraz podaje istotę jego

Bardziej szczegółowo

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

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Instrukcja 4 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwa klienta: Interfejs graficzny użytkownika

Instrukcja 4 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwa klienta: Interfejs graficzny użytkownika Instrukcja 4 Laboratorium z Podstaw Inżynierii Oprogramowania Warstwa klienta: Interfejs graficzny użytkownika Cel laboratorium 4 Należy wykonać interefejs graficzny użytkownika wg p.1 oraz p.2 lub p.3

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

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

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1) Instrukcja tworzenia aplikacji EE na podstawie aplikacji z dostępem do bazy danych, prezentowanej na zajęciach lab.5 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie

Bardziej szczegółowo

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Programowanie komponentowe Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz Struktura wykładu 1. Utworzenie użytkowników i ról na serwerze aplikacji Sun Java System Application

Bardziej szczegółowo

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4 1. Relacyjne

Bardziej szczegółowo

Diagram stanów Laboratorium 9

Diagram stanów Laboratorium 9 Diagram stanów Laboratorium 9 Zofia Kruczkiewicz Zofia Kruczkiewicz lab_inp002017_9 1 Modelowanie zachowania obiektu za pomocą diagramu stanów. Opracowanie diagramu stanów dla obiektu wybranej klasy, reprezentującego

Bardziej szczegółowo

{ Dane1 d=(dane1)o; return nazwisko.equals(d.nazwisko) && srednia==d.srednia && uwagi.equals(d.uwagi); }

{ Dane1 d=(dane1)o; return nazwisko.equals(d.nazwisko) && srednia==d.srednia && uwagi.equals(d.uwagi); } 1. Inżynieria odwrotna w środowisku NetBeans na przykładzie p. 3 instrukcji Należy uruchomić środowisko NetBeans 6.7.1, otworzyć rozpakowany wcześniej projekt Katalog4. Wykonać za pomocą inżynierii odwrotnej

Bardziej szczegółowo

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia 1 Cel laboratoriów: Specyfikacja wymagań, zdefiniowanych w ramach laboratorium 2 (wg instrukcji 2),

Bardziej szczegółowo

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz Budowa prostej aplikacji wielowarstwowej Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz Konfigurowanie edytora programu za pomocą Tools/Options/Editor Konfigurowanie edytora programu za pomocą

Bardziej szczegółowo

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz Budowa aplikacji wielowarstwowych zastosowanie szablonów Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz Przykład 1 Zastosowanie szablonów Tworzenie kopii projektu typu Web Application o nazwie

Bardziej szczegółowo

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia 1 Cel laboratoriów: Specyfikacja wymagań, zdefiniowanych w ramach laboratorium 2 (wg instrukcji 2),

Bardziej szczegółowo

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia

Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia Instrukcja 3 Laboratoria 3, 4 Specyfikacja wymagań funkcjonalnych za pomocą diagramu przypadków użycia 1 Cel laboratoriów: Specyfikacja wymagań, zdefiniowanych w ramach laboratorium 2 (wg instrukcji 2),

Bardziej szczegółowo

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl Komputerowe Systemy Przemysłowe: Modelowanie - UML Arkadiusz Banasik arkadiusz.banasik@polsl.pl Plan prezentacji Wprowadzenie UML Diagram przypadków użycia Diagram klas Podsumowanie Wprowadzenie Języki

Bardziej szczegółowo

Modele cyklu życia systemu cd Zasady programowania zwinnego Wykład 3

Modele cyklu życia systemu cd Zasady programowania zwinnego Wykład 3 Modele cyklu życia systemu cd Zasady programowania zwinnego Wykład 3 Zofia Kruczkiewicz 1 Literatura 1. Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, 2004 2. Stephen H. Kan, Metryki i

Bardziej szczegółowo

Podrozdziały te powinny zawierać informacje istotne z punktu widzenia przyjętego celu pracy

Podrozdziały te powinny zawierać informacje istotne z punktu widzenia przyjętego celu pracy Uwaga: 1. Praca powinna być napisana z użyciem formy bezosobowej np. wykonano. Nazwa rozdziału Zawartość Liczba stron 1. Wstęp Rozdział ten powinien zawierać zarys najważniejszych elementów pracy Krótki

Bardziej szczegółowo

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

Języki i metody programowania Java. Wykład 2 (część 2) Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego

Bardziej szczegółowo

Aplikacje RMI Lab4

Aplikacje RMI   Lab4 Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych

Bardziej szczegółowo

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM

Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Instrukcja 5 Laboratorium z Podstaw Inżynierii Oprogramowania Warstwy integracji z bazą danych: Wzorzec DAO Technologia ORM Cel laboratorium 5 Należy wykonać dwie aplikacje zawierające warstwę integracji

Bardziej szczegółowo

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:

Bardziej szczegółowo

Wzorce logiki dziedziny

Wzorce logiki dziedziny Wzorce logiki dziedziny 1. Wzorce logiki dziedziny skrypt transakcji (Transaction Script), brama tabeli (Table Data Gateway), model dziedziny (Domain model), strategia (Strategy), moduł tabeli (Table Module),

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 11 - przegląd wybranych wzorców mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 24 maja 2017 1 / 38 mgr inż. Krzysztof Szwarc Programowanie obiektowe Wzorce

Bardziej szczegółowo

Diagramy czynności Na podstawie UML 2.0 Tutorial

Diagramy czynności Na podstawie UML 2.0 Tutorial Diagramy czynności Na podstawie UML 2.0 Tutorial http://sparxsystems.com.au/resources/uml2_tutorial/ Zofia Kruczkiewicz 1 Diagramy czynności 1. Diagramy czyności UML http://sparxsystems.com.au/resources/uml2_tutorial/

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 4

Podstawy programowania III WYKŁAD 4 Podstawy programowania III WYKŁAD 4 Jan Kazimirski 1 Podstawy UML-a 2 UML UML Unified Modeling Language formalny język modelowania systemu informatycznego. Aktualna wersja 2.3 Stosuje paradygmat obiektowy.

Bardziej szczegółowo

Zagadnienia projektowania aplikacji J2EE

Zagadnienia projektowania aplikacji J2EE 211 Zagadnienia projektowania aplikacji J2EE Maciej Zakrzewicz Maciej.Zakrzewicz@cs.put.poznan.pl http://www.cs.put.poznan.pl/mzakrzewicz/ Plan rozdziału 212 Wstęp Techniki projektowe: Wprowadzenie modułu

Bardziej szczegółowo

Analiza i projektowanie aplikacji Java

Analiza i projektowanie aplikacji Java Analiza i projektowanie aplikacji Java Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie

Bardziej szczegółowo

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia) Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia) WERSJA WSTĘPNA, BRAK PRZYKŁADOWYCH PYTAŃ DLA NIEKTÓRYCH PRZEDMIOTÓW Należy wybrać trzy dowolne

Bardziej szczegółowo

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Zofia Kruczkiewicz Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 1 Diagramy maszyn stanowych, wzorce projektowe 1. Modelowanie zachowania

Bardziej szczegółowo

Programowanie Zespołowe

Programowanie Zespołowe Programowanie Zespołowe Dobre Praktyki dr Rafał Skinderowicz mgr inż. Michał Maliszewski Parafrazując klasyka: Jeśli piszesz w Javie pisz w Javie - Rafał Ciepiela Principal Software Developer Cadence Design

Bardziej szczegółowo

Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne

Projektowanie obiektowe. Roman Simiński  Wzorce projektowe Wybrane wzorce strukturalne Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec

Bardziej szczegółowo

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1

Szkolenie wycofane z oferty. Program szkolenia: Enterprise Java Beans 3.0/3.1 Szkolenie wycofane z oferty Program szkolenia: Enterprise Java Beans 3.0/3.1 Informacje: Nazwa: Enterprise Java Beans 3.0/3.1 Kod: Java-EE-EJB Kategoria: Java EE Grupa docelowa: developerzy Czas trwania:

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1

Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Diagramy maszyn stanowych, wzorce projektowe Wykład 5 część 1 Zofia Kruczkiewicz Zofia Kruczkiewicz Inżynieria oprogramowania INEK011 1 Składnia elementów na diagramach UML 1. W prezentacji składni diagramów

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5 Instrukcja 5 Laboratorium 7 Identyfikacja klas reprezentujących logikę biznesową projektowanego oprogramowania, definicja atrybutów i operacji klas oraz związków między klasami - na podstawie analizy scenariuszy

Bardziej szczegółowo

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z

Bardziej szczegółowo

Wprowadzenie do programowania aplikacji mobilnych

Wprowadzenie do programowania aplikacji mobilnych Wprowadzenie do programowania aplikacji mobilnych dr Przemysław Juszczuk dr Przemysław Juszczuk Trochę historii Idea wzorców projektowych wywodzi się jeszcze z wczesnych lat osiemdziesiątych ubiegłego

Bardziej szczegółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół

Bardziej szczegółowo

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1 Wstęp - Prosta aplikacja internetowa w technologii Java EE 5 Programowanie komponentowe 1 Przykład 1- Wykonanie prostej aplikacji internetowej w technologii JavaEE w środowisku Netbeans 5.5 z wykorzystaniem

Bardziej szczegółowo

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial

Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial Diagramy stanów tworzenie modeli analizy i projektowania Na podstawie UML 2.0 Tutorial http://sparxsystems.com.au/resources/uml2_tutorial/ Zofia Kruczkiewicz Zofia Kruczkiewicz Projektowanie oprogramowania

Bardziej szczegółowo

Enterprise JavaBeans

Enterprise JavaBeans Enterprise JavaBeans 1. Wprowadzenie. 2. Przegląd komponentów EJB. komponenty encyjne, komponenty sesyjne, komponenty sterowane komunikatami. 3. Kontener komponentów EJB: JBoss. 1 Enterprise JavaBeans

Bardziej szczegółowo

Wykład 4_2 część druga. Iteracyjno-rozwojowy cykl oprogramowania 4

Wykład 4_2 część druga. Iteracyjno-rozwojowy cykl oprogramowania 4 Wykład 4_2 część druga Iteracyjno-rozwojowy cykl oprogramowania 4 I. Przykład pierwszy programu z warstwą klienta (interfejs graficzny użytkownika) i warstwą biznesową dostępną za pomocą metod klasy

Bardziej szczegółowo

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Szczególne problemy projektowania aplikacji internetowych. Jarosław Kuchta Projektowanie Aplikacji Internetowych Szczególne problemy projektowania aplikacji Jarosław Kuchta Miejsce projektowania w cyklu wytwarzania aplikacji SWS Analiza systemowa Analiza statyczna Analiza funkcjonalna Analiza dynamiczna Analiza behawioralna

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

UML w Visual Studio. Michał Ciećwierz

UML w Visual Studio. Michał Ciećwierz UML w Visual Studio Michał Ciećwierz UNIFIED MODELING LANGUAGE (Zunifikowany język modelowania) Pozwala tworzyć wiele systemów (np. informatycznych) Pozwala obrazować, specyfikować, tworzyć i dokumentować

Bardziej szczegółowo

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie

Java Enterprise Edition spotkanie nr 1. Sprawy organizacyjne, wprowadzenie Java Enterprise Edition spotkanie nr 1 Sprawy organizacyjne, wprowadzenie 1 Informacje organizacyjne Program: Co będzie na tym wykładzie, a czego nie będzie? apteka rolnictwo Java Enterprise Edition vs

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse 1 Cel laboratorium: Nabycie umiejętności przygotowywania testów akceptacyjnych za pomocą narzędzia FitNesse 1. Wg wskazówek

Bardziej szczegółowo

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2

Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2 Kod szkolenia: Tytuł szkolenia: EJB Tworzenie komponentów logiki biznesowej i warstwy dostępu do danych w oparciu o EJB3.0/JPA lub EJB 3.1/JPA2 Dni: 3 Opis: Adresaci szkolenia: Szkolenie adresowane jest

Bardziej szczegółowo

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia)

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia) Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów dziennych studiów II stopnia) WERSJA WSTĘPNA, BRAK PRZYKŁADOWYCH PYTAŃ DLA NIEKTÓRYCH PRZEDMIOTÓW Należy wybrać trzy dowolne przedmioty.

Bardziej szczegółowo

EJB 3.0 (Enterprise JavaBeans 3.0)

EJB 3.0 (Enterprise JavaBeans 3.0) EJB 3.0 (Enterprise JavaBeans 3.0) Adrian Dudek Wirtualne Przedsiębiorstwo 2 Wrocław, 1 czerwca 2010 Plan prezentacji 1 Wprowadzenie Cel prezentacji Czym jest EJB 3.0? Historia 2 3 Cel prezentacji Wprowadzenie

Bardziej szczegółowo

Wzorce projektowe i refaktoryzacja

Wzorce projektowe i refaktoryzacja Wzorce projektowe i refaktoryzacja Paweł Kozioł p.koziol@students.mimuw.edu.pl 18.01.2005 Moja praca magisterska Narzędzie dla środowiska Eclipse wspierające stosowanie wzorców projektowych J2EE Prowadzący:

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 2

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 2 Instrukcja 2 Laboratorium 2 Wykonanie opisu biznesowego świata rzeczywistego projektowanego oprogramowania, definicja wymagań funkcjonalnych i niefunkcjonalnych projektowanego oprogramowania 1 Cel laboratorium:

Bardziej szczegółowo

Zastosowanie komponentów EJB typu Session

Zastosowanie komponentów EJB typu Session Zastosowanie komponentów EJB typu Session na podstawie https://docs.oracle.com/javaee/7/jeett.pdf Programowanie komponentowe Lab1 1 1. Refaktoryzacja kodu programu Sklep_6 z lab5, TINT 1.1. Należy wykonać

Bardziej szczegółowo

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania

Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania Zasady generowania kluczy głównych Język Java Persistence Podstawowa architektura wielowarstwowych aplikacji w oparciu o wzorce oprogramowania Autor Zofia Kruczkiewicz Wzorce oprogramowania 6 1. Różne

Bardziej szczegółowo

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Spring Framework - wprowadzenie i zagadnienia zaawansowane Program szkolenia: Spring Framework - wprowadzenie i zagadnienia zaawansowane Informacje ogólne Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Spring Framework - wprowadzenie i zagadnienia

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

PROJEKT Z BAZ DANYCH

PROJEKT Z BAZ DANYCH POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRONIKI PROJEKT Z BAZ DANYCH System bazodanowy wspomagający obsługę sklepu internetowego AUTOR: Adam Kowalski PROWADZĄCY ZAJĘCIA: Dr inż. Robert Wójcik, W4/K-9 Indeks:

Bardziej szczegółowo

Projekt INP Instrukcja 2. Autor Dr inż. Zofia Kruczkiewicz

Projekt INP Instrukcja 2. Autor Dr inż. Zofia Kruczkiewicz Projekt INP002017 Instrukcja 2 Autor Dr inż. Zofia Kruczkiewicz I. Czynności wykonane zgodnie z harmonogramem grupy w tygodniach 1-15 Tabela 2. Przebieg realizacji każdego z projektów (tabela 1) Opis realizacji

Bardziej szczegółowo

Autor Zofia Kruczkiewicz Wzorce oprogramowania - laboratorium5_6

Autor Zofia Kruczkiewicz Wzorce oprogramowania - laboratorium5_6 Utrwalanie danych zastosowanie obiektowego modelu danych warstwy biznesowej do generowania schematu relacyjnej bazy danych (podrozdziały 1, 2, 3) Tworzenie warstwy prezentacji pierwszy etap (podrozdziały

Bardziej szczegółowo

Java Persistence API - zagadnienia zaawansowane

Java Persistence API - zagadnienia zaawansowane Program szkolenia: Java Persistence API - zagadnienia zaawansowane Informacje: Nazwa: Kod: Kategoria: Grupa docelowa: Czas trwania: Forma: Java Persistence API - zagadnienia zaawansowane Java-EE-jpa-pro

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo