6 folii na stronÄ
6 folii na stronÄ
6 folii na stronÄ
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