Standard CORBA. Oprogramowanie systemów równoległych i rozproszonych Wykład 8. Zalety (I) Model komunikacji. Dr inż. Tomasz Olas

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

Download "Standard CORBA. Oprogramowanie systemów równoległych i rozproszonych Wykład 8. Zalety (I) Model komunikacji. Dr inż. Tomasz Olas"

Transkrypt

1 Standard CORBA Oprogramowanie systemów równoległych i rozproszonych Wykład 8 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska CORBA (Common Object Request Broker Architecture) jest standardem przeznaczonym do kompleksowego tworzenia obiektowych aplikacji rozproszonych. Specyfikacja technologii CORBA została opracowana przez konsorcjum OMG (Object Management Group) utworzone w 1989 r. Zajmuje się ono rozwojem, adaptacja i promowaniem standardów dla rozwijania i rozpowszechniania aplikacji heterogenicznych i rozproszonych. Skupia ponad 800 czołowych firm rozwojowych, producentów sprzętu komputerowego oraz dostawców oprogramowania a także użytkowników (m. in. takie firmy jak: Apple, AT&T Digital, HP, Intel, Inprise, IBM, Novell, Oracle, Software AG, Sybase, Symantec, Xerox itd). Model komunikacji 1/47 Zalety (I) Wykład 8 p Centralnym elementem architektury CORBA jest ORB (Object Request Broker) jest odpowiedzialny za wszystkie operacje, jakie sa dokonywane pomiędzy klientem a programem implementujacym usługi, czyli serwerem. 3/47 Otwartość. Architektura CORBA jest otwartym rozwiazaniem opartym na opublikowanej specyfikacji. Uniwersalność. Jest niezależna od sprzętu i systemu operacyjnego. Współdziałajace komponenty moga działać na różnych architekturach sprzętowych i pod kontrola różnych systemów operacyjnych. (Jest zaimplementowana i obsługiwana na wielu różnych systemach operacyjnych). Elastyczność. Obiekt programowy zgodny z architektura CORBA posiada ściśle zdefiniowany interfejs, poprzez który odbywa się komunikacja. Zmiany w implementacji obiektu nie maja wpływu na inne obiekty, o ile nie zostanie zmieniony interfejs. Współpraca. Komunikacja pomiędzy obiektami programowymi zgodnymi z CORBA odbywa się przy wykorzystaniu protokołu IIOP. Obiekty programowe moga ze soba w pełni współpracować, nawet jeżeli działaja na różnych systemach operacyjnych i zostały utworzone z wykorzystaniem różnych języków programowania. Wykład 8 p

