programowanie obiektowe

28
Programowani e obiektowe Andrzej Ziółkowski Wykład 8

Upload: jesse-hendrix

Post on 03-Jan-2016

55 views

Category:

Documents


0 download

DESCRIPTION

Programowanie obiektowe. Andrzej Ziółkowski Wykład 8. Programowanie wielowątkowe i rozproszone. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programowanie obiektowe

Programowanie obiektoweAndrzej Ziółkowski

Wykład 8

Page 2: Programowanie obiektowe

Programowanie wielowątkowe i rozproszone Programowanie wielowątkowe –

współbieżne wykonywanie wielu zadań w ramach jednego programu. Powody stosowania – przejrzystość programu, łatwa realizacja szybkiej reakcji na krytyczne zdarzenia (priorytety)

Programowanie rozproszone – realizacja funkcji programu na wielu, często odległych procesorach pracujących w sieci. Powody stosowania – zwiększenie mocy obliczeniowych, łatwość aktualizacji (Web Services), niezawodność.

Page 3: Programowanie obiektowe

Programy wykonywane sekwencyjnie i równolegle

Page 4: Programowanie obiektowe

Wykonywanie programów (lub wątków) współbieżnie na jednym procesorze

Page 5: Programowanie obiektowe

Realizacja wielowątkowości w Javie

Klasa Thread – obiekty tej klasy służą do zarządzania wątkami

Wątkiem może być dowolny obiekt klasy implementującej interface Runnable, czyli klasy z metodą run wywoływaną przy uruchamianiu wątku.

Obiektowi klasy Thread przyporządkowujemy obiekt, który będzie wątkiem i uruchamiamy go za pomocą metod klasy Thread

Page 6: Programowanie obiektowe

Wybrane metody klasy Thread

start() – uruchamia wątek wywołując metodę run

sleep(milisec) – wstrzymuje wątek na określony czas

yield() – wstrzymuje chwilowo wątek, pozwala na wykonanie innych

setPriority(priority) – ustawia priorytet dla wątku

Page 7: Programowanie obiektowe

