#+title: patron de diseƱo: decorator #+begin_src plantuml :file /tmp/algo.png @startuml hide abstract circle hide class circle abstract LibraryItem <> { + NumCopies: int - numCopies: int + <> Display(): void } class Book extends LibraryItem{ - author: string - title: string + Book(string author, string title, int numCopies) + <> Display(): void } class Video extends LibraryItem { - director: string - title: string - playTime: int + Video(string director, string title, int numCopies, int playTime) + <> Display(): void } abstract class Decorator extends LibraryItem { # libraryitem: LibraryItem; + Decorator(LibraryItem libraryItem) + <> Display(): void } class Borrowable extends Decorator { # borrowers: List + Borrowable(LibraryItem libraryItem): base(libraryItem) + BorrowItem(string name): void + ReturnItem(string name): void + <> Display(): void } Decorator o-d-> LibraryItem @enduml #+end_src