2 Zalety (II) Usługi CORBA Przenośność. Obiekty programowe zgodne ze standardem CORBA sa przenośne. To znaczy, że obiekty zbudowane na jednej platformie moga być wykorzystane na każdej innej z obsługiwanych platform. Obiektowość. Budowa aplikacji odbywa się zgodnie z zasadami techniki obiektowej. Przeźroczystość dostępu. Z punktu widzenia użytkownika (programisty) nie ma różnicy pomiędzy dostępem do lokalnych i zdalnych obiektów. Przeźroczystość położenia. Jest możliwy dostęp do obiektów bez konieczności określania ich położenia. usługa nazewnictwa (naming service) umożliwia obiektom wzajemna lokalizację przy wykorzystaniu ich nazw, usługa zdarzeń (event service) pozwala obiektom być subskrybentem kanału zdarzeń dzięki czemu moga oni być powiadamiani o wystapieniu określonych zdarzeń, usługa transakcji (transaction service) definiuje reguły transakcyjności, koordynuje dwufazowe zatwierdzanie operacji pomiędzy obiektami, usługa bezpieczeństwa (security service) zapewnia funkcję autentyfikacji, autoryzacji i szyfrowania. Służa one do ochrony danych i kontroli dostępu użytkowników do aplikacji i usług. 5/47 Wykład 8 p Schemat architektury aplikacji w Corbie Struktura mechanizmu ORB Warstwa ORB stanowi centralny obiekt Corby. Dlatego sposób jego budowy decyduje o tym, że Corba to technologia niezależna od platformy sprzętowo programowej. W architekturze ORG zdefiniowano pojęcie mostu, który odpowiada za dostęp do implementacji obiektu oraz komunikację z klientem. Most jest odpowiedzialny za unifikację danych przekazywanych w warstwie ORB. Pozwala on również na tworzenie domen, które odpowiedzialne sa za poszczególne obiekty Corby (umożliwia to np. ograniczenie dostępności pewnych obiektów, do których maja dostęp tylko klienci z wybranej dziedziny. 7/47 Wykład 8 p

3 Komunikacja między domenami ORB Adapter obiektu Za komunikację wewnatrz domeny odpowiada protokół o nazwie GIOP (The General Inter-ORB Protocol). Główne jego zadanie to zapewnienie komunikacji poszczególnym obiektom ORB. Do komunikacji pomiędzy domenami ORB została utworzona specyfikacja protokołu IIOP (Internet Inter-ORB Protocol). IIOP wykorzystuje stos TCP/IP do komunikacji. Dzięki protokołom GIOP i IIOP możliwy jest dostęp do Corby z poziomu różnych, nawet bardzo odmiennych od siebie, języków programowania. Realizacja wywołania zdalnej metody w Corbie wymaga, aby po stronie serwera znajdował się mechanizm, który jest odpowiedzialny za bezpieczeństwo tej operacji, utworzenia referencji do obiektu oraz za aktywację implementacji. Taki mechanizm nazywa się adapterem obiektu. W chwili obecnej CORBA zawiera dwa podstawowe typy adapterów: Adapter BOA (Basic Object Adapter) charakteryzuje się niskim poziomem skomplikowania w implementacji. Jego wada jest ograniczenie tylko do podstawowych operacji. Z tego powodu wielu producentów serwerów Corby dodaje do niego własne rozwiazania, co powoduje brak zgodności pomiędzy różnymi implementacjami. Adapter POA (Portable Object Adapter) zastępuje adapter BOA i zawiera brakujace operacje, które nie występuja w adapterze BOA. Wywołanie zdalnych operacji 9/47 Repozytorium Interfejsu Dostęp do zdalnych obiektów może odbywać się w sposób statyczny lub dynamiczny: Statyczne wywołanie operacji następuje poprzez pieniek IDL (ang. IDL stub). Programista specyfikuje pieniek wykorzystujac język IDL. Pieniek jest funkcja klienta, która pozwala statycznie wywoływać zdalne operacje poprzez wywołanie zwykłej lokalnej funkcji (badź metody w przypadku języka obiektowego np. C++). Dynamiczne wywołanie operacji. Aplikacja może w trakcie działania może dokonać specyfikacji usługi, która jest wymagana. Niezbędna jest przy tym informacja o interfejsie i o niezbędnych typach. Taka informację można otrzymać od programisty lub programowo z interfejsu repozytorium. Repozytorium Interfejsu umożliwia uzyskanie dostępu do interfejsów obiektów, operacji jakie sa przez nie udostępnione oraz parametrów i typów jakie sa w nich wykorzystywane. Można je traktować jako bazę danych zawierajac a definicję obiektów. Repozytorium interfejsu zawiera te same informacje, które znajduja się w plikach IDL. 11/47

4 Repozytorium Implementacji Tworzenie aplikacji Repozytorium Implementacji zawiera informacje o klasach serwera, instancjach obiektów i ich identyfikatorach. Wykorzystywane jest do zarzadzania obiektami. Używane jest również do lokalizacji i aktywacji zaimplementowanych obiektów. Obiekt po zarejestrowaniu w Repozytorium Implementacji uruchamiany jest automatycznie w momencie wystapienia żadania od klienta. Proces tworzenia aplikacji z wykorzystaniem technologii CORBA można podzielić na następujace etapy: zdefiniowanie interfejsów obiektów w IDL, generacja kodu pieńka klienta przy wykorzystaniu kompilatora IDL, utworzenie implementacji obiektu po stronie serwera (servant), utworzenie kodu klienta, utworzenie kodu serwera. OMG IDL 13/47 Składnia OMG IDL OMG IDL (Interface Definition Language - język definiowania interfejsu) jest podstawowym mechanizmem w Corbie umożliwiajacym odseparowanie interfejsu obiektu (deklaracji obiektu) od jego implementacji. Jest językiem typowo deklaracyjnym i nie pozwala na realizację obiektów. Gramatyka języka IDL jest podzbiorem ANSI C++ z dodatkowymi konstrukcjami, wspierajacymi mechanizm wywoływania operacji. 15/47

5 OMG IDL - typy danych (I) OMG IDL - typy danych (II) typy podstawowe: typy definiowane Deklaracja typu definiowanego (typedef) może być używana w celu przypisania nazwy do definicji dowolnego typu, np. typedef string MemoVal; W praktyce, typedef wykorzystuje się dla tablic i typów szablonowych. tablice IDL dostarcza możliwości tworzenia wielowymiarowych tablic stałego rozmiaru do przechowywania elementów dowolnego typu. Rozmiar każdego wymiaru musi być określony w definicji, np. typedef long CellValues[10][20]; Należy używać typedef dla tablic, które sa używane jako parametr, atrybut lub wartość zwracana. 17/47 OMG IDL - typy danych (III) OMG IDL - typy danych (IV) typy szablonowe sekwencja (sequence) Sekwencja jest zmiennej długości lista elementów dowolnego typu IDL. Sekwencje możemy określić jako jednowymiarowa tablicę zmiennej długości. Długość sekwencji może być ograniczona (określamy jej maksymalny rozmiar) lub nie. typedef sequence <octet,10> s1; typedef sequence <octet> s2; string String jest sekwencja znaków (char). Podobnie jak sekwencja może być ograniczony lub nie: typedef string <15> Name; typedef string Description; typ wyliczeniowy Jest to najprostszy z typów konstrukcyjnych. Przykład: enum Petcat, dog, fish, bird, rat, horse; struktury Struktura podobnie jak kilka elementów w IDL, ma te same możliwości jak w C++, a ponadto umożliwia tworzenie typów rekurencyjnych. Przykład: struct Osoba string<10> imie; string<10> nazwisko; long rok_urodzenia; ; 19/47

6 OMG IDL - typy danych (V) OMG IDL - moduł Unie Unia w IDL zawiera identyfikator pola określajacy, która zmienna składowa unii jest bieżaco przypisana z wartościa. union nazwa_unii switch(typ) case wielkość_stała_1: typ nazwa1; case wielkość_stała_2: typ nazwa2; default: typ nazwa; ; Przykład: union Reference switch(short) case 1:Title: string; Author: string; case 2: URL: string; case 3: TopicID: long; ; Moduł w IDL pełni rolę głównie porzadkow a (jest opcjonalny). Stanowi przestrzeń nazw i z tego powodu, gdy IDL jest tłumaczony na C++ jest automatycznie zamieniany na namespace. module BazaDanych Istnieje możliwość ponownego otwierania przestrzeni nazw, jaka stwarza moduł: module Modul1 module Modul2 module Modul1 OMG IDL - stałe 21/47 OMG IDL - interfejsy (I) IDL zezwala na deklaracje stałych - wykorzystane jest przy tym słowo kluczowego const: const unsigned long LenghtOfNameString=15; W IDL nie sa obsługiwane stałe typu octet. Liczby całkowite moga być określane z użyciem dziesiętnej (ang. decimal), ósemkowej (ang. octal) lub szesnastkowej (ang. hexadecimal) notacji. Interfejsy (ang. Interfaces) - definiuja zbiór metod (operacji), które moga być wywoływane klient. Można rozumieć je jako definicję klasy, bez zawartej w niej sekcji implementacyjnej. Interfejsy sa deklarowane z użyciem słowa kluczowego interface. Wewnatrz deklaracji interfejsu jest lista atrybutów i metod. Wszystkie metody sa publiczne. Przykład: interface Example1 readonly attribute string Name; attribute long Value; long AddToValue(in long Summand, out long Resualt); ; 23/47

7 OMG IDL - interfejsy (II) OMG IDL - atrybuty IDL dopuszcza trzy typy interfejsu: interfejs abstrakcyjny (abstract)- stanowiacy podstawę hierarchii obiektowej stosowanej w danej aplikacji, interfejs lokalny (local), interfejs zwykły, który stanowi obiekt publiczny w środowisku aplikacji. Zapis interfejsu przedstawia się następujaco: abstract local interface <nazwa> : lista dziedziczenia Interfejs może posiadać atrybuty. Atrybuty w przeciwieństwie do innych obiektowych języków programowania sa tylko publiczne. Deklaracja atrybutu w interfejsie jest poprzedzona słowem kluczowym attribute. Dodanie słowa kluczowego readonly powoduje, iż nowo zadeklarowany atrybut jest przeznaczony tylko do odczytu. Przykład: attribute float liczba; readonly attribute double suma; 25/47 OMG IDL - wyjatki OMG IDL - metody (I) Każdy interfejs może definiować wiele wyjatków (ang. exceptions), które zgłaszane sa momencie wystapienia błędu w trakcie wykonania operacji. interface Konto exception BrakSrodkow ; ; Po słowie kluczowym raises występuje lista wyjatków, które moga być zgłaszane podczas wykonania operacji. Podczas wykonania operacji moga być zgłaszane również wyjatki standardowe sygnalizowane przez ORB, które nie musza być wymieniane po słowie raises. Deklaracja metody zawiera typ zwracanej wartości, nazwę metody oraz jej parametry. Każdy parametr musi zawierać słowo kluczowe określajace kierunek przesyłanego parametru, typ parametru i jego nazwę. Stosowane sa następujace słowa kluczowe: in (kierunek wejściowy), out (kierunek wyjściowy), inout (kierunek wejściowo - wyjściowy). Klient po wywołaniu metody jest blokowany - oczekuje na zakończenie działania operacji i na zwrócona wartość. W przypadku, gdy klient nie musi czekać na zwracana wartość, to należy ja zadeklarować z użyciem słowa kluczowego oneway przed typem zwracanej wartości. 27/47

8 OMG IDL - metody (II) OMG IDL - dziedziczenie W celu określenia możliwości wystapienia wyjatków w metodzie należy użyć słowa kluczowego raises, po którym w nawiasach okragłych po przecinku należy wymienić nazwy wyjatków. Wyjatki powinny być zdefiniowane wcześniej słowem kluczowym exception. Przykład: interface Calka double Suma(in double a, in double b); double Iloczyn(in double a, in double b); interface Drzewo exception ObiektIstnieje ; void NowyElement(in double a) raises(obiektistnieje); oneway void Reorganizacja(); ; CORBA dopuszcza możliwość dziedziczenia przez interfejs atrybutów i metod innych interfejsów. interface Baza ; interface InterfejsPochodny: Baza ; CORBA umożliwia dziedziczenie wielokrotne, o ile interfejsy przodków nie maja definicji z identyczna nazwa. Wszystkie interfejsy IDL dziedzicza bezpośrednio od CORBA interface object. 29/47 OMG IDL - dyrektywy preprocesora Interfejs obiektu w IDL W plikach IDL moga zostać wykorzystane dyrektywy preprocesora: #define #elif #else #endif #ifdef #ifndef #include Przykład: Plik kalkulator.idl: interface Kalkulator double dodaj(in double x1, in double x2); ; #include <baza.idl> 31/47

9 Generacja szkieletu w C++ POA - architektura (I) W przypadku implementacji omniorb kompilator IDL nazywa się omniidl. Standardowo do wygenerowania kodu w języku C++ wykorzystywana jest opcja -bcxx: omniidl -bcxx kalkulator.idl w wyniku otrzymujemy dwa pliki: kalkulator.hh kalkulatorsk.cc Po dodaniu opcji -Wbexample (omniidl -bcxx -Wbexample hello.idl) wygenerowany zostaje ponadto plik kalkulator_i.cc. POA zawiera kilkanaście komponentów dość precyzyjnie zdefiniowanych w specyfikacji: Klient - Program wywołujacy operacje na obiektach poprzez ich referencję. Serwer - Program odpowiedzialny za realizację zadań stawianych przez klienta. Zawiera implementację obiektów servant oraz POA. Obiekt - W architekturze POA oznacza abstrakcyjna jednostkę zdefiniowana dzięki technologii CORBA. Każdy obiekt zawiera identyfikator, interfejs i implementację interfejsu. Servant - Stanowi jednostkę (obiekt) w języku programowania użytym do implementacji interfejsu. Jest to element programu serwera. Menadżer servant - Obiekt tworzony przez programistę, przeznaczony do kontroli poszczególnych obiektów servant (np. do ich tworzenia oraz usuwania). POA - architektura (II) 33/47 Hierarchia obiektów POA komponenty POA cd.: ObjectID - Identyfikator obiektu - jest niepowtarzalnym ciagiem wartości typu octec (może być wygenerowany przez system lub podany przez użytkownika). Referencja obiektu - Służy do określania położenia obiektu oraz zawiera identyfikatory nadane przez POA. Policy - Definiuje zachowanie obiektów implementowanych przez POA. POA - Jednostka składowa programu serwera (zawiera pozostałe elementy architektury jak servant czy inne obiekty POA). Menadżer POA - Umożliwia zmianę stanów obiektów POA (kolejkowanie poszczególnych żadań, odrzucanie, tworzenie nowych oraz usuwanie obiektów POA). Obiekty POA tworza hierarchię. Pierwszym obiektem występujacym w każdym serwerze jest korzeń hierarchii POA (RootPOA). W przeciwieństwie do pozostałych obiektów POA korzeń zawsze jest dostępny i nie trzeba go tworzyć. Pozostałe obiekty POA moga być tworzone przy użyciu RootPOA badź przez menadżera POA. Zadaniem obiektów POA jest przechowywanie obiektów servant. 35/47

10 AOM Zmiana stanu obiektu POA (I) Obiekt POA zawiera specjalny obiekt o nazwie Active Object Map (AOM) - mapa aktywnych obiektów. Gdy do obiektu POA przychodzi żadanie od klienta, adapter sprawdza, czy w AOM istnieje referencja do obiektu. Jeżeli taka referencja istnieje, to odszukiwany jest odpowiedni obiekt servant. W przypadku braku referencji POA odwołuje się do domyślnego obiektu servant lub do menadżera obiektów servant, których zadaniem jest utworzenie nowego lub odszukanie istniejacego obiektu servant. Każdy obiekt POA jest wyposażony w menadżera, którego zadaniem jest zmiana stanu obiektu POA. Obiekt POA może znajdować się w jednym z czterech stanów: active - żadania sa obsługiwane na bieżaco, holding - żadania sa dołaczane do kolejki, discarding - żadania sa odrzucane, a klient otrzymuje wyjatek TRANSIENT, inactive - żadania nie sa obsługiwane, obiekt POA jest w trakcie procedury usuwania. Zmiana stanu obiektu POA (II) 37/47 CORBA - przykład Po wywołaniu metody create_poa obiekt POA znajduje się w stanie holding. Przetwarzanie żadań odbywa się dopiero po wywołaniu metody activate z menadżera POA. Usunięcie obiektu może zostać wykonane poprzez przez wywołanie metody menadżera deactivate. Proces tworzenia aplikacji z wykorzystaniem technologii CORBA można podzielić na następujace etapy: zdefiniowanie interfejsów obiektów w IDL, generacja kodu pieńka klienta przy wykorzystaniu kompilatora IDL, utworzenie implementacji obiektu po stronie serwera (servant), utworzenie kodu klienta, utworzenie kodu serwera. 39/47

11 Interfejs obiektu w IDL Generacja szkieletu w C++ Plik hello.idl: interface Hello string say_hello(in string client); ; W przypadku implementacji omniorb kompilator IDL nazywa się omniidl. Standardowo do wygenerowania kodu w języku C++ wykorzystywana jest opcja -bcxx: omniidl -bcxx hello.idl w wyniku otrzymujemy dwa pliki: hello.hh hellosk.cc Po dodaniu opcji -Wbexample (omniidl -bcxx -Wbexample hello.idl) wygenerowany zostaje ponadto plik hello_i.cc. 41/47 hello.hh (I) hello.hh (II) class Hello; class _objref_hello; class _impl_hello; typedef _objref_hello* Hello_ptr; typedef Hello_ptr HelloRef; class Hello public: // Declarations for this interface type. typedef Hello_ptr _ptr_type; typedef Hello_var _var_type; static _ptr_type _duplicate(_ptr_type); static _ptr_type _narrow(corba::object_ptr); static _ptr_type _unchecked_narrow(corba::object_ptr); static _ptr_type _nil(); // for internal use ; class _objref_hello : public virtual CORBA::Object, public virtual omniobjref public: char* say_hello(const char* client); // for internal use ; class _impl_hello : public virtual omniservant public: virtual ~_impl_hello(); virtual char* say_hello(const char* client) = 0; ; class POA_Hello : public virtual _impl_hello, public virtual PortableServer::ServantBase public: virtual ~POA_Hello(); inline ::Hello_ptr _this() return (::Hello_ptr) _do_this(::hello::_pd_repoid); ; 43/47

12 Servant Serwer class Hello_impl : public POA_Hello public: virtual char * say_hello(const char * client); ; char * Hello_impl::say_hello(const char * client) cout << "omniorb C++ server: " << client << endl; char * server = CORBA::string_alloc(32); strncpy(server, "omniorb C++ server", 32); return server; Typowe czynności jakie powinien wykonać serwer moga wygladać następujaco: nawiazanie kontaktu z ORB, uzyskanie obiektu-korzenia POA, odczytanie menadżera, utworzenie obiektu zawierajacego implementacje interfejsu, aktywacja implementacji, zapis IOR, aktywacja menadżera, uruchomienie pętli zdarzeń ORB. 45/47 Usługa nazw Kod serwera II Klient może na różne sposoby uzyskać referencje do zdalnego obiektu. Wygodnym mechanizmem jaki może być w tym celu wykorzystany jest mechanizm o nazwie usługa nazw (Naming Service). Umożliwia ona na identyfikacje obiektów posługujac się ich nazwami symbolicznymi. int main(int argc, char ** argv) try CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv); CORBA::Object_var poa_obj = orb->resolve_initial_references("rootpoa"); PortableServer::POA_var poa = PortableServer::POA::_narrow(poa_obj); PortableServer::POAManager_var manager = poa->the_poamanager(); Hello_impl * service = new Hello_impl; try CORBA::Object_var ns_obj = orb->resolve_initial_references("nameservice"); if (!CORBA::is_nil(ns_obj)) CosNaming::NamingContext_ptr nc = CosNaming::NamingContext::_narrow(ns_obj); CosNaming::Name name; name.length(1); name[0].id = CORBA::string_dup("TestServer"); name[0].kind = CORBA::string_dup(""); nc->rebind(name, service->_this()); cout << argv[0] << ": server TestServer bound" << endl; catch (CosNaming::NamingContext::NotFound &) cerr << "not found" << endl; catch (CosNaming::NamingContext::InvalidName &) cerr << "invalid name" << endl; catch (CosNaming::NamingContext::CannotProceed &) cerr << "cannot proceed" << endl; manager->activate(); orb->run(); delete service; orb->destroy(); catch (CORBA::UNKNOWN) cerr << "unknown exception" << endl; catch (CORBA::SystemException &) cerr << "system exception" << endl; 47/47