Przykładclass W1 implements Runnable { public void run() { // kod wykonywany w wątku 1… }}class W2 implements Runnable { public void run() { // kod wykonywany w wątku 2… }}W1 w1 = new W1();W2 w2 = new W2();Thread th1 = new Thread(w1);Thread th2 = new Thread(w2);th1.start();th2.start();

Page 8: Programowanie obiektowe

Problemy współużytkowania zasobów Wątek A modyfikuje strukturę danych D, wątek B z niej

korzysta. Struktura danych modyfikowana przez A może być w pewnym momencie niespójna i jeśli wątek B w tym momencie z niej skorzysta otrzymamy błędne wyniki

Rozwiązanie – blokowanie zasobów (groźba zakleszczeń) lub nieprzerywanie krytycznych fragmentów kodu (synchronizacja). W Javie możemy tworzyć nieprzerywalne metody za pomocą atrybutu synchronized.

Page 9: Programowanie obiektowe

Programowanie rozproszone

Fragmenty programu wykonują się na wielu komputerach jednocześnie

Brak wspólnej pamięci, przekazywanie informacji poprzez sieć w postaci komunikatów

Duża niezawodność Wykorzystanie olbrzymich mocy

obliczeniowych komputerów w sieci Problemy z alokacją zasobów i synchronizacją Wielkie możliwości ale chyba jeszcze nie

potrafimy tworzyć programów rozproszonych i organizować przetwarzania

Page 10: Programowanie obiektowe

Przykłady projektów wykorzystujących przetwarzanie rozproszone SETI – „szukamy cywilizacji pozaziemskich”,

przetwarzanie zebranych danych z radioteleskopu Arecibo w Puerto Rico w celu wyfiltrowania sygnałów, które można uznać za nienaturalne. 5.5 mln komputerów, uczestnicy z ponad 200 krajów.

Google – indeksowanie zawartości stron internetowych.

Wikipedia – encyklopedia tworzona przez społeczność internautów

Aplikacje internetowe - systemy firmowe, sklepy, portale,…

Web Services – usługi, które może wykorzystywać wielle aplikacji, np.. Prognozy pogody, kursy walut, notowania akcji,…

Page 11: Programowanie obiektowe

Programowanie rozproszone - perspektywy

Ilość komputerów w sieci może przejść w nową jakość

Może w końcu uda się wykorzystać metody sztucznej inteligencji

Programowanie obiektowe nie koniecznie musi być tu wykorzystywane – bardziej przydatne mogą być modele programowania oparte na usługach, serwisach i wymianie komunikatów

Page 12: Programowanie obiektowe

Tworzenie apletuzawsze można skorzystać z Help-u. Wybieramy: Help, Help Contentsa następnie w zakładce index wpisujemy słowo applet (uwaga dwa p)

Page 13: Programowanie obiektowe

Tworzenie apletu - help

Page 14: Programowanie obiektowe

Wybieramy: File, New Project i w dialogu zaznaczamy Java Class Library

Page 15: Programowanie obiektowe

W nazwie projektu wpisujemy nr ćwiczenia (cw5), folder projektu N:\public_html\po

Page 16: Programowanie obiektowe

Klikamy prawym przyciskiem myszki na nazwie projektu (cw5) i wybieramy New, File/Folder

Page 17: Programowanie obiektowe

Aby utworzyć aplet możemy wybrać Java Classes, JApplet lub Applet ale wygodniej będzie użyć …

Page 18: Programowanie obiektowe

Java GUI Forms i Java Applet Form aby móc korzystać z Designera przy projektowaniu wyglądu apletu.

Page 19: Programowanie obiektowe

Wpisujemy Class name cw5 i Package też cw5

Page 20: Programowanie obiektowe

W zakładce Source zobaczymy wygenerowany kod klasy cw5 wywiedzionej z javax.swing.JApplet

Page 21: Programowanie obiektowe

W zakładce Design możemy zaprojektować wygląd potrzebnego apletu.Z Palette przeciągamy myszką JTextField, JButton, JLabel

Page 22: Programowanie obiektowe

Po rozmieszczeniu obiektów i ustaleniu ich wymiarów obiektów możemy, po kliknięciu prawym klawiszem myszki, zmienić nazwę obiektu i domyślny tekst

Page 23: Programowanie obiektowe

Wybieramy przycisk Oblicz i w zakładce Events w Properties wybieramy do obsługi zdarzenie mouseClicked

Page 24: Programowanie obiektowe

W wygenerowanej funkcji obsługi zdarzenia wpisujemy kod, który na oblicza liczbę liter i liczbę wyrazów w tekście wprowadzonym do pola ”tekst” i wyświetla wyniki.

Page 25: Programowanie obiektowe

Debugowanie apletu – kliknij prawym myszy na cw5.java i wybierz Debug File

Page 26: Programowanie obiektowe

Aplety można debugować jak każdy inny program

Page 27: Programowanie obiektowe

W folderze public_html/po/cw5 umieszczamy plik index.html (poniżej) oraz kopiujemy tu plik cw5.jar.Ustawiamy odpowiednie uprawnienia i aplet powinien działać

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Cw5</title><meta content="text/html; charset=windows-1250" http-equiv="Content-

Type"><link href="std1.css" type="text/css" rel="stylesheet"></head><body>Cw5 - Teksty:<br><br><applet code="cw5/cw5.class" archive="cw5.jar" width="400" height="420"></applet><br><br></body></html>

Page 28: Programowanie obiektowe

Jeśli aplet nie pokazuje się prawidłowo a w Java Console sygnalizowany jest błąd:

Exception in thread "main" java.lang.NoClassDefFoundError:

org/jdesktop/layout/GroupLayout$Group Może być konieczne dodanie wstawki w pliku build.xml i

ponowna kompilacja--><target name="-post-jar"> <jar update="true" destfile="${dist.jar}"> <zipfileset src="${libs.swing-layout.classpath}"/> </jar></target>

</project>