Design Patterns : Elements of Reusable Object-Oriented Software


Design Patterns: Elements of Reusable Object-Oriented Software



Download 4,06 Mb.
Pdf ko'rish
bet127/288
Sana07.04.2022
Hajmi4,06 Mb.
#535140
1   ...   123   124   125   126   127   128   129   130   ...   288
Bog'liq
GOF Design Patterns
Копасов Игорь (1), Т Е Л Е Ф О Н О Г Р А М М А ЗООМ, 20201546 п.80 использ., Oliy matematika, презентация индустрия мутакил иши, 3000 most common words in English, Sun'iy intellekt, 1638511850 AE, 1638511850 AE, Hisob-raqan (Patent boji), O'RQ-600 23-MODDA, Talabaning haftalik hisoboti namunasi , iikinchi hafta amaliyoti., Таҳлил тест
Design Patterns: Elements of Reusable Object-Oriented Software 
177 
4.
Using multiple inheritance.
You can use multiple inheritance in C++ to 
combine an interface with its implementation [Mar91]. For example, a class 
can inherit publicly from Abstraction and privately from a 
ConcreteImplementor. But because this approach relies on static 
inheritance, it binds an implementation permanently to its interface. 
Therefore you can't implement a true Bridge with multiple inheritance

at 
least not in C++. 
Sample Code 
The following C++ code implements the Window/WindowImp example from the Motivation 
section. The Window class defines the window abstraction for client applications: 
class Window { 
public: 
Window(View* contents); 
// requests handled by window 
virtual void DrawContents(); 
virtual void Open(); 
virtual void Close(); 
virtual void Iconify(); 
virtual void Deiconify(); 
// requests forwarded to implementation 
virtual void SetOrigin(const Point& at); 
virtual void SetExtent(const Point& extent); 
virtual void Raise(); 
virtual void Lower(); 
virtual void DrawLine(const Point&, const Point&); 
virtual void DrawRect(const Point&, const Point&); 
virtual void DrawPolygon(const Point[], int n); 
virtual void DrawText(const char*, const Point&); 
protected: 
WindowImp* GetWindowImp(); 
View* GetView(); 
private: 
WindowImp* _imp; 


Design Patterns: Elements of Reusable Object-Oriented Software 
178 
View* _contents; // the window's contents 
}; 
Window maintains a reference to a WindowImp, the abstract class that declares 
an interface to the underlying windowing system. 
class WindowImp { 
public: 
virtual void ImpTop() = 0; 
virtual void ImpBottom() = 0; 
virtual void ImpSetExtent(const Point&) = 0; 
virtual void ImpSetOrigin(const Point&) = 0; 
virtual void DeviceRect(Coord, Coord, Coord, Coord) = 0; 
virtual void DeviceText(const char*, Coord, Coord) = 0; 
virtual void DeviceBitmap(const char*, Coord, Coord) = 0; 
// lots more functions for drawing on windows... 
protected: 
WindowImp(); 
}; 
Subclasses of Window define the different kinds of windows the application might 
use, such as application windows, icons, transient windows for dialogs, floating 
palettes of tools, and so on. 
For example, ApplicationWindow will implement DrawContents to draw the View 
instance it stores: 
class ApplicationWindow : public Window { 
public: 
// ... 
virtual void DrawContents(); 
}; 
void ApplicationWindow::DrawContents () { 
GetView()->DrawOn(this); 

IconWindow stores the name of a bitmap for the icon it displays... 
class IconWindow : public Window { 
public: 



Download 4,06 Mb.

Do'stlaringiz bilan baham:
1   ...   123   124   125   126   127   128   129   130   ...   288




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2022
ma'muriyatiga murojaat qiling

    Bosh sahifa
davlat universiteti
ta’lim vazirligi
axborot texnologiyalari
maxsus ta’lim
zbekiston respublikasi
guruh talabasi
O’zbekiston respublikasi
nomidagi toshkent
o’rta maxsus
davlat pedagogika
texnologiyalari universiteti
toshkent axborot
xorazmiy nomidagi
rivojlantirish vazirligi
pedagogika instituti
Ўзбекистон республикаси
tashkil etish
haqida tushuncha
таълим вазирлиги
vazirligi muhammad
O'zbekiston respublikasi
toshkent davlat
махсус таълим
respublikasi axborot
kommunikatsiyalarini rivojlantirish
vazirligi toshkent
saqlash vazirligi
fanidan tayyorlagan
bilan ishlash
Toshkent davlat
sog'liqni saqlash
uzbekistan coronavirus
respublikasi sog'liqni
coronavirus covid
koronavirus covid
vazirligi koronavirus
qarshi emlanganlik
covid vaccination
risida sertifikat
sertifikat ministry
vaccination certificate
Ishdan maqsad
fanidan mustaqil
matematika fakulteti
o’rta ta’lim
haqida umumiy
fanlar fakulteti
pedagogika universiteti
ishlab chiqarish
moliya instituti
fanining predmeti