13 Kod klienta II int main(int argc, char ** argv) try CORBA::ORB_ptr orb = CORBA::ORB_init(argc, argv); Hello_ptr hello = 0; try CORBA::Object_var ns_obj = orb->resolve_initial_references("nameservice"); if (!CORBA::is_nil(ns_obj)) CosNaming::NamingContext_ptr nc = CosNaming::NamingContext::_narrow(ns_obj); CosNaming::Name name; name.length(1); name[0].id = CORBA::string_dup("TestServer"); name[0].kind = CORBA::string_dup(""); CORBA::Object_ptr obj = nc->resolve(name); if (!CORBA::is_nil(obj)) hello = Hello::_narrow(obj); catch (CosNaming::NamingContext::NotFound &) cerr << "not found" << endl; catch (CosNaming::NamingContext::InvalidName &) cerr << "invalid name" << endl; catch (CosNaming::NamingContext::CannotProceed &) cerr << "cannot proceed" << endl; if (!CORBA::is_nil(hello)) char * server = hello->say_hello("omniorb C++ client"); cout << "answer from: " << server << endl; CORBA::string_free(server); orb->destroy(); catch (CORBA::UNKNOWN) 49/47

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

Common Object Request Broker Architecture (CORBA)

Common Object Request Broker Architecture (CORBA) Budowa aplikacji sieciowych Common Object Request Broker Architecture (CORBA) dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Standard Corba

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

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

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

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

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

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

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

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

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl

Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP. Paweł Kozioł p.koziol@students.mimuw.edu.pl Protokoly w technologii obiektow rozproszonych - CORBA, RMI/IIOP, COM, SOAP Paweł Kozioł p.koziol@students.mimuw.edu.pl Na początek - moja praca magisterska Narzędzie dla środowiska Eclipse wspierające

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float

