Design Patterns : Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software

Download 4,06 Mb.
Pdf ko'rish
Hajmi4,06 Mb.
1   ...   199   200   201   202   203   204   205   206   ...   288
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 
An internal ListIterator.
As a final example, let's look at a possible 
implementation of aninternal or passive ListIterator class. Here the 
iteratorcontrols the iteration, and it applies an operation to each element. 
The issue in this case is how to parameterize the iterator with theoperation 
we want to perform on each element. C++ does not supportanonymous functions 
or closures that other languages provide for thistask. There are at least 
two options: (1) Pass in a pointer to afunction (global or static), or (2) 
rely on subclassing. In the firstcase, the iterator calls the operation 
passed to it at each point inthe iteration. In the second case, the iterator 
calls an operationthat a subclass overrides to enact specific behavior. 
Neither option is perfect. Often you want to accumulate state duringthe 
iteration, and functions aren't well-suited to that; we would haveto use 
static variables to remember the state. AnIterator subclass provides us 
with a convenient place tostore the accumulated state, like in an instance 
variable. Butcreating a subclass for every different traversal is more work. 
Here's a sketch of the second option, which uses subclassing. We callthe 
internal iterator a ListTraverser. 
class ListTraverser { 
ListTraverser(List* aList); 
bool Traverse(); 
virtual bool ProcessItem(const Item&) = 0; 
ListIterator _iterator; 
ListTraverser takes a List instance as a parameter.Internally it uses an 
external ListIterator to do thetraversal. Traverse starts the traversal 
and callsProcessItem for each item. The internal iterator can choose 
toterminate a traversal by returning false fromProcessItem. Traverse 
returns whether the traversalterminated prematurely. 
ListTraverser::ListTraverser ( List* aList )
: _iterator(aList) { } 

Download 4,06 Mb.

Do'stlaringiz bilan baham:
1   ...   199   200   201   202   203   204   205   206   ...   288

Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan © 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