Analiza i projektowanie aplikacji Java



Podobne dokumenty
Projektowanie architektury systemu rozproszonego. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Projektowanie logiki aplikacji

Wykład 7: Pakiety i Interfejsy

Projektowanie architektury systemu internetowego

Programowanie obiektowe

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Programowanie obiektowe

Projektowanie architektury systemu. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Jarosław Kuchta Projektowanie Aplikacji Internetowych. Projektowanie warstwy danych

Wzorce projektowe i refaktoryzacja

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

Projektowanie struktury danych

Zagadnienia (1/3) Data-flow diagramy przepływów danych ERD diagramy związków encji Diagramy obiektowe w UML (ang. Unified Modeling Language)

Jarosław Kuchta Projektowanie Aplikacji Internetowych. Projektowanie IU -nawigacja

Pakiety i interfejsy. Tomasz Borzyszkowski

Projektowanie warstwy danych

Diagramy klas. dr Jarosław Skaruz

DIAGRAMY IMPLEMENTACYJNE

Modelowanie klas i obiektów. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Rysunek 1: Przykłady graficznej prezentacji klas.

UML cz. II. UML cz. II 1/38

Wykład 1 Inżynieria Oprogramowania

Projektowanie interakcji. Jarosław Kuchta

K_W04 K_W04 K_W04. Opis

1 Wprowadzenie do J2EE

Spring Framework - wprowadzenie i zagadnienia zaawansowane

UML w Visual Studio. Michał Ciećwierz

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

Enkapsulacja, dziedziczenie, polimorfizm

Informatyka I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) stacjonarne (stacjonarne / niestacjonarne)

Woom Welcome to the Woom World.

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 2

Analiza i projektowanie obiektowe 2016/2017. Wykład 10: Tworzenie projektowego diagramu klas

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

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

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

Jarosław Kuchta Projektowanie Aplikacji Internetowych. Projektowanie IU wejście/wyjście

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

Programowanie w Javie nazwa przedmiotu SYLABUS A. Informacje ogólne

Zofia Kruczkiewicz - Modelowanie i analiza systemów informatycznych 1

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Programowanie w Internecie. Java

Diagramy stanów i aktywności. Jarosław Kuchta Dokumentacja i Jakość Oprogramowania

Wprowadzenie do programowania aplikacji mobilnych

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Język Java część 2 (przykładowa aplikacja)

Programowanie obiektowe

Programowanie obiektowe

Język opisu sprzętu VHDL

Programowanie obiektowe zastosowanie języka Java SE

Modelowanie aktywności. Jarosław Kuchta Programowanie Współbieżne

Klasy cd. Struktury Interfejsy Wyjątki

Podstawy modelowania programów Kod przedmiotu

Modelowanie przypadków użycia. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Język Java część 2 (przykładowa aplikacja)

Inżynieria oprogramowania Jarosław Kuchta. Modelowanie interakcji

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP

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.

Wykład 2: Podstawy Języka

Diagramy interakcji. Jarosław Kuchta Dokumentacja i Jakość Oprogramowania

Podstawy programowania III WYKŁAD 4

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Zaawansowane aplikacje internetowe

Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:

Podstawy Języka Java

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Podstawy projektowania systemów komputerowych

Marcin Luckner Politechnika Warszawska Wydział Matematyki i Nauk Informacyjnych

Paweł Kurzawa, Delfina Kongo

Projektowanie interfejsu użytkownika. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

DSL w środowisku Eclipse. Grzegorz Białek Architekt techniczny, Sygnity S.A.

Programowanie obiektowe

Programowanie obiektowe

Podstawy programowania. Wykład PASCAL. Wstęp do programowania obiektowego. dr Artur Bartoszewski - Podstawy programowania, sem.

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Oracle11g: Wprowadzenie do SQL

Dokumentacja do API Javy.