Bardziej szczegółowo

Wyjątki (exceptions)

Wyjątki (exceptions) Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

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

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

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

Programowanie 2. Język C++. Wykład 3.

Programowanie 2. Język C++. Wykład 3. 3.1 Programowanie zorientowane obiektowo... 1 3.2 Unie... 2 3.3 Struktury... 3 3.4 Klasy... 4 3.5 Elementy klasy... 5 3.6 Dostęp do elementów klasy... 7 3.7 Wskaźnik this... 10 3.1 Programowanie zorientowane

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

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

Szablony funkcji i klas (templates)

Szablony funkcji i klas (templates) Instrukcja laboratoryjna nr 3 Programowanie w języku C 2 (C++ poziom zaawansowany) Szablony funkcji i klas (templates) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp

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

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

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

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

Wstęp do programowania

Wstęp do programowania wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych

Bardziej szczegółowo

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej. Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.

Bardziej szczegółowo

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów Funkcje. Spotkanie 5 Dr inż. Dariusz JĘDRZEJCZYK Tworzenie i używanie funkcji Przekazywanie argumentów do funkcji Domyślne wartości argumentów Przeładowanie nazw funkcji Dzielenie programu na kilka plików

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Systemy Rozproszone Technologia ICE

Systemy Rozproszone Technologia ICE Systemy Rozproszone Technologia ICE Zespół Systemów Rozproszonych () Katedra Informatyki AGH Kraków Kornel Skałkowski skalkow@agh.edu.pl Opracowano na podstawie książki: Henning M, Spruiell M. Distributed

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

