12.04.2014 Views

6 folii na stronę

6 folii na stronę

6 folii na stronę

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Zawieranie i agregacja<br />

Zawieranie (Containment)<br />

• Powtórne użycie (reuse)<br />

• Dziedziczenie implementacji<br />

• Przesłanianie tożsamości obiektów<br />

Zawieranie = Containment<br />

Agregacja = Aggregation<br />

ICalcScientific<br />

ICalc<br />

CalcScientific<br />

ICalc<br />

CalcSimple<br />

IUnknown<br />

IUnknown<br />

Institute of Informatics, Silesian University of Technology, Gliwice, Poland<br />

Institute of Informatics, Silesian University of Technology, Gliwice, Poland<br />

Agregacja (Aggregation)<br />

Punkty połączeń<br />

IUnknown<br />

SERWER<br />

ICalcScientific<br />

CalcScientific<br />

INondelegatingUnknown<br />

IUnknown<br />

IConnectionPoint<br />

ICalc<br />

CalcSimple<br />

KLIENT<br />

ujście<br />

(sink)<br />

IConnectionPoint<br />

Institute of Informatics, Silesian University of Technology, Gliwice, Poland<br />

Institute of Informatics, Silesian University of Technology, Gliwice, Poland<br />

Institute of Informatics, Silesian University of Technology, Gliwice, Poland<br />

Punkty połączeń<br />

interface IConnectionPoint : IUnknown<br />

{ // Wymień dostępne punkty połączenia<br />

HRESULT GetConnectionInterface([out] IID __RPC_FAR *pIID);<br />

// Podaj pojemnik punktów połączenia<br />

HRESULT GetConnectionPointContainer(<br />

[out] IConnectionPointContainer *ppCPC);<br />

// Przyjmij wskaźnik do mojego ujścia<br />

HRESULT Advise(<br />

[in] IUnknown *pUnkSink,<br />

[out] DWORD *pdwCookie);<br />

// Nie wywołuj już mojego ujścia<br />

HRESULT U<strong>na</strong>dvise([in] DWORD dwCookie);<br />

// Wymień połączenia<br />

HRESULT EnumConnections([out] IEnumConnections *ppEnum);<br />

};<br />

Institute of Informatics, Silesian University of Technology, Gliwice, Poland<br />

Punkty połączeń<br />

IConnectionPointContainer : public IUnknown<br />

{<br />

// Wymień dostępne punkty połączenia<br />

HRESULT EnumConnectionPoints([out] IEnumConnectionPoints<br />

*ppEnum);<br />

};<br />

// Z<strong>na</strong>jdź wskazany punkt połączenia<br />

HRESULT FindConnectionPoint([in] REFIID riid,<br />

[out] IConnectionPoint *ppCP);<br />

1

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!