Droga do DCOM DCOM (1996) Windows clipboard (1987) OLE 1 DDE (1992) OLE 2 (1993) COM (1995) Distributed computing (1980s)
|
|
- Zdzisław Ksawery Grzybowski
- 9 lat temu
- Przeglądów:
Transkrypt
1 COM jako standard
2 Droga do DCOM Windows clipboard (1987) OLE 1 DDE (1992) OLE 2 (1993) COM (1995) Distributed computing (1980s) Open Software Foundation Distributed Computing Environment Remote Procedure Calls (OSF DCE RPC) (1992) DCOM (1996)
3 Co to jest COM? COM Component Object Model: Definiuje standardowy sposób tworzenia komponentów Definiuje binarny standard komponentu
4 Cechy COM Dedykowany do programowania zorientowanego obiektowo: Enkapsulacja danych i kodu Polimorfizm Dziedziczenie Luźne powiązanie z aplikacją Bezpieczna zmiana wersji komponentu Przeźroczystość lokalizacji
5 DLL a COM DLL jest również binarnym standardem DLL również w ograniczony sposób przeprowadza enkapsulację DLL nie definiuje takich zagadnień jak: Alokacja pamięci Czas życia obiektów Standardowy dostęp do obiektów DLL jest wystarczającym standardem aby mógł zawierać w sobie komponenty COM.
6 Interfejs COM Klient i serwer komunikują się ze sobą za pomocą interfejsów. Komponent poprzez jeden lub większą liczbę interfejsów wyraża swoją funkcjonalność i jedynie poprzez nie może być udostępniany. Interfejs jest realizowany w postaci wirtualnych tablic funkcji (vtable).
7 Interfejs COM Interfejs jest zestawem definicji funkcji, tzn. ich nazw, zwracanych wartości i parametrów. Odpowiednikiem interfejsu w C++ są abstrakcyjne klasy. Interfejs może zawierać jedynie metody. Dostęp do danych może odbywać się jedynie poprzez funkcje zdefiniowane w interfejsie. Dane dostępne poprzez specjalnie zdefiniowane metody nazywa się właściwościami (properties).
8 Interfejs COM Komponent może zawierać więcej niż jeden interfejs. Wielokrotne interfejsy mogą służyć rozszerzaniu funkcjonalności lub stanowić kolejne wersje komponentu. Database Recordset Fields DAOComp Compress3 Compress1 Compress2 Compress v.2.0 Compress v.1.0
9 Interfejs COM Gdy komponent został już udostępniony do ogólnego użytku, interfejs nie powinien być modyfikowany zarówno pod względem struktury (vtable), jak również funkcjonalności. Konieczność jego zmiany wymaga stworzenia nowego interfejsu.
10 Interfejs COM Interfejs nie jest unikalny w systemie. Kilka komponentów może zawierać ten sam interfejs (polimorfizm). Klient spodziewa się, że interfejs udostępniany przez komponent jest w pełni zrealizowany i może korzystać ze wszystkich metod. Jeżeli komponent udostępnia dany interfejs, musi on być w pełni zaimplementowany.
11 Interfejs COM COM definiuje dużą liczbę standardowych interfejsów. Wszystkie ich nazwy zaczynają się literą I: IClassFactory, IDispatch, IUnknown Taka forma nazewnictwa nie jest wymagana dla własnych interfejsów, jednak podobnie jak dla nazewnictwa klas świadczy o dobrym stylu programisty. Implementacja interfejsu najczęściej jest tą samą nazwą zaczynającą się od C: CCompress (implementacja interfejsu ICompress)
12 Interfejs COM W standardzie COM interfejs jest skonstruowany jako vtable. Ta tablica wskaźników do funkcji ma ściśle określony układ (standard binarny). Vtable ma identyczną strukturę jak dla klas abstrakcyjnych w C++. Dostęp do metod serwera COM następuje poprzez wskaźnik do vtable komponentu, a nie poprzez bezpośrednie wywoływanie funkcji. Client.exe Compress.dll ICompress pointer= Vtable pointer &pcomobj::compress CCompress COMObj::Compress
13 Komponent Każdy komponent spełniający wymagania standardu COM musi: wywodzić się z bazowego interfejsu IUnknown, który realizuje podstawową funkcjonalność każdego interfejsu, posiadać odpowiadający mu obiekt Class Factory odpowiedzialny tworzenie instancji komponentu. Ma on cechy typowego komponentu (wywodzi się z IUnknown), nie posiada jednak swojego obiektu Class Factory
14 IUnknown IUnknown jest standardowym interfejsem COM. Interfejs ten musi być zaimplementowany przez wszystkie obiekty COM. IUnknown definiuje 3 metody: QueryInterface() AddRef() Release()
15 IUnknown::QueryInterface() Sprawdza czy żądany przez klienta interfejs jest implementowany przez komponent Jeśli żądany interfejs istnieje, zwraca do niego wskaźnik. W przeciwnym przypadku zwracany jest kod błędu E_NOINTERFACE.
16 Klasa/interfejs IUnknown Cechy QueryInterface Podstawowe reguły QueryInterface Zestaw interfejsów komponentu nie może się zmienić w czasie w trakcie jego działania. Za pomocą każdego interfejsu w komponencie można zażądać dowolnego innego interfejsu w tym komponencie. Kolejne żądania tego samego interfejsu z jednego wątku klienta w ramach tej samej instancji komponentu powinny zwrócić ten sam wskaźnik. Z powyższych wynikają następujące cechy QueryInterface: Symetria (symmetry): dla istniejącego interfejsu IA operacja zażądania interfejsu IA powinna się powieść Zwrotność (reflexivity): jeśli dla istniejącego interfejsu IA żądanie interfejsu IB przebiegło poprawnie, to z interfejsu IB operacja zażądania interfejsu IA powinna się powieść Przechodniość (transitivity): jeśli dla istniejącego interfejsu IA żądanie interfejsu IB przebiegło poprawnie, a następnie dla interfejsu IB żądanie interfejsu IC przebiegło poprawnie, to z interfejsu IC operacja zażądania interfejsu IA powinna się powieść
17 IUnknown::AddRef(), IUnknown::Release() Metody AddRef() i Release() odpowiedzialne są za zarządzanie licznikiem odwołań (reference counter). Każdy obiekt, który łączy się z komponentem lub tworzy kopię wskaźnika do interfejsu powinien wywołać AddRef(), gdy natomiast nie zamierza dalej z niego korzystać Release(). Gdy licznik odwołań osiąga wartość 0, komponent może wywołać swój destruktor. QueryInterface() zwracając wskaźnik do interfejsu zwiększa licznik odwołań (wywołuje wewnętrznie AddRef()).
18 IUnknown Client.exe Compress.dll IUnknown pointer Wywołanie QueryInterface ICompress pointer IUnknown &pcomobj::queryinterface &pcomobj::addref &pcomobj::release ICompress &pcomobj::queryinterface &pcomobj::addref &pcomobj::release &pcomobj::compress CCompress COMObj::QueryInterface COMObj::AddRef COMObj::Release COMObj::Compress
19 Interfejs IUnknown class IUnknown public: virtual HRESULT stdcall QueryInterface( REFIID riid, void **ppvobject) = 0; virtual unsigned long stdcall AddRef() = 0; virtual unsigned long stdcall Release() = 0; ;
20 IClassFactory Każdy komponent COM posiada skojarzoną Class Factory. Jest on odpowiedzialny za konstrukcję komponentu i czas życia modułu. class IClassFactory : public IUnknown public: virtual HRESULT stdcall CreateInstance( IUnknown *punkouter, REFIID riid, void **ppvobject) = 0; virtual HRESULT stdcall LockServer( BOOL flock) = 0; );
21 Przykład Stopwatch serwer Klasa wirtualna IStopwatch Na przykładzie realizacji klasy CStopwatch przedstawione zostaną podstawowe elementy komponentu COM. Rozważmy następującą klasę abstrakcyjną: class CStopwatch public: virtual HRESULT stdcall Start() = 0; virtual HRESULT stdcall ElapsedTime(float *Time) = 0;
22 Przykład Stopwatch serwer Implementacja (klasa CStopwatch) ElapsedTime = StopCounter StartCounter Frequency class CStopwatchHFT : public CStopwatch public: CStopwatchHFT(); virtual ~CStopwatchHFT(); private: // The frequency of the counter // returned by QueryPerformanceCounter() LARGE_INTEGER m_nfrequency; Overhead // The counter value when the start method was last called. LARGE_INTEGER m_nstarttime; public: HRESULT stdcall Start(); HRESULT stdcall ElapsedTime(float *Time); ;
23 Przykład Stopwatch serwer Implementacja (klasa CStopwatch) CStopwatchHFT::CStopwatchHFT() // Initialize the member variables m_nstarttime.quadpart = 0; // Save the frequency of the performance counters QueryPerformanceFrequency ((LARGE_INTEGER*) &m_nfrequency); HRESULT stdcall CStopwatchHFT::Start() if (QueryPerformanceCounter((LARGE_INTEGER*) &m_nstarttime)) return S_OK; else return E_FAIL;
24 Przykład Stopwatch serwer Implementacja (klasa CStopwatch) HRESULT stdcall CStopwatchHF::ElapsedTime(float *Time) HRESULT hr; LARGE_INTEGER nstoptime; // Set the stop time immediately so that a minimum amount of // timer code is executed between the start and stop times if (!QueryPerformanceCounter((LARGE_INTEGER*) &nstoptime) (m_nstarttime.quadpart == 0)) // Either QPC failed or // start was not called before stop hr = E_FAIL; else *Time = (float) (nstoptime.quadpart - m_nstarttime.quadpart); *Time = (*Time / m_nfrequency.quadpart); hr = S_OK; return hr;
25 Przykład Stopwatch serwer Zarządzanie obiektem CStopwatch Klient nie zarządza bezpośrednio konstrukcją i zwalnianiem obiektu serwera. extern "C" HRESULT stdcall DllGetClassObject( LPVOID* ppv) *ppv = static_cast<cstopwatch*>(new CStopwatchHFT); return S_OK;
26 Przykład Stopwatch serwer Zarządzanie obiektem CStopwatch class CStopwatch public: unsigned long stdcall Release() =0; virtual HRESULT stdcall Start() =0; virtual HRESULT stdcall ElapsedTime(float *Time) =0; unsigned long stdcall CStopwatchHFT::Release() delete this; return 0;
27 Przykład Stopwatch serwer Moduł DLL zawierający CStopwatch extern "C" BOOL stdcall DllMain(HINSTANCE hinstance, DWORD dwreason, LPVOID /*lpreserved*/) return TRUE; LIBRARY "Timers.DLL" EXPORTS PRIVATE
28 Przykład Stopwatch klient // StopwatchClient.cpp : // Defines the entry point for the console application. // // std::out etc #include <iostream> #include "..\Timers\Stopwatch.h" #define TIMERSDLL "..\\Timers\\Timers.dll" typedef HRESULT ( stdcall *DLLGETCLASSOBJECT)(LPVOID* ppv);
29 Przykład Stopwatch klient // Instantiates a stopwatch object and returns it by reference HRESULT CreateInstance(void** ppv) HRESULT hr = E_FAIL; HINSTANCE hinstdll; DLLGETCLASSOBJECT DllGetClassObject; hinstdll = LoadLibrary(TIMERSDLL); if (hinstdll == NULL) std::cout << "Unable to load \"" TIMERSDLL "\"" << std::endl; else DllGetClassObject = (DLLGETCLASSOBJECT) GetProcAddress( hinstdll, "DllGetClassObject"); if (DllGetClassObject!= NULL) hr = DllGetClassObject(ppv); return hr;
30 Przykład Stopwatch klient int main(int argc, char* argv[]) float nelapsedtime; CStopwatch* pstopwatch = NULL; hr = CreateInstance((void**) &pstopwatch); if (!SUCCEEDED(hr)) std::cout << "ERROR: Unable to create Stopwatch!!"; else pstopwatch->start(); pstopwatch->elapsedtime(&nelapsedtime); std::cout << "The overhead time is " << nelapsedtime << std::endl; pstopwatch->release(); pstopwatch = NULL; return 0;
31 Przykład Stopwatch serwer Klasa/interfejs IUnknown class IStopwatch : public IUnknown public: // unsigned long stdcall Release() =0; virtual HRESULT stdcall Start() =0; virtual HRESULT stdcall ElapsedTime(float *Time) =0; class CStopwatchHFT : public IStopwatch... public: // IUnknown methods HRESULT stdcall QueryInterface( REFIID riid, void **ppvobject); unsigned long stdcall AddRef(); unsigned long stdcall Release();... ;
32 Przykład Stopwatch serwer Metoda QueryInterface() Komponent i każdy interfejs posiadają unikalny identyfikator (UUID): // EEBF6D1E-8EF1-4acf-9E5F-4D95E01D698A const IID IID_IStopwatch = 0xeebf6d1e, 0x8ef1, 0x4acf, 0x9e, 0x5f, 0x4d, 0x95, 0xe0, 0x1d, 0x69, 0x8a ; // 83DC3C f95-A2D1-CD11A8819E2E const CLSID CLSID_Stopwatch = 0x83dc3c46, 0x1259, 0x4f95, 0xa2, 0xd1, 0xcd, 0x11, 0xa8, 0x81, 0x9e, 0x2e ; Standardowe interfejsy posiadają predefiniowane UUID, np.: //IUnknown C
33 Przykład Stopwatch serwer Metoda QueryInterface() HRESULT stdcall CStopwatchHFT::QueryInterface( REFIID riid, void **ppvobject) HRESULT hr = S_OK; if (riid == IID_IUnknown) *ppvobject = static_cast<iunknown*>(static_cast<cstopwatch*>(this)); else if (riid == IID_IStopwatch) *ppvobject = static_cast<istopwatch*>(this); else ppvobject = NULL; hr = E_NOINTERFACE; if (SUCCEEDED(hr)) (static_cast<iunknown*>(*ppvobject))->addref(); return hr;
34 Przykład Stopwatch serwer Zarządzanie obiektem CStopwatch extern "C" HRESULT stdcall DllGetClassObject( REFCLSID rclsid, REFIID riid, LPVOID* ppv) HRESULT hr; if (rclsid == CLSID_Stopwatch) CStopwatchHFT* stopwatch = new CStopwatch; hr = stopwatch->queryinterface(riid, ppv); else hr = CLASS_E_CLASSNOTAVAILABLE; return hr;
35 Przykład Stopwatch serwer Metody AddRef(), Release() class CStopwatchHFT : public IStopwatch... private: // Reference counting long m_nreferencecount;... ; CStopwatchHFT::CStopwatchHFT () // Initialize the member variables m_nstarttime.quadpart = 0; m_nreferencecount = 0; // Save the frequency of the performance counters QueryPerformanceFrequency ((LARGE_INTEGER*) &m_nfrequency);
36 Przykład Stopwatch serwer Metody AddRef(), Release() unsigned long stdcall CStopwatchHFT::AddRef() return InterlockedIncrement( &m_nreferencecount ); unsigned long stdcall CStopwatchHFT::Release() if (InterlockedDecrement( &m_nreferencecount ) == 0) delete this; return 0; return m_nreferencecount;
37 Przykład Stopwatch serwer Metody AddRef(), Release() Zasady, których należy przestrzegać licznikiem odwołań do komponentu: w związku z 1. Gdy do zmiennej przypisujemy wskaźnik do interfejsu, AddRef() powinien zostać wywołany na rzecz tego interfejsu 2. Release() powinien zostać wywołany, gdy niezerowy wskaźnik do interfejsu wychodzi poza zasięg zmiennej, lub gdy zostaje przypisany nowy wskaźnik 3. Pominięcie niektórych wywołań AddRef()i Release() jest możliwe, gdy mamy dodatkowe informacje o czasie życia komponentu
38 Przykład Stopwatch klient // Instantiates a stopwatch object and returns it by reference HRESULT CreateInstance(REFCLSID rclsid, REFIID riid, void** ppv) HRESULT hr = E_FAIL; HINSTANCE hinstdll; DLLGETCLASSOBJECT DllGetClassObject; hinstdll = LoadLibrary(TIMERSDLL); if (hinstdll == NULL) std::cout << "Unable to load \"" TIMERSDLL "\"" << std::endl; else DllGetClassObject = (DLLGETCLASSOBJECT) GetProcAddress( hinstdll, "DllGetClassObject"); if (DllGetClassObject!= NULL) hr = DllGetClassObject(rclsid, riid, ppv); return hr;
39 Przykład Stopwatch klient int main(int argc, char* argv[]) float nelapsedtime; IUnknown* punknown = NULL; CStopwatch* pstopwatch = NULL; hr=createinstance(clsid_stopwatch, IID_IUnknown, (void**) &punknown); if (!SUCCEEDED(hr)) std::cout << "ERROR: Unable to create Stopwatch!!"; else hr=punknown->queryinterface(iid_istopwatch, (void**) &pstopwatch); if (!SUCCEEDED(hr)) std::cout << "ERROR: Unable to retrive IStopwatch!!"; else pstopwatch->start(); pstopwatch->elapsedtime(&nelapsedtime); std::cout << "The overhead time is " << nelapsedtime << std::endl; pstopwatch->release(); pstopwatch = NULL; punknown->release(); return 0;
40 Przykład Stopwatch serwer Komponent IClassFactory class CStopwatchClassFactory : public IClassFactory public: CStopwatchClassFactory(); virtual ~CStopwatchClassFactory(); private: // Reference counting long m_ncfreferencecount; public: // IUnknown methods HRESULT stdcall QueryInterface(REFIID riid, void **ppvobject); unsigned long stdcall AddRef(); unsigned long stdcall Release(); // IClassFactory HRESULT stdcall CreateInstance( IUnknown *punkouter, REFIID riid, void **ppvobject); HRESULT stdcall LockServer(BOOL flock); ;
41 Przykład Stopwatch serwer Komponent IClassFactory extern long g_nserverlockcount; CStopwatchClassFactory::CStopwatchClassFactory() m_ncfreferencecount = 0; CStopwatchClassFactory::~CStopwatchClassFactory() HRESULT stdcall CStopwatchClassFactory::QueryInterface( REFIID riid, void **ppvobject) HRESULT hr = S_OK; if (riid == IID_IUnknown) *ppvobject=static_cast<iunknown*>(static_cast<iclassfactory*>(this)); else if (riid == IID_IClassFactory) *ppvobject = static_cast<iclassfactory*>(this); else ppvobject = NULL; hr = E_NOINTERFACE; if (SUCCEEDED(hr)) (static_cast<iunknown*>(*ppvobject))->addref(); return hr;
42 Przykład Stopwatch serwer Komponent IClassFactory HRESULT stdcall CStopwatchClassFactory::CreateInstance( IUnknown *punkouter, REFIID riid, void **ppvobject ) HRESULT hr; CStopwatchHFT* pstopwatch = new CStopwatchHFT; if (punkouter!= NULL) return CLASS_E_NOAGGREGATION; hr = pstopwatch->queryinterface(riid, ppvobject); if (FAILED(hr)) delete pstopwatch; return hr; HRESULT stdcall CStopwatchClassFactory::LockServer( BOOL flock ) if (flock) InterlockedIncrement( &g_nserverlockcount ); else InterlockedDecrement( &g_nserverlockcount ); return S_OK;
43 Przykład Stopwatch serwer Komponent IClassFactory unsigned long stdcall CStopwatchClassFactory::AddRef() if(interlockedincrement( &m_ncfreferencecount ) == 1) InterlockedIncrement( &g_nserverlockcount ); return m_nreferencecount; unsigned long stdcall CStopwatchClassFactory::Release() if (InterlockedDecrement( &m_ncfreferencecount ) == 0) delete this; InterlockedDecrement( &g_nserverlockcount ); return 0; return m_nreferencecount;
44 Przykład Stopwatch serwer Zarządzanie licznikiem odwołań modułu unsigned long stdcall CStopwatchHFT::AddRef() if(interlockedincrement( &m_nreferencecount ) == 1) InterlockedIncrement( &g_nserverlockcount ); return m_nreferencecount; unsigned long stdcall CStopwatchHFT::Release() if (InterlockedDecrement( &m_nreferencecount ) == 0) delete this; InterlockedDecrement( &g_nserverlockcount ); return 0; return m_nreferencecount;
45 Przykład Stopwatch serwer Czas życia modułu Każdy moduł zawierający komponenty COM ma zaimplementowaną funkcję DllCanUnloadNow(). Informuje ona system czy dany moduł nie posiada już żadnych zaalokowanych komponentów i czy może być on usunięty. HRESULT stdcall DllCanUnloadNow(void) return (g_nserverlockcount == 0 )? S_OK : S_FALSE;
46 Przykład Stopwatch serwer Zarządzanie komponentem extern "C" HRESULT stdcall DllGetClassObject( REFCLSID rclsid, REFIID riid, LPVOID* ppv) HRESULT hr; if (rclsid == CLSID_Stopwatch) CStopwatchClassFactory* pstopwatchclassfactory = new CStopwatchClassFactory; hr = pstopwatchclassfactory->queryinterface(riid, ppv); if(failed(hr)) delete pstopwatchclassfactory; else hr = CLASS_E_CLASSNOTAVAILABLE; return hr;
47 Przykład Stopwatch serwer ; Timers.def : Declares the module parameters. LIBRARY "Timers.DLL" EXPORTS PRIVATE PRIVATE
48 Przykład Stopwatch klient HRESULT CreateInstance(REFCLSID rclsid, REFIID riid, void** ppv) HRESULT hr = E_FAIL; HINSTANCE hinstdll; DLLGETCLASSOBJECT DllGetClassObject; IClassFactory* pclassfactory; hinstdll = LoadLibrary(TIMERSDLL); if (hinstdll == NULL) std::cout << "Unable to load \"" TIMERSDLL "\"" << std::endl; else DllGetClassObject = (DLLGETCLASSOBJECT) GetProcAddress( hinstdll, "DllGetClassObject"); if (DllGetClassObject!= NULL) hr=dllgetclassobject(rclsid, IID_IClassFactory, (void**)&pclassfactory); if (SUCCEEDED(hr)) hr=pclassfactory->createinstance(null, riid, ppv); pclassfactory->release(); pclassfactory=null; return hr;
49 Funkcje systemowe zarządzające obiektami COM Do zarządzania obiektami COM istnieją specjalne funkcje systemowe odpowiedzialne za ładowanie bibliotek, inicjalizację i deinicjalizację obiektów. Korzystają one z informacji zawartych w rejestrze systemowym, który wiąże identyfikator obiektu z właściwym plikiem i sposobem jego uruchomienia.
50 CoInitialize(), CoInitializeEx(), CoUninitialize() CoInitialize(), CoInitializeEx(): Inicjalizuje bibliotekę COM w bieżącym wątku. Specyfikuje model współpracy dla biblioteki (wielowątkowy, jednowątkowy,...) CoUninitialize(): Deaktyewuje bibliotekę COM w bieżącym wątku.
51 CoCreateInstance() Na podstawie ustawień w rejestrze ładuje moduł COM, inicjalizuje wskazany obiekt i zwraca jego wskaźnik. HRESULT CoCreateInstance( REFCLSID rclsid, //Class identifier (CLSID) of the object LPUNKNOWN punkouter, //Pointer to controlling IUnknown DWORD dwclscontext, //Context for running executable code REFIID riid, //Reference to the identifier of the interface LPVOID * ppv //Address of output variable that receives // the interface pointer requested in riid ); rclsid riid dwclscontext np. CLSID_Stopwatch - najczęściej IDD_IUnknown - sposób uruchomienia serwera
52 Przykład Stopwatch klient Funkcje systemowe COM int main(int argc, char* argv[]) HRESULT hr; IStopwatch* pstopwatch = NULL; CoInitialize(NULL); hr = CoCreateInstance( CLSID_Stopwatch, NULL, CLSCTX_ALL, IID_IStopwatch, (void**) &pstopwatch); if (!SUCCEEDED(hr)) std::cout << "ERROR: Unable to create Stopwatch!!\n"; else pstopwatch->start();... pstopwatch->elapsedtime(&nelapsedtime); std::cout << "The overhead time is " << nelapsedtime << std::endl; pstopwatch->release(); pstopwatch = NULL; CoUninitialize(); return 0;
Agregacja. Wykorzystanie innego komponentu bez użycia agregacji. Simple calculator. Extended calculator
Agregacja Agregacja Agregacja jest to wykorzystywanie przez komponent nadrzędny innego komponentu w taki sposób, że udostępnia jego interfejs jako własny. Aby komponent mógł być użyty jako agregat, metody
Henryk Budzisz. materiały przygotowane w ramach projektu ZPORR nr POKL.04.01.01-00-449/08-00
Henryk Budzisz ZPORR nr POKL.04.01.01-00-449/08-00 Koszalin 2009 Technologia COM Wprowadzenie COM Interfejsy Technologia COM w Visual C++ Globally Unique Identifiers (GUIDs) Biblioteka COM Tworzenie obiektu
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
4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu.
Zgłaszanie błędów HRESULT Każda metoda interfejsu COM zwraca informację o błędzie w postaci typu HRESULT (long int). Struktura reprezentacji bitowej HRESULT podzielona jest na 4 sekcje: 1 bit błędu 4 bity
//////////////////////////////////////////////////////////// // Kalkulator (prosty) - wersja agregowalna import "unknwn.idl";
/ Kalkulator (prosty) - wersja agregowalna import "unknwn.idl"; Interface ICalc uuid(892753ed-d14e-4d2f-b812-041e0c01f5f3), helpstring("kalkulator (prosty), wersja agregowalna"), interface ICalc : IUnknown
Zdarzenia (events, connection points)
(events, connection points) Serwer komunikuje się z klientem za pomocą zgłoszenia zdarzenia. Pozwala to na asynchroniczną pracę serwera, który zgłasza zaistnienie określonego stanu za pomocą serii zdarzeń.
Microsoft Interface Definition Language
Microsoft Interface Definition Language IDL IDL (Interface Definition Language) kompilowany jest przez MIDL.exe: Tworzy pliki nagłówkowe klas abstrakcyjnych dla zdefiniowanych w pliku *.idl interfejsów
Technologie COM i ActiveX COM - Component Object Model
Technologie COM i COM - Component Object Model Jarosław Francik COM - Common Object Model Program - monolit Program składnikowy Składnik A Składnik B Składnik C Składnik D Składnik E Architektura składnikowa
Interfejs IUnknown. Każdy obiekt COM musi implementować interfejs IUnknown, który zawiera trzy metody:
Plan wykładu 1. Technologia COM (DCOM) wprowadzenie, korzystanie z obiektu COM, program klienta, schemat programu serwera. 2. Porównanie DCOM, CORBA i RMI. Wprowadzenie Opracowana przez Microsoft technologia
Komunikacja i wymiana danych
Budowa i oprogramowanie komputerowych systemów sterowania Wykład 10 Komunikacja i wymiana danych Metody wymiany danych Lokalne Pliki txt, csv, xls, xml Biblioteki LIB / DLL DDE, FastDDE OLE, COM, ActiveX
Zaawansowane programowanie w języku C++ Programowanie obiektowe
Zaawansowane programowanie w języku C++ Programowanie obiektowe Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
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
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
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:
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
Structured storage, Monikers, Running Object Table
Structured storage, Monikers, Running Object Table Structured storage Structured storage jest sposobem zorganizowanego zapisywania danych w pliku. Struktura danych ma postać drzewa i obiektów danych podobną
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego. Iwona Kochaoska
Programowanie współbieżne Wykład 8 Podstawy programowania obiektowego Iwona Kochaoska Programowanie Obiektowe Programowanie obiektowe (ang. object-oriented programming) - metodyka tworzenia programów komputerowych,
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
// LISTING #2 DRUGIE PODEJŚCIE
OD KLASY C++ DO SERWERA COM: PROGRAMY PRZYKŁADOWE DO WYKŁADU PROGRAMOWANIE SKŁADNIKOWE W MODELU COM OPRACOWANIE: JAROSŁAW FRANCIK LISTING #1 PIERWSZE PODEJŚCIE LISTING #2 DRUGIE PODEJŚCIE #include
Oracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -
// LISTING #2 DRUGIE PODEJŚCIE
OD KLASY C++ DO SERWERA COM: PROGRAMY PRZYKŁADOWE DO WYKŁADU PROGRAMOWANIE SKŁADNIKOWE W MODELU COM OPRACOWANIE: JAROSŁAW FRANCIK // LISTING #1 PIERWSZE PODEJŚCIE // LISTING #2 DRUGIE PODEJŚCIE #include
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
Zdalne uruchamianie obiektów COM
Zdalne uruchamianie obiektów COM Zdalne uruchamianie obiektów COM Obiekty COM nie wymagają szczególnej adaptacji, aby mogły być uruchamiane zdalnie. Komponent musi być zarejestrowany w systemie klienta
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
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,
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
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
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
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 Przeciążanie operatorów Słowo
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ń
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
Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch
INFORMATOR TECHNICZNY WONDERWARE Informator Techniczny nr 60 04-12-2002 Podstawy wykorzystania bibliotek DLL w skryptach oprogramowania InTouch Wstęp PoniŜsza dokumentacja oparta na przykładach stworzonych
Typy zmiennych proste i złożone. Programowanie komputerów. Tablica. Złożone typy zmiennych. Klasa. Struktura
Programowanie komputerów Programowanie obiektowe. Typy zmiennych proste i złożone Typy zmiennych "wbudowane", tj. identyfikowane przez słowa kluczowe, są określane jako proste: int short long float double
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
Laboratorium nr 12. Temat: Struktury, klasy. Zakres laboratorium:
Zakres laboratorium: definiowanie struktur terminologia obiektowa definiowanie klas funkcje składowe klas programy złożone z wielu plików zadania laboratoryjne Laboratorium nr 12 Temat: Struktury, klasy.
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
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
Dzisiejszy wykład. Wzorce projektowe. Visitor Client-Server Factory Singleton
Dzisiejszy wykład Wzorce projektowe Visitor Client-Server Factory Singleton 1 Wzorzec projektowy Wzorzec nazwana generalizacja opisująca elementy i relacje rozwiązania powszechnie występującego problemu
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
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
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
PHP 5 język obiektowy
PHP 5 język obiektowy Wprowadzenie Klasa w PHP jest traktowana jak zbiór, rodzaj różnych typów danych. Stanowi przepis jak stworzyć konkretne obiekty (instancje klasy), jest definicją obiektów. Klasa reprezentuje
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ę
Serwery Statefull i Stateless
Serwery Statefull i Stateless Wszystkie serwery aplikacji są określone jako stateless podczas projektowania. Te aplikacje nie przetrzymują stałego połączenia z klientem. Wysyłają one pakiety danych na
Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać)
Języki i Paradygmaty Programowania Laboratorium 1 Obiekty i klasy C++ Wstęp do wiadomości teoretycznych (nie, nie jest to masło maślane ani wstęp, wstępów proszę cierpliwie czytać) UWAGA! Umiejętność tworzenia
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:
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
Programowanie 2. Język C++. Wykład 9.
9.1 Ukrywanie metod, metody nadpisane... 1 9.2 Metody wirtualne, wirtualny destruktor... 2 9.3 Metody czysto wirtualne... 6 9.4 Klasy abstrakcyjne... 7 9.5 Wielodziedziczenie... 9 9.1 Ukrywanie metod,
Component Object Model laboratorium 2013 K.M. Ocetkiewicz, T. Goluch
Component Model laboratorium 2013 K.M. Ocetkiewicz, T. Goluch 1. Wstęp COM jest standardem tworzenia komponentów w systemie Windows. Standard ten jest binarny dotyczy skompilowanego kodu (a nie języka
Programowanie składnikowe. Programowanie składnikowe w modelu COM. COM - Component Object Model. wprowadzenie. Programowanie składnikowe
Programowanie składnikowe w modelu COM wprowadzenie Jarosław Francik COM - Component Object Model Programowanie składnikowe Programowanie składnikowe 1 Program - monolit 1 Program składnikowy Składnik
Zdalne wywołania procedur. Jarosław Kuchta Programowanie Współbieżne
Zdalne wywołania procedur Jarosław Kuchta Programowanie Współbieżne Podstawy RPC Remote Procedure Call Wywołanie procedur jednego procesu z innego procesu. Proces wywoływany serwer Proces wywołujący -
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja
Listy powiązane zorientowane obiektowo
Listy powiązane zorientowane obiektowo Aby zilustrować potęgę polimorfizmu, przeanalizujmy zorientowaną obiektowo listę powiązaną. Jak zapewne wiesz, lista powiązana jest strukturą danych, zaprojektowaną
PARADYGMATY PROGRAMOWANIA Wykład 3
PARADYGMATY PROGRAMOWANIA Wykład 3 Definiowanie operatorów i ich przeciążanie Przykłady zastosowania operatorów: a) operator podstawienia ( = ) obiektów o złożonej strukturze, b) operatory działania na
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
Java Język programowania
Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 3 - polimorfizm. dr inż. Robert Nowak - p. 1/14 Powtórzenie Powtórzenie: klasy autonomiczne: konstruktor, konstruktor kopiujacy, operator przypisania, destruktor
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
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
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
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
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
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ół
Język programowania. Andrzej Bobyk http://www.alfabeta.lublin.pl. www.alfabeta.lublin.pl/jp/
Język programowania Andrzej Bobyk http://www.alfabeta.lublin.pl www.alfabeta.lublin.pl/jp/ Literatura K. Reisdorph: Delphi 6 dla każdego. Helion, Gliwice 2001 A. Grażyński, Z. Zarzycki: Delphi 7 dla każdego.
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
Qt sygnały i designer
Qt sygnały i designer Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2015 Bogdan
Zarządzanie pamięcią
System COM, aby mógł śledzić zmiany w alokacji pamięcią podczas wywołań, obsługuje pamięć niezależnie od Runtime Library (RT) C++ i korzysta ze sterty bieżącego procesu. Do obsługi pamięci COM, zdefiniowany
Programowanie obiektowe
Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.
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
Wstęp do programowania obiektowego. Wykład 2
Wstęp do programowania obiektowego Wykład 2 1 CECHY I KONCEPCJA PROGRAMOWANIA OBIEKTOWEGO 2 Cechy programowania obiektowego Dla wielu problemów podejście obiektowe jest zgodne z rzeczywistością (łatwe
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;
wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy
i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ
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
wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Wstęp do programowania obiektowego, wykład 7
Wstęp do programowania obiektowego, wykład 7 Klasy i funkcje abstrakcyjne Przeciążanie funkcji Definiowanie i interpretacja złożonych typów danych w C++ Wskaźniki do funkcji 1 KLASA ABSTRAKCYJNA 2 Klasa
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.
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ć
Singleton. Cel: Przykład: Zastosowanie: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej.
1/8 Singleton Cel: Zapewnienie, że klasa ma tylko jedną instancję i dostarczenie globalnego dostępu do niej. Przykład: Niekiedy ważne jest, aby tworzyć tylko jedną instancję jakiejś klasy. Globalne zmienne
Programowanie II. Lista 3. Modyfikatory dostępu plik TKLientBanku.h
Programowanie II Lista 3 Modyfikatory dostępu plik TKLientBanku.h plik z funkcją main Przyjaźń Dziedziczenie Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące. Jest to
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
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,
Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C
Temat 1. Podstawy Środowiska Xcode i wprowadzenie do języka Objective-C Wymagana wiedza wstępna: 1) Student musi 1) Znać język C 2) Znać zasady zarządzania pamięcią w komputerze 3) Znać pojecie wskaźnika
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
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Szablony klas, zastosowanie szablonów w programach
Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do
Podział programu na moduły
Materiały Podział programu na moduły Informatyka Szczegółowe informacje dotyczące wymagań odnośnie podziału na moduły: http://www.cs.put.poznan.pl/wcomplak/bfiles/c_w_5.pdf Podział programu na moduły pozwala
Programowanie w języku C++
Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi
Zaawansowane programowanie w C++ (PCP)
Zaawansowane programowanie w C++ (PCP) Wykład 4 - wzorce projektowe. dr inż. Robert Nowak - p. 1/18 Powtórzenie klasy autonomiczne tworzenie nowych typów: dziedziczenie i agregacja dziedziczenie: przedefiniowywanie
.NET Klasy, obiekty. ciąg dalszy
.NET Klasy, obiekty ciąg dalszy Przeciążanie operatorów 1 W języku C# istnieje możliwość zdefiniowania funkcjonalności dużej części operatorów dla typów stworzonych przez użytkownika. Dzięki takiemu zabiegowi,
Programowanie obiektowe w języku
Programowanie obiektowe w języku C++ Stanisław Gepner sgepner@meil.pw.edu.pl Dziedziczenie Wstęp Zacznijmy od przykładu Przykład rolniczy Każde zwierzątko wydaje dźwięk Każde się tak samo porusza Musimy
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
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
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
Co to jest klasa? Z programistycznego punktu widzenia klasa stanowi typ danych, który odwzorowuje wspólne cechy jakiegoś obiektu.
.NET Klasy, obiekty Klasa i obiekt Każdy obiektowy język programowania daje programiście możliwość tworzenia nowych typów danych. Nowy typ danych definiuje się poprzez zdefiniowanie klasy. Co to jest klasa?
Praca z aplikacją designer
Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Kurs: Copyright c 2014 Bogdan Kreczmer Niniejszy dokument
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)
Polimorfizm, metody wirtualne i klasy abstrakcyjne
Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,
Języki i paradygmaty programowania Wykład 2. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18
Dariusz Wardowski dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/18 Literatura Języki i paradygmaty programowania Wykład 2 1. C. S. Horstman, G. Cornell, core Java 2 Podstawy, Helion 2003
Lista dwukierunkowa - przykład implementacji destruktorów
Lista dwukierunkowa - przykład implementacji destruktorów Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2006 2008 Bogdan Kreczmer Niniejszy dokument zawiera
Projektowanie obiektowe. Roman Simiński Wzorce projektowe Wybrane wzorce strukturalne
Projektowanie obiektowe Roman Simiński roman.siminski@us.edu.pl www.siminskionline.pl Wzorce projektowe Wybrane wzorce strukturalne Fasada Facade Pattern 2 Wzorzec Fasada Facade Pattern koncepcja 3 Wzorzec