PARADYGMATY PROGRAMOWANIA Wykład 4

PARADYGMATY PROGRAMOWANIA Wykład 4 PARADYGMATY PROGRAMOWANIA Wykład 4 Metody wirtualne i polimorfizm Metoda wirualna - metoda używana w identyczny sposób w całej hierarchii klas. Wybór funkcji, którą należy wykonać po wywołaniu metody wirtualnej

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

Wstęp do Programowania 2

Wstęp do Programowania 2 Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu na temat programowania obiektowego.

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

Server-Side C++ Mapping

Server-Side C++ Mapping Server-Side C++ Mapping Streszczenie Pojęcia podstawowe Przekazywanie parametrów Zgłaszanie wyjątków Tie classes ORB, POA i serwant request ORB POA Manager POA Servants Mapping dla interfejsów IDL: Interface

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

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

Projektowanie klas c.d. Projektowanie klas przykład

Projektowanie klas c.d. Projektowanie klas przykład Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej

Bardziej szczegółowo

Podstawy Programowania Obiektowego

Podstawy Programowania Obiektowego Podstawy Programowania Obiektowego Wprowadzenie do programowania obiektowego. Pojęcie struktury i klasy. Spotkanie 03 Dr inż. Dariusz JĘDRZEJCZYK Tematyka wykładu Idea programowania obiektowego Definicja

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

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 Ćwiczenie 4

