PIO. Autor -Zofia Kruczkiewicz 1
Wprowadzenie
Wstęp do inżynierii oprogramowania.
Cykle rozwoju oprogramowania (część biznesowa aplikacji)
iteracyjno-rozwojowy cykl oprogramowania 1 Strona z materiałami do wykładu
Analiza systemów informatycznych
http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl Instalacja aktualnej wersji NetBeans z modułem UML
podana jest na stronie materiałów do wykładu
PIO. Autor -Zofia Kruczkiewicz 2
Laboratorium 1
Należy:
• wybrać projekt z podanej listy dostępnej za pomocą linku podanego w w laboratorium 1
• sformułować wymagania funkcjonalne i
niefunkcjonalne dla wybranego projektu jako zadanie domowe. Zadanie domowe będzie stanowić podstawę do zaprojektowania przypadków użycia na kolejnych laboratorium.
• Wykonać projekt UML i wykonać prosty program stanowiący realizację projektu zgodnie z materiałem zawartym na slajdach 5-54. Jest to ćwiczenie, które pozwala poznać narzędzie UML w środowisku
NetBeans, wykorzystane w ramach zajęć
laboratoryjnych z przedmiotu Analiza i modelowanie
systemów informatycznych
PIO. Autor -Zofia Kruczkiewicz 3
Java
język programowania
• obiektowo zorientowany
• wysokiego poziomu
platforma Javy
• z maszyny wirtualnej VM
• API (interfejs programowania aplikacji).
Rodzaje platform Javy:
Java Platform, Standard Edition (Java SE)
Java Platform, Enterprise Edition (Java EE)
Java Platform, Micro Edition (Java ME)
Java Platform CARD Rezultat
• niezaleŜność od platformy,
• duŜe moŜliwości,
• stabilność,
• łatwość rozwoju,
• bezpieczeństwo
PIO. Autor -Zofia Kruczkiewicz 4
Warstwy aplikacji (Java EE)
PIO. Autor -Zofia Kruczkiewicz 5
1) Wykonanie projektu typu aplikacja Javy
PIO. Autor -Zofia Kruczkiewicz 6
PIO. Autor -Zofia Kruczkiewicz 7
PIO. Autor -Zofia Kruczkiewicz 8
PIO. Autor -Zofia Kruczkiewicz 9
2) Utworzenie projektu UML
PIO. Autor -Zofia Kruczkiewicz 10
Projekt typu UML należy utworzyć w tym samym katalogu, w
którym znajduje się projekt typu Java Application
PIO. Autor -Zofia Kruczkiewicz 11
3) Utworzenie diagramu przypadków użycia (use cases)
PIO. Autor -Zofia Kruczkiewicz 12
Wykonanie diagramu przypadków użycia (use case diagram)
PIO. Autor -Zofia Kruczkiewicz 13
Otwieranie okna dokumentacji dla wybranego elementu diagramu – wykonanie opisu
biznesowego systemu oraz wymagań funkcjonalnych i niefunkcjonalnych
PIO. Autor -Zofia Kruczkiewicz 14
4) Otwieranie „niemodalnego” okna dokumentacji
PIO. Autor -Zofia Kruczkiewicz 15
PIO. Autor -Zofia Kruczkiewicz 16
PIO. Autor -Zofia Kruczkiewicz 17
Dodawanie nowego diagramu
PIO. Autor -Zofia Kruczkiewicz 18
5) Utworzenie diagramu klas
PIO. Autor -Zofia Kruczkiewicz 19
6) Wstawienie nowej klasy
PIO. Autor -Zofia Kruczkiewicz 20
7) Wstawienie nowego atrybutu - menu
PIO. Autor -Zofia Kruczkiewicz 21
8) Edycja atrybutu
PIO. Autor -Zofia Kruczkiewicz 22
9) Właściwości nowego atrybutu
PIO. Autor -Zofia Kruczkiewicz 23
10) Generowanie kodu klasy Tytul_ksiazki do projektu Katalog1
PIO. Autor -Zofia Kruczkiewicz 24
11) Wybór projektu Javy jako miejsca do generowania kodu Uwaga: Należy zawsze zachować projekt typu UML (saveAll)
oraz skompilować (Build) projekt typu Java Application po
wygenerowaniu kodu o nazwie Katalog1
PIO. Autor -Zofia Kruczkiewicz 25
PIO. Autor -Zofia Kruczkiewicz 26
12) Wygenerowany kod
PIO. Autor -Zofia Kruczkiewicz 27
public class Tytul_ksiazki {
private String wydawnictwo;
private String ISBN;
private String tytul;
private String nazwisko;
private String imie;
public Tytul_ksiazki() { }
public String getWydawnictwo() { return wydawnictwo; } public void setWydawnictwo(String val) { this.wydawnictwo = val; } public String getISBN() { return ISBN; }
public void setISBN(String val) { this.ISBN = val; } public String getTytul() { return tytul; } public void setTytul(String val) { this.tytul = val; } public String getNazwisko() { return nazwisko; } public void setNazwisko(String val) { this.nazwisko = val; } public String getImie() { return imie; }
public void setImie(String val) { this.imie = val; }
}
PIO. Autor -Zofia Kruczkiewicz 28
13) Wstawienie klasy fasadowej Uchwyt – będzie zastosowana do
obsługi wywołań przypadków użycia.
PIO. Autor -Zofia Kruczkiewicz 29
14) Wstawienie powiązania typu Association
PIO. Autor -Zofia Kruczkiewicz 30
15) Określenie liczności związku typu Association i– 1 do 1
PIO. Autor -Zofia Kruczkiewicz 31
PIO. Autor -Zofia Kruczkiewicz 32
16) Wstawianie nowego diagramu – menu
PIO. Autor -Zofia Kruczkiewicz 33
17) Wstawianie nowego diagramu typu sekwencji - wybór
PIO. Autor -Zofia Kruczkiewicz 34
Wstawianie linii życia - Life line (wybór typu obiektu z listy Representing Clasifier)
PIO. Autor -Zofia Kruczkiewicz 35
Wstawianie linii życia - Life line (wybór typu obiektu z listy Representing Clasifier)
PIO. Autor -Zofia Kruczkiewicz 36
PIO. Autor -Zofia Kruczkiewicz 37
18) Wstawienie synchronicznej wiadomości („Synchronous Message”) – metody
klasy Tytul_ksiazki
PIO. Autor -Zofia Kruczkiewicz 38
19) Nadawanie nazwy nowej metodzie w klasie Tytul_ksiazki (1)
PIO. Autor -Zofia Kruczkiewicz 39
Nadawanie nazwy nowej metodzie w klasie Tytul_ksiazki (2)
PIO. Autor -Zofia Kruczkiewicz 40
20) Wstawienie wiadomości typu „Synchronous Message” do jednej linii życia
reprezentującej wywołanie własnej metody przez linię życia – ciało metody toString
PIO. Autor -Zofia Kruczkiewicz 41
21) Kojarzenie wiadomości z konkretną metodą klasy Tytul_ksiazki
PIO. Autor -Zofia Kruczkiewicz 42
PIO. Autor -Zofia Kruczkiewicz 43
22) Pojawienie się nowej metody toString w klasie Tytul_ksiazki – z diagramu
sekwencji
PIO. Autor -Zofia Kruczkiewicz 44
23) Wygenerowanie nowej metody toString do kodu klasy Tytul_ksiazki
(podobnie jak na slajdzie 23)PIO. Autor -Zofia Kruczkiewicz 45
24) Wstawienie ręczne kodu nowej metody toString do klasy Tytul_ksiazki na
podstawie diagramu sekwencji tej metody
46 public class Tytul_ksiazki
{ private String wydawnictwo;
private String ISBN;
private String tytul;
private String nazwisko;
private String imie;
public Tytul_ksiazki() {} /** @ generated */
public String getWydawnictwo() { return wydawnictwo; } /** @ generated */
public void setWydawnictwo(String val) { wydawnictwo = val; }
public String getISBN() { return ISBN; } /** @ generated */
public void setISBN(String val) { ISBN = val; } /** @ generated */
public String getTytul() { return tytul; } /** @ generated */
public void setTytul(String val) { tytul = val; } /** @ generated */
public String getNazwisko() { return nazwisko; } /** @ generated */
public void setNazwisko(String val) { nazwisko = val; } /** @ generated */
public String getImie() { return imie; } /** @ generated */
public void setImie(String val) { imie = val; } /** @ generated */
public String toString() // your code here
{ String pom="Tytul: "+getTytul();
pom+=" Autor:"+getNazwisko() +" "+getImie();
pom+=" ISBN: "+getISBN();
pom+=" Wydawnictwo:"+getWydawnictwo();
return
pom;
}
}
PIO. Autor -Zofia Kruczkiewicz 47
25) Wstawienie diagramu sekwencji dla przypadku użycia dodaj_tytul: użycie wiadomości typu („Asynchronous Message” oraz „Create Message” – konstruktor klasy Tytul_ksiazki).
Należy wykonac nową linię życia typu Tytul_ksiazki za pomocą „Create Message”
PIO. Autor -Zofia Kruczkiewicz 48
25 cd) Wstawienie diagramu sekwencji dla przypadku użycia dodaj_tytul: użycie wiadomości
typu („Asynchronous Message” oraz „Create Message” – konstruktor klasy Tytul_ksiazki)
PIO. Autor -Zofia Kruczkiewicz 49
26) Wygenerowanie nowej metody dodaj_tytul w klasie fasadowej
Uchwyt z diagramu sekwencji
PIO. Autor -Zofia Kruczkiewicz 50
27) Transformacja związku między klasą Uchwyt a klasą Tytul_ksiazki - Navigable
1. Należy lewym klawiszem myszy zaznaczyć relację typu Association.
2. Należy ustawić w okienku
Properties dla właściwości
Participant równej
Tytul_ksiazki
właściwość
.avigable
PIO. Autor -Zofia Kruczkiewicz 51
28) Implementacja związku między klasą Uchwyt a klasą Tytul_ksiazki – w klasie Uchwyt
PIO. Autor -Zofia Kruczkiewicz 52
29) Generowanie kodu z poziomu wybranej klasy
PIO. Autor -Zofia Kruczkiewicz 53
PIO. Autor -Zofia Kruczkiewicz 54
30) Wygenerowanie kodu nowej metody dodaj_tytul w klasie Uchwyt
Referencja do obiektu klasy Tytul_ksiazki reprezentuje relację 1 do 1 po stronie klasy Uchwyt, która jest „właścicielem”
relacji
PIO. Autor -Zofia Kruczkiewicz 55
31) Wstawienie ręczne kodu nowej metody dodaj_tytul na podstawie diagramu sekwencji tej metody oraz metody main testującej
działanie wykonanego przypadku użycia
PIO. Autor -Zofia Kruczkiewicz 56
package katalog1;
public class Uchwyt {
private Tytul_ksiazki mTytul_ksiazki;
public Uchwyt() { }
public void dodaj_tytul(String a, String b, String c, String d, String e) // your code here { mTytul_ksiazki=new Tytul_ksiazki();
mTytul_ksiazki.setTytul(a);
mTytul_ksiazki.setNazwisko(b);
mTytul_ksiazki.setImie(c);
mTytul_ksiazki.setISBN(d);
mTytul_ksiazki.setWydawnictwo(e); } public Tytul_ksiazki getTytul_ksiazki()
{ return mTytul_ksiazki; }
public void setTytul_ksiazki(Tytul_ksiazki val) { this.mTytul_ksiazki = val; }
public static void main(String t[]) // your code here { Uchwyt ap=new Uchwyt();
ap.dodaj_tytul("1","1","1","1","1");
String lan=ap.getTytul_ksiazki().toString();
System.out.println(lan); }
}
PIO. Autor -Zofia Kruczkiewicz 57
32) Uruchomienie programu
PIO. Autor -Zofia Kruczkiewicz 58
33) Wykonanie dokumentacji UML typu strona HTML
PIO. Autor -Zofia Kruczkiewicz 59
PIO. Autor -Zofia Kruczkiewicz 60