Design Patterns : Elements of Reusable Object-Oriented Software


Design Patterns: Elements of Reusable Object-Oriented Software



Download 4,06 Mb.
Pdf ko'rish
bet156/288
Sana07.04.2022
Hajmi4,06 Mb.
#535140
1   ...   152   153   154   155   156   157   158   159   ...   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 
225 
virtual void Next(GlyphContext&); 
virtual bool IsDone(GlyphContext&); 
virtual Glyph* Current(GlyphContext&); 
virtual void Insert(Glyph*, GlyphContext&); 
virtual void Remove(GlyphContext&); 
protected: 
Glyph(); 
}; 
The Character subclass just stores a character code:
class Character : public Glyph { 
public: 
Character(char); 
virtual void Draw(Window*, GlyphContext&); 
private: 
char _charcode; 
}; 
To keep from allocating space for a font attribute in every glyph, we'll store 
the attribute extrinsically in a GlyphContext object. GlyphContext acts as a 
repository of extrinsic state. It maintains a compact mapping between a glyph 
and its font (and any other graphical attributes it might have) in different 
contexts. Any operation that needs to know the glyph's font in a given context 
will have a GlyphContext instance passed to it as a parameter. The operation can 
then query the GlyphContext for the font in that context. The context depends 
on the glyph's location in the glyph structure. Therefore Glyph's child iteration 
and manipulation operations must update the GlyphContext whenever they're used. 
class GlyphContext { 
public: 
GlyphContext(); 
virtual ~GlyphContext(); 
virtual void Next(int step = 1); 
virtual void Insert(int quantity = 1); 
virtual Font* GetFont(); 
virtual void SetFont(Font*, int span = 1); 
private: 


Design Patterns: Elements of Reusable Object-Oriented Software 
226 
int _index; 
BTree* _fonts; 
}; 
GlyphContext must be kept informed of the current position in the glyph structure 
during traversal. GlyphContext::Next increments _index as the traversal proceeds. 
Glyph subclasses that have children (e.g., Row and Column) must implement Next 
so that it calls GlyphContext::Next at each point in the traversal. 
GlyphContext::GetFont uses the index as a key into a BTree structure that stores 
the glyph-to-font mapping. Each node in the tree is labeled with the length of 
the string for which it gives font information. Leaves in the tree point to a 
font, while interior nodes break the string into substrings, one for each child. 
Consider the following excerpt from a glyph composition: 
The BTree structure for font information might look like 



Download 4,06 Mb.

Do'stlaringiz bilan baham:
1   ...   152   153   154   155   156   157   158   159   ...   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
vaccination certificate
sertifikat ministry
Ishdan maqsad
fanidan mustaqil
matematika fakulteti
o’rta ta’lim
haqida umumiy
fanlar fakulteti
pedagogika universiteti
ishlab chiqarish
moliya instituti
fanining predmeti