|
Najważniejszą część pracy stanowi program symulacyjny (aplet) demonstrujący zagadnienie przewodnictwa temperaturowego ciał stałych.
Model obiektowy programu
Programowanie obiektowe zbliża się do sposobu, w jaki człowiek pojmuje otaczającą go rzeczywistość. Praca mózgu ukierunkowana jest na posługiwanie się definicjami
obiektów i wnioskowaniem na ich podstawie o otoczeniu, nawet jeśli fizyczne egzemplarze obiektów nie posiadają wszystkich wyróżniających je cech. Szukając na przykład krzesła w nie znanym nam pomieszczeniu, patrzymy,
czy znajduje się tam przedmiot, który ma płaszczyznę do siedzenia i oparcie, a więc dokonujemy pewnej klasyfikacji wszystkich przedmiotów. Na podstawie cech, jakimi krzesło się wyróżnia spośród innych przedmiotów
dokonujemy użytecznego dla nas wyboru bardziej wygodnego miejsca do siedzenia. Taki sposób myślenia odwzorowuje analiza
obiektowa, w której obiekty wyróżniane są z otoczenia na podstawie przypisywanych im cech. Ukrywanie wewnętrznych mechanizmów budowy i funkcjonowania obiektów, przyczynia się do lepszego zrozumienia wymagań
projektowych, bardziej przejrzystych projektów i ułatwia utrzymywanie systemów. Jednak chyba najważniejsze w projektowaniu obiektowym jest to, iż pozwala ono na myś
lenie o danym problemie w kategoriach otaczającej nas rzeczywistości, a nie pojęć stosowanych w technice komputerowej. Cykl rozwoju oprogramowania obiektowego ma charakter
ewolucyjny. Proces rozwoju systemów obiektowych polega na ciągłym, iteracyjnym doskonaleniu szczegółów powstałych klas, obiektów oraz związków między nimi. Proces ten różni się od tradycyjnych sposobów rozwoju
oprogramowania tym, że nie występują w nim wyraźne granice oddzielające analizę projekt i implementację.
Cykl rozwoju oprogramowania obiektowego można podzielić na fazy:
- wyróżnienie obiektów/klas
- okre
ślenie zachowań i metod
- zdefiniowanie klas
- zdefiniowanie metod
- projekt architektury obiektowej
- projekt szczegółowy
- implementacja klas
- implementacja programu
- testowanie
Wielu twórców oprogramowania zastanawiało się nad różnymi formami prowadzenia analizy i zapisywania jej
wyników. Po pewnym czasie powstał pewnego rodzaju standard - ujednolicony język modelowania (Unified Modeling Language). UML jest wizualnym językiem modelowania, którego używa się do tworzenia zorientowanych obiektowo modeli, które następnie można implementować za pomocą wielu różnych języków programowania, takich jak
C++, Smalltalk, Ada lub Java. Pełny model UML zawiera sześć typów schematów:
- schematy klas
(class diagramas) - informują o istnieniu poszczególnych klas i o występujących między nimi zależnościach,
- schematy przypadkow użycia
(use cases diagrams) - używane do okreś
lania funkcjonalności i działania całej aplikacji współdziałającej z jednym lub większą ilością użytkowników lub części programu wykorzystujących tę funkcjonalność,
- schematy interakcji
(interaction diagrams) - to schematy sekwencji i schematy wspołdziałania, z których pierwsze uwydatniają przebieg interakcji w czasie, a drugie - sekwencję komunikatów implementujących daną operację lub transakcję,
- schematy komponentów
(component diagrams) - stosowane do przedstawiania zależności występujących między pakietami komponentów a pojedynczymi kom
- schematy stanów
(state diagrams) - zwane także schematami zmiany stanów, przedstawiają przestrzeń stanów danej klasy, zdarzenia, które powodują przejście z jednego stanu do innego, a także działania wynikające ze zmiany stanu,
- schematy przypisań
(deployment diagrams) - pojedynczy schemat pokazujący sposób przypisania procesów do procesów.
Istnieje wiele narzędzi programowych pomagających w tworzeniu modeli graficznych w oparciu o język UML. Zwykle określa się je skrótem CASE
(Computer-Aided Software Engineering). Pomagają one informatykowi w taki sam sposób, w jaki narzędzia CAD pomagają architektowi. Niektóre z najpopularniejszy programów można znaleźć na stronach producentów:
Więcej na temat użycia UML do projektowania oprogramowania można znaleźć w pracach [16, 18].
1.2 Charakterystyka programu
Program symulacyjny stworzony jest w oparciu o coraz powszechniej stosowany w środowiskach akademickich język programowania Java. Java umożliwia między innymi
pisanie programów wykorzystujących sieć WWW, które jeśli uruchamiane bezpośrednio ze stron internetowych, nazywają się apletami. Stosowanie Javy pozwala na wzbogacenie stron internetowych dodatkową
funkcjonalnością, począwszy od prostych animac ji internetowych a skończywszy na symulacjach numerycznych, czy zdalnej
obsłudze eksperymentów. Java jest językiem obiektowym podobnym do C++, tym zapewne, jak i szybkim rozwojem internetu, można tłumaczyć wielką popularność Javy w kręgach akademickich. Jeżeli jeszcze weźmie się pod uwagę,
że do programów w Javie można w sposób stosunkowo prosty podłączać obiekty (biblioteki) napisane w innych językach programowania (np. ogromna biblioteka CERNu procedur fortranowych), staje się oczywistym fakt wielkiego
zainteresowania tym językiem. Niewątpliwie zaletą języka jest to, że narzędzia potrzebne do pisania
programów w Javie są dostępne bezpłatnie w internecie. Programiści stosujący Javę mogą tworzyć aplety uruchamiane za pomocą przeglądarki współpracującej z tym językiem (czyli obecnie większości
przeglądarek internetowych). Język umożliwia także pisanie samodzielnych programów nie korzystających z sieci. Przygotowany w ramach niniejszej pracy aplet symulacyjny umożliwia wprowadzenie oraz zmianę
parametrów regulujących przebieg symulacji numerycznej przewodnictwa temperaturowego ciał stałych. Należą do nich: funkcja pracy chłodnicy i grzejnika, temperatura początkowa materiału, jego rodzaj z uwzględnieniem
parametrów fizycznych takich jak. gęstość, ciepło właś ciwe i przewodność cieplna.
Program pozwala na rozmieszczenie czujników temperaturowych oraz rejestrację ich wskazań. W celu zaprezentowania wyników symulacji w programie umieszczono animację pozwalającą na prostą wizualizację
przepływu ciepła z wykorzystan iem wybranej legendy kolorów. Wyniki symulacji prezentowane są na wykresach :
- rozkładu temperatury w obrębie materiału w danej chwili czasu
- prędkości zmian temperatury w obrębie materiału w danej chwili czasu
- wskazań poszczególnych mierników w trakcie trwania całego eksperymentu, oraz
- w postaci kolorowej animacji przedstawiającej w sposób symboliczny przepływ ciepła
Rozwiązanie eksportu danych symulacyjnych
Aplet jest programem napisanym w Javie i przeznaczonym do uruchomienia na stronach internetowych. Projektanci Javy,
tworząc założenia nowego języka, zabezpieczyli użytkowników internetu przed niepożądaną ingerencją z poziomu internetowych, specjalnie przygotowanych, programów. Wiąże się to z pewnymi ograniczeniami funkcjonalności
apletów. Najważniejszym z nich jest fakt, że nie mogą one wykonywać operacji I/O na komputerach użytkowników. Pozwolono
tylko na bierne czytanie danych, a i to, tylko z internetowego serwera i tylko przez protokół sieciowy (a nie bezpośrednio).Aplet symulacyjny Heat ma możliwość prezentowania obliczonych danych
symulacyjnych na standardowym urządzeniu wyjścia (StdOut), czyli w większości przypadków, na ekranie. Przeglądarki internetowe przechwytują wszystkie informacje wysyłane przez "standardowe wyjście" i udostępniają użytko
wnikom; w przypadku przeglądarki Netscape, użytkownik ma do dyspozycji okienko "java console" (Communicator-Tools-Java Console), na którym gromadzona jest zawartość StdOut. Właśnie ten mechanizm posłużył ominięciu
ograniczeń apletów podczas eksportu danych symulacyjnych. Aplet symulacyjny Heat posiada na głównym panelu
sterowania (interfejs użytkownika) przycisk "Zapisz". Jego naciśnięcie powoduje wysłanie na StdOut (czyli Java Console) po pierwsze ustawień eksperymentu (pozycji mierników, rodzaju materiału, temperatur grzejnika i
chłodnicy i in.) , a po drugie wyników symulacji przedstawionych w postaci tabeli wartości oddzielonych znakami tabulacji. Pozwala to na proste skopiowanie tych danych do jakiegokolwiek innego programu.
Jednym z elementów programu jest interfejs użytkownika w postaci interaktywnego ekranu pozwalający na płynną zmianę parametrów symulacji oraz umożliwiający wizualizację otrzy
manych wyników.
Rysunek przedstawia widok całego ekranu symulacji. W ramach interfejsu użytkownika mamy kilka funkcjonalnych grup :
- charakterystyka grzejnika
- pozwala na ustawienie pracy grzejnika, czyli wybór jego
charakterystyki czasowej T(t),
- charakterystyka chłodnicy
- to samo, ale dla chłodnicy,
- charakterystyka materiału
- pozwala na wybór rodzaju materiału lub zdefiniowanie dowolnego zestawu parametrów opisujących materiał (wartości zaczerpnięto z prac [3, 20] )
- charakterystyka mierników
- pozwala na wybór iloś
ci i rozmieszczenia mierników,
- charakterystyka metody numerycznej i animacja
- umożliwia ustawienie parametrów metody
numerycznej, czyli przede wszystkim jej rodzaju, wielkoś
ci siatki numerycznej oraz wielkości kroku czasowego.
- wykresy Ľ
służą wizualizacji wyników. Program posiada trzy struktury danych przeznaczone do przechowywania danych symulacyjnych. Są nimi: tablica aktualnego rozkładu temperatury w materiale Ľ
ładu temperatury w poprzednim kroku obliczeń Ľperatury w
materiale oraz "wektory" wskazań czujników w czasie symulacji. (Zaletą użytego podejścia, czyli wykorzystania obiektów "java.util.Vector" jest to, że nie ograniczmy długości trwania symulacji,
ponieważ struktury te pozwalają na stopniową inkrementację obszaru danych - u nas, co 700
kroków czasowych). Bardzo ważnym elementem wykresów jest ich automatyczne skalowanie Ľna każdym kroku obliczeń sprawdzany jest przedział obszaru danych; jeśli istnieje taka konieczność, następuje przeskalowanie
.
W przypadku prezentowanej symulacji numerycznej jaką jest aplet symulacyjny Heat, przejście całego
procesu projektowania byłoby niewspółmiernie uciążliwe do wielkości projektu. Jednak patrząc z drugiej strony wykonanie pełnej analizy obiektowej i sporządzenie spójnego projektu mogłoby ułatwić
w przyszłości rozbudowę programu i/lub jego modyfikację.Poniżej znajduje się schemat klas projektu oraz opis funkcji, jakie poszczególne obiekty mają pełnić. Jest to podejś cie pośrednie pomiędzy wykonaniem całej analizy obiektowej, a nie wykonywaniem jej w
ogóle. Schemat prezentuje strukturę programu, jego budowę obiektową, a następujący po nim opis precyzuje zadania poszczególnych elementów. Celem niniejszej pracy nie jest przedstawienie metod
projektowania obiektowego a tylko zasygnalizowanie, że takie podejście do symulacji numerycznych może skutkować większą przejrzystością kodu programu, odseparowaniem logiki numerycznej od
części czysto programistycznej, a i tę można łatwo podzielić na niezależne części - zbieranie parametrów, symulację, prezentację wyników.
Schemat klas dla apletu symulacyjnego Heat
Znaczenie poszczególnych klas i interfejsów:
- HeatApplet
- główny obiekt programu. Do niego należą inne obiekty (widać to na diagramie). Głównym zadaniem tej klasy jest nadzór nad pętlą symulacyjną programu i zebranie wszystkich
innych elementów razem z ich metodami i atrybutami. Na jeden obiekt HeatApplet przypadają trzy Wykresy, jeden Schemat, jedna Legenda i jeden element interfejsu użytkownika HeatGUI -
to w warstwie prezentacyjnej, natomiast "za kulisami" obiekt ten współpracuje ściśle z klasą
Numerki oraz z Chłodnicą i Grzejnikiem.
- grzejące
- w programie symulującym przepływ ciepła trudno obejść się bez źródeł. Interfejs grzejące
precyzuje zachowanie takich źródeł: każda klasa, która ma dostarczać do układu energię lub też ją odbierać musi implementować ten interfejs, a to za sobą pociąga posiadanie
funkcji zwracającej temperaturę takiego źródła w zależności od czasu.
- Grzejnik
- implementując interfejs grzejące staje się źródłem ciepła, pozwala na ustalenie
pewnych parametrów początkowych tj. rodzaj zmian temperatury i parametry z tym związane, a w rezultacie zwraca wartość temperatury w zależności od czasu,
- Chłodnica
- tak jak grzejnik, jest elementem grzejącym, czyli implementuje interfejs grzejące i zwraca wartość temperatury w danym czasie. Zakłada się, że temperatura grzejnika powinna być
wyższa od temperatury chłodnicy, ale jest to tylko założenie dotyczące nazewnictwa,
- Numerki
- klasa odpowiedzialna za obliczenia numeryczne. Definiuje tablice danych i pozwala na wykonanie kolejnego kroku obliczeń - czyli otrzymanie tablicy z
wartościami do wykreślenia,
- Legenda
- klasa odpowiedzialna za przeliczanie odpowiednich temperatur na odpowiednie kolory. Pozwala na zdefiniowanie skrajnych wartości temperatur i dostarcza metod przeliczania danej wartości na kolor - klasa ta jest niezbędna przy kreśleniu wykresów,
- Schemat
- klasa obrazująca schemat doświadczalny. Głównym jej zadaniem jest wykreślenie ch
łodnicy, grzejnika, materiału (z jego rozkładem temperatury) oraz liczby i położenia mierników.
- Wykres
- to klasa odpowiedzialna za gra
ficzną prezentację wykresów. Zawiera dwie osie z automatyczym skalowaniem danych. Zadaniem tej klasy jest odpowiednie skalowanie oraz prezentacja danych.
- Axis
- to klasa definiująca osie współrzędnych. Właśnie ta klasa zawiera w sobie obliczenia, które umożliwiają skalowanie.
- HeatGUI
- to interfejs użytkownika, czyli miejsce gdzie może on definiować parametry. Klasa ta odpowiada również za obsługę zdarzeń, np. naciśnięcie przycisku Start.
|