PROGRAM NAUCZANIA DLA ZAWODU TECHNIK INFORMATYK, O STRUKTURZE PRZEDMIOTOWEJ

PODSTAWOWE ZASADY PROGRAMOWANIA OBIEKTOWEGO NA BAZIE PAKIETU ROOT

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

Programowanie obiektowe - 1.

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

PHP 5 język obiektowy

Kompleksowe tworzenie aplikacji klasy Desktop z wykorzystaniem SWT i

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

ZARZĄDZANIE WYMAGANIAMI ARCHITEKTONICZNYMI

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

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

Kurs programowania. Wykład 12. Wojciech Macyna. 7 czerwca 2017

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

Inżynieria Oprogramowania Jarosław Kuchta. Projektowanie interfejsu użytkownika (zasady ogólne)

Kurs WWW. Paweł Rajba.

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Programowanie komponentowe 5

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

Transkrypt:

Analiza i projektowanie aplikacji Java

Modele analityczne a projektowe Modele analityczne (konceptualne) pokazują dziedzinę problemu. Modele projektowe (fizyczne) pokazują system informatyczny. Utrzymanie spójności modele projektowe powinny być rozwinięciem (uszczegółowieniem, uściśleniem) modeli analitycznych.

Przegląd modelu klas Czy wszystkie klasy analityczne będą implementowane? Uzupełnienie brakujących klas Uzupełnienie definicji klas Stworzenie i uściślenie struktury klas

Stosowane środki (1) Generalizacja wydzielenie i przenoszenie wspólnych składowych z kilku klas do osobnej, wspólnej klasy, z której te klasy będą dziedziczyć. Abstrakcja tworzenie klas abstrahujących od pewnych szczegółów implementacji stosowanie interfejsów abstrakcja od wszystkich szczegółów implementacji (rozwiązanie problemu braku dziedziczenia wielokrotnego) Uszczegóławianie tworzenie klas potomnych oferujących dodatkowe właściwości i możliwości Agregacja deklarowanie klas kontenerowych, które będą zawierały klasy "biznesowe" wynikające z analizy wymagań przenoszenie operacji z klas składowych do klas kontenerowych (komponent klasy kontenerowej "zna" wszystkie komponenty składowe)

Stosowanie środki (2) Partycjonowanie - podział systemu: podział na warstwy - oszacowanie liczby kontraktów (wymienianych danych i wykorzystywanych operacji) między klasami. stosowanie warstw ułatwia wprowadzanie modyfikacji do systemu (np. wymianę bazy danych) bez naruszania innych elementów architektonicznych (np. interfejsu użytkownika) podział na przestrzenie nazw organizacja hierarchiczna złożoności, możliwość stosowania tych samych nazw w różnych przestrzeniach.

Stosowane środki (3) Wykorzystanie frameworków Framework gotowa biblioteka komponentów tworzących szkielet aplikacji i określających sposób jej działania. Zaleta: ułatwia i przyspiesza projektowanie i implementację aplikacji. Warunek: dobra znajomość wykorzystywanego frameworka. Wady: duża różnorodność frameworków przy braku standaryzacji trudne lub niemożliwe wykorzystanie frameworka w sposób nieprzewidziany przez jego twórcę.

Stosowane środki (4) Faktoryzacja - wykorzystanie gotowych komponentów i szablonów projektowych z dopasowaniem do wymagań konkretnego projektu: Zastosowanie kodu otwartego (open source). Przeniesienie własnego kodu z innego projektu. Adaptacja gotowych komponentów: problemy: klasy zamknięte (sealed), właściwości i metody prywatne, brak wirtualizacji, wrapper klasa, której interfejs jest dopasowany do wymagań danego projektu, a implementacja korzysta w znacznym stopniu z innej, gotowej klasy (której nie można modyfikować).

Typowe warstwy projektowe Presentation Layer Application Logic Data Management Foundation Data Layer