Programowanie Obiektowe Ćwiczenie 4 Programowanie Obiektowe Ćwiczenie 4 1. Zakres ćwiczenia wyjątki kompozycja 2. Zagadnienia Założeniem, od którego nie należy odbiegać, jest by każdy napotkany problem (np. zatrzymanie wykonywanej metody)

Bardziej szczegółowo

Składnia C++ Programowanie Obiektowe Mateusz Cicheński

Składnia C++ Programowanie Obiektowe Mateusz Cicheński Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory

Bardziej szczegółowo

Wprowadzenie do szablonów szablony funkcji

Wprowadzenie do szablonów szablony funkcji Wprowadzenie do szablonów szablony funkcji Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2010 Bogdan Kreczmer Niniejszy dokument zawiera materiały do

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie

Bardziej szczegółowo

Szablony funkcji i szablony klas

Szablony funkcji i szablony klas Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2011 Bogdan Kreczmer Niniejszy dokument

Bardziej szczegółowo

Middleware wprowadzenie października 2010

Middleware wprowadzenie października 2010 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/middleware

Bardziej szczegółowo

TEMAT : KLASY POLIMORFIZM

TEMAT : KLASY POLIMORFIZM TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie

Bardziej szczegółowo

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1

Middleware wprowadzenie października Dariusz Wawrzyniak (IIPP) 1 Dariusz Wawrzyniak Politechnika Poznańska Instytut Informatyki ul. Piotrowo 2 (CW, pok. 5) 60-965 Poznań Dariusz.Wawrzyniak@cs.put.poznan.pl poznan pl Dariusz.Wawrzyniak@put.edu.pl www.cs.put.poznan.pl/dwawrzyniak/middleware

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

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 Programowanie w C++ Wykład 8 Katarzyna Grzelak 7 maja 2018 K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31 STL - powtórzenie STL Standard Template Libarary standardowa biblioteka szablonów Składowe biblioteki:

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

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

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

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

