1 / 28

Programowanie obiektowe

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

Télécharger la présentation

Programowanie obiektowe

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programowanie obiektowe Andrzej Ziółkowski Wykład 8

  2. 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ść.

  3. Programy wykonywane sekwencyjnie i równolegle

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

  5. 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

  6. 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

  7. Przykład class 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();

  8. 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.

  9. 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

  10. 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,…

  11. 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

  12. 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)

  13. Tworzenie apletu - help

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

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

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

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

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

  19. Wpisujemy Class name cw5 i Package też cw5

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

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

  22. 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

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

  24. 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.

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

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

  27. 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>

  28. 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>

More Related