Warstwa podstawowa Warstwa podstawowa (Foundation) obejmuje klasy wykorzystywane bezpośrednio we wszystkich innych warstwach: definicje podstawowych typów danych (np. typy wyliczeniowe), definicje podstawowych struktury danych (np. listy, drzewa, stosy), użyteczne typy abstrakcyjne (data, czas, waluta) operacje dodatkowe, które nie są dostarczane przez biblioteki

Warstwa danych Warstwa danych (Data) zawiera komponenty odpowiedzialne za przechowywanie (zapisywanie i odczytywanie) danych: bazy danych (tabele, kwerendy) repozytoria plików Wymaga określenia: które klasy są trwałe (dane przechowywane między sesjami) jaki sposób przechowywania będzie stosowany (baza danych, pliki) jaki format zapisu danych będzie stosowany (tekstowy, binarny) jaki typ bazy danych będzie stosowany (relacyjna, obiektowa)

Warstwa zarządzania danymi Warstwa zarządzania danymi (Data Management) zawiera klasy odpowiedzialne za dostęp do przechowywanych danych. Umożliwia: ochronę danych przed nieupoważnionym dostępem współdzielenie danych między wieloma użytkownikami

Warstwa logiki aplikacji Warstwa logiki aplikacji (Application Logic) zwana również warstwą biznesową (Business Domain) zawiera klasy realizujące operacje wymagane w konkretnej operacji wynikające z analizy wymagań.

Warstwa prezentacji Warstwa prezentacji (Presentation Layer) zawiera komponenty interfejsu użytkownika (okna, strony etc.): umożliwia użytkownikowi wydawanie poleceń dla systemu i wprowadzanie danych prezentuje dla użytkownika dane przetwarzane z warstwy logiki aplikacji

Przykładowa struktura klas z podziałem na warstwy Presentation Layer «form» Customer «form» Order Application Logic Customer Order Data Management Customers Orders Data Layer «table» Customers «table» Orders

Literatura Dennis A., Wixom B.H., Tegarden D., Systems Analysis & Design. An Object- Oriented Approach with UML, John Wiley and Sons, USA, 2002

Pakiety w Java jako przestrzenie nazw

Definicja pakietu Java Pakiety służą organizacji modelu przez łączenie elementów specyfikacji w grupy. Pliki są grupowane w pakiety, które tworzą swoją integralną przestrzeń nazw. Klasy mogą mieć te same nazwy wewnątrz innych pakietów, a do pełnej identyfikacji używa się złożenia nazwy pakietu i nazwy własnej klasy Pakiet - zbiornik na klasy: dzieli przestrzeń nazw na rozłączne zbiory kontroluje widoczność klas i ich składowych 17

Deklaracja pakietu Java Instrukcję pakietu umieszczamy jako pierwszą komendę pliku źródłowego: package MojPakiet; Wszystkie klasy w pliku należą do pakietu MojPakiet. Inne pliki mogą posiadać tą samą instrukcję: pakiet rozkłada się na wiele plików. Wszystkie pliki.class w pakiecie MojPakiet są zapisywane w katalogu MojPakiet. Pakiet wielo-poziomowy: package pakiet1.pakiet11.pakiet111; 18

Importowanie pakietów Dodatkowe klasy/pakiety, które będą potrzebne w kodzie programu importujemy słowem kluczowym import: import java.util.*; java.lang - pakiet automatycznie importowany do każdego pliku Java. Pakiet java.lang zawiera klasę System Klasa System zawiera pole: static PrintStream out; Klasa PrintStream zawiera metodę: void println(string x) 19

Konflikty nazw Jeśli klasa o tej samej nazwie występuje w dwóch różnych pakietach importowanych do programu: import pakiet1.*; import pakiet2.*; kompilator wyświetli komunikat błędu gdy spróbujemy użyć jednej z klas. Należy wówczas użyć pełnej nazwy: pakiet1.klasa pakiet2.klasa 20