Knowledge

Decorator pattern

Source đź“ť

431:. Flyweight objects are divided into two components: an invariant component that is shared between all flyweight objects; and a variant, decorated component that may be partially shared or completely unshared. This partitioning of the flyweight object is intended to reduce memory consumption. The decorators are typically cached and reused as well. The decorators will all contain a common reference to the shared, invariant object. If the decorated state is only partially variant, then the decorators can also be shared to some degree - though care must be taken not to alter their state while they're being used. iOS's UITableView implements the flyweight pattern in this manner - a tableview's reusable cells are decorators that contains a references to a common tableview row object, and the cells are cached / reused. 477:. A facade is designed to simply interface with the complex system it encapsulates, but it does not add functionality to the system. However, the wrapping of a complex system provides a space that may be used to introduce new functionality based on the coordination of subcomponents in the system. For example, a facade pattern may unify many different languages dictionaries under one multi-language dictionary interface. The new interface may also provide new functions for translating words between languages. This is a hybrid pattern - the unified interface provides a space for augmentation. Think of decorators as not being limited to wrapping individual objects, but capable of wrapping clusters of objects in this hybrid approach as well. 130: 294: 277:, classes cannot be created at runtime, and it is typically not possible to predict, at design time, what combinations of extensions will be needed. This would mean that a new class would have to be made for every possible combination. By contrast, decorators are objects, created at runtime, and can be combined on a per-use basis. The I/O Streams implementations of both 405:. For example, a text editing application might have a button to highlight text. On button press, the individual text glyphs currently selected will all be wrapped in decorators that modify their draw() function, causing them to be drawn in a highlighted manner (a real implementation would probably also use a demarcation system to maximize efficiency). 461:
networks of multiple inheritance, which is memory-inefficient and at a certain point just cannot scale. Likewise, attempting to implement the same functionality with properties bloats each instance of the object with unnecessary properties. For the above reasons decorators are often considered a memory-efficient alternative to subclassing.
460:
rather than a top-down, hierarchical approach to extending functionality. A decorator makes it possible to add or alter behavior of an interface at run-time. They can be used to wrap objects in a multilayered, arbitrary combination of ways. Doing the same with subclasses means implementing complex
8050:
The Decorator Pattern is a pattern described in the Design Patterns Book. It is a way of apparently modifying an object's behavior, by enclosing it inside a decorating object with a similar interface. This is not to be confused with Python Decorators, which is a language feature for dynamically
412:
can be implemented using decorators instead of subclassed objects encapsulating the changing functionality. The use of decorators in this manner makes the State object's internal state and functionality more compositional and capable of handling arbitrary complexity.
364:
can decorate existing windows. If the functionality needs to be added to all Windows, the base class can be modified. On the other hand, sometimes (e.g., using external frameworks) it is not possible, legal, or convenient to modify the base class.
439:
Applying combinations of decorators in diverse ways to a collection of objects introduces some problems interfacing with the collection in a way that takes full advantage of the functionality added by the decorators. The use of an
464:
Decorators can also be used to specialize objects which are not subclassable, whose characteristics need to be altered at runtime (as mentioned elsewhere), or generally objects that are lacking in some needed functionality.
54:, by allowing the functionality of a class to be extended without being modified. Decorator use can be more efficient than subclassing, because an object's behavior can be augmented without defining an entirely new object. 551: 2201:
Two options are presented here: first, a dynamic, runtime-composable decorator (has issues with calling decorated functions unless proxied explicitly) and a decorator that uses mixin inheritance.
232:
Note that decorators and the original class object share a common set of features. In the previous diagram, the operation() method was available in both the decorated and undecorated versions.
72:; these describe how to solve recurring design problems and design flexible and reusable object-oriented software—that is, objects which are easier to implement, change, test, and reuse. 448:
patterns can be useful in such cases. Interfacing with multiple layers of decorators poses additional challenges and logic of Adapters and Visitors must be designed to account for that.
408:
Applying or removing decorators based on changes in state is another common use case. Depending on the scope of the state, decorators can be applied or removed in bulk. Similarly, the
88:
When using subclassing, different subclasses extend a class in different ways. But an extension is bound to the class at compile-time and can't be changed at run-time.
229:
This pattern is designed so that multiple decorators can be stacked on top of each other, each time adding a new functionality to the overridden method(s).
4857:
The next Java example illustrates the use of decorators using coffee making scenario. In this example, the scenario only includes cost and ingredients.
9734: 9689: 9671: 340:
subclass now poses a problem, because it has effectively created a new kind of window. If one wishes to add border support to many but not
3521:
This example demonstrates a static Decorator implementation, which is possible due to C++ ability to inherit from the template argument.
9886: 207: 8039:
The Decorator Pattern (or an implementation of this design pattern in Python - as the above example) should not be confused with
4710:
The output of this program is "simple window, including vertical scrollbars, including horizontal scrollbars". Notice how the
9786: 141:
The decorator pattern can be used to extend (decorate) the functionality of a certain object statically, or in some cases at
274: 278: 401:
Adding or removing decorators on command (like a button press) is a common UI pattern, often implemented along with the
10411: 9853: 352:, etc. This problem gets worse with every new feature or window subtype to be added. For the decorator solution, a new 263: 142: 5473:
instance which is fully decorated (with milk and sprinkles), and calculate cost of coffee and prints its ingredients:
243:) or class inheritance which is shared by the decorators and the decorated object. In the previous example, the class 10519: 10436: 9718: 9655: 35: 9586:
Cost: 1.0; Ingredients: Coffee Cost: 1.5; Ingredients: Coffee, Milk Cost: 1.7; Ingredients: Coffee, Milk, Sprinkles
8538:
Cost: 1.0; Ingredients: Coffee Cost: 1.5; Ingredients: Coffee, Milk Cost: 1.7; Ingredients: Coffee, Milk, Sprinkles
8040: 5711:
Cost: 1.0; Ingredients: Coffee Cost: 1.5; Ingredients: Coffee, Milk Cost: 1.7; Ingredients: Coffee, Milk, Sprinkles
20: 10384: 10209: 10008: 490: 47: 9772:
Freeman, Eric; Freeman, Elisabeth; Sierra, Kathy; Bates, Bert (2004). Hendrickson, Mike; Loukides, Mike (eds.).
10102: 4586:
instance which is fully decorated (i.e., with vertical and horizontal scrollbars), and prints its description:
10232: 10192: 9879: 10202: 10197: 457: 240: 235:
The decoration features (e.g., methods, properties, or other members) are usually defined by an interface,
50:, as it allows functionality to be divided between classes with unique areas of concern as well as to the 10477: 10315: 9615: 317:
interface, and assume this class has no functionality for adding scrollbars. One could create a subclass
255: 27: 10092: 9773: 10300: 10295: 10122: 559: 262:, and the change affects all instances of the original class; decorating can provide new behavior at 134: 39: 10340: 10305: 10272: 9922: 9872: 146: 43: 9675: 3964:
The following Java example illustrates the use of decorators using the window/scrolling scenario.
10242: 10214: 10152: 10137: 10117: 10053: 9895: 10219: 10147: 10097: 9932: 9710: 9704: 9647: 9641: 10498: 10401: 10247: 10227: 10172: 51: 10310: 10267: 10262: 10252: 10162: 8: 10350: 10335: 10330: 10187: 10072: 10018: 4823:"simple window, including vertical scrollbars, including horizontal scrollbars" 550: 81:
Responsibilities should be added to (and removed from) an object dynamically at run-time.
9702: 332:
Now, assume one also desires the ability to add borders to windows. Again, the original
157:
the original class. This wrapping could be achieved by the following sequence of steps:
10472: 10451: 10360: 10257: 10107: 10000: 9952: 9914: 9728: 149:, provided some groundwork is done at design time. This is achieved by designing a new 6647:, shows us how to pipeline decorators to dynamically add many behaviors in an object: 10142: 9985: 9970: 9942: 9937: 9859: 9782: 9714: 9651: 9595: 428: 422: 84:
A flexible alternative to subclassing for extending functionality should be provided.
4862:// The interface Coffee defines the functionality of Coffee implemented by decorator 10441: 10182: 10127: 10048: 10038: 10028: 10023: 9620: 9610: 302: 516:
Converts one interface to another so that it matches what the client is expecting
489:
can be used when the wrapper must respect a particular interface and must support
388:
method that are required in this scenario, in order to decorate a window control.
10431: 10377: 10355: 10132: 10087: 10058: 10033: 10013: 9960: 9927: 9903: 9600: 9229:$ "Bike: '{upgraded.GetDetails()}' Cost: {upgraded.GetPrice()}" 511: 486: 445: 441: 402: 154: 68: 9832: 6644: 247:
is inherited by both the ConcreteComponent and the subclasses that descend from
10416: 10277: 9980: 9965: 9605: 4814:// assert that the description indeed includes horizontal + vertical scrollbars 529: 524:
Dynamically adds responsibility to the interface by wrapping the original code
494: 474: 282: 9808: 9748: 4418:// The second concrete decorator which adds horizontal scrollbar functionality 129: 10513: 10237: 10082: 10043: 9990: 562: 409: 42:, dynamically, without affecting the behavior of other instances of the same 10493: 10456: 10345: 10320: 10112: 9864: 4256:// The first concrete decorator which adds vertical scrollbar functionality 554:
A sample UML class and sequence diagram for the Decorator design pattern.
259: 681:
This implementation is based on the pre C++98 implementation in the book.
313:
to it, as appropriate. Assume windows are represented by instances of the
119:
objects to extend the functionality of an object dynamically at run-time.
10446: 10421: 10406: 10325: 10157: 293: 497:
when an easier or simpler interface to an underlying object is desired.
5005:// Abstract decorator class - note that it implements Coffee interface 10426: 9749:"The Decorator design pattern - Problem, Solution, and Applicability" 9690:"The Decorator Pattern, Why We Stopped Using It, and the Alternative" 310: 309:
of the window's contents, one may wish to add horizontal or vertical
306: 9246:
Bike: 'Aluminium Bike + Sport Package + Security Package' Cost: 111
6655:
Demonstrated decorators in a world of a 10x10 grid of values 0-255.
4630:// Create a decorated Window with horizontal and vertical scrollbars 111:
perform additional functionality before/after forwarding a request.
9860:
Decorator pattern description from the Portland Pattern Repository
2190: 9703:
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (1994).
9706:
Design Patterns: Elements of Reusable Object-Oriented Software
4725:
Below is the JUnit test class for the Test Driven Development
269:
This difference becomes most important when there are several
4910:// Extension of a simple coffee without any extra ingredients 236: 9809:"The Decorator design pattern - Structure and Collaboration" 4097:// abstract decorator class - note that it implements Window 3959: 104:
implement the interface of the extended (decorated) object (
46:. The decorator pattern is often useful for adhering to the 9646:. Reading, MA: Addison-Wesley Publishing Co, Inc. pp.  8043:, a language feature of Python. They are different things. 4011:// Implementation of a simple Window without any scrollbars 610:
The sequence diagram shows the run-time interactions: The
434: 4852: 4714:
method of the two decorators first retrieve the decorated
9771: 5239:// Overriding methods defined in the abstract superclass 5317:// Decorator WithSprinkles mixes sprinkles onto coffee. 3516: 329:
objects. At this point, either solution would be fine.
9781:. Vol. 1. O'Reilly. pp. 243, 252, 258, 260. 5000:
classes, including the decorator classes themselves.
4996:
The following classes contain the decorators for all
4092:
classes, including the decorator classes themselves.
4088:
The following classes contain the decorators for all
66:
design pattern is one of the twenty-three well-known
121:See also the UML class and sequence diagram below. 91: 38:that allows behavior to be added to an individual 545: 10511: 485:As an alternative to the decorator pattern, the 108:) transparently by forwarding all requests to it 145:, independently of other instances of the same 225:method(s) whose behavior needs to be modified. 75: 9880: 5164:// Decorator WithMilk mixes milk into coffee. 4568:", including horizontal scrollbars" 480: 416: 221:In the ConcreteDecorator class, override any 16:Design pattern in object-oriented programming 9894: 9733:: CS1 maint: multiple names: authors list ( 5708:The output of this program is given below: 4406:", including vertical scrollbars" 608:(before/after forwarding a request to it). 473:The decorator pattern also can augment the 254:The decorator pattern is an alternative to 9887: 9873: 468: 451: 7915:# Now, build up a pipeline of decorators: 6643:The following Python example, taken from 3960:First example (window/scrolling scenario) 622:objects to extend the functionality of a 325:that adds this functionality to existing 273:ways of extending functionality. In some 5104:// Implementing methods of the interface 4904:// Returns the ingredients of the coffee 549: 435:Obstacles of interfacing with decorators 292: 128: 4853:Second example (coffee making scenario) 10512: 9672:"How to Implement a Decorator Pattern" 4005:// Returns a description of the Window 585:transparent (invisible) to clients of 396: 301:As an example, consider a window in a 9868: 9639: 5469:Here's a test program that creates a 4669:// Print the Window's description 4582:Here's a test program that creates a 427:Decoration is also often used in the 275:object-oriented programming languages 21:the concept of "decorators" in Python 3517:Static Decorator (Mixin Inheritance) 2204: 1247:", with milk of richness " 344:windows, one must create subclasses 5320:// Note it extends CoffeeDecorator. 5167:// Note it extends CoffeeDecorator. 577:) and forwards all requests to it ( 285:incorporate the decorator pattern. 115:This allows working with different 13: 9696: 9640:Gamma, Erich; et al. (1995). 391: 297:UML diagram for the window example 14: 10531: 9847: 4889:// Returns the cost of the coffee 3079:"authentification done" 761:// Drinks which can be decorated. 652:after forwarding the request to 600:) implement additional behavior ( 9833:"DecoratorPattern - Python Wiki" 4526:// Draw the horizontal scrollbar 2189:Full example can be tested on a 640:, which forwards the request to 534:Provides a simplified interface 321:that provides them, or create a 10385:Enterprise Integration Patterns 8938:" + Security Package" 3619:"A circle of radius " 2376:"A circle of radius " 356:is created. Any combination of 258:. Subclassing adds behavior at 92:What solution does it describe? 48:Single Responsibility Principle 9825: 9801: 9765: 9741: 9682: 9664: 9633: 8092:# Extension of a simple coffee 8051:modifying a function or class. 6645:Python Wiki - DecoratorPattern 4364:// Draw the vertical scrollbar 3784:" which is colored " 2550:" which is colored " 604:) that should be added to the 546:UML class and sequence diagram 195:constructor to initialize the 1: 9626: 4733:org.junit.Assert.assertEquals 4133:// the Window being decorated 3969:// The Window interface class 569:class maintains a reference ( 380:interface, which defines the 368:In the previous example, the 288: 9076:" + Sport Package" 6633://Client: 2000 4790:HorizontalScrollBarDecorator 4645:HorizontalScrollBarDecorator 4439:HorizontalScrollBarDecorator 4424:HorizontalScrollBarDecorator 1631:" spoons of sugar" 573:) to the decorated object ( 540: 7: 10478:Portland Pattern Repository 9709:. Addison Wesley. pp.  9616:Aspect-oriented programming 9589: 8046:Second to the Python Wiki: 6630://Concrete Decorator 2: 500 6627://Concrete Decorator 1: 500 6288:"Concrete Decorator 2: 6084:"Concrete Decorator 1: 5556:"; Ingredients: " 3238:"authorized done" 2083:The program output is like 818:"Drinking Coffee" 671: 76:What problems can it solve? 57: 28:object-oriented programming 10: 10536: 9775:Head First Design Patterns 8644:"Aluminium Bike" 8055: 7063:# yes: these are all 10x10 6624://Concrete Component: 1000 4799:VerticalScrollBarDecorator 4654:VerticalScrollBarDecorator 4277:VerticalScrollBarDecorator 4262:VerticalScrollBarDecorator 2815:"Basic WEB page" 481:Alternatives to Decorators 420: 417:Usage in Flyweight objects 336:class has no support. The 18: 10486: 10465: 10394: 10369: 10286: 10171: 10071: 9999: 9951: 9913: 9902: 6638: 5844:"Concrete Component: 4074:"simple window" 884:"Drinking Soda" 350:ScrollingWindowWithBorder 124: 10520:Software design patterns 10103:Event-based asynchronous 9896:Software design patterns 9256: 8545: 8059: 6649: 5718: 5475: 5002: 4859: 4727: 4588: 4094: 3966: 3523: 2683: 2208: 2196: 2085: 683: 429:Flyweight design pattern 358:ScrollingWindowDecorator 323:ScrollingWindowDecorator 169:class (see UML diagram); 19:Not to be confused with 10009:Chain of responsibility 9481:", Sprinkles" 9252: 8332:", Sprinkles" 5455:", Sprinkles" 4769:testWindowDecoratorTest 4517:drawHorizontalScrollBar 4502:drawHorizontalScrollBar 3954: 469:Usage in enhancing APIs 452:Architectural relevance 362:BorderedWindowDecorator 354:BorderedWindowDecorator 10148:Scheduled-task pattern 10098:Double-checked locking 9856:implementation in Java 8053: 5714: 1445:" ice cubes" 698:// Beverage interface. 676: 614:object works through 555: 403:Command design pattern 376:classes implement the 298: 266:for selected objects. 161:Subclass the original 138: 10499:Architectural pattern 10402:Christopher Alexander 8541: 8048: 6621:// Result: #quanton81 4355:drawVerticalScrollBar 4340:drawVerticalScrollBar 579:component.operation() 553: 456:Decorators support a 296: 132: 52:Open-Closed Principle 10311:Dependency injection 10268:Inversion of control 10263:Data transfer object 10163:Thread-local storage 8140:# Abstract decorator 3439:AuthenticatedWebPage 2995:AuthenticatedWebPage 2983:AuthenticatedWebPage 410:State design pattern 10316:Intercepting filter 8008:VisibilityDecorator 7714:VisibilityDecorator 4754:WindowDecoratorTest 4718:'s description and 4597:DecoratedWindowTest 4463:windowToBeDecorated 4448:windowToBeDecorated 4301:windowToBeDecorated 4286:windowToBeDecorated 4235:windowToBeDecorated 4196:windowToBeDecorated 4169:windowToBeDecorated 4163:windowToBeDecorated 4148:windowToBeDecorated 4127:windowToBeDecorated 3993:// Draws the Window 1619:", with " 1433:", with " 664:and returns to the 397:Applying decorators 180:pointer as a field; 10473:The Hillside Group 10258:Data access object 10108:Guarded suspension 10093:Binding properties 9412:", Milk" 9343:"Coffee" 8707:"Carbon" 8551:WikiDesignPatterns 8275:", Milk" 8131:"Coffee" 6658:""" 6652:""" 6579:ConcreteDecorator2 6558:ConcreteDecorator1 6174:ConcreteDecorator2 5970:ConcreteDecorator1 5535:"Cost: " 5305:", Milk" 4982:"Coffee" 4722:it with a suffix. 1601:callComponentDrink 1415:callComponentDrink 1229:callComponentDrink 1025:callComponentDrink 556: 493:behavior, and the 299: 139: 10507: 10506: 10301:Business delegate 10233:Publish–subscribe 10067: 10066: 9854:Decorator Pattern 9788:978-0-596-00712-6 9596:Composite pattern 8179:@decorated_coffee 8041:Python Decorators 6423:ConcreteComponent 5787:ConcreteComponent 3394:AuthorizedWebPage 3154:AuthorizedWebPage 3142:AuthorizedWebPage 2205:Dynamic Decorator 1538:BeverageDecorator 1484:BeverageDecorator 1352:BeverageDecorator 1298:BeverageDecorator 1166:BeverageDecorator 1112:BeverageDecorator 935:BeverageDecorator 920:BeverageDecorator 899:BeverageDecorator 660:, which performs 538: 537: 423:Flyweight pattern 32:decorator pattern 10527: 10306:Composite entity 10183:Front controller 9923:Abstract factory 9911: 9910: 9889: 9882: 9875: 9866: 9865: 9841: 9840: 9829: 9823: 9822: 9820: 9819: 9805: 9799: 9798: 9796: 9795: 9780: 9769: 9763: 9762: 9760: 9759: 9745: 9739: 9738: 9732: 9724: 9700: 9694: 9693: 9686: 9680: 9679: 9674:. Archived from 9668: 9662: 9661: 9637: 9621:Immutable object 9611:Abstract factory 9578: 9575: 9572: 9569: 9566: 9563: 9560: 9557: 9554: 9551: 9548: 9545: 9542: 9539: 9536: 9533: 9530: 9527: 9524: 9521: 9518: 9515: 9512: 9509: 9506: 9503: 9500: 9497: 9494: 9491: 9488: 9485: 9482: 9479: 9476: 9473: 9470: 9467: 9464: 9461: 9458: 9455: 9452: 9449: 9446: 9443: 9440: 9437: 9434: 9431: 9428: 9425: 9422: 9419: 9416: 9413: 9410: 9407: 9404: 9401: 9398: 9395: 9392: 9389: 9386: 9383: 9380: 9377: 9374: 9371: 9368: 9365: 9362: 9359: 9356: 9353: 9350: 9347: 9344: 9341: 9338: 9335: 9332: 9329: 9326: 9323: 9320: 9317: 9314: 9311: 9308: 9305: 9302: 9299: 9296: 9293: 9290: 9287: 9284: 9281: 9278: 9275: 9272: 9269: 9266: 9263: 9260: 9239: 9236: 9233: 9230: 9227: 9224: 9221: 9218: 9215: 9212: 9209: 9206: 9203: 9200: 9197: 9194: 9191: 9188: 9185: 9182: 9179: 9176: 9173: 9170: 9167: 9164: 9161: 9158: 9155: 9152: 9149: 9146: 9143: 9140: 9137: 9134: 9131: 9128: 9125: 9122: 9119: 9116: 9113: 9110: 9107: 9104: 9101: 9098: 9095: 9092: 9089: 9086: 9083: 9080: 9077: 9074: 9071: 9068: 9065: 9062: 9059: 9056: 9053: 9050: 9047: 9044: 9041: 9038: 9035: 9032: 9029: 9026: 9023: 9020: 9017: 9014: 9011: 9008: 9005: 9002: 8999: 8996: 8993: 8990: 8987: 8984: 8981: 8978: 8975: 8972: 8969: 8966: 8963: 8960: 8957: 8954: 8951: 8948: 8945: 8942: 8939: 8936: 8933: 8930: 8927: 8924: 8921: 8918: 8915: 8912: 8909: 8906: 8903: 8900: 8897: 8894: 8891: 8888: 8885: 8882: 8879: 8876: 8873: 8870: 8867: 8864: 8861: 8858: 8855: 8852: 8849: 8846: 8843: 8840: 8837: 8834: 8831: 8828: 8825: 8822: 8819: 8816: 8813: 8810: 8807: 8804: 8801: 8798: 8795: 8792: 8789: 8786: 8783: 8780: 8777: 8774: 8771: 8768: 8765: 8762: 8759: 8756: 8753: 8750: 8747: 8744: 8741: 8738: 8735: 8732: 8729: 8726: 8723: 8720: 8717: 8714: 8711: 8708: 8705: 8702: 8699: 8696: 8693: 8690: 8687: 8684: 8681: 8678: 8675: 8672: 8669: 8666: 8663: 8660: 8657: 8654: 8651: 8648: 8645: 8642: 8639: 8636: 8633: 8630: 8627: 8624: 8621: 8618: 8615: 8612: 8609: 8606: 8603: 8600: 8597: 8594: 8591: 8588: 8585: 8582: 8579: 8576: 8573: 8570: 8567: 8564: 8561: 8558: 8555: 8552: 8549: 8531: 8528: 8525: 8522: 8519: 8516: 8513: 8510: 8507: 8504: 8501: 8498: 8495: 8492: 8489: 8486: 8483: 8480: 8477: 8474: 8471: 8468: 8465: 8462: 8459: 8456: 8453: 8450: 8447: 8444: 8441: 8438: 8435: 8432: 8429: 8426: 8423: 8420: 8417: 8414: 8411: 8408: 8405: 8402: 8399: 8396: 8393: 8390: 8387: 8384: 8381: 8378: 8375: 8372: 8369: 8366: 8363: 8360: 8357: 8354: 8351: 8348: 8345: 8342: 8339: 8336: 8333: 8330: 8327: 8324: 8321: 8318: 8315: 8312: 8309: 8306: 8303: 8300: 8297: 8294: 8291: 8288: 8285: 8282: 8279: 8276: 8273: 8270: 8267: 8264: 8261: 8258: 8255: 8252: 8249: 8246: 8243: 8240: 8237: 8234: 8231: 8228: 8225: 8222: 8219: 8216: 8213: 8212:decorated_coffee 8210: 8207: 8204: 8201: 8198: 8195: 8194:decorated_coffee 8192: 8189: 8186: 8183: 8180: 8177: 8174: 8171: 8168: 8165: 8162: 8161:decorated_coffee 8159: 8156: 8153: 8150: 8147: 8144: 8141: 8138: 8135: 8132: 8129: 8126: 8123: 8120: 8117: 8114: 8111: 8108: 8105: 8102: 8099: 8096: 8093: 8090: 8087: 8084: 8081: 8078: 8075: 8072: 8069: 8066: 8063: 8030: 8027: 8024: 8021: 8018: 8015: 8012: 8009: 8006: 8003: 8000: 7997: 7994: 7991: 7988: 7985: 7982: 7979: 7976: 7973: 7970: 7967: 7964: 7961: 7958: 7955: 7952: 7949: 7946: 7943: 7940: 7937: 7934: 7931: 7928: 7925: 7922: 7919: 7916: 7913: 7910: 7907: 7904: 7901: 7898: 7895: 7892: 7889: 7886: 7883: 7880: 7877: 7874: 7871: 7868: 7865: 7862: 7859: 7856: 7853: 7850: 7847: 7844: 7841: 7838: 7835: 7832: 7829: 7826: 7823: 7820: 7817: 7814: 7811: 7808: 7805: 7802: 7799: 7796: 7793: 7790: 7787: 7784: 7781: 7778: 7775: 7772: 7769: 7766: 7763: 7760: 7757: 7754: 7751: 7748: 7745: 7742: 7739: 7736: 7733: 7730: 7727: 7724: 7721: 7718: 7715: 7712: 7709: 7706: 7703: 7700: 7697: 7694: 7691: 7688: 7685: 7682: 7679: 7676: 7673: 7670: 7667: 7664: 7661: 7658: 7655: 7652: 7649: 7646: 7643: 7640: 7637: 7634: 7631: 7628: 7625: 7622: 7619: 7616: 7613: 7610: 7607: 7604: 7601: 7598: 7595: 7592: 7589: 7586: 7583: 7580: 7577: 7574: 7571: 7568: 7565: 7562: 7559: 7556: 7553: 7550: 7547: 7544: 7541: 7538: 7535: 7532: 7529: 7526: 7523: 7520: 7517: 7514: 7511: 7508: 7505: 7502: 7499: 7496: 7493: 7490: 7487: 7484: 7481: 7478: 7475: 7472: 7469: 7466: 7463: 7460: 7457: 7454: 7451: 7448: 7445: 7442: 7439: 7436: 7433: 7430: 7427: 7424: 7421: 7418: 7415: 7412: 7409: 7406: 7403: 7400: 7397: 7394: 7391: 7388: 7385: 7382: 7379: 7376: 7373: 7370: 7367: 7364: 7361: 7358: 7355: 7352: 7349: 7346: 7343: 7340: 7337: 7334: 7331: 7328: 7325: 7322: 7319: 7316: 7313: 7310: 7307: 7304: 7301: 7298: 7295: 7292: 7289: 7286: 7283: 7280: 7277: 7274: 7271: 7268: 7265: 7262: 7259: 7256: 7253: 7250: 7247: 7244: 7241: 7238: 7235: 7232: 7229: 7226: 7223: 7220: 7217: 7214: 7211: 7208: 7205: 7202: 7199: 7196: 7193: 7190: 7187: 7184: 7181: 7178: 7175: 7172: 7169: 7166: 7163: 7160: 7157: 7154: 7151: 7148: 7145: 7142: 7139: 7136: 7133: 7130: 7127: 7124: 7121: 7118: 7115: 7112: 7109: 7106: 7103: 7100: 7097: 7094: 7091: 7088: 7085: 7082: 7079: 7076: 7073: 7070: 7067: 7064: 7061: 7058: 7055: 7052: 7049: 7046: 7043: 7040: 7037: 7034: 7031: 7028: 7025: 7022: 7019: 7016: 7013: 7010: 7007: 7004: 7001: 6998: 6995: 6992: 6989: 6986: 6983: 6980: 6977: 6974: 6971: 6968: 6965: 6962: 6959: 6956: 6953: 6950: 6947: 6944: 6941: 6938: 6935: 6932: 6929: 6926: 6923: 6920: 6917: 6914: 6911: 6908: 6905: 6902: 6899: 6896: 6893: 6890: 6887: 6884: 6881: 6878: 6875: 6872: 6869: 6866: 6863: 6860: 6857: 6854: 6851: 6848: 6845: 6842: 6839: 6836: 6833: 6830: 6827: 6824: 6821: 6818: 6815: 6812: 6809: 6806: 6803: 6800: 6797: 6794: 6791: 6788: 6785: 6782: 6779: 6776: 6773: 6770: 6767: 6764: 6761: 6758: 6755: 6752: 6749: 6746: 6743: 6740: 6737: 6734: 6731: 6728: 6725: 6722: 6719: 6716: 6713: 6710: 6707: 6704: 6701: 6698: 6695: 6692: 6689: 6686: 6683: 6680: 6677: 6674: 6671: 6668: 6665: 6662: 6659: 6656: 6653: 6634: 6631: 6628: 6625: 6622: 6619: 6616: 6613: 6610: 6607: 6604: 6601: 6598: 6595: 6592: 6589: 6586: 6583: 6580: 6577: 6574: 6571: 6568: 6565: 6562: 6559: 6556: 6553: 6550: 6547: 6544: 6541: 6538: 6535: 6532: 6529: 6526: 6523: 6520: 6517: 6514: 6511: 6508: 6505: 6502: 6499: 6496: 6493: 6490: 6487: 6484: 6481: 6478: 6475: 6472: 6469: 6466: 6463: 6460: 6457: 6454: 6451: 6448: 6445: 6442: 6439: 6436: 6433: 6430: 6427: 6424: 6421: 6418: 6415: 6412: 6409: 6406: 6403: 6400: 6397: 6394: 6391: 6388: 6385: 6382: 6379: 6376: 6373: 6370: 6367: 6364: 6361: 6358: 6355: 6352: 6349: 6346: 6343: 6340: 6337: 6334: 6331: 6328: 6325: 6322: 6319: 6316: 6313: 6310: 6307: 6304: 6301: 6298: 6295: 6292: 6289: 6286: 6283: 6280: 6277: 6274: 6271: 6268: 6265: 6262: 6259: 6256: 6253: 6250: 6247: 6244: 6241: 6238: 6235: 6232: 6229: 6226: 6223: 6220: 6217: 6214: 6211: 6208: 6205: 6202: 6199: 6196: 6193: 6190: 6187: 6184: 6181: 6178: 6175: 6172: 6169: 6166: 6163: 6160: 6157: 6154: 6151: 6148: 6145: 6142: 6139: 6136: 6133: 6130: 6127: 6124: 6121: 6118: 6115: 6112: 6109: 6106: 6103: 6100: 6097: 6094: 6091: 6088: 6085: 6082: 6079: 6076: 6073: 6070: 6067: 6064: 6061: 6058: 6055: 6052: 6049: 6046: 6043: 6040: 6037: 6034: 6031: 6028: 6025: 6022: 6019: 6016: 6013: 6010: 6007: 6004: 6001: 5998: 5995: 5992: 5989: 5986: 5983: 5980: 5977: 5974: 5971: 5968: 5965: 5962: 5959: 5956: 5953: 5950: 5947: 5944: 5941: 5938: 5935: 5932: 5929: 5926: 5923: 5920: 5917: 5914: 5911: 5908: 5905: 5902: 5899: 5896: 5893: 5890: 5887: 5884: 5881: 5878: 5875: 5872: 5869: 5866: 5863: 5860: 5857: 5854: 5851: 5848: 5845: 5842: 5839: 5836: 5833: 5830: 5827: 5824: 5821: 5818: 5815: 5812: 5809: 5806: 5803: 5800: 5797: 5794: 5791: 5788: 5785: 5782: 5779: 5776: 5773: 5770: 5767: 5764: 5761: 5758: 5755: 5752: 5749: 5746: 5743: 5740: 5737: 5734: 5731: 5728: 5725: 5722: 5704: 5701: 5698: 5695: 5692: 5689: 5686: 5683: 5680: 5677: 5674: 5671: 5668: 5665: 5662: 5659: 5656: 5653: 5650: 5647: 5644: 5641: 5638: 5635: 5632: 5629: 5626: 5623: 5620: 5617: 5614: 5611: 5608: 5605: 5602: 5599: 5596: 5593: 5590: 5587: 5584: 5581: 5578: 5575: 5572: 5569: 5566: 5563: 5560: 5557: 5554: 5551: 5548: 5545: 5542: 5539: 5536: 5533: 5530: 5527: 5524: 5521: 5518: 5515: 5512: 5509: 5506: 5503: 5500: 5497: 5494: 5491: 5488: 5485: 5482: 5479: 5472: 5465: 5462: 5459: 5456: 5453: 5450: 5447: 5444: 5441: 5438: 5435: 5432: 5429: 5426: 5423: 5420: 5417: 5414: 5411: 5408: 5405: 5402: 5399: 5396: 5393: 5390: 5387: 5384: 5381: 5378: 5375: 5372: 5369: 5366: 5363: 5360: 5357: 5354: 5351: 5348: 5345: 5342: 5339: 5336: 5333: 5330: 5327: 5324: 5321: 5318: 5315: 5312: 5309: 5306: 5303: 5300: 5297: 5294: 5291: 5288: 5285: 5282: 5279: 5276: 5273: 5270: 5267: 5264: 5261: 5258: 5255: 5252: 5249: 5246: 5243: 5240: 5237: 5234: 5231: 5228: 5225: 5222: 5219: 5216: 5213: 5210: 5207: 5204: 5201: 5198: 5195: 5192: 5189: 5186: 5183: 5180: 5177: 5174: 5171: 5168: 5165: 5162: 5159: 5156: 5153: 5150: 5147: 5144: 5141: 5138: 5135: 5132: 5129: 5126: 5123: 5120: 5117: 5114: 5111: 5108: 5105: 5102: 5099: 5096: 5093: 5090: 5087: 5084: 5081: 5078: 5075: 5072: 5069: 5066: 5063: 5060: 5057: 5054: 5051: 5048: 5045: 5042: 5039: 5036: 5033: 5030: 5027: 5024: 5021: 5018: 5015: 5012: 5009: 5006: 4999: 4992: 4989: 4986: 4983: 4980: 4977: 4974: 4971: 4968: 4965: 4962: 4959: 4956: 4953: 4950: 4947: 4944: 4941: 4938: 4935: 4932: 4929: 4926: 4923: 4920: 4917: 4914: 4911: 4908: 4905: 4902: 4899: 4896: 4893: 4890: 4887: 4884: 4881: 4878: 4875: 4872: 4869: 4866: 4863: 4845: 4842: 4839: 4836: 4833: 4830: 4827: 4824: 4821: 4818: 4815: 4812: 4809: 4806: 4803: 4800: 4797: 4794: 4791: 4788: 4785: 4782: 4779: 4776: 4773: 4770: 4767: 4764: 4761: 4758: 4755: 4752: 4749: 4746: 4743: 4740: 4737: 4734: 4731: 4717: 4713: 4706: 4703: 4700: 4697: 4694: 4691: 4688: 4685: 4682: 4679: 4676: 4673: 4670: 4667: 4664: 4661: 4658: 4655: 4652: 4649: 4646: 4643: 4640: 4637: 4634: 4631: 4628: 4625: 4622: 4619: 4616: 4613: 4610: 4607: 4604: 4601: 4598: 4595: 4592: 4585: 4578: 4575: 4572: 4569: 4566: 4563: 4560: 4557: 4554: 4551: 4548: 4545: 4542: 4539: 4536: 4533: 4530: 4527: 4524: 4521: 4518: 4515: 4512: 4509: 4506: 4503: 4500: 4497: 4494: 4491: 4488: 4485: 4482: 4479: 4476: 4473: 4470: 4467: 4464: 4461: 4458: 4455: 4452: 4449: 4446: 4443: 4440: 4437: 4434: 4431: 4428: 4425: 4422: 4419: 4416: 4413: 4410: 4407: 4404: 4401: 4398: 4395: 4392: 4389: 4386: 4383: 4380: 4377: 4374: 4371: 4368: 4365: 4362: 4359: 4356: 4353: 4350: 4347: 4344: 4341: 4338: 4335: 4332: 4329: 4326: 4323: 4320: 4317: 4314: 4311: 4308: 4305: 4302: 4299: 4296: 4293: 4290: 4287: 4284: 4281: 4278: 4275: 4272: 4269: 4266: 4263: 4260: 4257: 4254: 4251: 4248: 4245: 4242: 4239: 4236: 4233: 4230: 4227: 4224: 4221: 4218: 4215: 4212: 4209: 4206: 4203: 4200: 4197: 4194: 4191: 4188: 4185: 4182: 4179: 4176: 4173: 4170: 4167: 4164: 4161: 4158: 4155: 4152: 4149: 4146: 4143: 4140: 4137: 4134: 4131: 4128: 4125: 4122: 4119: 4116: 4113: 4110: 4107: 4104: 4101: 4098: 4091: 4084: 4081: 4078: 4075: 4072: 4069: 4066: 4063: 4060: 4057: 4054: 4051: 4048: 4045: 4042: 4039: 4036: 4033: 4030: 4027: 4024: 4021: 4018: 4015: 4012: 4009: 4006: 4003: 4000: 3997: 3994: 3991: 3988: 3985: 3982: 3979: 3976: 3973: 3970: 3950: 3947: 3944: 3941: 3938: 3935: 3932: 3929: 3926: 3923: 3920: 3917: 3914: 3911: 3908: 3905: 3902: 3899: 3896: 3893: 3890: 3887: 3884: 3881: 3878: 3875: 3872: 3869: 3866: 3863: 3860: 3857: 3854: 3851: 3848: 3845: 3842: 3839: 3836: 3833: 3830: 3827: 3824: 3821: 3818: 3815: 3812: 3809: 3806: 3803: 3800: 3797: 3794: 3791: 3788: 3785: 3782: 3779: 3776: 3773: 3770: 3767: 3764: 3761: 3758: 3755: 3752: 3749: 3746: 3743: 3740: 3737: 3734: 3731: 3728: 3725: 3722: 3719: 3716: 3713: 3710: 3707: 3704: 3701: 3698: 3695: 3692: 3689: 3686: 3683: 3680: 3677: 3674: 3671: 3668: 3665: 3662: 3659: 3656: 3653: 3650: 3647: 3644: 3641: 3638: 3635: 3632: 3629: 3626: 3623: 3620: 3617: 3614: 3611: 3608: 3605: 3602: 3599: 3596: 3593: 3590: 3587: 3584: 3581: 3578: 3575: 3572: 3569: 3566: 3563: 3560: 3557: 3554: 3551: 3548: 3545: 3542: 3539: 3536: 3533: 3530: 3529:<iostream> 3527: 3512: 3509: 3506: 3503: 3500: 3497: 3494: 3491: 3488: 3485: 3482: 3479: 3476: 3473: 3470: 3467: 3464: 3461: 3458: 3455: 3452: 3449: 3446: 3443: 3440: 3437: 3434: 3431: 3428: 3425: 3422: 3419: 3416: 3413: 3410: 3407: 3404: 3401: 3398: 3395: 3392: 3389: 3386: 3383: 3380: 3377: 3374: 3371: 3368: 3365: 3362: 3359: 3356: 3353: 3350: 3347: 3344: 3341: 3338: 3335: 3332: 3329: 3326: 3323: 3320: 3317: 3314: 3311: 3308: 3305: 3302: 3299: 3296: 3293: 3290: 3287: 3284: 3281: 3280:WebPageDecorator 3278: 3275: 3272: 3269: 3266: 3263: 3260: 3257: 3254: 3251: 3248: 3245: 3242: 3239: 3236: 3233: 3230: 3227: 3224: 3221: 3218: 3215: 3212: 3209: 3206: 3203: 3200: 3197: 3194: 3191: 3188: 3187:WebPageDecorator 3185: 3182: 3179: 3176: 3173: 3170: 3167: 3164: 3161: 3158: 3155: 3152: 3149: 3148:WebPageDecorator 3146: 3143: 3140: 3137: 3134: 3131: 3128: 3125: 3122: 3121:WebPageDecorator 3119: 3116: 3115:authenticateUser 3113: 3110: 3107: 3104: 3101: 3098: 3095: 3092: 3089: 3086: 3083: 3080: 3077: 3074: 3071: 3068: 3065: 3062: 3059: 3058:authenticateUser 3056: 3053: 3050: 3047: 3044: 3041: 3038: 3035: 3032: 3029: 3028:WebPageDecorator 3026: 3023: 3020: 3017: 3014: 3011: 3008: 3005: 3002: 2999: 2996: 2993: 2990: 2989:WebPageDecorator 2987: 2984: 2981: 2978: 2975: 2972: 2969: 2966: 2963: 2960: 2957: 2954: 2951: 2948: 2945: 2942: 2939: 2936: 2933: 2930: 2927: 2924: 2921: 2918: 2915: 2912: 2909: 2906: 2903: 2900: 2897: 2894: 2891: 2888: 2885: 2882: 2879: 2876: 2873: 2870: 2867: 2864: 2861: 2858: 2855: 2854:WebPageDecorator 2852: 2849: 2846: 2843: 2842:WebPageDecorator 2840: 2837: 2834: 2831: 2828: 2825: 2822: 2819: 2816: 2813: 2810: 2807: 2804: 2801: 2798: 2795: 2792: 2789: 2786: 2783: 2780: 2777: 2774: 2771: 2768: 2765: 2762: 2759: 2756: 2753: 2750: 2747: 2744: 2741: 2738: 2735: 2732: 2729: 2726: 2723: 2720: 2717: 2714: 2711: 2708: 2705: 2702: 2699: 2696: 2695:<iostream> 2693: 2690: 2687: 2680: 2677: 2674: 2671: 2668: 2665: 2662: 2659: 2656: 2653: 2650: 2647: 2644: 2641: 2638: 2635: 2632: 2629: 2626: 2623: 2620: 2617: 2614: 2611: 2608: 2605: 2602: 2599: 2596: 2593: 2590: 2587: 2584: 2581: 2578: 2575: 2572: 2569: 2566: 2563: 2560: 2557: 2554: 2551: 2548: 2545: 2542: 2539: 2536: 2533: 2530: 2527: 2524: 2521: 2518: 2515: 2512: 2509: 2506: 2503: 2500: 2497: 2494: 2491: 2488: 2485: 2482: 2479: 2476: 2473: 2470: 2467: 2464: 2461: 2458: 2455: 2452: 2449: 2446: 2443: 2440: 2437: 2434: 2431: 2428: 2425: 2422: 2419: 2416: 2413: 2410: 2407: 2404: 2401: 2398: 2395: 2392: 2389: 2386: 2383: 2380: 2377: 2374: 2371: 2368: 2365: 2362: 2359: 2356: 2353: 2350: 2347: 2344: 2341: 2338: 2335: 2332: 2329: 2326: 2323: 2320: 2317: 2314: 2311: 2308: 2305: 2302: 2299: 2296: 2293: 2290: 2287: 2284: 2281: 2278: 2275: 2272: 2269: 2266: 2263: 2260: 2257: 2254: 2251: 2248: 2245: 2242: 2239: 2236: 2233: 2230: 2227: 2224: 2221: 2218: 2215: 2214:<iostream> 2212: 2185: 2182: 2179: 2176: 2173: 2170: 2167: 2164: 2161: 2158: 2155: 2152: 2149: 2146: 2143: 2140: 2137: 2134: 2131: 2128: 2125: 2122: 2119: 2116: 2113: 2110: 2107: 2104: 2101: 2098: 2095: 2092: 2089: 2079: 2076: 2073: 2070: 2067: 2064: 2061: 2058: 2055: 2052: 2049: 2046: 2043: 2040: 2037: 2034: 2031: 2028: 2025: 2022: 2019: 2016: 2013: 2010: 2007: 2004: 2001: 1998: 1995: 1992: 1989: 1986: 1983: 1980: 1977: 1974: 1971: 1968: 1965: 1962: 1959: 1956: 1953: 1950: 1947: 1944: 1941: 1938: 1935: 1932: 1929: 1926: 1923: 1920: 1917: 1914: 1911: 1908: 1905: 1902: 1899: 1896: 1893: 1890: 1887: 1884: 1881: 1878: 1875: 1872: 1869: 1866: 1863: 1860: 1857: 1854: 1851: 1848: 1845: 1842: 1839: 1836: 1833: 1830: 1827: 1824: 1821: 1818: 1815: 1812: 1809: 1806: 1803: 1800: 1797: 1794: 1791: 1788: 1785: 1782: 1779: 1776: 1773: 1770: 1767: 1764: 1761: 1758: 1755: 1752: 1749: 1746: 1743: 1740: 1737: 1734: 1731: 1728: 1725: 1722: 1719: 1716: 1713: 1710: 1707: 1704: 1701: 1698: 1695: 1692: 1689: 1686: 1683: 1680: 1677: 1674: 1671: 1668: 1665: 1662: 1659: 1656: 1653: 1650: 1647: 1644: 1641: 1638: 1635: 1632: 1629: 1626: 1623: 1620: 1617: 1614: 1611: 1608: 1605: 1602: 1599: 1596: 1593: 1590: 1587: 1584: 1581: 1578: 1575: 1572: 1569: 1566: 1563: 1560: 1557: 1554: 1551: 1548: 1545: 1542: 1539: 1536: 1533: 1530: 1527: 1524: 1521: 1518: 1515: 1512: 1509: 1506: 1503: 1500: 1497: 1494: 1491: 1488: 1485: 1482: 1479: 1476: 1473: 1470: 1467: 1464: 1461: 1458: 1455: 1452: 1449: 1446: 1443: 1440: 1437: 1434: 1431: 1428: 1425: 1422: 1419: 1416: 1413: 1410: 1407: 1404: 1401: 1398: 1395: 1392: 1389: 1386: 1383: 1380: 1377: 1374: 1371: 1368: 1365: 1362: 1359: 1356: 1353: 1350: 1347: 1344: 1341: 1338: 1335: 1332: 1329: 1326: 1323: 1320: 1317: 1314: 1311: 1308: 1305: 1302: 1299: 1296: 1293: 1290: 1287: 1284: 1281: 1278: 1275: 1272: 1269: 1266: 1263: 1260: 1257: 1254: 1251: 1248: 1245: 1242: 1239: 1236: 1233: 1230: 1227: 1224: 1221: 1218: 1215: 1212: 1209: 1206: 1203: 1200: 1197: 1194: 1191: 1188: 1185: 1182: 1179: 1176: 1173: 1170: 1167: 1164: 1161: 1158: 1155: 1152: 1149: 1146: 1143: 1140: 1137: 1134: 1131: 1128: 1125: 1122: 1119: 1116: 1113: 1110: 1107: 1104: 1101: 1098: 1095: 1092: 1089: 1086: 1083: 1080: 1077: 1074: 1071: 1068: 1065: 1062: 1059: 1056: 1053: 1050: 1047: 1044: 1041: 1038: 1035: 1032: 1029: 1026: 1023: 1020: 1017: 1014: 1011: 1008: 1005: 1002: 999: 996: 993: 990: 987: 984: 981: 978: 975: 972: 969: 966: 963: 960: 957: 954: 951: 948: 945: 942: 939: 936: 933: 930: 927: 924: 921: 918: 915: 912: 909: 906: 903: 900: 897: 894: 891: 888: 885: 882: 879: 876: 873: 870: 867: 864: 861: 858: 855: 852: 849: 846: 843: 840: 837: 834: 831: 828: 825: 822: 819: 816: 813: 810: 807: 804: 801: 798: 795: 792: 789: 786: 783: 780: 777: 774: 771: 768: 765: 762: 759: 756: 753: 750: 747: 744: 741: 738: 735: 732: 729: 726: 723: 720: 717: 714: 711: 708: 705: 702: 699: 696: 693: 690: 689:<iostream> 687: 667: 663: 659: 655: 651: 647: 643: 639: 635: 631: 625: 621: 617: 613: 607: 603: 599: 595: 588: 584: 580: 576: 572: 568: 565:, the abstract 500: 499: 386:getDescription() 346:WindowWithBorder 303:windowing system 118: 107: 99: 10535: 10534: 10530: 10529: 10528: 10526: 10525: 10524: 10510: 10509: 10508: 10503: 10482: 10461: 10452:Douglas Schmidt 10432:Ward Cunningham 10390: 10378:Design Patterns 10365: 10356:Method chaining 10288: 10282: 10243:Service locator 10174: 10167: 10138:Read–write lock 10074: 10063: 10054:Template method 9995: 9947: 9905: 9898: 9893: 9850: 9845: 9844: 9837:wiki.python.org 9831: 9830: 9826: 9817: 9815: 9807: 9806: 9802: 9793: 9791: 9789: 9778: 9770: 9766: 9757: 9755: 9747: 9746: 9742: 9726: 9725: 9721: 9701: 9697: 9692:. 8 March 2022. 9688: 9687: 9683: 9670: 9669: 9665: 9658: 9643:Design Patterns 9638: 9634: 9629: 9601:Adapter pattern 9592: 9587: 9582: 9580: 9579: 9576: 9573: 9570: 9567: 9564: 9561: 9558: 9555: 9552: 9549: 9546: 9543: 9540: 9537: 9534: 9531: 9528: 9525: 9522: 9519: 9516: 9513: 9510: 9507: 9504: 9501: 9498: 9495: 9492: 9489: 9486: 9483: 9480: 9477: 9474: 9471: 9468: 9465: 9462: 9459: 9456: 9453: 9450: 9447: 9444: 9441: 9438: 9435: 9432: 9430:SimpleDelegator 9429: 9426: 9423: 9420: 9417: 9414: 9411: 9408: 9405: 9402: 9399: 9396: 9393: 9390: 9387: 9384: 9381: 9378: 9375: 9372: 9369: 9366: 9363: 9361:SimpleDelegator 9360: 9357: 9354: 9351: 9348: 9345: 9342: 9339: 9336: 9333: 9330: 9327: 9324: 9321: 9318: 9315: 9312: 9309: 9306: 9303: 9300: 9297: 9294: 9291: 9288: 9286:; Ingredients: 9285: 9282: 9279: 9276: 9273: 9270: 9267: 9264: 9261: 9258: 9255: 9249: 9247: 9241: 9240: 9237: 9234: 9231: 9228: 9225: 9222: 9219: 9216: 9213: 9210: 9207: 9205:SecurityPackage 9204: 9201: 9198: 9195: 9192: 9189: 9186: 9183: 9180: 9177: 9174: 9172:BikeAccessories 9171: 9168: 9165: 9162: 9159: 9156: 9153: 9150: 9147: 9144: 9141: 9138: 9135: 9132: 9129: 9126: 9123: 9120: 9117: 9114: 9111: 9108: 9105: 9102: 9099: 9096: 9093: 9090: 9087: 9084: 9081: 9078: 9075: 9072: 9069: 9066: 9063: 9060: 9057: 9054: 9051: 9048: 9045: 9042: 9039: 9036: 9033: 9030: 9027: 9024: 9021: 9018: 9015: 9012: 9009: 9006: 9003: 9000: 8998:BikeAccessories 8997: 8994: 8991: 8988: 8985: 8982: 8979: 8976: 8973: 8970: 8967: 8964: 8961: 8958: 8955: 8952: 8949: 8946: 8943: 8940: 8937: 8934: 8931: 8928: 8925: 8922: 8919: 8916: 8913: 8910: 8907: 8904: 8901: 8898: 8895: 8892: 8889: 8886: 8883: 8880: 8877: 8874: 8872:SecurityPackage 8871: 8868: 8865: 8863:BikeAccessories 8862: 8859: 8857:SecurityPackage 8856: 8853: 8850: 8847: 8844: 8841: 8838: 8835: 8832: 8829: 8826: 8823: 8820: 8817: 8814: 8811: 8808: 8805: 8802: 8799: 8796: 8793: 8790: 8787: 8784: 8781: 8778: 8775: 8772: 8769: 8766: 8763: 8760: 8757: 8755:BikeAccessories 8754: 8751: 8748: 8745: 8742: 8739: 8736: 8733: 8730: 8727: 8725:BikeAccessories 8724: 8721: 8718: 8715: 8712: 8709: 8706: 8703: 8700: 8697: 8694: 8691: 8688: 8685: 8682: 8679: 8676: 8673: 8670: 8667: 8664: 8661: 8658: 8655: 8652: 8649: 8646: 8643: 8640: 8637: 8634: 8631: 8628: 8625: 8622: 8619: 8616: 8613: 8610: 8607: 8604: 8601: 8598: 8595: 8592: 8589: 8586: 8583: 8580: 8577: 8574: 8571: 8568: 8565: 8562: 8559: 8556: 8553: 8550: 8547: 8544: 8539: 8533: 8532: 8529: 8526: 8523: 8520: 8517: 8514: 8511: 8508: 8505: 8502: 8499: 8496: 8493: 8490: 8487: 8484: 8481: 8478: 8475: 8472: 8469: 8466: 8463: 8460: 8457: 8454: 8451: 8448: 8445: 8442: 8439: 8436: 8433: 8430: 8427: 8424: 8421: 8418: 8415: 8412: 8409: 8406: 8403: 8400: 8397: 8394: 8391: 8389:; Ingredients: 8388: 8385: 8382: 8379: 8376: 8373: 8370: 8367: 8364: 8361: 8358: 8355: 8352: 8349: 8346: 8343: 8340: 8337: 8334: 8331: 8328: 8325: 8322: 8319: 8316: 8313: 8310: 8307: 8304: 8301: 8298: 8295: 8293:CoffeeDecorator 8292: 8289: 8286: 8283: 8280: 8277: 8274: 8271: 8268: 8265: 8262: 8259: 8256: 8253: 8250: 8247: 8244: 8241: 8238: 8236:CoffeeDecorator 8235: 8232: 8229: 8226: 8223: 8220: 8217: 8214: 8211: 8208: 8205: 8202: 8199: 8196: 8193: 8190: 8187: 8184: 8181: 8178: 8175: 8172: 8169: 8166: 8163: 8160: 8157: 8154: 8151: 8148: 8146:CoffeeDecorator 8145: 8142: 8139: 8136: 8133: 8130: 8127: 8124: 8121: 8118: 8115: 8112: 8109: 8106: 8103: 8100: 8097: 8094: 8091: 8088: 8085: 8082: 8079: 8076: 8073: 8070: 8067: 8064: 8061: 8058: 8032: 8031: 8028: 8025: 8022: 8019: 8016: 8013: 8010: 8007: 8004: 8001: 7998: 7995: 7992: 7989: 7986: 7983: 7980: 7977: 7974: 7971: 7968: 7965: 7962: 7959: 7956: 7953: 7950: 7947: 7944: 7941: 7938: 7935: 7932: 7929: 7926: 7923: 7920: 7917: 7914: 7911: 7908: 7905: 7902: 7899: 7896: 7893: 7890: 7887: 7884: 7881: 7878: 7875: 7872: 7869: 7866: 7863: 7860: 7857: 7854: 7851: 7848: 7845: 7842: 7839: 7836: 7833: 7830: 7827: 7824: 7821: 7818: 7815: 7812: 7809: 7806: 7803: 7800: 7797: 7794: 7791: 7788: 7785: 7782: 7779: 7776: 7773: 7770: 7767: 7764: 7761: 7758: 7755: 7752: 7749: 7746: 7743: 7740: 7737: 7734: 7731: 7728: 7725: 7722: 7719: 7716: 7713: 7710: 7707: 7704: 7701: 7698: 7695: 7692: 7689: 7686: 7683: 7680: 7677: 7674: 7671: 7668: 7665: 7662: 7659: 7656: 7653: 7650: 7647: 7644: 7641: 7638: 7635: 7632: 7629: 7626: 7623: 7620: 7617: 7614: 7611: 7608: 7605: 7602: 7599: 7596: 7593: 7590: 7587: 7584: 7581: 7578: 7575: 7572: 7569: 7566: 7563: 7560: 7557: 7554: 7551: 7548: 7545: 7542: 7539: 7536: 7533: 7530: 7527: 7524: 7521: 7518: 7515: 7512: 7509: 7506: 7503: 7500: 7497: 7494: 7491: 7488: 7485: 7482: 7479: 7476: 7473: 7470: 7467: 7464: 7461: 7458: 7455: 7452: 7449: 7446: 7443: 7440: 7437: 7434: 7431: 7428: 7425: 7422: 7419: 7416: 7413: 7410: 7407: 7404: 7401: 7398: 7395: 7392: 7389: 7386: 7383: 7380: 7377: 7374: 7371: 7368: 7365: 7362: 7359: 7356: 7353: 7350: 7347: 7344: 7341: 7338: 7335: 7332: 7329: 7326: 7323: 7320: 7317: 7314: 7311: 7308: 7305: 7302: 7299: 7296: 7293: 7290: 7287: 7284: 7281: 7278: 7275: 7272: 7269: 7266: 7263: 7260: 7257: 7254: 7251: 7248: 7245: 7242: 7239: 7236: 7233: 7230: 7227: 7224: 7221: 7218: 7215: 7212: 7209: 7206: 7203: 7200: 7197: 7194: 7191: 7188: 7185: 7182: 7179: 7176: 7173: 7170: 7167: 7164: 7161: 7158: 7155: 7152: 7149: 7146: 7143: 7140: 7137: 7134: 7131: 7128: 7125: 7122: 7119: 7116: 7113: 7110: 7107: 7104: 7101: 7098: 7095: 7092: 7089: 7086: 7083: 7080: 7077: 7074: 7071: 7068: 7065: 7062: 7059: 7056: 7053: 7050: 7047: 7044: 7041: 7038: 7035: 7032: 7029: 7026: 7023: 7020: 7017: 7014: 7011: 7008: 7005: 7002: 6999: 6996: 6993: 6990: 6987: 6984: 6981: 6978: 6975: 6972: 6969: 6966: 6963: 6960: 6957: 6954: 6951: 6948: 6945: 6942: 6939: 6936: 6933: 6930: 6927: 6924: 6921: 6918: 6915: 6912: 6909: 6906: 6903: 6900: 6897: 6894: 6891: 6888: 6885: 6882: 6879: 6876: 6873: 6870: 6867: 6864: 6861: 6858: 6855: 6852: 6849: 6846: 6843: 6840: 6837: 6834: 6831: 6828: 6825: 6822: 6819: 6816: 6813: 6810: 6807: 6804: 6801: 6798: 6795: 6792: 6789: 6786: 6783: 6780: 6777: 6774: 6771: 6768: 6765: 6762: 6759: 6756: 6753: 6750: 6747: 6744: 6741: 6738: 6735: 6732: 6729: 6726: 6723: 6720: 6717: 6714: 6711: 6708: 6705: 6702: 6699: 6696: 6693: 6690: 6687: 6684: 6681: 6678: 6675: 6672: 6669: 6666: 6663: 6660: 6657: 6654: 6651: 6641: 6636: 6635: 6632: 6629: 6626: 6623: 6620: 6617: 6614: 6611: 6608: 6605: 6602: 6599: 6596: 6593: 6590: 6587: 6584: 6581: 6578: 6575: 6572: 6569: 6566: 6563: 6560: 6557: 6554: 6551: 6548: 6545: 6542: 6539: 6536: 6533: 6530: 6527: 6524: 6521: 6518: 6515: 6512: 6509: 6506: 6503: 6500: 6497: 6494: 6491: 6488: 6485: 6482: 6479: 6476: 6473: 6470: 6467: 6464: 6461: 6458: 6455: 6452: 6449: 6446: 6443: 6440: 6437: 6434: 6431: 6428: 6425: 6422: 6419: 6416: 6413: 6410: 6407: 6404: 6401: 6398: 6395: 6392: 6389: 6386: 6383: 6380: 6377: 6374: 6371: 6368: 6365: 6362: 6359: 6356: 6353: 6350: 6347: 6344: 6341: 6338: 6335: 6332: 6329: 6326: 6323: 6320: 6317: 6314: 6311: 6308: 6305: 6302: 6299: 6296: 6293: 6290: 6287: 6284: 6281: 6278: 6275: 6272: 6269: 6266: 6263: 6260: 6257: 6254: 6251: 6248: 6245: 6242: 6239: 6236: 6233: 6230: 6227: 6224: 6221: 6218: 6215: 6212: 6209: 6206: 6203: 6200: 6197: 6194: 6191: 6188: 6185: 6182: 6179: 6176: 6173: 6170: 6167: 6164: 6161: 6158: 6155: 6152: 6149: 6146: 6143: 6140: 6137: 6134: 6131: 6128: 6125: 6122: 6119: 6116: 6113: 6110: 6107: 6104: 6101: 6098: 6095: 6092: 6089: 6086: 6083: 6080: 6077: 6074: 6071: 6068: 6065: 6062: 6059: 6056: 6053: 6050: 6047: 6044: 6041: 6038: 6035: 6032: 6029: 6026: 6023: 6020: 6017: 6014: 6011: 6008: 6005: 6002: 5999: 5996: 5993: 5990: 5987: 5984: 5981: 5978: 5975: 5972: 5969: 5966: 5963: 5960: 5957: 5954: 5951: 5948: 5945: 5942: 5939: 5936: 5933: 5930: 5927: 5924: 5921: 5918: 5915: 5912: 5909: 5906: 5903: 5900: 5897: 5894: 5891: 5888: 5885: 5882: 5879: 5876: 5873: 5870: 5867: 5864: 5861: 5858: 5855: 5852: 5849: 5846: 5843: 5840: 5837: 5834: 5831: 5828: 5825: 5822: 5819: 5816: 5813: 5810: 5807: 5804: 5801: 5798: 5795: 5792: 5789: 5786: 5783: 5780: 5777: 5774: 5771: 5768: 5765: 5762: 5759: 5756: 5753: 5750: 5747: 5744: 5741: 5738: 5735: 5732: 5729: 5726: 5723: 5720: 5717: 5712: 5706: 5705: 5702: 5699: 5696: 5693: 5690: 5687: 5684: 5681: 5678: 5675: 5672: 5669: 5666: 5663: 5660: 5657: 5654: 5651: 5648: 5645: 5642: 5639: 5636: 5633: 5630: 5627: 5624: 5621: 5618: 5615: 5612: 5609: 5606: 5603: 5600: 5597: 5594: 5591: 5588: 5585: 5582: 5579: 5576: 5573: 5570: 5567: 5564: 5561: 5558: 5555: 5552: 5549: 5546: 5543: 5540: 5537: 5534: 5531: 5528: 5525: 5522: 5519: 5516: 5513: 5510: 5507: 5504: 5501: 5498: 5495: 5492: 5489: 5486: 5483: 5480: 5477: 5470: 5467: 5466: 5463: 5460: 5457: 5454: 5451: 5448: 5445: 5442: 5439: 5436: 5433: 5430: 5427: 5424: 5421: 5418: 5415: 5412: 5409: 5406: 5403: 5400: 5397: 5394: 5391: 5388: 5385: 5382: 5379: 5376: 5373: 5370: 5367: 5364: 5361: 5358: 5355: 5352: 5349: 5346: 5343: 5340: 5337: 5334: 5332:CoffeeDecorator 5331: 5328: 5325: 5322: 5319: 5316: 5313: 5310: 5307: 5304: 5301: 5298: 5295: 5292: 5289: 5286: 5283: 5280: 5277: 5274: 5271: 5268: 5265: 5262: 5259: 5256: 5253: 5250: 5247: 5244: 5241: 5238: 5235: 5232: 5229: 5226: 5223: 5220: 5217: 5214: 5211: 5208: 5205: 5202: 5199: 5196: 5193: 5190: 5187: 5184: 5181: 5179:CoffeeDecorator 5178: 5175: 5172: 5169: 5166: 5163: 5160: 5157: 5154: 5151: 5148: 5146:decoratedCoffee 5145: 5142: 5139: 5136: 5133: 5130: 5127: 5124: 5121: 5118: 5115: 5112: 5110:decoratedCoffee 5109: 5106: 5103: 5100: 5097: 5094: 5091: 5088: 5085: 5082: 5079: 5076: 5073: 5071:decoratedCoffee 5070: 5067: 5064: 5061: 5058: 5055: 5052: 5049: 5047:CoffeeDecorator 5046: 5043: 5040: 5038:decoratedCoffee 5037: 5034: 5031: 5028: 5025: 5022: 5019: 5017:CoffeeDecorator 5016: 5013: 5010: 5007: 5004: 4997: 4994: 4993: 4990: 4987: 4984: 4981: 4978: 4975: 4972: 4969: 4966: 4963: 4960: 4957: 4954: 4951: 4948: 4945: 4942: 4939: 4936: 4933: 4930: 4927: 4924: 4921: 4918: 4915: 4912: 4909: 4906: 4903: 4900: 4897: 4894: 4891: 4888: 4885: 4882: 4879: 4876: 4873: 4870: 4867: 4864: 4861: 4855: 4849: 4847: 4846: 4843: 4840: 4837: 4834: 4831: 4829:decoratedWindow 4828: 4825: 4822: 4819: 4816: 4813: 4810: 4807: 4804: 4801: 4798: 4795: 4792: 4789: 4786: 4783: 4781:decoratedWindow 4780: 4777: 4774: 4771: 4768: 4765: 4762: 4759: 4756: 4753: 4750: 4747: 4744: 4741: 4738: 4735: 4732: 4729: 4715: 4711: 4708: 4707: 4704: 4701: 4698: 4695: 4692: 4690:decoratedWindow 4689: 4686: 4683: 4680: 4677: 4674: 4671: 4668: 4665: 4662: 4659: 4656: 4653: 4650: 4647: 4644: 4641: 4638: 4636:decoratedWindow 4635: 4632: 4629: 4626: 4623: 4620: 4617: 4614: 4611: 4608: 4605: 4602: 4599: 4596: 4593: 4590: 4583: 4580: 4579: 4576: 4573: 4570: 4567: 4564: 4561: 4558: 4555: 4552: 4549: 4546: 4543: 4540: 4537: 4534: 4531: 4528: 4525: 4522: 4519: 4516: 4513: 4510: 4507: 4504: 4501: 4498: 4495: 4492: 4489: 4486: 4483: 4480: 4477: 4474: 4471: 4468: 4465: 4462: 4459: 4456: 4453: 4450: 4447: 4444: 4441: 4438: 4435: 4432: 4430:WindowDecorator 4429: 4426: 4423: 4420: 4417: 4414: 4411: 4408: 4405: 4402: 4399: 4396: 4393: 4390: 4387: 4384: 4381: 4378: 4375: 4372: 4369: 4366: 4363: 4360: 4357: 4354: 4351: 4348: 4345: 4342: 4339: 4336: 4333: 4330: 4327: 4324: 4321: 4318: 4315: 4312: 4309: 4306: 4303: 4300: 4297: 4294: 4291: 4288: 4285: 4282: 4279: 4276: 4273: 4270: 4268:WindowDecorator 4267: 4264: 4261: 4258: 4255: 4252: 4249: 4246: 4243: 4240: 4237: 4234: 4231: 4228: 4225: 4222: 4219: 4216: 4213: 4210: 4207: 4204: 4201: 4198: 4195: 4192: 4189: 4186: 4183: 4180: 4177: 4174: 4171: 4168: 4165: 4162: 4159: 4156: 4153: 4150: 4147: 4144: 4141: 4139:WindowDecorator 4138: 4135: 4132: 4129: 4126: 4123: 4120: 4117: 4114: 4111: 4108: 4106:WindowDecorator 4105: 4102: 4099: 4096: 4089: 4086: 4085: 4082: 4079: 4076: 4073: 4070: 4067: 4064: 4061: 4058: 4055: 4052: 4049: 4046: 4043: 4040: 4037: 4034: 4031: 4028: 4025: 4022: 4019: 4016: 4013: 4010: 4007: 4004: 4001: 3998: 3995: 3992: 3989: 3986: 3983: 3980: 3977: 3974: 3971: 3968: 3962: 3957: 3952: 3951: 3948: 3945: 3942: 3939: 3936: 3933: 3930: 3927: 3924: 3921: 3918: 3915: 3912: 3909: 3906: 3903: 3900: 3897: 3894: 3891: 3888: 3885: 3882: 3879: 3876: 3873: 3870: 3867: 3864: 3861: 3858: 3855: 3852: 3849: 3847:"red" 3846: 3843: 3840: 3837: 3834: 3831: 3828: 3825: 3822: 3819: 3816: 3813: 3810: 3807: 3804: 3801: 3798: 3795: 3792: 3789: 3786: 3783: 3780: 3777: 3774: 3771: 3768: 3765: 3762: 3759: 3756: 3753: 3750: 3747: 3744: 3741: 3738: 3735: 3732: 3729: 3726: 3723: 3720: 3717: 3714: 3711: 3708: 3705: 3702: 3699: 3696: 3693: 3690: 3687: 3684: 3681: 3678: 3675: 3672: 3669: 3666: 3663: 3660: 3657: 3654: 3651: 3648: 3645: 3642: 3639: 3636: 3633: 3630: 3627: 3624: 3621: 3618: 3615: 3612: 3609: 3606: 3603: 3600: 3597: 3594: 3591: 3588: 3585: 3582: 3579: 3576: 3573: 3570: 3567: 3564: 3561: 3558: 3555: 3552: 3549: 3546: 3543: 3540: 3537: 3534: 3531: 3528: 3525: 3519: 3514: 3513: 3510: 3507: 3504: 3501: 3498: 3495: 3492: 3489: 3486: 3483: 3480: 3477: 3474: 3471: 3468: 3465: 3462: 3459: 3456: 3453: 3450: 3447: 3444: 3441: 3438: 3435: 3432: 3429: 3426: 3423: 3420: 3417: 3414: 3411: 3408: 3405: 3402: 3399: 3396: 3393: 3390: 3387: 3384: 3381: 3378: 3375: 3372: 3369: 3366: 3363: 3360: 3357: 3354: 3351: 3348: 3345: 3342: 3339: 3336: 3333: 3330: 3327: 3324: 3321: 3318: 3315: 3312: 3309: 3306: 3303: 3300: 3297: 3294: 3291: 3288: 3285: 3282: 3279: 3276: 3273: 3270: 3267: 3264: 3261: 3258: 3255: 3252: 3249: 3246: 3243: 3240: 3237: 3234: 3231: 3228: 3225: 3222: 3219: 3216: 3213: 3210: 3207: 3204: 3201: 3198: 3195: 3192: 3189: 3186: 3183: 3180: 3177: 3174: 3171: 3168: 3165: 3162: 3159: 3156: 3153: 3150: 3147: 3144: 3141: 3138: 3135: 3132: 3129: 3126: 3123: 3120: 3117: 3114: 3111: 3108: 3105: 3102: 3099: 3096: 3093: 3090: 3087: 3084: 3081: 3078: 3075: 3072: 3069: 3066: 3063: 3060: 3057: 3054: 3051: 3048: 3045: 3042: 3039: 3036: 3033: 3030: 3027: 3024: 3021: 3018: 3015: 3012: 3009: 3006: 3003: 3000: 2997: 2994: 2991: 2988: 2985: 2982: 2979: 2976: 2973: 2970: 2967: 2964: 2961: 2958: 2955: 2952: 2949: 2946: 2943: 2940: 2937: 2934: 2931: 2928: 2925: 2922: 2919: 2916: 2913: 2910: 2907: 2904: 2901: 2898: 2895: 2892: 2889: 2886: 2883: 2880: 2877: 2874: 2871: 2868: 2865: 2862: 2859: 2856: 2853: 2850: 2847: 2844: 2841: 2838: 2835: 2832: 2829: 2826: 2823: 2820: 2817: 2814: 2811: 2808: 2805: 2802: 2799: 2796: 2793: 2790: 2787: 2784: 2781: 2778: 2775: 2772: 2769: 2766: 2763: 2760: 2757: 2754: 2751: 2748: 2745: 2742: 2739: 2736: 2733: 2730: 2727: 2724: 2721: 2718: 2715: 2712: 2709: 2706: 2703: 2700: 2697: 2694: 2691: 2688: 2685: 2682: 2681: 2678: 2675: 2672: 2669: 2666: 2663: 2660: 2657: 2654: 2651: 2648: 2645: 2642: 2639: 2636: 2633: 2630: 2627: 2625:"red" 2624: 2621: 2618: 2615: 2612: 2609: 2606: 2603: 2600: 2597: 2594: 2591: 2588: 2585: 2582: 2579: 2576: 2573: 2570: 2567: 2564: 2561: 2558: 2555: 2552: 2549: 2546: 2543: 2540: 2537: 2534: 2531: 2528: 2525: 2522: 2519: 2516: 2513: 2510: 2507: 2504: 2501: 2498: 2495: 2492: 2489: 2486: 2483: 2480: 2477: 2474: 2471: 2468: 2465: 2462: 2459: 2456: 2453: 2450: 2447: 2444: 2441: 2438: 2435: 2432: 2429: 2426: 2423: 2420: 2417: 2414: 2411: 2408: 2405: 2402: 2399: 2396: 2393: 2390: 2387: 2384: 2381: 2378: 2375: 2372: 2369: 2366: 2363: 2360: 2357: 2354: 2351: 2348: 2345: 2342: 2339: 2336: 2333: 2330: 2327: 2324: 2321: 2318: 2315: 2312: 2309: 2306: 2303: 2300: 2297: 2294: 2291: 2288: 2285: 2282: 2279: 2276: 2273: 2270: 2267: 2264: 2261: 2258: 2255: 2252: 2249: 2246: 2243: 2240: 2237: 2234: 2231: 2228: 2225: 2222: 2219: 2216: 2213: 2210: 2207: 2199: 2187: 2186: 2183: 2180: 2177: 2174: 2171: 2168: 2165: 2162: 2159: 2156: 2153: 2150: 2147: 2144: 2141: 2138: 2135: 2132: 2129: 2126: 2123: 2120: 2117: 2114: 2111: 2108: 2105: 2102: 2099: 2096: 2093: 2090: 2087: 2081: 2080: 2077: 2074: 2071: 2068: 2065: 2062: 2059: 2056: 2053: 2050: 2047: 2044: 2041: 2038: 2035: 2032: 2029: 2026: 2023: 2020: 2017: 2014: 2011: 2008: 2005: 2002: 1999: 1996: 1993: 1990: 1987: 1984: 1981: 1978: 1975: 1972: 1969: 1966: 1963: 1960: 1957: 1954: 1951: 1948: 1945: 1942: 1939: 1936: 1933: 1930: 1927: 1924: 1921: 1918: 1915: 1912: 1909: 1906: 1903: 1900: 1897: 1894: 1891: 1888: 1885: 1882: 1879: 1876: 1873: 1870: 1867: 1864: 1861: 1858: 1855: 1852: 1849: 1846: 1843: 1840: 1837: 1834: 1831: 1828: 1825: 1822: 1819: 1816: 1813: 1810: 1807: 1804: 1801: 1798: 1795: 1792: 1789: 1786: 1783: 1780: 1777: 1774: 1771: 1768: 1765: 1762: 1759: 1756: 1753: 1750: 1747: 1744: 1741: 1738: 1735: 1732: 1729: 1726: 1723: 1720: 1717: 1714: 1711: 1708: 1705: 1702: 1699: 1696: 1693: 1690: 1687: 1684: 1681: 1678: 1675: 1672: 1669: 1666: 1663: 1660: 1657: 1654: 1651: 1648: 1645: 1642: 1639: 1636: 1633: 1630: 1627: 1624: 1621: 1618: 1615: 1612: 1609: 1606: 1603: 1600: 1597: 1594: 1591: 1588: 1585: 1582: 1579: 1576: 1573: 1570: 1567: 1564: 1561: 1558: 1555: 1552: 1549: 1546: 1543: 1540: 1537: 1534: 1531: 1528: 1525: 1522: 1519: 1516: 1513: 1510: 1507: 1504: 1501: 1498: 1495: 1492: 1489: 1486: 1483: 1480: 1477: 1474: 1471: 1468: 1465: 1462: 1459: 1456: 1453: 1450: 1447: 1444: 1441: 1438: 1435: 1432: 1429: 1426: 1423: 1420: 1417: 1414: 1411: 1408: 1405: 1402: 1399: 1396: 1393: 1390: 1387: 1384: 1381: 1378: 1375: 1372: 1369: 1366: 1363: 1360: 1357: 1354: 1351: 1348: 1345: 1342: 1339: 1336: 1333: 1330: 1327: 1324: 1321: 1318: 1315: 1312: 1309: 1306: 1303: 1300: 1297: 1294: 1291: 1288: 1285: 1282: 1279: 1276: 1273: 1270: 1267: 1264: 1261: 1258: 1255: 1252: 1249: 1246: 1243: 1240: 1237: 1234: 1231: 1228: 1225: 1222: 1219: 1216: 1213: 1210: 1207: 1204: 1201: 1198: 1195: 1192: 1189: 1186: 1183: 1180: 1177: 1174: 1171: 1168: 1165: 1162: 1159: 1156: 1153: 1150: 1147: 1144: 1141: 1138: 1135: 1132: 1129: 1126: 1123: 1120: 1117: 1114: 1111: 1108: 1105: 1102: 1099: 1096: 1093: 1090: 1087: 1084: 1081: 1078: 1075: 1072: 1069: 1066: 1063: 1060: 1057: 1054: 1051: 1048: 1045: 1042: 1039: 1036: 1033: 1030: 1027: 1024: 1021: 1018: 1015: 1012: 1009: 1006: 1003: 1000: 997: 994: 991: 988: 985: 982: 979: 976: 973: 970: 967: 964: 961: 958: 955: 952: 949: 946: 943: 940: 937: 934: 931: 928: 925: 922: 919: 916: 913: 910: 907: 904: 901: 898: 895: 892: 889: 886: 883: 880: 877: 874: 871: 868: 865: 862: 859: 856: 853: 850: 847: 844: 841: 838: 835: 832: 829: 826: 823: 820: 817: 814: 811: 808: 805: 802: 799: 796: 793: 790: 787: 784: 781: 778: 775: 772: 769: 766: 763: 760: 757: 754: 751: 748: 745: 742: 739: 736: 733: 730: 727: 724: 721: 718: 715: 712: 709: 706: 703: 700: 697: 694: 691: 688: 685: 679: 674: 665: 661: 657: 656:and returns to 653: 649: 645: 641: 637: 633: 629: 627: 623: 619: 615: 611: 609: 605: 601: 597: 593: 586: 582: 581:). This makes 578: 574: 570: 566: 548: 543: 483: 471: 454: 437: 425: 419: 399: 394: 392:Common usecases 384:method and the 374:WindowDecorator 338:ScrollingWindow 319:ScrollingWindow 291: 214:methods to the 127: 120: 116: 105: 97: 94: 78: 69:design patterns 60: 24: 17: 12: 11: 5: 10533: 10523: 10522: 10505: 10504: 10502: 10501: 10496: 10490: 10488: 10484: 10483: 10481: 10480: 10475: 10469: 10467: 10463: 10462: 10460: 10459: 10454: 10449: 10444: 10439: 10434: 10429: 10424: 10419: 10417:John Vlissides 10414: 10409: 10404: 10398: 10396: 10392: 10391: 10389: 10388: 10381: 10373: 10371: 10367: 10366: 10364: 10363: 10358: 10353: 10348: 10343: 10338: 10333: 10328: 10323: 10318: 10313: 10308: 10303: 10298: 10292: 10290: 10284: 10283: 10281: 10280: 10275: 10270: 10265: 10260: 10255: 10250: 10245: 10240: 10235: 10230: 10225: 10217: 10212: 10207: 10206: 10205: 10200: 10190: 10185: 10179: 10177: 10169: 10168: 10166: 10165: 10160: 10155: 10150: 10145: 10140: 10135: 10130: 10125: 10120: 10115: 10110: 10105: 10100: 10095: 10090: 10085: 10079: 10077: 10069: 10068: 10065: 10064: 10062: 10061: 10056: 10051: 10046: 10041: 10036: 10031: 10026: 10021: 10016: 10011: 10005: 10003: 9997: 9996: 9994: 9993: 9988: 9983: 9978: 9973: 9968: 9963: 9957: 9955: 9949: 9948: 9946: 9945: 9940: 9935: 9933:Factory method 9930: 9925: 9919: 9917: 9908: 9900: 9899: 9892: 9891: 9884: 9877: 9869: 9863: 9862: 9857: 9849: 9848:External links 9846: 9843: 9842: 9824: 9800: 9787: 9764: 9740: 9719: 9695: 9681: 9678:on 2015-07-07. 9663: 9656: 9631: 9630: 9628: 9625: 9624: 9623: 9618: 9613: 9608: 9606:Abstract class 9603: 9598: 9591: 9588: 9585: 9316:AbstractCoffee 9262:AbstractCoffee 9257: 9254: 9251: 9245: 8546: 8543: 8540: 8537: 8060: 8057: 8054: 7942:CacheDecorator 7117:CacheDecorator 6650: 6640: 6637: 5719: 5716: 5713: 5710: 5568:getIngredients 5476: 5446:getIngredients 5428:getIngredients 5296:getIngredients 5278:getIngredients 5152:getIngredients 5134:getIngredients 5003: 4970:getIngredients 4898:getIngredients 4860: 4854: 4851: 4835:getDescription 4742:org.junit.Test 4728: 4712:getDescription 4696:getDescription 4589: 4559:getDescription 4541:getDescription 4397:getDescription 4379:getDescription 4241:getDescription 4223:getDescription 4095: 4062:getDescription 4047:// Draw window 3999:getDescription 3967: 3961: 3958: 3956: 3953: 3535:<string> 3524: 3518: 3515: 3274:authorizedUser 3217:authorizedUser 2701:<string> 2689:<memory> 2684: 2220:<string> 2209: 2206: 2203: 2198: 2195: 2086: 695:<memory> 684: 678: 675: 673: 670: 547: 544: 542: 539: 536: 535: 532: 526: 525: 522: 518: 517: 514: 508: 507: 504: 482: 479: 475:Facade pattern 470: 467: 453: 450: 436: 433: 421:Main article: 418: 415: 398: 395: 393: 390: 290: 287: 283:.NET Framework 227: 226: 219: 200: 187:class, pass a 181: 170: 126: 123: 113: 112: 109: 100:objects that 93: 90: 86: 85: 82: 77: 74: 59: 56: 36:design pattern 15: 9: 6: 4: 3: 2: 10532: 10521: 10518: 10517: 10515: 10500: 10497: 10495: 10492: 10491: 10489: 10485: 10479: 10476: 10474: 10471: 10470: 10468: 10464: 10458: 10455: 10453: 10450: 10448: 10445: 10443: 10442:Robert Martin 10440: 10438: 10437:Martin Fowler 10435: 10433: 10430: 10428: 10425: 10423: 10420: 10418: 10415: 10413: 10412:Ralph Johnson 10410: 10408: 10405: 10403: 10400: 10399: 10397: 10393: 10387: 10386: 10382: 10380: 10379: 10375: 10374: 10372: 10368: 10362: 10359: 10357: 10354: 10352: 10349: 10347: 10344: 10342: 10339: 10337: 10334: 10332: 10329: 10327: 10324: 10322: 10319: 10317: 10314: 10312: 10309: 10307: 10304: 10302: 10299: 10297: 10294: 10293: 10291: 10285: 10279: 10276: 10274: 10271: 10269: 10266: 10264: 10261: 10259: 10256: 10254: 10251: 10249: 10248:Active record 10246: 10244: 10241: 10239: 10238:Naked objects 10236: 10234: 10231: 10229: 10228:Specification 10226: 10224: 10222: 10218: 10216: 10213: 10211: 10208: 10204: 10201: 10199: 10196: 10195: 10194: 10191: 10189: 10186: 10184: 10181: 10180: 10178: 10176: 10173:Architectural 10170: 10164: 10161: 10159: 10156: 10154: 10151: 10149: 10146: 10144: 10141: 10139: 10136: 10134: 10131: 10129: 10126: 10124: 10121: 10119: 10116: 10114: 10111: 10109: 10106: 10104: 10101: 10099: 10096: 10094: 10091: 10089: 10086: 10084: 10083:Active object 10081: 10080: 10078: 10076: 10070: 10060: 10057: 10055: 10052: 10050: 10047: 10045: 10042: 10040: 10037: 10035: 10032: 10030: 10027: 10025: 10022: 10020: 10017: 10015: 10012: 10010: 10007: 10006: 10004: 10002: 9998: 9992: 9989: 9987: 9984: 9982: 9979: 9977: 9974: 9972: 9969: 9967: 9964: 9962: 9959: 9958: 9956: 9954: 9950: 9944: 9941: 9939: 9936: 9934: 9931: 9929: 9926: 9924: 9921: 9920: 9918: 9916: 9912: 9909: 9907: 9901: 9897: 9890: 9885: 9883: 9878: 9876: 9871: 9870: 9867: 9861: 9858: 9855: 9852: 9851: 9838: 9834: 9828: 9814: 9813:w3sDesign.com 9810: 9804: 9790: 9784: 9777: 9776: 9768: 9754: 9753:w3sDesign.com 9750: 9744: 9736: 9730: 9722: 9720:0-201-63361-2 9716: 9712: 9708: 9707: 9699: 9691: 9685: 9677: 9673: 9667: 9659: 9657:0-201-63361-2 9653: 9649: 9645: 9644: 9636: 9632: 9622: 9619: 9617: 9614: 9612: 9609: 9607: 9604: 9602: 9599: 9597: 9594: 9593: 9584: 9553:WithSprinkles 9424:WithSprinkles 9250: 9244: 9166:AluminiumBike 8596:AluminiumBike 8536: 8488:WithSprinkles 8287:WithSprinkles 8052: 8047: 8044: 8042: 8037: 8036: 7948:random_square 7918:random_square 6988:initial_value 6916:seed_modifier 6853:seed_modifier 6847:seed_modifier 6835:seed_modifier 6648: 6646: 6531:wrapComponent 6489:"Client: 6447:wrapComponent 5709: 5676:WithSprinkles 5474: 5341:WithSprinkles 5326:WithSprinkles 5001: 4858: 4850: 4730:import static 4726: 4723: 4721: 4587: 4093: 3965: 3522: 2652:colored_shape 2619:colored_shape 2202: 2194: 2192: 2084: 1259:"%" 682: 669: 662:addBehavior() 650:addBehavior() 602:addBehavior() 590: 564: 563:class diagram 561: 558:In the above 552: 533: 531: 528: 527: 523: 520: 519: 515: 513: 510: 509: 505: 502: 501: 498: 496: 492: 488: 478: 476: 466: 462: 459: 458:compositional 449: 447: 443: 432: 430: 424: 414: 411: 406: 404: 389: 387: 383: 379: 375: 371: 366: 363: 359: 355: 351: 347: 343: 339: 335: 330: 328: 324: 320: 316: 312: 308: 304: 295: 286: 284: 280: 276: 272: 267: 265: 261: 257: 252: 250: 246: 242: 238: 233: 230: 224: 220: 217: 213: 209: 205: 201: 198: 194: 190: 186: 182: 179: 176:class, add a 175: 171: 168: 165:class into a 164: 160: 159: 158: 156: 152: 148: 144: 137:class diagram 136: 131: 122: 110: 103: 102: 101: 89: 83: 80: 79: 73: 71: 70: 65: 55: 53: 49: 45: 41: 37: 33: 29: 22: 10494:Anti-pattern 10457:Linda Rising 10383: 10376: 10321:Lazy loading 10253:Identity map 10220: 9975: 9904:Gang of Four 9836: 9827: 9816:. Retrieved 9812: 9803: 9792:. Retrieved 9774: 9767: 9756:. Retrieved 9752: 9743: 9705: 9698: 9684: 9676:the original 9666: 9642: 9635: 9581: 9496:SimpleCoffee 9310:SimpleCoffee 9274:"Cost: 9248: 9242: 9184:SportPackage 9007:SportPackage 8992:SportPackage 8534: 8425:SimpleCoffee 8371:"Cost: 8098:SimpleCoffee 8049: 8045: 8038: 8034: 8033: 8014:min_filtered 7990:max_filtered 7984:MinDecorator 7978:min_filtered 7966:random_cache 7960:MaxDecorator 7954:max_filtered 7936:random_cache 7924:RandomSquare 7528:MinDecorator 7342:MaxDecorator 6889:seed_from_xy 6814:RandomSquare 6751:seed_from_xy 6642: 6594:$ component2 6585:$ component1 6570:$ component2 6549:$ component1 5707: 5616:SimpleCoffee 5468: 4995: 4919:SimpleCoffee 4856: 4848: 4817:assertEquals 4808:SimpleWindow 4724: 4719: 4709: 4663:SimpleWindow 4581: 4247://Delegation 4208://Delegation 4087: 4017:SimpleWindow 3963: 3829:ColoredShape 3700:ColoredShape 3685:ColoredShape 3520: 3367:BasicWebPage 2761:BasicWebPage 2616:ColoredShape 2439:ColoredShape 2427:ColoredShape 2200: 2191:godbolt page 2188: 2082: 680: 592:Subclasses ( 591: 557: 484: 472: 463: 455: 438: 426: 407: 400: 385: 381: 377: 373: 370:SimpleWindow 369: 367: 361: 357: 353: 349: 345: 341: 337: 333: 331: 326: 322: 318: 314: 300: 270: 268: 260:compile time 253: 248: 244: 234: 231: 228: 222: 218:pointer; and 215: 211: 203: 196: 192: 188: 184: 177: 173: 166: 162: 150: 140: 114: 95: 87: 67: 63: 61: 31: 25: 10466:Communities 10447:Jim Coplien 10422:Grady Booch 10407:Erich Gamma 10351:Type tunnel 10336:Object pool 10331:Null object 10326:Mock object 10188:Interceptor 10158:Thread pool 10073:Concurrency 10019:Interpreter 9779:(paperback) 9475:ingredients 9466:ingredients 9406:ingredients 9397:ingredients 9340:ingredients 9292:ingredients 9145:UpgradeBike 8401:ingredients 8323:ingredients 8266:ingredients 8218:ingredients 8209:ingredients 8128:ingredients 8086:ingredients 6564:$ component 6540:$ component 6399:__construct 6387:$ component 6192:__construct 5988:__construct 5805:__construct 3433:make_unique 3388:make_unique 3361:make_unique 2018:make_unique 1967:make_unique 1916:make_unique 1889:make_unique 1784:make_unique 1733:make_unique 1706:make_unique 1199:percentage_ 1157:percentage_ 634:operation() 491:polymorphic 305:. To allow 271:independent 256:subclassing 153:class that 10361:Delegation 10296:Blackboard 10001:Behavioral 9953:Structural 9915:Creational 9818:2017-08-12 9794:2012-07-02 9758:2017-08-12 9627:References 9469:__getobj__ 9439:__getobj__ 9400:__getobj__ 9370:__getobj__ 9067:GetDetails 9052:GetDetails 8929:GetDetails 8914:GetDetails 8842:GetDetails 8827:GetDetails 8698:GetDetails 8659:CarbonBike 8635:GetDetails 8572:GetDetails 8416:initialize 8173:initialize 7171:DataSquare 6967:DataSquare 6790:s32_to_u16 6772:s32_to_u16 6733:0x00007FFF 6670:s32_to_u16 5020:implements 4922:implements 4109:implements 4020:implements 3922:red_circle 3892:red_circle 3865:red_circle 3841:red_circle 3337:unique_ptr 3166:unique_ptr 3007:unique_ptr 2959:unique_ptr 2866:unique_ptr 1865:unique_ptr 1682:unique_ptr 1556:component_ 1520:component_ 1508:unique_ptr 1370:component_ 1334:component_ 1322:unique_ptr 1277:percentage 1253:percentage 1193:percentage 1184:component_ 1148:component_ 1136:unique_ptr 1079:unique_ptr 986:component_ 959:component_ 947:unique_ptr 658:Decorator1 654:Component1 646:Decorator2 642:Decorator2 638:Decorator1 624:Component1 620:Decorator2 616:Decorator1 598:Decorator2 594:Decorator1 311:scrollbars 289:Motivation 133:Decorator 10427:Kent Beck 10153:Semaphore 10143:Scheduler 9986:Flyweight 9976:Decorator 9971:Composite 9943:Singleton 9938:Prototype 9729:cite book 9223:WriteLine 9190:basicBike 9157:basicBike 8560:interface 8548:namespace 8155:protected 7792:decorated 7753:decorated 7747:decorated 7735:decorated 7687:decorated 7627:decorated 7573:decorated 7567:decorated 7549:decorated 7501:decorated 7441:decorated 7387:decorated 7381:decorated 7363:decorated 7282:decorated 7156:decorated 7150:decorated 7138:decorated 6537:Component 6510:component 6474:component 6459:component 6435:component 6414:component 6198:Component 6180:Decorator 5994:Component 5976:Decorator 5958:Component 5952:Decorator 5793:Component 5742:protected 5733:protected 5727:Component 5688:printInfo 5655:printInfo 5622:printInfo 5499:printInfo 5419:@Override 5374:@Override 5269:@Override 5221:@Override 5125:@Override 5086:@Override 4961:@Override 4931:@Override 4868:interface 4720:decorates 4532:@Override 4472:@Override 4370:@Override 4310:@Override 4214:@Override 4178:@Override 4053:@Override 4029:@Override 3975:interface 3634:to_string 2391:to_string 1091:component 1049:component 1040:component 1016:protected 968:component 648:performs 606:Component 587:Component 583:Decorator 575:Component 571:component 567:Decorator 541:Structure 521:Decorator 307:scrolling 249:Decorator 245:Component 223:Component 216:Component 212:Component 204:Decorator 197:Component 193:Decorator 189:Component 185:Decorator 178:Component 174:Decorator 167:Decorator 163:Component 151:Decorator 117:Decorator 106:Component 98:Decorator 64:decorator 10514:Category 10487:See also 10289:patterns 10175:patterns 10128:Proactor 10075:patterns 10049:Strategy 10039:Observer 10029:Mediator 10024:Iterator 9906:patterns 9590:See also 9583:Output: 9520:WithMilk 9355:WithMilk 9243:Output: 9211:upgraded 9196:upgraded 9175:upgraded 9130:BikeShop 9106:GetPrice 9091:GetPrice 9085:override 9046:override 8968:GetPrice 8953:GetPrice 8947:override 8908:override 8812:GetPrice 8797:GetPrice 8740:readonly 8719:abstract 8677:GetPrice 8614:GetPrice 8581:GetPrice 8535:Output: 8452:WithMilk 8230:WithMilk 8080:abstract 8071:abstract 8062:abstract 7723:__init__ 7537:__init__ 7351:__init__ 7126:__init__ 6976:__init__ 6823:__init__ 6802:<< 6606:$ client 6528:function 6516:getValue 6396:function 6363:getValue 6327:getValue 6324:function 6252:function 6189:function 6159:getValue 6123:getValue 6120:function 6048:function 5985:function 5946:abstract 5916:getValue 5913:function 5880:function 5802:function 5775:getValue 5772:function 5766:abstract 5757:function 5751:abstract 5721:abstract 5643:WithMilk 5188:WithMilk 5173:WithMilk 5011:abstract 4100:abstract 3934:<< 3919:<< 3877:<< 3862:<< 3673:typename 3667:template 3532:#include 3526:#include 3487:<< 3268:override 3241:<< 3235:<< 3109:override 3082:<< 3076:<< 2971:_webPage 2932:_webPage 2926:override 2887:_webPage 2818:<< 2812:<< 2797:override 2698:#include 2692:#include 2686:#include 2664:<< 2649:<< 2526:override 2355:override 2217:#include 2211:#include 2160:richness 2127:Drinking 2088:Drinking 1922:IceCubes 1871:Beverage 1844:<< 1739:IceCubes 1688:Beverage 1628:<< 1622:<< 1616:<< 1595:override 1514:Beverage 1442:<< 1436:<< 1430:<< 1409:override 1328:Beverage 1310:IceCubes 1289:IceCubes 1256:<< 1250:<< 1244:<< 1223:override 1142:Beverage 1085:Beverage 953:Beverage 908:Beverage 881:<< 866:override 842:Beverage 815:<< 800:override 776:Beverage 743:Beverage 704:Beverage 692:#include 686:#include 672:Examples 626:object. 281:and the 264:run-time 239:(a.k.a. 199:pointer; 143:run-time 58:Overview 10341:Servant 10273:Model 2 10133:Reactor 10123:Monitor 10088:Balking 10059:Visitor 10034:Memento 10014:Command 9961:Adapter 9928:Builder 9217:Console 8821:virtual 8791:virtual 8737:private 8524:Program 8344:Program 8056:Crystal 6946:randint 6525:private 6480:getData 6384:private 6279:getData 6255:getData 6177:extends 6075:getData 6051:getData 5973:extends 5955:extends 5883:getData 5790:extends 5760:getData 5745:$ value 5547:getCost 5529:println 5401:getCost 5383:getCost 5329:extends 5251:getCost 5230:getCost 5176:extends 5116:getCost 5095:getCost 5029:private 4940:getCost 4883:getCost 4684:println 4511:private 4427:extends 4349:private 4265:extends 4118:private 3928:GetName 3871:GetName 3775:GetName 3754:GetName 3592:GetName 3472:display 3343:WebPage 3286:display 3262:display 3205:webPage 3178:webPage 3172:WebPage 3127:display 3103:display 3046:webPage 3019:webPage 3013:WebPage 2965:WebPage 2947:private 2938:display 2920:display 2905:webPage 2878:webPage 2872:WebPage 2848:WebPage 2791:display 2767:WebPage 2749:default 2740:WebPage 2734:virtual 2719:display 2713:virtual 2707:WebPage 2658:GetName 2541:GetName 2517:GetName 2346:GetName 2265:GetName 2253:virtual 2247:default 2232:virtual 1640:private 1583:virtual 1571:spoons_ 1529:spoons_ 1454:private 1397:virtual 1268:private 1211:virtual 1067:private 995:virtual 854:virtual 788:virtual 752:default 737:virtual 716:virtual 512:Adapter 506:Intent 503:Pattern 487:adapter 446:Visitor 442:Adapter 208:forward 206:class, 202:In the 191:to the 183:In the 172:In the 96:Define 10395:People 10278:Broker 9981:Facade 9966:Bridge 9785:  9717:  9654:  9571:coffee 9565:coffee 9547:coffee 9538:coffee 9532:coffee 9514:coffee 9505:coffee 9490:coffee 9298:" 9139:static 9136:public 9124:public 9088:double 9082:public 9049:string 9043:public 9004:public 8986:public 8950:double 8944:public 8911:string 8905:public 8869:public 8851:public 8824:string 8818:public 8794:double 8788:public 8752:public 8716:public 8695:string 8692:public 8686:1000.0 8674:double 8671:public 8653:public 8632:string 8629:public 8611:double 8608:public 8590:public 8578:double 8569:string 8557:public 8512:coffee 8500:coffee 8482:coffee 8476:coffee 8464:coffee 8446:coffee 8440:coffee 8419:coffee 8407:" 8395:coffee 8377:coffee 8362:Coffee 8356:coffee 8167:Coffee 8158:getter 8152:Coffee 8104:Coffee 8068:Coffee 7882:" 7876:" 7783:return 7678:return 7666:return 7492:return 7480:return 7306:return 7051:return 6940:random 6937:return 6919:random 6769:return 6739:bottom 6736:return 6721:bottom 6703:0xF000 6664:random 6661:import 6639:Python 6615:Client 6591:return 6504:$ this 6495:" 6492:\t\t\t 6468:$ this 6453:$ this 6441:$ this 6429:$ this 6408:$ this 6393:public 6378:Client 6351:$ this 6339:$ this 6336:return 6321:public 6312:" 6297:$ this 6267:$ this 6264:return 6249:public 6240:$ data 6228:$ this 6210:$ this 6201:$ data 6186:public 6147:$ this 6135:$ this 6132:return 6117:public 6108:" 6093:$ this 6063:$ this 6060:return 6045:public 6036:$ data 6024:$ this 6006:$ this 5997:$ data 5982:public 5928:$ this 5925:return 5910:public 5895:$ this 5892:return 5877:public 5868:" 5853:$ this 5832:$ this 5814:$ this 5799:public 5769:public 5754:public 5736:$ data 5604:Coffee 5592:String 5580:static 5577:public 5517:System 5505:Coffee 5493:static 5490:public 5478:public 5471:Coffee 5437:return 5425:String 5422:public 5392:return 5380:double 5377:public 5347:Coffee 5338:public 5287:return 5275:String 5272:public 5242:return 5227:double 5224:public 5194:Coffee 5185:public 5143:return 5131:String 5128:public 5107:return 5092:double 5089:public 5053:Coffee 5044:public 5035:Coffee 5023:Coffee 5008:public 4998:Coffee 4979:return 4967:String 4964:public 4949:return 4937:double 4934:public 4925:Coffee 4913:public 4895:String 4892:public 4880:double 4877:public 4871:Coffee 4865:public 4778:Window 4763:public 4748:public 4739:import 4716:Window 4672:System 4633:Window 4618:String 4606:static 4603:public 4591:public 4584:Window 4550:return 4538:String 4535:public 4475:public 4445:Window 4436:public 4388:return 4376:String 4373:public 4313:public 4283:Window 4274:public 4232:return 4220:String 4217:public 4181:public 4145:Window 4136:public 4124:Window 4112:Window 4090:Window 4071:return 4059:String 4056:public 4032:public 4023:Window 3996:String 3978:Window 3972:public 3898:Resize 3835:Circle 3805:string 3766:return 3751:string 3715:string 3691:public 3682:struct 3652:radius 3640:radius 3613:string 3604:return 3589:string 3574:factor 3568:radius 3559:factor 3550:Resize 3541:Circle 3538:struct 3502:return 3466:myPage 3460:myPage 3421:myPage 3415:myPage 3376:myPage 3349:myPage 3139:struct 2980:struct 2839:struct 2779:string 2758:struct 2704:struct 2634:circle 2610:circle 2607:Circle 2571:string 2532:return 2514:string 2454:string 2424:struct 2409:radius 2397:radius 2370:string 2361:return 2343:string 2328:factor 2322:radius 2313:factor 2304:Resize 2289:Circle 2286:struct 2262:string 2223:struct 2178:spoons 2130:Coffee 2118:spoons 2069:return 2057:coffee 2045:coffee 2006:coffee 1994:coffee 1955:coffee 1943:coffee 1904:coffee 1895:Coffee 1877:coffee 1649:spoons 1625:spoons 1565:spoons 1490:public 1481:public 1385:count_ 1343:count_ 1304:public 1295:public 1118:public 1109:public 929:delete 914:public 905:public 848:public 839:public 782:public 773:public 767:Coffee 710:public 666:Client 632:calls 630:Client 612:Client 530:Facade 495:Facade 382:draw() 378:Window 334:Window 327:Window 315:Window 125:Intent 40:object 30:, the 10370:Books 10287:Other 10223:-tier 10044:State 9991:Proxy 9711:175ff 9648:175ff 9577:print 9544:print 9511:print 9421:class 9352:class 9307:class 9268:print 9259:class 9127:class 9097:=> 9058:=> 9013:IBike 8989:class 8959:=> 8920:=> 8878:IBike 8854:class 8836:_bike 8833:=> 8806:_bike 8803:=> 8773:_bike 8761:IBike 8746:_bike 8743:IBike 8731:IBike 8722:class 8704:=> 8683:=> 8665:IBike 8656:class 8641:=> 8623:100.0 8620:=> 8602:IBike 8593:class 8563:IBike 8506:print 8470:print 8434:print 8350:print 8341:class 8326:super 8302:super 8284:class 8269:super 8245:super 8227:class 8143:class 8095:class 8065:class 8035:Note: 8020:final 8002:final 7912:print 7873:print 7861:range 7840:range 7711:class 7525:class 7339:class 7315:cache 7252:cache 7213:cache 7165:cache 7114:class 6964:class 6811:class 6730:& 6513:-> 6507:-> 6477:-> 6471:-> 6456:-> 6444:-> 6432:-> 6411:-> 6375:class 6360:-> 6354:-> 6345:value 6342:-> 6303:value 6300:-> 6276:-> 6270:-> 6231:-> 6216:value 6213:-> 6171:class 6156:-> 6150:-> 6141:value 6138:-> 6099:value 6096:-> 6072:-> 6066:-> 6027:-> 6012:value 6009:-> 5967:class 5949:class 5934:value 5931:-> 5898:-> 5859:value 5856:-> 5835:-> 5820:value 5817:-> 5784:class 5724:class 5481:class 5440:super 5395:super 5359:super 5323:class 5290:super 5245:super 5206:super 5170:class 5032:final 5014:class 4916:class 4811:())); 4760:@Test 4751:class 4666:())); 4594:class 4553:super 4490:super 4457:super 4421:class 4391:super 4328:super 4295:super 4259:class 4121:final 4103:class 4014:class 3808:color 3790:color 3760:const 3736:color 3730:color 3721:color 3718:& 3706:const 3658:10.0f 3649:float 3598:const 3556:float 3469:-> 2935:-> 2631:& 2586:shape 2580:Shape 2574:color 2556:color 2538:-> 2535:shape 2523:const 2499:shape 2493:shape 2487:color 2481:color 2472:shape 2466:Shape 2460:color 2457:& 2445:const 2433:Shape 2415:10.0f 2406:float 2352:const 2310:float 2295:Shape 2271:const 2238:Shape 2226:Shape 2184:sugar 2145:cubes 2124:sugar 2106:cubes 2063:drink 2060:-> 2024:Sugar 1829:drink 1826:-> 1790:Sugar 1589:drink 1496:Sugar 1475:Sugar 1472:class 1463:count 1439:count 1403:drink 1379:count 1286:class 1274:float 1217:drink 1154:float 1100:class 1055:drink 1052:-> 1001:drink 896:class 860:drink 830:class 794:drink 764:class 722:drink 701:class 241:trait 237:mixin 155:wraps 147:class 44:class 34:is a 10346:Twin 10203:MVVM 10118:Lock 10113:Join 9783:ISBN 9735:link 9715:ISBN 9652:ISBN 9445:cost 9436:cost 9427:< 9376:cost 9367:cost 9358:< 9322:cost 9313:< 9280:cost 9271:puts 9253:Ruby 9142:void 9100:base 9061:base 9031:bike 9025:base 9016:bike 8962:base 8923:base 8893:bike 8887:base 8881:bike 8779:bike 8764:bike 8383:cost 8368:puts 8299:cost 8290:< 8242:cost 8233:< 8200:cost 8191:cost 8149:< 8110:cost 8101:< 8077:cost 8026:draw 7819:draw 7651:< 7465:> 7240:None 7105:data 7060:data 7006:data 6994:None 6931:seed 6925:seed 6883:seed 6745:sign 6712:sign 6706:else 6697:sign 6688:< 6501:echo 6486:echo 6465:echo 6357:data 6273:data 6234:data 6153:data 6069:data 6030:data 5901:data 5838:data 5826:1000 5595:args 5586:main 5583:void 5571:()); 5496:void 5484:Main 5065:this 4838:()); 4766:void 4699:()); 4621:args 4612:main 4609:void 4514:void 4496:draw 4481:draw 4478:void 4352:void 4334:draw 4319:draw 4316:void 4202:draw 4187:draw 4184:void 4157:this 4038:draw 4035:void 3987:draw 3984:void 3955:Java 3943:endl 3916:cout 3904:1.5f 3886:endl 3859:cout 3838:> 3832:< 3820:main 3679:> 3670:< 3547:void 3496:endl 3484:cout 3454:move 3442:> 3436:< 3409:move 3397:> 3391:< 3370:> 3364:< 3346:> 3340:< 3322:argv 3316:char 3310:argc 3301:main 3259:void 3250:endl 3232:cout 3214:void 3199:move 3175:> 3169:< 3100:void 3091:endl 3073:cout 3055:void 3040:move 3016:> 3010:< 2968:> 2962:< 2917:void 2899:move 2875:> 2869:< 2827:endl 2809:cout 2788:void 2782:html 2716:void 2673:endl 2646:cout 2598:main 2301:void 2172:with 2154:milk 2151:with 2136:with 2112:with 2097:with 2091:Soda 2039:move 2027:> 2021:< 1988:move 1976:> 1973:Milk 1970:< 1937:move 1925:> 1919:< 1898:> 1892:< 1874:> 1868:< 1853:endl 1841:cout 1823:soda 1811:soda 1805:move 1793:> 1787:< 1772:soda 1760:soda 1754:move 1742:> 1736:< 1721:soda 1715:> 1712:Soda 1709:< 1694:soda 1691:> 1685:< 1667:main 1613:cout 1586:void 1550:move 1517:> 1511:< 1427:cout 1400:void 1364:move 1331:> 1325:< 1241:cout 1214:void 1178:move 1145:> 1139:< 1124:Milk 1103:Milk 1088:> 1082:< 1022:void 998:void 980:move 956:> 950:< 878:cout 857:void 833:Soda 812:cout 791:void 719:void 628:The 618:and 372:and 348:and 279:Java 210:all 62:The 10215:ECS 10210:ADR 10198:MVP 10193:MVC 9559:new 9526:new 9502:new 9487:end 9484:end 9463:def 9460:end 9433:def 9418:end 9415:end 9394:def 9391:end 9364:def 9349:end 9346:end 9337:def 9334:end 9319:def 9304:end 9301:end 9265:def 9202:new 9181:new 9169:(); 9163:new 9154:var 8845:(); 8815:(); 8584:(); 8575:(); 8530:new 8521:end 8518:end 8494:new 8458:new 8431:new 8413:def 8410:end 8347:def 8338:end 8335:end 8320:def 8317:end 8296:def 8281:end 8278:end 8263:def 8260:end 8239:def 8224:end 8221:end 8206:def 8203:end 8188:def 8185:end 8170:def 8137:end 8134:end 8125:def 8122:end 8107:def 8089:end 8083:def 8074:def 7996:100 7972:200 7930:635 7894:get 7879:%3d 7852:for 7831:for 7816:def 7798:get 7759:get 7756:def 7720:def 7693:get 7675:min 7660:min 7633:get 7594:get 7591:def 7588:min 7582:min 7555:min 7534:def 7507:get 7489:max 7474:max 7447:get 7408:get 7405:def 7402:max 7396:max 7369:max 7348:def 7321:get 7288:get 7258:set 7219:get 7180:get 7177:def 7123:def 7069:set 7066:def 7027:get 7024:def 6973:def 6958:255 6859:get 6856:def 6820:def 6748:def 6667:def 6618:(); 6612:new 6576:new 6555:new 6519:(); 6483:(); 6426:(); 6420:new 6366:(); 6222:500 6162:(); 6018:500 5778:(); 5763:(); 5715:PHP 5673:new 5640:new 5619:(); 5613:new 5523:out 5410:0.2 5260:0.5 5155:(); 5119:(); 4901:(); 4886:(); 4805:new 4796:new 4787:new 4678:out 4660:new 4651:new 4642:new 4505:(); 4499:(); 4343:(); 4337:(); 4244:(); 4205:(); 4002:(); 3990:(); 3937:std 3910:std 3880:std 3853:std 3817:int 3799:std 3745:std 3709:std 3628:std 3607:std 3583:std 3490:std 3478:std 3475:(); 3463:)); 3448:std 3427:std 3418:)); 3403:std 3382:std 3373:(); 3355:std 3331:std 3307:int 3298:int 3289:(); 3277:(); 3244:std 3226:std 3193:std 3160:std 3130:(); 3118:(); 3085:std 3067:std 3034:std 3001:std 2953:std 2941:(); 2893:std 2860:std 2821:std 2803:std 2773:std 2667:std 2640:std 2595:int 2565:std 2508:std 2448:std 2385:std 2364:std 2337:std 2256:std 2197:C++ 2142:ice 2103:ice 2066:(); 2033:std 2012:std 1982:std 1961:std 1931:std 1910:std 1901:(); 1883:std 1859:std 1847:std 1835:std 1832:(); 1799:std 1778:std 1748:std 1727:std 1718:(); 1700:std 1676:std 1664:int 1646:int 1607:std 1604:(); 1544:std 1526:int 1502:std 1460:int 1421:std 1418:(); 1358:std 1340:int 1316:std 1235:std 1232:(); 1172:std 1130:std 1073:std 1058:(); 974:std 941:std 872:std 806:std 677:C++ 636:on 560:UML 444:or 360:or 342:all 135:UML 26:In 10516:: 9835:. 9811:. 9751:. 9731:}} 9727:{{ 9713:. 9650:. 9289:#{ 9277:#{ 9232:); 9214:); 9193:); 9148:() 9115:10 9109:() 9094:() 9070:() 9055:() 8971:() 8956:() 8932:() 8917:() 8884:): 8830:() 8800:() 8701:() 8680:() 8638:() 8617:() 8542:C# 8392:#{ 8374:#{ 8029:() 7909:), 7870:): 7867:10 7858:in 7849:): 7846:10 7837:in 7828:): 7780:): 7738:): 7618:if 7615:): 7558:): 7432:if 7429:): 7372:): 7303:)) 7237:== 7204:if 7201:): 7174:() 7141:): 7096:): 7048:): 7021:10 7015:10 6997:): 6880:): 6838:): 6805:16 6766:): 6682:if 6679:): 6588:); 6567:); 6462:); 6402:() 6330:() 6309:\n 6291:\t 6282:() 6258:() 6126:() 6105:\n 6087:\t 6078:() 6054:() 5919:() 5886:() 5865:\n 5847:\t 5808:() 5697:); 5685:); 5664:); 5652:); 5631:); 5550:() 5449:() 5431:() 5404:() 5386:() 5368:); 5299:() 5281:() 5254:() 5233:() 5215:); 5137:() 5098:() 4973:() 4943:() 4772:() 4562:() 4544:() 4520:() 4484:() 4466:); 4400:() 4382:() 4358:() 4322:() 4304:); 4226:() 4190:() 4065:() 4041:() 3940::: 3931:() 3913::: 3907:); 3883::: 3874:() 3856::: 3850:); 3823:() 3814:}; 3802::: 3778:() 3772::: 3757:() 3748::: 3742:{} 3712::: 3664:}; 3643:); 3631::: 3610::: 3595:() 3586::: 3571:*= 3493::: 3481::: 3451::: 3430::: 3406::: 3385::: 3358::: 3334::: 3295:}; 3283::: 3265:() 3247::: 3229::: 3220:() 3211:{} 3208:)) 3196::: 3163::: 3136:}; 3124::: 3106:() 3088::: 3070::: 3061:() 3052:{} 3049:)) 3037::: 3004::: 2977:}; 2956::: 2923:() 2908:)) 2896::: 2863::: 2836:}; 2824::: 2806::: 2794:() 2776::: 2755:}; 2743:() 2722:() 2670::: 2661:() 2643::: 2637:); 2601:() 2592:}; 2568::: 2544:() 2520:() 2511::: 2505:{} 2490:), 2451::: 2421:}; 2400:); 2388::: 2367::: 2349:() 2340::: 2325:*= 2283:}; 2268:() 2259::: 2241:() 2193:. 2181:of 2157:of 2139:16 2121:of 2054:); 2048:), 2036::: 2015::: 2003:); 2000:3. 1997:), 1985::: 1964::: 1952:); 1949:16 1946:), 1934::: 1913::: 1886::: 1862::: 1850::: 1838::: 1820:); 1814:), 1802::: 1781::: 1769:); 1763:), 1751::: 1730::: 1703::: 1679::: 1670:() 1661:}; 1610::: 1592:() 1559:)) 1547::: 1505::: 1469:}; 1424::: 1406:() 1373:)) 1361::: 1319::: 1283:}; 1238::: 1220:() 1187:)) 1175::: 1133::: 1097:}; 1076::: 1034:if 1028:() 1004:() 992:{} 989:)) 977::: 944::: 923:() 893:}; 875::: 863:() 827:}; 809::: 797:() 758:}; 746:() 725:() 668:. 644:. 589:. 251:. 10221:n 9888:e 9881:t 9874:v 9839:. 9821:. 9797:. 9761:. 9737:) 9723:. 9660:. 9574:. 9568:) 9562:( 9556:. 9550:= 9541:. 9535:) 9529:( 9523:. 9517:= 9508:. 9499:. 9493:= 9478:+ 9472:. 9457:2 9454:. 9451:0 9448:+ 9442:. 9409:+ 9403:. 9388:5 9385:. 9382:0 9379:+ 9373:. 9331:0 9328:. 9325:1 9295:} 9283:} 9238:} 9235:} 9226:( 9220:. 9208:( 9199:= 9187:( 9178:= 9160:= 9151:{ 9133:{ 9121:} 9118:; 9112:+ 9103:. 9079:; 9073:+ 9064:. 9040:} 9037:{ 9034:) 9028:( 9022:: 9019:) 9010:( 9001:{ 8995:: 8983:} 8980:; 8977:1 8974:+ 8965:. 8941:; 8935:+ 8926:. 8902:} 8899:{ 8896:) 8890:( 8875:( 8866:{ 8860:: 8848:} 8839:. 8809:. 8785:} 8782:; 8776:= 8770:{ 8767:) 8758:( 8749:; 8734:{ 8728:: 8713:} 8710:; 8689:; 8668:{ 8662:: 8650:} 8647:; 8626:; 8605:{ 8599:: 8587:} 8566:{ 8554:; 8527:. 8515:) 8509:( 8503:) 8497:( 8491:. 8485:= 8479:) 8473:( 8467:) 8461:( 8455:. 8449:= 8443:) 8437:( 8428:. 8422:= 8404:} 8398:. 8386:} 8380:. 8365:) 8359:: 8353:( 8329:+ 8314:2 8311:. 8308:0 8305:+ 8272:+ 8257:5 8254:. 8251:0 8248:+ 8215:. 8197:. 8182:) 8176:( 8164:: 8119:0 8116:. 8113:1 8023:. 8017:) 8011:( 8005:= 7999:) 7993:, 7987:( 7981:= 7975:) 7969:, 7963:( 7957:= 7951:) 7945:( 7939:= 7933:) 7927:( 7921:= 7906:y 7903:, 7900:x 7897:( 7891:. 7888:s 7885:% 7864:( 7855:x 7843:( 7834:y 7825:s 7822:( 7813:) 7810:y 7807:, 7804:x 7801:( 7795:. 7789:. 7786:s 7777:y 7774:, 7771:x 7768:, 7765:s 7762:( 7750:= 7744:. 7741:s 7732:, 7729:s 7726:( 7717:: 7708:) 7705:y 7702:, 7699:x 7696:( 7690:. 7684:. 7681:s 7672:. 7669:s 7663:: 7657:. 7654:s 7648:) 7645:y 7642:, 7639:x 7636:( 7630:. 7624:. 7621:s 7612:y 7609:, 7606:x 7603:, 7600:s 7597:( 7585:= 7579:. 7576:s 7570:= 7564:. 7561:s 7552:, 7546:, 7543:s 7540:( 7531:: 7522:) 7519:y 7516:, 7513:x 7510:( 7504:. 7498:. 7495:s 7486:. 7483:s 7477:: 7471:. 7468:s 7462:) 7459:y 7456:, 7453:x 7450:( 7444:. 7438:. 7435:s 7426:y 7423:, 7420:x 7417:, 7414:s 7411:( 7399:= 7393:. 7390:s 7384:= 7378:. 7375:s 7366:, 7360:, 7357:s 7354:( 7345:: 7336:) 7333:y 7330:, 7327:x 7324:( 7318:. 7312:. 7309:s 7300:y 7297:, 7294:x 7291:( 7285:. 7279:. 7276:s 7273:, 7270:y 7267:, 7264:x 7261:( 7255:. 7249:. 7246:s 7243:: 7234:) 7231:y 7228:, 7225:x 7222:( 7216:. 7210:. 7207:s 7198:y 7195:, 7192:x 7189:, 7186:s 7183:( 7168:= 7162:. 7159:s 7153:= 7147:. 7144:s 7135:, 7132:s 7129:( 7120:: 7111:u 7108:= 7102:. 7099:s 7093:u 7090:, 7087:y 7084:, 7081:x 7078:, 7075:s 7072:( 7057:. 7054:s 7045:y 7042:, 7039:x 7036:, 7033:s 7030:( 7018:* 7012:* 7009:= 7003:. 7000:s 6991:= 6985:, 6982:s 6979:( 6970:: 6961:) 6955:, 6952:0 6949:( 6943:. 6934:) 6928:( 6922:. 6913:. 6910:s 6907:^ 6904:) 6901:y 6898:, 6895:x 6892:( 6886:= 6877:y 6874:, 6871:x 6868:, 6865:s 6862:( 6850:= 6844:. 6841:s 6832:, 6829:s 6826:( 6817:: 6808:) 6799:) 6796:y 6793:( 6787:( 6784:| 6781:) 6778:x 6775:( 6763:y 6760:, 6757:x 6754:( 6742:| 6727:x 6724:= 6718:0 6715:= 6709:: 6700:= 6694:: 6691:0 6685:x 6676:x 6673:( 6609:= 6603:} 6600:} 6597:; 6582:( 6573:= 6561:( 6552:= 6546:{ 6543:) 6534:( 6522:} 6498:; 6450:( 6438:= 6417:= 6405:{ 6390:; 6381:{ 6372:} 6369:} 6348:+ 6333:{ 6318:} 6315:; 6306:} 6294:{ 6285:. 6261:{ 6246:} 6243:; 6237:= 6225:; 6219:= 6207:{ 6204:) 6195:( 6183:{ 6168:} 6165:} 6144:+ 6129:{ 6114:} 6111:; 6102:} 6090:{ 6081:. 6057:{ 6042:} 6039:; 6033:= 6021:; 6015:= 6003:{ 6000:) 5991:( 5979:{ 5964:} 5961:{ 5943:} 5940:} 5937:; 5922:{ 5907:} 5904:; 5889:{ 5874:} 5871:; 5862:} 5850:{ 5841:= 5829:; 5823:= 5811:{ 5796:{ 5781:} 5748:; 5739:; 5730:{ 5703:} 5700:} 5694:c 5691:( 5682:c 5679:( 5670:= 5667:c 5661:c 5658:( 5649:c 5646:( 5637:= 5634:c 5628:c 5625:( 5610:= 5607:c 5601:{ 5598:) 5589:( 5574:} 5565:. 5562:c 5559:+ 5553:+ 5544:. 5541:c 5538:+ 5532:( 5526:. 5520:. 5514:{ 5511:) 5508:c 5502:( 5487:{ 5464:} 5461:} 5458:; 5452:+ 5443:. 5434:{ 5416:} 5413:; 5407:+ 5398:. 5389:{ 5371:} 5365:c 5362:( 5356:{ 5353:) 5350:c 5344:( 5335:{ 5314:} 5311:} 5308:; 5302:+ 5293:. 5284:{ 5266:} 5263:; 5257:+ 5248:. 5236:{ 5218:} 5212:c 5209:( 5203:{ 5200:) 5197:c 5191:( 5182:{ 5161:} 5158:} 5149:. 5140:{ 5122:} 5113:. 5101:{ 5083:} 5080:; 5077:c 5074:= 5068:. 5062:{ 5059:) 5056:c 5050:( 5041:; 5026:{ 4991:} 4988:} 4985:; 4976:{ 4958:} 4955:; 4952:1 4946:{ 4928:{ 4907:} 4874:{ 4844:} 4841:} 4832:. 4826:, 4820:( 4802:( 4793:( 4784:= 4775:{ 4757:{ 4745:; 4736:; 4705:} 4702:} 4693:. 4687:( 4681:. 4675:. 4657:( 4648:( 4639:= 4627:{ 4624:) 4615:( 4600:{ 4577:} 4574:} 4571:; 4565:+ 4556:. 4547:{ 4529:} 4523:{ 4508:} 4493:. 4487:{ 4469:} 4460:( 4454:{ 4451:) 4442:( 4433:{ 4415:} 4412:} 4409:; 4403:+ 4394:. 4385:{ 4367:} 4361:{ 4346:} 4331:. 4325:{ 4307:} 4298:( 4292:{ 4289:) 4280:( 4271:{ 4253:} 4250:} 4238:. 4229:{ 4211:} 4199:. 4193:{ 4175:} 4172:; 4166:= 4160:. 4154:{ 4151:) 4142:( 4130:; 4115:{ 4083:} 4080:} 4077:; 4068:{ 4050:} 4044:{ 4026:{ 4008:} 3981:{ 3949:} 3946:; 3925:. 3901:( 3895:. 3889:; 3868:. 3844:( 3826:{ 3811:; 3796:} 3793:; 3787:+ 3781:+ 3769:T 3763:{ 3739:) 3733:( 3727:: 3724:) 3703:( 3697:{ 3694:T 3688:: 3676:T 3661:; 3655:= 3646:} 3637:( 3625:+ 3622:) 3616:( 3601:{ 3580:} 3577:; 3565:{ 3562:) 3553:( 3544:{ 3511:} 3508:; 3505:0 3499:; 3457:( 3445:( 3424:= 3412:( 3400:( 3379:= 3352:= 3328:{ 3325:) 3319:* 3313:, 3304:( 3292:} 3271:{ 3256:} 3253:; 3223:{ 3202:( 3190:( 3184:: 3181:) 3157:( 3151:{ 3145:: 3133:} 3112:{ 3097:} 3094:; 3064:{ 3043:( 3031:( 3025:: 3022:) 2998:( 2992:{ 2986:: 2974:; 2950:: 2944:} 2929:{ 2914:} 2911:{ 2902:( 2890:( 2884:: 2881:) 2857:( 2851:{ 2845:: 2833:} 2830:; 2800:{ 2785:; 2770:{ 2764:: 2752:; 2746:= 2737:~ 2731:; 2728:0 2725:= 2710:{ 2679:} 2676:; 2655:. 2628:, 2622:( 2613:; 2604:{ 2589:; 2583:* 2577:; 2562:} 2559:; 2553:+ 2547:+ 2529:{ 2502:) 2496:( 2484:( 2478:: 2475:) 2469:* 2463:, 2442:( 2436:{ 2430:: 2418:; 2412:= 2403:} 2394:( 2382:+ 2379:) 2373:( 2358:{ 2334:} 2331:; 2319:{ 2316:) 2307:( 2298:{ 2292:: 2280:; 2277:0 2274:= 2250:; 2244:= 2235:~ 2229:{ 2175:2 2169:, 2166:% 2163:3 2148:, 2133:, 2115:1 2109:, 2100:3 2094:, 2078:} 2075:; 2072:0 2051:2 2042:( 2030:( 2009:= 1991:( 1979:( 1958:= 1940:( 1928:( 1907:= 1880:= 1856:; 1817:1 1808:( 1796:( 1775:= 1766:3 1757:( 1745:( 1724:= 1697:= 1673:{ 1658:; 1655:1 1652:= 1643:: 1637:} 1634:; 1598:{ 1580:} 1577:{ 1574:) 1568:( 1562:, 1553:( 1541:( 1535:: 1532:) 1523:, 1499:( 1493:: 1487:{ 1478:: 1466:; 1457:: 1451:} 1448:; 1412:{ 1394:} 1391:{ 1388:) 1382:( 1376:, 1367:( 1355:( 1349:: 1346:) 1337:, 1313:( 1307:: 1301:{ 1292:: 1280:; 1271:: 1265:} 1262:; 1226:{ 1208:} 1205:{ 1202:) 1196:( 1190:, 1181:( 1169:( 1163:: 1160:) 1151:, 1127:( 1121:: 1115:{ 1106:: 1094:; 1070:: 1064:} 1061:} 1046:{ 1043:) 1037:( 1031:{ 1019:: 1013:; 1010:0 1007:= 983:( 971:( 965:: 962:) 938:( 932:; 926:= 917:: 911:{ 902:: 890:} 887:; 869:{ 851:: 845:{ 836:: 824:} 821:; 803:{ 785:: 779:{ 770:: 755:; 749:= 740:~ 734:; 731:0 728:= 713:: 707:{ 596:, 23:.

Index

the concept of "decorators" in Python
object-oriented programming
design pattern
object
class
Single Responsibility Principle
Open-Closed Principle
design patterns

UML
run-time
class
wraps
forward
mixin
trait
subclassing
compile time
run-time
object-oriented programming languages
Java
.NET Framework

windowing system
scrolling
scrollbars
Command design pattern
State design pattern
Flyweight pattern
Flyweight design pattern

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