Bardziej szczegółowo

Szablony. Szablony funkcji

Szablony. Szablony funkcji Szablony Szablony sa mechanizmem ponownego wykorzystania kodu (reuse) W przypadku funkcji ponownie wykorzystany jest algorytm W przypadku klas ponownie wykorzystane sa wszystkie skladowe Deklaracja szablonu

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

PARADYGMATY PROGRAMOWANIA Wykład 2

PARADYGMATY PROGRAMOWANIA Wykład 2 PARADYGMATY PROGRAMOWANIA Wykład 2 Definiowanie klas w C++ - ciąg dalszy Lista inicjalizująca konstruktora Przeznaczenie - do inicjalizacji pól klasy z kwalifikatorem const i inicjalizacji obiektów składowych

Bardziej szczegółowo

Tworzenie aplikacji w języku Java

Tworzenie aplikacji w języku Java Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009

Bardziej szczegółowo

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.)

Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) Swift (pol. jerzyk) nowy język programowania zaprezentowany latem 2014 r. (prace od 2010 r.) przeznaczony do programowania zarówno pod ios jak i Mac OS X bazuje na logice Objective-C bez kompatybilności

Bardziej szczegółowo

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc Rok akademicki 2016/2017, Wykład nr 4 2/45 Plan wykładu nr 4 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia stacjonarne I stopnia Rok akademicki 2016/2017

Bardziej szczegółowo

Obiekty w plikach wykonywalnych, marshaling

Obiekty w plikach wykonywalnych, marshaling Obiekty w plikach wykonywalnych, marshaling Komponent w pliku exe Odczyt IClassFactory komponencie umieszczonym w pliku dll ładowanym w przestrzeń adresową klienta następuje poprzez wywołanie eksportowanej

