Systemy rozproszone. Dr inż. L. Miękina. Department of Robotics and Mechatronics AGH University of Science and Technology 1/1

Wielkość: px
Rozpocząć pokaz od strony:

Download "Systemy rozproszone. Dr inż. L. Miękina. Department of Robotics and Mechatronics AGH University of Science and Technology 1/1"

Transkrypt

1 1/1 Systemy rozproszone Dr inż. L. Miękina Department of Robotics and Mechatronics AGH University of Science and Technology Marzec, 2013

2 RMI - zdalne wywołanie metod Rozproszone obiekty Stan obiektu składa się z wartości jego pól. Zgodnie z paradygmatem obiektowym, stan całego programu jest reprezentowany przez oddzielne części, odpowiadające poszczególnym obiektom. Ponieważ obiektowo zorganizowane programy są w ten sposób logicznie podzielone, fizyczne rozłożenie obiektów pomiędzy różnymi procesami lub komputerami w systemie rozproszonym jest naturalnym rozszerzeniem. Rozproszone systemy obiektowe mogą być oparte na modelu klient-serwer. W tym przypadku obiekty są zarządzane przez serwery i ich klienci wywołują ich metody używając zdalnych wywołań metod. W RMI, żądanie klienta by wywołać metodę obiektu zostaje wysłane jako komunikat do serwera zawierającego obiekt. Wywołanie to jest realizowane przez metodę obiektu serwera, a rezultat jest zwracany do klienta w osobnym komunikacie. Ponieważ obiekty klientów i serwera są w różnych procesach, mamy do czynienia z naturalną enkapsulacją. To znaczy, że stan obiektu może być dostępny tylko za pomocą metod, co oznacza że nie jest możliwe by nieuprawnione metody (zewnętrzne) wpływały na stan. Pozwala to również odpowiednio rozwiązać zagadnienie równoczesnego dostępu, na przykład stosując mechanizmy synchronizacji (semafory, sekcje krytyczne). 2 / 1

3 RMI Rozproszony model obiektowy Obiekty które mogą podlegać zdalnym wywołaniom są nazywane zdalnymi obiektami. Aby umożliwić pracę ze zdalnymi obiektami wprowadzono szereg rozszerzeń modelu obiektowego. Każdy proces zawiera kolekcję obiektów, niektóre z nich mogą odbierać zarówno zdalne jak i lokalne wywołania metod, podczas gdy pozostałe mogą odbierać tylko lokalne wywołania, jak na schemacie poniżej. wywołania metod między obiektami w różnych procesach, na tym samym lub innym komputerze, są zdalne. wywołania metod między obiektami w tym samym procesie są lokalnymi wywołaniami metod. 3 / 1

4 RMI Rozproszony model obiektowy Zdalna referencja obiektu Identyfikator, który może być używany w systemie rozproszonym w celu odwołania się do wybranego unikalnego zdalnego obiektu. Reprezentacja jej jest zwykle różna od lokalnej referencji obiektu. Składa się ona z: adresu IP komputera i numeru portu związanego z procesem, który utworzył obiekt czasu utworzenia lokalnego numeru obiektu i identyfikatora interfejsu (nazwy) Zdalne referencje obiektu są podobne do lokalnych w tym że: aby zdalny obiekt mógł podlegać RMI musi być określony za pomocą zdalnej referencji obiektu zdalne referencje obiektów mogą być przekazane jako argumenty i zwracane jako rezultaty ze zdalnych wywołań metod Zdalny interfejs Interfejs, który deklaruje metody implementowane przez klasę zdalnego obiektu, na przykład jako publiczne metody w języku Java. Obiekty w innych procesach mogą wywoływać tylko te metody, które należą do zdalnego interfejsu, podczas gdy lokalne obiekty mogą wywoływać metody zdalnego interfejsu jak również inne publiczne metody implementowane przez zdalny obiekt. 4 / 1

5 RMI Architektura Zdalne wywołanie metod jest realizowane przez szereg obiektów i modułów. Ilustruje to poniższy schemat, gdzie obiekt A aplikacji klienta wywołuje metodę w zdalnym obiekcie B aplikacji serwera, dla którego posiada zdalną referencję obiektu. Po obu stronach połączenia istnieją: moduł zdalnych referencji i moduł komunikacyjny. RMI działa w oparciu o nie. 5 / 1

6 RMI Architektura - moduł komunikacyjny Oba moduły komunikacyjne realizują protokół request-reply, który transmituje komunikaty request i reply między klientem i serwerem. Struktura komunikatów request i reply jest następująca: Moduł komunikacyjny używa jedynie 3 pierwszych pól, które określają typ komunikatu, jego identyfikator i zdalną referencję obiektu, którego metoda ma być wywołana. Identyfikacja metody i serializacja argumentów spoczywa na oprogramowaniu RMI. Moduł komunikacyjny serwera wybiera dyspozytora klasy obiektu docelowego wywołania, przekazując mu lokalną referencję, która jest udostępniona przez moduł zdalnych referencji w odpowiedzi na zapytanie o zdalny identyfikator obiektu. 6 / 1

7 RMI Architektura - moduł zdalnych referencji Moduł zdalnych referencji (MZR) odpowiada za translację między lokalnymi i zdalnymi referencjami obiektu i za tworzenie zdalnych referencji obiektu. W tym celu MZR w każdym procesie ma tablicę zdalnych obiektów (TZO), która odzwierciedla powiązania między lokalnymi referencjami obiektów tego procesu i zdalnymi referencjami obiektów (które są unikalne w obrębie systemu rozproszonego). Tablica ta posiada: wpisy dla wszystkich zdalnych obiektów udostępnianych przez proces, np. zdalny obiekt B jest zapisany w TZO serwera wpisy dla wszystkich lokalnych pośredników (proxy), np. proxy dla obiektu B jest zapisany w TZO klienta Działanie MZR: kiedy zdalny obiekt ma być przekazany jako argument lub rezultat po raz pierwszy, MZR tworzy zdalną referencję obiektu i dodaje ją do TZO kiedy zdalna referencja obiektu jest odebrana w komunikacie request lub reply, MZR jest pytany o odpowiadającą lokalną referencję obiektu, która może odnosić się albo do proxy albo do zdalnego obiektu. Jeśli zdalna referencja obiektu nie występuje w TZO, tworzy się nowe proxy i MZR zapisuje je do swojej TZO. 7 / 1

8 RMI Warstwa RMI - pośrednik (proxy) Warstwa RMI występuje pomiędzy obiektami aplikacji a modułami komunikacyjnym i zdalnych referencji. Proxy Rola pośrednika polega na tym, by uczynić zdalne wywołanie metod przeźroczystym dla klienta, poprzez stworzenie wrażenia, że proxy jest lokalnym obiektem, choć w praktyce zamiast wywołać metodę tego obiektu, pośrednik przekazuje to wywołanie w komunikacie do zdalnego obiektu. Pośrednik ukrywa szczegóły zdalnej referencji obiektu, serializacji argumentów i de-serializacji rezultatów, a także wysyłania i odbioru komunikatów. Dla każdego zdalnego obiektu, dla którego proces posiada zdalną referencję istnieje oddzielny pośrednik. Klasa pośrednika implementuje metody zadeklarowane w zdalnym interfejsie zdalnego obiektu, który reprezentuje. To gwarantuje, że zdalne wywołania metod są odpowiednie do typu zdalnego obiektu. Jednakże pośrednik implementuje metody całkiem inaczej - każda metoda pośrednika serializuje referencję do obiektu docelowego, swój własny identyfikator i argumenty wywołania, a następnie wysyła je do obiektu docelowego, czeka na komunikat zwrotny (reply), deserializuje go i zwraca rezultat do metody wywołującej. 8 / 1

9 RMI Warstwa RMI - dyspozytor (dispatcher) i szkielet (skeleton) Dyspozytor Serwer posiada po jednym dyspozytorze i szkielecie dla każdej klasy reprezentujacej zdalny obiekt, w naszym przykładzie serwer ma dyspozytora i szkielet dla klasy zdalnego obiektu B. Dyspozytor odbiera komunikat request z modułu komunikacyjnego. Na podstawie pola methodid wybiera odpowiednią metodę szkieletu, przekazując jej komunikat request. Dyspozytor i pośrednik używają tych samych identyfikatorów methodid do metod zdalnego interfejsu. Szkielet Klasa zdalnego obiektu posiada szkielet, który implementuje metody zadeklarowane w zdalnym interfejsie. Są one zaimplementowane całkiem inaczej niż metody zdalnego obiektu. Metoda szkieletu de-serializuje argumenty komunikatu request i wywołuje odpowiednią metodę zdalnego obiektu. Następnie czeka na zrealizowanie wywołania i serializuje jego rezultat, razem z ewentualnymi wyjątkami, w komunikat reply do metody pośrednika, który inicjował wywołanie. 9 / 1

10 RMI Generowanie klas pośredników, dyspozytorów i szkieletów Klasy pośredników, dyspozytorów i szkieletów są generowane automatycznie przez kompilator interfejsu (interface compiler). Dla Java RMI, metody zdalnego obiektu są deklarowane jako interfejsy języka Java i są implementowane przez klasę zdalnego obiektu. Kompilator interfejsu języka Java RMI rmic generuje klasy namiastek (stub) w oparciu o klasę zdalnego obiektu. Dla implementacji standardu CORBA nazywanej Orbix, interfejsy zdalnych obiektów są definiowane w języku CORBA IDL, a następnie używa się kompilatora interfejsu do generowania klas pośredników, dyspozytorów i szkieletów w C++ lub innych językach. Obiekty CORBA są opisane za pomocą interfejsów wyrażonych w języku Interface Definition Language (IDL), zaprojektowanym przez OMG do definiowania interfejsu obiektów. Interfejs obiektu określa operacje które obiekt realizuje, ale nie określa sposobu implementacji. Implementacja obiektu CORBA jest domeną wybranego języka programowania, np. Java lub C++. Interfejs określa kontrakt wiążący kod użytkownika obiektu i kod implementujący obiekt. Interfejsy IDL są niezależne od języka programowania. IDL definiuje powiązania z wieloma językami programowania (C, C++, Java, Ada, COBOL, Smalltalk, Objective C i Lisp). Pozwala to wybrać dla implementacji obiektów najbardziej odpowiedni język, jak również nie ogranicza programistów klienta co do wyboru identycznego języka jaki użyto dla obiektu. 10 / 1

11 RMI Programy serwera i klientów Program serwera zawiera klasy dyspozytorów i szkieletów, razem z implementacjami klas wszystkich zdalnych obiektów, które udostępnia serwer. Dodatkowo program serwera zawiera sekcję inicjalizacji, zwykle w funkcji main kodu Java lub C++. Sekcja inicjalizacji odpowiada za tworzenie i inicjalizację co najmniej jednego zdalnego obiektu, spośród obiektów serwera; dodatkowe zdalne obiekty mogą być tworzone w odpowiedzi na żądania klientów. Sekcja inicjalizacji może ponadto rejestrować niektóre zdalne obiekty w tzw. binderze. Generalnie rejestrowany będzie tylko jeden zdalny obiekt, przez który realizowany jest dostęp do pozostałych. Program klienta zawiera klasy pośredników dla wszystkich zdalnych obiektów, które będzie wywoływać. Klient może używać bindera do wyszukiwania zdalnych referencji obiektów. Binder w systemie rozproszonym jest oddzielną usługą, która zarządza tablicą zawierającą odwzorowania nazw (tekstowych) na zdalne referencje obiektów. Usługi tej używają serwery do rejestrowania swoich zdalnych obiektów pod odpowiednimi nazwami, a klienci do wyszukiwania obiektów za pomocą nazw. Przykłady usług typu binder: Java RMIregistry i CORBA Naming Service 11 / 1

12 Java API dla RMI Pierwsza wersja Java RMI używała wszystkich klas pokazanych na diagramie architektury. Począwszy od Javy w wersji 1.2 zastosowano mechanizm refleksji do implementacji uniwersalnego dyspozytora i eliminacji szkieletów klas usługowych. Klasy pośredników klienta (proxy) są generowane przez kompilator rmic na podstawie skompilowanych klas usługowych (servant), a nie na podstawie definicji zdalnego interfejsu. Rys. powyżej pokazuje strukturę dziedziczenia klas obsługujących serwery Java RMI. Jedyną klasą istotną dla programisty jest UnicastRemoteObject, z której musi dziedziczyć każda klasa usługowa (servant). Klasa UnicastRemoteObject dziedziczy z abstrakcyjnej klasy RemoteServer, która deklaruje abstrakcyjne wersje metod wymaganych przez zdalne serwery. Inną podklasą RemoteServer jest Activatable, która dostarcza możliwości automatycznej aktywacji obiektu serwera, kiedy zajdzie taka potrzeba. 12 / 1

13 Użycie mechanizmu refleksji Refleksja jest używana do przekazywania w komunikacie request informacji o wywoływanej metodzie. Odbywa się to za pomocą klasy Method pakietu reflection. Każda instancja klasy Method reprezentuje charakterystykę konkretnej metody (jej klasę, typy argumentów, zwracanej wartości i wyjątków). UWAGA: instancja klasy Method może być uruchomiona dla obiektu odpowiedniej klasy za pomocą jej metody invoke. Metoda invoke wymaga dwu argumentów: pierwszy specyfikuje wywoływany obiekt drugi jest tablicą elementów typu Object, zawierającą argumenty Rezultat jest zwracany jako typ Object. Kolejność operacji: Pośrednik (proxy) szereguje informacje dot. metody i jej argumentów w komunikat request. Dane metody szereguje się w postaci obiektu klasy Method. Następnie pakuje się argumenty w tablicy elementów typu Object i szereguje się tę tablicę. Dyspozytor de-szereguje obiekt klasy Method i argumenty z tablicy elementów typu Object z komunikatu request. Jak zwykle, zdalna referencja obiektu docelowego jest de-szeregowana i odpowiednia lokalna referencja obiektu jest odczytana z modułu zdalnych referencji. Dyspozytor wywołuje metodę invoke obiektu klasy Method, z parametrami oznaczającymi obiekt docelowy i tablicę wartości argumentów. 13 / 1

14 Przekazywanie parametrów i rezultatu Dowolny serializowalny obiekt - tzn. taki który implementuje interfejs Serializable - może być przekazany jako argument lub rezultat. Wszystkie typy proste i zdalne obiekty są serializowalne. Klasy argumentów i rezultatu są ładowane w razie potrzeby do odbiorcy przez system RMI. Parametry i rezultaty mogą być przekazywane na dwa sposoby: Przez referencję. Jeśli typ parametru lub rezultatu jest definiowany jako zdalny interfejs, odpowiedni argument lub rezultat jest zawsze przekazywany jako zdalna referencja obiektu. Np., w 3 przykładzie RMI, metoda newshape zwraca rezultat typu Shape - czyli zdalny interfejs. Kiedy zdalna referencja obiektu jest odebrana, może być ona użyta w wywołaniu RMI zdalnego obiektu, do którego się odnosi. Przez wartość. Wszystkie serializowalne nie-zdalne obiekty są kopiowane i przekazywane przez wartość. Np., w 2 przykładzie RMI, argument metody add i rezultat metody get są typu Event, (który jest serializowalny) i są przekazywane przez wartość. Gdy obiekt jest przekazywany przez wartość, nowy obiekt jest tworzony w procesie odbiorcy. Metody tego nowego obiektu mogą być wywoływane lokalnie, powodując zmianę stanu w stosunku do oryginalnego obiektu w procesie nadawcy. Argumenty i zwracane wartości są serializowane do strumienia z użyciem następujących reguł: gdy serializowany jest obiekt który implementuje interfejs Remote, jest on zastępowany przez zdalną referencję obiektu, która zawiera nazwę klasy obiektu. gdy serializowany jest dowolny obiekt, informacja o jego klasie jest uzupełniona o lokalizację klasy (URL), co umożliwia ładowanie klasy do procesu odbiorcy. 14 / 1

15 Bezpieczeństwo Począwszy od wersji 1.2 języka Java istnieje możliwość definiowania przez użytkownika zabezpieczeń maszyny wirtualnej Java. Zabezpieczenia te mogą obejmować: definiowanie akceptowanych połączeń sieciowych (adresów IP, numerów portów) uprawnień do odczytu lub zapisu plików przez zewnętrzne aplikacje uprawnień do ładowania kodu z innych maszyn wirtualnych Java. Ostatni przypadek jest szczególnie ważny, gdyż przekazanie obiektu typu Serializable przez wartość powoduje załadowanie jego kodu i możliwość (a czasem ryzyko) wykonywania jego metod. W przypadku ładowania kodu z zewnątrz maszyna wirtualna Java wręcz wymaga, aby twórca aplikacji zdefiniował i wdrożył zasady bezpieczeństwa. Jeśli nie zostanie to zrobione, wykonanie programu zakończy następujący wyjątek: java.security.accesscontrolexception: access denied \ (java.net.socketpermission :1099 connect,resolve) Definicja polityki bezpieczeństwa powinna się znaleźć w pliku o nazwie java.policy. Taki plik znajduje się zazwyczaj w podkatalogu jre/lib/security katalogu instalacji środowiska Java, ale najczęściej nie jest używany do uruchamiania aplikacji, gdyż zawiera tylko zbiór domyślnych reguł. 15 / 1

16 Bezpieczeństwo Zazwyczaj twórca aplikacji definiuje własny plik java.policy, którego następnie używa przy uruchamianiu aplikacji. Najprostsza możliwa zawartość pliku java.policy, nie zabezpieczająca maszyny wirtualnej w żaden sposób, jest następująca: 1 grant { 2 // Pelne uprawnienia dla wszystkich ladowanych zdalnie klas 3 permission java. security. AllPermission ; 4 }; Za odczytanie i realizowanie w programie Java zdefiniowanych wcześniej zasad bezpieczeństwa odpowiadają klasy tzw. zarządców bezpieczeństwa: ogólna SecurityManager specjalizowana (dla RMI) RMISecurityManager. Zarządca bezpieczeństwa powinien zostać utworzony na samym początku funkcji main, na przykład w następujący sposób: 3 public static void main ( String args []){ 4 if ( System. getsecuritymanager () == null ) 5 System. setsecuritymanager ( new RMISecurityManager ()); 16 / 1

17 Przykład - wymagania funkcjonalne Przykład dotyczy aplikacji prostego monitora komunikatów, który odbiera komunikaty tekstowe od klientów i wyświetla je na ekranie serwera. Funkcjonalność: Serwer obsługuje listę odebranych komunikatów, dostarczając klientom operacji do przesyłania komunikatów tekstowych. Każdy odebrany komunikat jest wyświetlany przez serwer. 17 / 1

18 Przykład - zdalny interfejs Zdalne interfejsy są definiowane przez dziedziczenie z interfejsu Remote dostępnego w pakiecie java.rmi. Metody interfejsu muszą generować wyjątek RemoteException, a poza tym dowolne wyjątki specyficzne dla aplikacji. Przykład zdalnego interfejsu: 1 import java. rmi.*; 2 3 public interface MonitorInterface extends Remote { 4 void komunikuj ( String message ) throws RemoteException ; 5 boolean zarejestruj ( String nick ) throws RemoteException ; 6 } Ten zdalny interfejs deklaruje tylko dwie metody (komunikuj i zarejestruj), które posiadają jeden parametr typu String, przez który przekazywany jest łańcuch reprezentujący komunikat i nazwę użytkownika. 18 / 1

19 Przykład - kod serwera Kod serwera składa się z klas MonitorServer i MonitorServant. MonitorServer jest klasą główną i składa się z dwu pól i dwu metod. Pola są obiektami klas: Registry, który reprezentuje rmiregistry MonitorServant, który reprezentuje klasę usługową (servant). Metoda main serwera tworzy instancję klasy MonitorServer. Jeśli wystąpi jakikolwiek wyjątek, wyświetlany jest stos wywołań i kończy się działanie serwera. 1 import java.rmi. RemoteException ; 2 import java.rmi. registry. LocateRegistry ; 3 import java.rmi. registry. Registry ; 4 import java.rmi. server. UnicastRemoteObject ; 5 6 public class MonitorServer { 7 Registry reg ; /* rejestr nazw obiektow */ 8 MonitorServant servant ; 9 10 public static void main ( String [] args ) { 11 try { 12 MonitorServer s = new MonitorServer (); 13 } catch ( Exception e) { 14 e. printstacktrace (); System.exit (1); 15 } 16 } 19 / 1

20 Przykład - kod serwera Chroniony konstruktor klasy MonitorServer najpierw tworzy zdalny obiekt rejestru, pracujący na wybranym porcie. Następnie tworzy instancję klasy MonitorServant i wiąże ją z pewną nazwą w rejestrze RMIregistry. Wartość reprezentująca to powiązanie jest zdalną referencją obiektu, a jej typ jest typem jego zdalnego interfejsu - MonitorInterface. 18 protected MonitorServer () throws RemoteException { 19 try { 20 /* Utworzenie rejestru nazw */ 21 reg = LocateRegistry. createregistry (1099); 22 /* utworzenie obiektu dostepnego zdalnie */ 23 servant = new MonitorServant (); 24 /* zwiazanie z obiektem nazwy */ 25 reg. rebind (" MonitorServer ", servant ); 26 System.out. println (" Server READY "); 27 } catch ( RemoteException e) { 28 e. printstacktrace (); throw e; 29 } 30 } 31 } 20 / 1

21 Przykład - kod klasy usługowej MonitorServant 1 import java.rmi. RemoteException ; 2 import java.rmi. registry. LocateRegistry ; 3 import java.rmi. registry. Registry ; 4 import java.rmi. server. UnicastRemoteObject ; 5 6 public class MonitorServant 7 extends UnicastRemoteObject 8 implements MonitorInterface { 9 10 public MonitorServant () throws RemoteException { 11 } // Metoda implementujaca funkcje komunikuj () interfejsu MonitorInterface 14 public void komunikuj ( String message ) throws RemoteException { 15 System.out. println (" Server. komunikuj () " + message ); 16 } 17 // Metoda implementujaca funkcje zarejestruj () interfejsu MonitorInterface 18 public boolean zarejestruj ( String nick ) throws RemoteException { 19 System.out. println (" Server. zarejestruj () " + nick ); 20 return true ; 21 } 22 } 21 / 1

22 Przykład - kod klasy klienta MonitorClient 1 import java.rmi. NotBoundException ; 2 import java.rmi. RemoteException ; 3 import java.rmi. registry. LocateRegistry ; 4 import java.rmi. registry. Registry ; 5 6 public class MonitorClient { 7 public static void main ( String [] args ) { 8 if (args. length < 2) { 9 System.out. println (" Usage : MonitorClient <server host name > <msg >"); 10 System.exit ( -1); 11 } 12 MonitorInterface remoteobject ; // referencja do zdalnego obiektu 13 Registry reg ; // rejestr nazw obiektow 14 try { 15 // pobranie referencji do rejestru nazw obiektow 16 reg = LocateRegistry. getregistry (args [0]); 17 // odszukanie zdalnego obiektu po jego nazwie 18 remoteobject = ( MonitorInterface ) reg. lookup (" MonitorServer "); 19 // wywolanie metody zdalnego obiektu 20 remoteobject. komunikuj (args [1]); 21 remoteobject. zarejestruj ("Luc "); 22 } 23 catch ( RemoteException e) { 24 e. printstacktrace (); 25 } 26 catch ( NotBoundException e) { 27 e. printstacktrace (); 28 } 29 } 30 } 22 / 1

23 Przykład - kompilacja i uruchomienie W celu kompilacji i uruchomienia rozproszonej aplikacji należy wykonać: 1 Kompilacja klasy serwera lm@lm-mint ~ $ javac MonitorServer.java 2 Kompilacja klasy klienta lm@lm-mint ~ $ javac MonitorClient.java 3 Generowanie namiastki zdalnego obiektu, w wyniku czego powstaje bajtkod zawarty w pliku MonitorServant_Stub.class lm@lm-mint ~ $ rmic MonitorServant 4 Uruchomienie serwera lm@lm-mint ~ $ java MonitorServer & Server READY 5 Uruchomienie klienta, aby umieścić na serwerze nowy komunikat lm@lm-mint ~ $ java MonitorClient localhost s1 Server.komunikuj() s1 Server.zarejestruj() Luc 23 / 1

24 Przykład 2 - rozbudowany monitor Przykład dotyczy aplikacji nieco rozbudowanego monitora komunikatów, który odbiera komunikaty tekstowe od klientów i wyświetla je na ekranie serwera, a ponadto umożliwia przeglądanie przez klientów zarejestrowanych komunikatów. Funkcjonalność: Serwer obsługuje listę odebranych komunikatów, dostarczając klientom operacji do przesyłania komunikatów tekstowych. Każdy odebrany komunikat jest wyświetlany i rejestrowany wraz z datą przez serwer. Serwer ponadto udostępnia operacje umożliwiające klientom odczyt ilości komunikatów, wybranego komunikatu i całej ich listy. 24 / 1

25 Przykład 2 - zdalny interfejs Zdalne interfejsy są definiowane przez dziedziczenie z interfejsu Remote dostępnego w pakiecie java.rmi. Metody interfejsu muszą generować wyjątek RemoteException, a poza tym dowolne wyjątki specyficzne dla aplikacji. Przykład zdalnego interfejsu: 1 import java. rmi.*; 2 import java.util. Vector ; 3 4 public interface MonitorInterface extends Remote { 5 void Inform ( String message ) throws RemoteException ; 6 Event get ( int i) throws RemoteException ; 7 void add ( Event event ) throws RemoteException ; 8 int getcount () throws RemoteException ; 9 Vector <Event > allevents () throws RemoteException ; 10 } Zdalny interfejs deklaruje następujące metody: inform, która posiada jeden parametr o nazwie message, przez który przekazywany jest łańcuch reprezentujący komunikat. get do odczytu komunikatu zapisanego pod wybranym indeksem add do rejestracji nowego komunikatu przez serwer getcount do odczytu ilości zarejestrowanych komunikatów allevents do odczytu wszystkich zarejestrowanych komunikatów 25 / 1

26 Przykład 2 - kod serwera Kod serwera składa się z klas MonitorServer i MonitorServant. MonitorServer jest klasą główną i składa się z dwu pól i dwu metod. Pola są instancjami klas: Registry, który reprezentuje rmiregistry MonitorServant, który reprezentuje klasę usługową (servant). Metoda main serwera tworzy instancję klasy MonitorServer. Jeśli wystąpi jakikolwiek wyjątek, wyświetlany jest stos wywołań i kończy się działanie serwera. 1 import java.rmi. RemoteException ; 2 import java.rmi. registry. LocateRegistry ; 3 import java.rmi. registry. Registry ; 4 import java.rmi. server. UnicastRemoteObject ; 5 6 public class MonitorServer { 7 Registry reg ; /* rejestr nazw obiektow */ 8 MonitorServant servant ; 9 10 public static void main ( String [] args ) { 11 try { 12 MonitorServer s = new MonitorServer (); 13 } catch ( Exception e) { 14 e. printstacktrace (); System.exit (1); 15 } 16 } 26 / 1

27 Przykład 2 - kod serwera Chroniony konstruktor klasy MonitorServer najpierw tworzy zdalny obiekt rejestru, pracujący na wybranym porcie. Nastepnie tworzy instancję klasy MonitorServant i wiąże ją z pewną nazwą w rejestrze RMIregistry. Wartość reprezentująca to powiązanie jest zdalną referencją obiektu, a jej typ jest typem jego zdalnego interfejsu - MonitorInterface. 18 protected MonitorServer () throws RemoteException { 19 try { 20 /* Utworzenie rejestru nazw */ 21 reg = LocateRegistry. createregistry (1099); 22 /* utworzenie obiektu dostepnego zdalnie */ 23 servant = new MonitorServant (); 24 /* zwiazanie z obiektem nazwy */ 25 reg. rebind (" MonitorServer ", servant ); 26 System.out. println (" Server v2 READY "); 27 } catch ( RemoteException e) { 28 e. printstacktrace (); throw e; 29 } 30 } 31 } 27 / 1

28 Przykład 2 - kod klasy usługowej MonitorInterface 1 import java.rmi. RemoteException ; 2 import java.rmi. registry. LocateRegistry ; 3 import java.rmi. registry. Registry ; 4 import java.rmi. server. UnicastRemoteObject ; 5 import java.util. Vector ; 6 7 public class MonitorServant extends UnicastRemoteObject implements 8 MonitorInterface { 9 10 private Vector <Event > events ; public MonitorServant () throws RemoteException { 13 events = new Vector <Event >(); 14 } // Metoda implementujaca funkcje Inform () interfejsu MonitorInterface 17 public void Inform ( String message ) throws RemoteException { 18 events.add ( new Event ( message )); 19 System.out. println (" Server : " + message ); 20 } public Event get ( int i) throws RemoteException { 23 if (i < 0 i >= events. size ()) 24 return null ; 25 return events. get (i); 26 } 28 / 1

29 Przykład 2 - kod klasy usługowej MonitorInterface 28 public void add ( Event event ) throws RemoteException { 29 events.add ( event ); 30 } public int getcount () throws RemoteException { 33 return events. size (); 34 } public Vector <Event > allevents () throws RemoteException { 37 return events ; 38 } } 29 / 1

30 Przykład - kod klasy klienta MonitorClient 1 import java.rmi. NotBoundException ; 2 import java.rmi. RemoteException ; 3 import java.rmi. registry. LocateRegistry ; 4 import java.rmi. registry. Registry ; 5 import java.util. Vector ; 6 7 public class MonitorClient { 8 9 public static void main ( String [] args ) { 10 if (args. length < 2) { 11 System.out. println (" Usage : MonitorClient <server host name > <msg >"); 12 System.exit ( -1); 13 } 14 MonitorInterface remoteobject ; // referencja do zdalnego obiektu 15 Registry reg ; // rejestr nazw obiektow 16 try { 17 // pobranie referencji do rejestru nazw obiektow 18 reg = LocateRegistry. getregistry (args [0]); 19 // odszukanie zdalnego obiektu po jego nazwie 20 remoteobject = ( MonitorInterface ) reg. lookup (" MonitorServer "); 21 // wywolanie metody zdalnego obiektu 22 remoteobject. Inform (args [1]); 23 remoteobject.add ( new Event (" Event sent from client " )); 24 int cnt = remoteobject. getcount (); 25 System.out. println (" There are " + cnt + " registered events :"); 26 Vector <Event > e = remoteobject. allevents (); 27 for ( Event ev : e) 28 ev. print (); 29 Event back = remoteobject. get (0); 30 back. print (); 31 } catch ( RemoteException e) { 32 e. printstacktrace (); 33 } catch ( NotBoundException e) { 30 / 1

31 Przykład 2 - kompilacja i uruchomienie W celu kompilacji i uruchomienia rozproszonej aplikacji należy wykonać: 1 Kompilacja klasy serwera lm@lm-mint ~$ javac MonitorServer.java 2 Kompilacja klasy klienta lm@lm-mint ~$ javac MonitorClient.java 3 Generowanie namiastki zdalnego obiektu, w wyniku czego powstaje bajtkod zawarty w pliku MonitorServant_Stub.class. lm@lm-mint ~$ rmic MonitorServant 4 Uruchomienie serwera lm@lm-mint ~$ java MonitorServer & Server v2 READY 5 Uruchomienie klienta aby umieścić na serwerze nowe komunikaty lm@lm-mint ~$ java MonitorClient localhost s1 Server: s1 There are 1 registered events: Mon May 02 23:16:34 CEST 2011: s1 lm@lm-mint ~$ java MonitorClient localhost s2 Server: s2 There are 2 registered events: Mon May 02 23:16:34 CEST 2011: s1 Mon May 02 23:16:51 CEST 2011: s2 31 / 1

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak 1 Mechanizm RMI umożliwia

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych Podejście obiektowe do budowy systemów rozproszonych Wywoływanie metod zdalnych model systemu obiekt aplikacja kliencka interfejs serwer proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka stub interfejs serwer szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja

Bardziej szczegółowo

Remote Method Invocation 17 listopada 2010

Remote Method Invocation 17 listopada 2010 Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie

Bardziej szczegółowo

Podejście obiektowe do budowy systemów rozproszonych

Podejście obiektowe do budowy systemów rozproszonych Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm

Bardziej szczegółowo

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów

Bardziej szczegółowo

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1 P d jś i bi kt d b d t ó Podejście obiektowe do budowy systemów rozproszonych Dariusz Wawrzyniak (IIPP) 1 interfejs (w języku Java),wywiedziony idi z Remote obie kt aplikacja klie ncka interfe js serw

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Programowanie rozproszone w języku Java

Programowanie rozproszone w języku Java Wstęp Gniazda RMI Podsumowanie Programowanie rozproszone w języku Java Wojciech Rząsa wrzasa@prz-rzeszow.pl Katedra Informatyki i Automatyki, Politechnika Rzeszowska 25 maja 2015 Wojciech Rząsa, KIiA PRz

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 11 dr inż. CORBA CORBA (Common Object Request Broker Architecture) standard programowania rozproszonego zaproponowany przez OMG (Object Management Group)

Bardziej szczegółowo

Aplikacje RMI Lab4

Aplikacje RMI   Lab4 Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych

Bardziej szczegółowo

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer.

sieć 4) Mechanizm RMI jest zazwyczaj wykorzystywany w rozwiązaniach typu klient-serwer. RMI (Remote Method Invocation) zdalne wywołanie metod Część 1 1) RMI jest mechanizmem, który pozwala danej aplikacji: wywoływać metody obiektów zdalnych oraz uzyskać dostęp do obiektów zdalnych (np. w

Bardziej szczegółowo

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE

RMI-2. Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems SYSTEMY ROZPROSZONE Java Remote Method Invocation (RMI) na podstawie m.in. podręcznika firmy Sun Microsystems www.cs.agh.edu.pl/~slawek/zrodla_rmi2.zip Kilka pytań Co mamy? rok 2005-ty, gotową wersję 2 programu NoteBoard.

Bardziej szczegółowo

Interfejsy w Javie. Przykład zastosowania interfejsów:

Interfejsy w Javie. Przykład zastosowania interfejsów: 1 Plan wykładu 1. Interfejsy w Javie. 2. Zdalne wywołanie metod (Remote Method Invocation). interfejsy w RMI, architektura RMI, przykładowa aplikacja korzystająca z RMI, przekazywanie parametrów, dystrybucja

Bardziej szczegółowo

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2. Aplikacje RMI Część 2 Budowa aplikacji rozproszonych http://java.sun.com/j2se/1.5.0/docs/guide/rmi/socketfactory/index.html I. Implementacja gniazd dziedziczących po Socket i ServerSocket oraz produkcji

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone

Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone Plan wykładu CORBA Wprowadzenie Architektura CORBA IDL język definicji interfejsów ORB Object Request Broker Usługi i POA Aplikacje CORBA tworzenie serwera tworzenie klienta Aplikacje rozproszone Cechy

Bardziej szczegółowo

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Tworzenie i wykorzystanie usług

Tworzenie i wykorzystanie usług Strona 1 Co to jest usługa w systemie Android? Usługi HTTP Obsługa wywołania HTTP GET Obsługa wywołania HTTP POST Obsługa wieloczęściowego wywołania HTTP POST Usługi lokalne Usługi zdalne Tworzenie usługi

Bardziej szczegółowo

Tworzenie aplikacji rozproszonej w Sun RPC

Tworzenie aplikacji rozproszonej w Sun RPC Tworzenie aplikacji rozproszonej w Sun RPC Budowa aplikacji realizowana jest w następujących krokach: Tworzenie interfejsu serwera w języku opisu interfejsu RPCGEN Tworzenie: namiastki serwera namiastki

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do

Bardziej szczegółowo

76.Struktura oprogramowania rozproszonego.

76.Struktura oprogramowania rozproszonego. 76.Struktura oprogramowania rozproszonego. NajwaŜniejsze aspekty obiektowego programowania rozproszonego to: Współdziałanie (interoperability) modułów programowych na róŝnych maszynach. Wielokrotne wykorzystanie

Bardziej szczegółowo

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej dr inż. Paweł Czarnul pczarnul@eti.pg.gda.pl Architektury usług internetowych laboratorium

Bardziej szczegółowo

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury

Rozproszone systemy internetowe. Wprowadzenie. Koncepcja zdalnego wywołania procedury Rozproszone systemy internetowe Wprowadzenie. Koncepcja zdalnego wywołania procedury Zakres tematyczny przedmiotu Aplikacje rozproszone Technologie /standardy internetowe Programowanie obiektowe 2 Co będzie

Bardziej szczegółowo

Tworzenia aplikacji rozproszonej RMI

Tworzenia aplikacji rozproszonej RMI Tworzenia aplikacji rozproszonej RMI Mówiąc o aplikacjach RMI wyróżnia się w nich dwa typy obiektów: obiekty wywołujące metody zdalne (klienci) obiekty udostępniające metody zdalne (serwery) RMI dostarcza

Bardziej szczegółowo

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016 Wstęp - wykład 0 22 lutego 2016 Historia Simula 67 język zaprojektowany do zastosowan symulacyjnych; Smalltalk 80 pierwszy język w pełni obiektowy; Dodawanie obiektowości do języków imperatywnych: Pascal

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

Java programowanie w sieci. java.net RMI

Java programowanie w sieci. java.net RMI Java programowanie w sieci java.net RMI Programowanie sieciowe OSI WARSTWA APLIKACJI (7) WARSTWA PREZENTACJI(6) WARSTWA SESJI (5) WARSTWA TRANSPORTU (4) DoD Warstwa aplikacji (HTTP) Transport (gniazdka)

Bardziej szczegółowo

Wprowadzenie. Dariusz Wawrzyniak 1

Wprowadzenie. Dariusz Wawrzyniak 1 Dariusz Wawrzyniak Politechnika Poznańska Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5) 60-965 Poznań Dariusz.Wawrzyniak@cs.put.poznan.pl Dariusz.Wawrzyniak@put.edu.pl www.cs.put.poznan.pl/dwawrzyniak

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com

Diagramy klas. dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com Diagramy klas dr Jarosław Skaruz http://ii3.uph.edu.pl/~jareks jaroslaw@skaruz.com O czym będzie? Notacja Ujęcie w różnych perspektywach Prezentacja atrybutów Operacje i metody Zależności Klasy aktywne,

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

Bardziej szczegółowo

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Narzędzia i aplikacje Java EE Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl Niniejsze opracowanie wprowadza w technologię usług sieciowych i implementację usługi na platformie Java EE (JAX-WS) z

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Proxy (pełnomocnik) Cel: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego. Zastosowanie: Wszędzie tam, gdzie oczekujemy bardziej zaawansowanego odwołania do obiektu, niż zwykły

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych

Plan prezentacji. Budowa aplikacji w technologii Enterprise JavaBeans. Przegląd architektur: CORBA. Cele budowy aplikacji rozproszonych Plan prezentacji Budowa aplikacji w technologii Enterprise JavaBeans Przegląd architektur aplikacji rozproszonych: CORBA,, Wprowadzenie do Enterprise JavaBeans () Budowa komponentów sesyjnych Budowa komponentów

Bardziej szczegółowo

Platformy Programistyczne Zagadnienia sieciowe i wątki

Platformy Programistyczne Zagadnienia sieciowe i wątki Platformy Programistyczne Zagadnienia sieciowe i wątki Agata Migalska 27/28 maja 2014 Komunikacja sieciowa 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja Architektura typu klient-serwer Architektura

Bardziej szczegółowo

Pakiety i interfejsy. Tomasz Borzyszkowski

Pakiety i interfejsy. Tomasz Borzyszkowski Pakiety i interfejsy Tomasz Borzyszkowski Pakiety podstawy W dotychczasowych przykładach nazwy klas musiały pochodzić z jednej przestrzeni nazw, tj. być niepowtarzalne tak, by nie doprowadzić do kolizji

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

Bardziej szczegółowo

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski Adapter: opis Wzorce Strukturalne Tomasz Borzyszkowski Alternatywna nazwa: Wrapper (opakowanie) Rola obiektu Adapter: pełni wobec Klienta rolę otoczki, która umożliwia przetłumaczenie jego żądań na protokół

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Aplikacje w środowisku Java

Aplikacje w środowisku Java Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 27 maja 2015 Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 2 / 29 Trwałość (persistence) Definicja Cecha

Bardziej szczegółowo

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV Piotr Jarosik, Kamil Jaworski, Dominik Olędzki, Anna Stępień Dokumentacja wstępna TIN Rozproszone repozytorium oparte o WebDAV 1. Wstęp Celem projektu jest zaimplementowanie rozproszonego repozytorium

Bardziej szczegółowo

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca 2009. Norbert Potocki db4o Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie 1 czerwca 2009 Wprowadzenie - podstawy - technikalia Przydatne wiadomości Wprowadzenie = bjects = database for objects w pełni obiektowa

Bardziej szczegółowo

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy? Zad.28. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( ) ; public void pisz ( ) ; Zad.29. Utwórz klasę, która implementuje oba interfejsy: public void pisz ( int l i c z b a ) ; public

Bardziej szczegółowo

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) III RPC Zdalne wywoływanie procedur (ang. Remote Procedure Calls ) 1. Koncepcja Aplikacja wywołanie procedury parametry wyniki wykonanie procedury wynik komputer klienta komputer serwera Zaletą takiego

Bardziej szczegółowo

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

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

Dziedziczenie. Tomasz Borzyszkowski

Dziedziczenie. Tomasz Borzyszkowski Dziedziczenie Tomasz Borzyszkowski Podstawy Zobacz: Dziedzictwo1.java Dziedzictwo2.java Dziedziczenie jest jedną z podstawowych cech OOP ponieważ umożliwia łatwe implementowanie klasyfikacji hierarchicznych.

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

Bardziej szczegółowo

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

Programowanie obiektowe - 1.

Programowanie obiektowe - 1. Programowanie obiektowe - 1 Mariusz.Masewicz@cs.put.poznan.pl Programowanie obiektowe Programowanie obiektowe (ang. object-oriented programming) to metodologia tworzenia programów komputerowych, która

Bardziej szczegółowo

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI

Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Wprowadzenie do technologii Web Services: SOAP, WSDL i UDDI Maciej Zakrzewicz PLOUG mzakrz@cs.put.poznan.pl Plan prezentacji Wprowadzenie do architektury zorientowanej na usługi Charakterystyka technologii

Bardziej szczegółowo

Klasy cd. Struktury Interfejsy Wyjątki

Klasy cd. Struktury Interfejsy Wyjątki Klasy cd. Struktury Interfejsy Wyjątki Struktury Struktura pozwala na zdefiniowanie typu danych, który nie charakteryzuje się zbyt złożoną funkcjonalnością (np. punkt, kolor, etc). Do definiowania struktury

Bardziej szczegółowo

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

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

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki Object-oriented programming Najpopularniejszy obecnie styl (paradygmat) programowania Rozwinięcie koncepcji programowania strukturalnego

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

KLASY, INTERFEJSY, ITP

KLASY, INTERFEJSY, ITP KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

1 Wprowadzenie do J2EE

1 Wprowadzenie do J2EE Wprowadzenie do J2EE 1 Plan prezentacji 2 Wprowadzenie do Java 2 Enterprise Edition Aplikacje J2EE Serwer aplikacji J2EE Główne cele V Szkoły PLOUG - nowe podejścia do konstrukcji aplikacji J2EE Java 2

Bardziej szczegółowo

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG Budowa aplikacji w technologii Enterprise JavaBeans Maciej Zakrzewicz PLOUG Plan prezentacji Przegląd architektur aplikacji rozproszonych: CORBA, SOAP, EJB Wprowadzenie do Enterprise JavaBeans (EJB) Budowa

Bardziej szczegółowo

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. 1/14 Prototype (prototyp) Cel: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp. Przykład: Edytor 3D klient tworzy obiekty różnych kształtów

Bardziej szczegółowo

Rozdział 4 KLASY, OBIEKTY, METODY

Rozdział 4 KLASY, OBIEKTY, METODY Rozdział 4 KLASY, OBIEKTY, METODY Java jest językiem w pełni zorientowanym obiektowo. Wszystkie elementy opisujące dane, za wyjątkiem zmiennych prostych są obiektami. Sam program też jest obiektem pewnej

Bardziej szczegółowo

Polimorfizm. dr Jarosław Skaruz

Polimorfizm. dr Jarosław Skaruz Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 03 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas abstrakcyjnych i interfejsów. Wprowadzenie

Bardziej szczegółowo

Aplikacja wielowątkowa prosty komunikator

Aplikacja wielowątkowa prosty komunikator Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host

Bardziej szczegółowo

Wzorce projektowe. dr inż. Marcin Pietroo

Wzorce projektowe. dr inż. Marcin Pietroo Wzorce projektowe dr inż. Marcin Pietroo Adapter - strukturalny wzorzec projektowy, którego celem jest umożliwienie współpracy dwóm klasom o niekompatybilnych interfejsach - adapter przekształca interfejs

Bardziej szczegółowo

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C

Klasy Obiekty Dziedziczenie i zaawansowane cechy Objective-C #import "Fraction.h" #import @implementation Fraction -(Fraction*) initwithnumerator: (int) n denominator: (int) d { self = [super init]; } if ( self ) { [self setnumerator: n anddenominator:

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 6 dr inż. Komunikowanie się procesów Z użyciem pamięci współdzielonej. wykorzystywane przede wszystkim w programowaniu wielowątkowym. Za pomocą przesyłania

Bardziej szczegółowo

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)

1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1) Instrukcja tworzenia aplikacji EE na podstawie aplikacji z dostępem do bazy danych, prezentowanej na zajęciach lab.5 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1

Zdalne wywołanie procedur. Krzysztof Banaś Systemy rozproszone 1 Zdalne wywołanie procedur Krzysztof Banaś Systemy rozproszone 1 RPC Komunikacja za pomocą gniazd jest wydajna, gdyż korzystamy z funkcji systemowych niewygodna, gdyż musimy wyrażać ją za pomocą jawnego

Bardziej szczegółowo

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

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

Wykład 8: klasy cz. 4

Wykład 8: klasy cz. 4 Programowanie obiektowe Wykład 8: klasy cz. 4 Dynamiczne tworzenie obiektów klas Składniki statyczne klas Konstruktor i destruktory c.d. 1 dr Artur Bartoszewski - Programowanie obiektowe, sem. 1I- WYKŁAD

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

Bardziej szczegółowo