Bardziej szczegółowo

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi EGZAMIN PIERWSZY (25 CZERWCA 2013) JĘZYK C++ poprawiam ocenę pozytywną z egzaminu 0 (zakreśl poniżej x) 1. Wśród poniższych wskaż poprawną formę definicji

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

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

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

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

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? 1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie? a) konstruktor b) referencje c) destruktor d) typy 2. Które z poniższych wyrażeń są poprawne dla klasy o nazwie

Bardziej szczegółowo

Abstrakcyjny typ danych

Abstrakcyjny typ danych Abstrakcyjny typ danych Abstrakcyjny Typ Danych (abstract data type-adt): zbiór wartości wraz z powiązanymi z nimi operacjami; operacje są zdefiniowane w sposób niezależny od implementacji; operacje są

Bardziej szczegółowo

Wprowadzenie CORBA ORB

Wprowadzenie CORBA ORB Plan wykładu 1. CORBA (Common Object Request Broker Architecture) wprowadzenie, rodzaje obiektów, typy i interfejsy, model operacji, struktura ORB, język IDL. 2. Przykład aplikacji rozproszonej CORBA.

Bardziej szczegółowo

Deklaracja struktury w C++

Deklaracja struktury w C++ Struktury to złożone typy danych pozwalające przechowywać różne informacje. Za pomocą struktur możliwe jest grupowanie wielu zmiennych o różnych typach w jeden obiekt. Strukturę można nazywać obiektem

Bardziej szczegółowo

Zaawansowane programowanie w języku C++ Klasy w C++

Zaawansowane programowanie w języku C++ Klasy w C++ Zaawansowane programowanie w języku C++ Klasy w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń

Bardziej szczegółowo

Zofia Kruczkiewicz, ETE8305_2 1

Zofia Kruczkiewicz, ETE8305_2 1 Wprowadzenie do programowania obiektowego w C++ 1. Główne zasady programowania obiektowego: hermetyzacja, dziedziczenie, polimorfizm 2. Pojęcie klasy: sposoby deklarowania i definiowania składowych klasy,

Bardziej szczegółowo

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne Tematyka wykładów 1. Wprowadzenie. Klasy cz. 1 - Język C++. Programowanie obiektowe - Klasy i obiekty - Budowa i deklaracja klasy. Prawa dostępu - Pola i funkcje składowe - Konstruktor i destruktor - Tworzenie

Bardziej szczegółowo

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Java - tablice, konstruktory, dziedziczenie i hermetyzacja Java - tablice, konstruktory, dziedziczenie i hermetyzacja Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU zmienne tablicowe konstruktory klas dziedziczenie hermetyzacja

Bardziej szczegółowo

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;

Bardziej szczegółowo

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Programowanie obiektowe, wykład nr 6. Klasy i obiekty Dr hab. inż. Lucyna Leniowska, prof. UR, Zakład Mechatroniki, Automatyki i Optoelektroniki, IT Programowanie obiektowe, wykład nr 6 Klasy i obiekty W programowaniu strukturalnym rozwój oprogramowania oparto

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

Ada-95. Dariusz Wawrzyniak

Ada-95. Dariusz Wawrzyniak Część I Wskaźniki Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Plan Typy wskaźnikowe i obiekty wskazywane 1 Typy wskaźnikowe i obiekty wskazywane 2 3 4 Wskaźniki

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Materiały do zajęć VII

Materiały do zajęć VII Spis treści I. Klasy Materiały do zajęć VII II. III. Konstruktor Właściwości i indeksatory Klasy Programowanie obiektowe wiadomości wstępne Paradygmat programowania obiektowego Abstrakcja Hermetyzacja

Bardziej szczegółowo

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri);

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) { zdefiniuje. Integer::operator=(ri); Przeciążanie operatorów [] Przykład: klasa reprezentująca typ tablicowy. Obiekt ma reprezentować tablicę, do której można się odwoływać intuicyjnie, np. Tab[i] Ma być też dostępnych kilka innych metod

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

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

TEMAT : KLASY DZIEDZICZENIE

TEMAT : KLASY DZIEDZICZENIE TEMAT : KLASY DZIEDZICZENIE Wprowadzenie do dziedziczenia w języku C++ Język C++ możliwa tworzenie nowej klasy (nazywanej klasą pochodną) w oparciu o pewną wcześniej zdefiniowaną klasę (nazywaną klasą

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

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

Klasy abstrakcyjne, interfejsy i polimorfizm

Klasy abstrakcyjne, interfejsy i polimorfizm Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z

Bardziej szczegółowo

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo