%TGIF 4.1.22 state(0,37,100.000,64,65,0,4,1,9,2,2,0,0,0,0,1,0,'NewCenturySchlbk-Roman',0,69120,0,0,0,10,0,0,1,1,0,16,0,0,4,21,1,0,1088,1408,1,0,2880,0). % % @(#)$Header: /home/bjepson/Projects/Bazaar/toot.obj,v 1.12 1999/12/12 17:35:20 bjepson Exp bjepson $ % %W% % unit("1 pixel/pixel"). color_info(94,65535,0,[ "magenta", 65535, 0, 65535, 65535, 0, 65535, 1, "red", 65535, 0, 0, 65535, 0, 0, 1, "green", 0, 65535, 0, 0, 65535, 0, 1, "blue", 0, 0, 65535, 0, 0, 65535, 1, "yellow", 65535, 65535, 0, 65535, 65535, 0, 1, "pink", 65535, 49931, 53052, 65535, 49344, 52171, 1, "cyan", 0, 65535, 65535, 0, 65535, 65535, 1, "CadetBlue", 22885, 40569, 42649, 24415, 40606, 41120, 1, "white", 65535, 65535, 65535, 65535, 65535, 65535, 1, "black", 0, 0, 0, 0, 0, 0, 1, "DarkSlateGray", 10402, 19764, 18724, 12079, 20303, 20303, 1, "#ACA5AC", 44730, 42649, 44730, 44032, 42240, 44032, 1, "#D5EEFF", 55132, 61374, 65535, 54528, 60928, 65280, 1, "#D5E6FF", 55132, 59293, 65535, 54528, 58880, 65280, 1, "#A4F64A", 42649, 63454, 18724, 41984, 62976, 18944, 1, "#8BBAFF", 36408, 47850, 65535, 35584, 47616, 65280, 1, "#FF6531", 65535, 26005, 12482, 65280, 25856, 12544, 1, "#830000", 34327, 0, 0, 33536, 0, 0, 1, "#9CCAFF", 40569, 52011, 65535, 39936, 51712, 65280, 1, "#9C999C", 40569, 39529, 40569, 39936, 39168, 39936, 1, "#2950CD", 10402, 20804, 53052, 10496, 20480, 52480, 1, "#008183", 0, 33287, 34327, 0, 33024, 33536, 1, "#629973", 24965, 39529, 29126, 25088, 39168, 29440, 1, "#8B8D8B", 36408, 36408, 36408, 35584, 36096, 35584, 1, "#838183", 34327, 33287, 34327, 33536, 33024, 33536, 1, "#7B7D7B", 31207, 32247, 31207, 31488, 32000, 31488, 1, "#6A99FF", 27046, 39529, 65535, 27136, 39168, 65280, 1, "#ACBA41", 44730, 47850, 16643, 44032, 47616, 16640, 1, "#737173", 29126, 29126, 29126, 29440, 28928, 29440, 1, "#294094", 10402, 16643, 38488, 10496, 16384, 37888, 1, "#00FF00", 0, 65535, 0, 0, 65280, 0, 1, "#2048CD", 8321, 18724, 53052, 8192, 18432, 52480, 1, "#EEF2FF", 61374, 62414, 65535, 60928, 61952, 65280, 1, "#2961E6", 10402, 24965, 59293, 10496, 24832, 58880, 1, "#FFFAFF", 65535, 64494, 65535, 65280, 64000, 65280, 1, "#C5D652", 50971, 55132, 20804, 50432, 54784, 20992, 1, "#DEEA5A", 57213, 60333, 22885, 56832, 59904, 23040, 1, "#C5FF62", 50971, 65535, 24965, 50432, 65280, 25088, 1, "#EEEAEE", 61374, 60333, 61374, 60928, 59904, 60928, 1, "#008100", 0, 33287, 0, 0, 33024, 0, 1, "#9CB2E6", 40569, 45770, 59293, 39936, 45568, 58880, 1, "#ACBA39", 44730, 47850, 14563, 44032, 47616, 14592, 1, "#A4FF41", 42649, 65535, 16643, 41984, 65280, 16640, 1, "#4A81FF", 18724, 33287, 65535, 18944, 33024, 65280, 1, "#FFFF52", 65535, 65535, 20804, 65280, 65280, 20992, 1, "#838100", 34327, 33287, 0, 33536, 33024, 0, 1, "#CDCECD", 53052, 53052, 53052, 52480, 52736, 52480, 1, "#182039", 6241, 8321, 14563, 6144, 8192, 14592, 1, "#ACCEFF", 44730, 53052, 65535, 44032, 52736, 65280, 1, "#C5C2C5", 50971, 49931, 50971, 50432, 49664, 50432, 1, "#ACC6FF", 44730, 50971, 65535, 44032, 50688, 65280, 1, "#D5E65A", 55132, 59293, 22885, 54528, 58880, 23040, 1, "#94EA52", 38488, 60333, 20804, 37888, 59904, 20992, 1, "#BDE6FF", 48891, 59293, 65535, 48384, 58880, 65280, 1, "#BDD6FF", 48891, 55132, 65535, 48384, 54784, 65280, 1, "#3165E6", 12482, 26005, 59293, 12544, 25856, 58880, 1, "#9C0062", 40569, 0, 24965, 39936, 0, 25088, 1, "#396D31", 14563, 28086, 12482, 14592, 27904, 12544, 1, "#FF65CD", 65535, 26005, 53052, 65280, 25856, 52480, 1, "#FF0000", 65535, 0, 0, 65280, 0, 0, 1, "#6265CD", 24965, 26005, 53052, 25088, 25856, 52480, 1, "#529DFF", 20804, 40569, 65535, 20992, 40192, 65280, 1, "#627D52", 24965, 32247, 20804, 25088, 32000, 20992, 1, "#9C99FF", 40569, 39529, 65535, 39936, 39168, 65280, 1, "#529DEE", 20804, 40569, 61374, 20992, 40192, 60928, 1, "#FFFFF6", 65535, 65535, 63454, 65280, 65280, 62976, 1, "#7BAEFF", 31207, 44730, 65535, 31488, 44544, 65280, 1, "#4A79E6", 18724, 31207, 59293, 18944, 30976, 58880, 1, "#E6F252", 59293, 62414, 20804, 58880, 61952, 20992, 1, "#6ACE31", 27046, 53052, 12482, 27136, 52736, 12544, 1, "#396929", 14563, 27046, 10402, 14592, 26880, 10496, 1, "#000083", 0, 0, 34327, 0, 0, 33536, 1, "#182862", 6241, 10402, 24965, 6144, 10240, 25088, 1, "#101418", 4160, 5201, 6241, 4096, 5120, 6144, 1, "#5AA5FF", 22885, 42649, 65535, 23040, 42240, 65280, 1, "#5AA1FF", 22885, 41609, 65535, 23040, 41216, 65280, 1, "#4199A4", 16643, 39529, 42649, 16640, 39168, 41984, 1, "#5A8DFF", 22885, 36408, 65535, 23040, 36096, 65280, 1, "#FFFFFF", 65535, 65535, 65535, 65280, 65280, 65280, 1, "#FFFF00", 65535, 65535, 0, 65280, 65280, 0, 1, "#528562", 20804, 34327, 24965, 20992, 34048, 25088, 1, "#003439", 0, 13523, 14563, 0, 13312, 14592, 1, "#83B6FF", 34327, 46810, 65535, 33536, 46592, 65280, 1, "#83AAFF", 34327, 43690, 65535, 33536, 43520, 65280, 1, "#DEEEFF", 57213, 61374, 65535, 56832, 60928, 65280, 1, "#94C2FF", 38488, 49931, 65535, 37888, 49664, 65280, 1, "#94B6FF", 38488, 46810, 65535, 37888, 46592, 65280, 1, "#A4FA41", 42649, 64494, 16643, 41984, 64000, 16640, 1, "#202020", 8321, 8321, 8321, 8192, 8192, 8192, 1, "#294018", 10402, 16643, 6241, 10496, 16384, 6144, 1, "#6295FF", 24965, 38488, 65535, 25088, 38144, 65280, 1, "#313062", 12482, 12482, 24965, 12544, 12288, 25088, 1, "#73A5FF", 29126, 42649, 65535, 29440, 42240, 65280, 1, "#0000FF", 0, 0, 65535, 0, 0, 65280, 1 ]). script_frac("0.6"). fg_bg_colors('black','white'). page(1,"",1,''). text('black',1024,93,3,2,1,254,114,10,31,7,0,0,0,0,2,254,114,0,0,"",0,0,0,0,124,'',[ minilines(254,114,0,0,2,0,0,[ mini_line(186,31,7,0,0,0,[ str_block(0,186,31,7,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,195840,186,31,7,0,-1,0,0,0,0,0, "Module One")]) ]), mini_line(254,31,7,0,0,0,[ str_block(0,254,31,7,0,-3,0,0,0,[ str_seg('black','Helvetica-Bold',1,195840,254,31,7,0,-3,0,0,0,0,0, "Object-Oriented")]) ]), mini_line(215,31,7,0,0,0,[ str_block(0,215,31,7,0,-3,0,0,0,[ str_seg('black','Helvetica-Bold',1,195840,215,31,7,0,-3,0,0,0,0,0, "Programming")]) ]) ])]). text('black',552,20,1,0,1,477,15,22,12,3,0,0,0,0,2,477,15,0,0,"",0,0,0,0,32,'',[ minilines(477,15,0,0,0,0,0,[ mini_line(477,12,3,0,0,0,[ str_block(0,477,12,3,0,-3,0,0,0,[ str_seg('black','Helvetica-Bold',1,69120,477,12,3,0,-3,0,0,0,0,0, "UML and Patterns for Web Database Applications - December 16, 1999 - Page 1")]) ]) ])]). text('black',64,248,1,0,1,238,29,48,24,5,0,0,0,0,2,238,29,0,0,"",0,0,0,0,272,'',[ minilines(238,29,0,0,0,0,0,[ mini_line(238,24,5,0,0,0,[ str_block(0,238,24,5,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,138240,238,24,5,0,-1,0,0,0,0,0, "Classes and Objects")]) ]) ])]). text('black',96,290,3,0,1,921,51,74,14,3,0,0,0,0,2,921,51,0,0,"",0,0,0,0,304,'',[ minilines(921,51,0,0,0,0,0,[ mini_line(915,14,3,0,0,0,[ str_block(0,915,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,915,14,3,0,-1,0,0,0,0,0, "Classes are blueprints, objects are constructs. The class definition defines what you can do to the object, and what information you can get from it. All the objects")]) ]), mini_line(921,14,3,0,0,0,[ str_block(0,921,14,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,80640,921,14,3,0,0,0,0,0,0,0, " that are instances of a class can be treated identically. They are interchangeable entities. If you've written an object-oriented program that can add a text caption")]) ]), mini_line(738,14,3,0,0,0,[ str_block(0,738,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,738,14,3,0,-1,0,0,0,0,0, " to an instance of a class that represents a PNG image, it doesn't matter it you give it a picture of Richard Nixon or a pomegranate.")]) ]) ])]). text('black',96,362,1,0,1,758,17,75,14,3,0,0,0,0,2,758,17,0,0,"",0,0,0,0,376,'',[ minilines(758,17,0,0,0,0,0,[ mini_line(758,14,3,0,0,0,[ str_block(0,758,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,758,14,3,0,-2,0,0,0,0,0, "In UML, a class is represented by a box. This class represents a stooge, who is a member of the comedy group \"The Three Stooges\":")]) ]) ])]). text('black',96,458,2,0,1,875,34,90,14,3,0,0,0,0,2,875,34,0,0,"",0,0,0,0,472,'',[ minilines(875,34,0,0,0,0,0,[ mini_line(875,14,3,0,0,0,[ str_block(0,875,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,875,14,3,0,-2,0,0,0,0,0, "Objects, which are instances of the class, are also represented by boxes, but the name is underlined, and a colon separates the object name from the class ")]) ]), mini_line(573,14,3,0,0,0,[ str_block(0,573,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,573,14,3,0,-2,0,0,0,0,0, "name. Here are some Stooges (the third stooge position was filled by different performers over time):")]) ]) ])]). group([ box('black','',144,396,272,436,0,1,1,77,0,0,0,0,0,'1',0,[ ]), text('black',208,408,1,1,1,45,19,82,15,4,0,0,0,0,2,45,19,0,0,"",0,0,0,0,423,'',[ minilines(45,19,0,0,1,0,0,[ mini_line(45,15,4,0,0,0,[ str_block(0,45,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,45,15,4,0,-1,0,0,0,0,0, "Stooge")]) ]) ])]) ], 101,0,0,[ ]). box('black','',144,504,272,544,0,1,1,103,0,0,0,0,0,'1',0,[ ]). text('black',208,515,1,1,1,83,19,104,15,4,0,0,0,0,2,83,19,0,0,"",0,0,0,0,530,'',[ minilines(83,19,0,0,1,0,0,[ mini_line(83,15,4,0,0,0,[ str_block(0,83,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,83,15,4,0,-1,1,0,0,0,0, "Moe: Stooge")]) ]) ])]). box('black','',288,504,416,544,0,1,1,110,0,0,0,0,0,'1',0,[ ]). text('black',352,515,1,1,1,90,19,111,15,4,0,0,0,0,2,90,19,0,0,"",0,0,0,0,530,'',[ minilines(90,19,0,0,1,0,0,[ mini_line(90,15,4,0,0,0,[ str_block(0,90,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,90,15,4,0,-1,1,0,0,0,0, "Larry: Stooge")]) ]) ])]). box('black','',432,504,560,544,0,1,1,113,0,0,0,0,0,'1',0,[ ]). text('black',496,515,1,1,1,91,19,114,15,4,0,0,0,0,2,91,19,0,0,"",0,0,0,0,530,'',[ minilines(91,19,0,0,1,0,0,[ mini_line(91,15,4,0,0,0,[ str_block(0,91,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,91,15,4,0,-1,1,0,0,0,0, "Curly: Stooge")]) ]) ])]). box('black','',576,504,704,544,0,1,1,116,0,0,0,0,0,'1',0,[ ]). text('black',640,515,1,1,1,98,19,117,15,4,0,0,0,0,2,98,19,0,0,"",0,0,0,0,530,'',[ minilines(98,19,0,0,1,0,0,[ mini_line(98,15,4,0,0,0,[ str_block(0,98,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,98,15,4,0,-1,1,0,0,0,0, "Shemp: Stooge")]) ]) ])]). group([ box('black','',720,504,848,544,0,1,1,119,0,0,0,0,0,'1',0,[ ]), text('black',784,515,1,1,1,116,19,120,15,4,0,0,0,0,2,116,19,0,0,"",0,0,0,0,530,'',[ minilines(116,19,0,0,1,0,0,[ mini_line(116,15,4,0,0,0,[ str_block(0,116,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,116,15,4,0,-1,1,0,0,0,0, "Curly Joe: Stooge")]) ]) ])]) ], 233,0,0,[ ]). group([ box('black','',864,504,992,544,0,1,1,235,0,0,0,0,0,'1',0,[ ]), text('black',928,515,1,1,1,74,19,236,15,4,0,0,0,0,2,74,19,0,0,"",0,0,0,0,530,'',[ minilines(74,19,0,0,1,0,0,[ mini_line(74,15,4,0,0,0,[ str_block(0,74,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,74,15,4,0,-1,1,0,0,0,0, "Joe: Stooge")]) ]) ])]) ], 234,0,0,[ ]). box('black','',144,752,280,856,0,1,1,266,0,0,0,0,0,'1',0,[ ]). text('black',212,756,1,1,1,45,19,267,15,4,0,0,0,0,2,45,19,0,0,"",0,0,0,0,771,'',[ minilines(45,19,0,0,1,0,0,[ mini_line(45,15,4,0,0,0,[ str_block(0,45,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,45,15,4,0,-1,0,0,0,0,0, "Stooge")]) ]) ])]). poly('black','',2,[ 144,776,280,776],0,1,1,272,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). text('black',152,780,2,0,1,121,30,274,12,3,0,0,0,0,2,121,30,0,0,"",0,0,0,0,792,'',[ minilines(121,30,0,0,0,0,0,[ mini_line(63,12,3,0,0,0,[ str_block(0,63,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,63,12,3,0,0,0,0,0,0,0, "name: String")]) ]), mini_line(121,12,3,0,0,0,[ str_block(0,121,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,121,12,3,0,0,0,0,0,0,0, "smack_response: String")]) ]) ])]). poly('black','',2,[ 144,816,280,816],0,1,1,310,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). text('black',152,820,2,0,1,108,30,311,12,3,0,0,0,0,2,108,30,0,0,"",0,0,0,0,832,'',[ minilines(108,30,0,0,0,0,0,[ mini_line(108,12,3,0,0,0,[ str_block(0,108,12,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,69120,108,12,3,0,-2,0,0,0,0,0, "send_smack(Stooge)")]) ]), mini_line(86,12,3,0,0,0,[ str_block(0,86,12,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,69120,86,12,3,0,-2,0,0,0,0,0, "receive_smack()")]) ]) ])]). text('black',96,562,1,0,1,230,23,314,18,5,0,0,0,0,2,230,23,0,0,"",0,0,0,0,580,'',[ minilines(230,23,0,0,0,0,0,[ mini_line(230,18,5,0,0,0,[ str_block(0,230,18,5,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,103680,230,18,5,0,-1,0,0,0,0,0, "Attributes and Operations")]) ]) ])]). text('black',96,590,9,0,1,890,153,341,14,3,0,0,0,0,2,890,153,0,0,"",0,0,0,0,604,'',[ minilines(890,153,0,0,0,0,0,[ mini_line(569,14,3,0,0,0,[ str_block(0,569,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,569,14,3,0,-2,0,0,0,0,0, "The class definition describes the attributes (data) and methods (behavior) that are part of the class. ")]) ]), mini_line(0,14,3,0,0,0,[ str_block(0,0,14,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,80640,0,14,3,0,0,0,0,0,0,0, "")]) ]), mini_line(890,14,3,0,0,0,[ str_block(0,890,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,890,14,3,0,-2,0,0,0,0,0, "The stooges often smacked each other, although Moe did most of the smacking. This smacking is part of stooge behavior, so we'll represent it with a method ")]) ]), mini_line(867,14,3,0,0,0,[ str_block(0,867,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,867,14,3,0,-2,0,0,0,0,0, "called send_smack(Stooge). The Stooge in parentheses indicates that the send_smack() method accepts one argument, which is the stooge that is to be ")]) ]), mini_line(504,14,3,0,0,0,[ str_block(0,504,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,504,14,3,0,-1,0,0,0,0,0, "smacked. For example, Moe.smack(Curly) indicates that you want Moe to smack Curly.")]) ]), mini_line(0,14,3,0,0,0,[ str_block(0,0,14,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,80640,0,14,3,0,0,0,0,0,0,0, "")]) ]), mini_line(850,14,3,0,0,0,[ str_block(0,850,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,850,14,3,0,-2,0,0,0,0,0, "Just as a stooge needs to know when you want him to smack another stooge, he also needs to know when he's been smacked. So, we'll also have the ")]) ]), mini_line(866,14,3,0,0,0,[ str_block(0,866,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,866,14,3,0,-2,0,0,0,0,0, "receive_smack() method, which you can think of as the stooge's reaction to being smacked. Each stooge has a unique reaction to being smacked, so we ")]) ]), mini_line(681,14,3,0,0,0,[ str_block(0,681,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,681,14,3,0,-1,0,0,0,0,0, "need an attribute, smack_response. In addition to the smack_response attribute, each stooge will naturally have a name.")]) ]) ])]). polygon('black','',6,[ 48,872,48,1328,368,1328,368,888,352,872,48,872],0,1,1,0,479,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 352,872,352,888,368,888,352,872],0,1,1,0,480,0,0,0,0,0,'1',0, "0",[ ]). text('black',208,879,1,1,1,90,21,482,17,4,0,0,0,0,2,90,21,0,0,"",0,0,0,0,896,'',[ minilines(90,21,0,0,1,0,0,[ mini_line(90,17,4,0,0,0,[ str_block(0,90,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,90,17,4,0,-1,0,0,0,0,0, "Stooge.java")]) ]) ])]). polygon('black','',6,[ 384,872,384,1328,704,1328,704,888,688,872,384,872],0,1,1,0,520,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 688,872,688,888,704,888,688,872],0,1,1,0,521,0,0,0,0,0,'1',0, "0",[ ]). text('black',544,879,1,1,1,84,21,522,17,4,0,0,0,0,2,84,21,0,0,"",0,0,0,0,896,'',[ minilines(84,21,0,0,1,0,0,[ mini_line(84,17,4,0,0,0,[ str_block(0,84,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,84,17,4,0,-1,0,0,0,0,0, "Stooge.pm")]) ]) ])]). polygon('black','',6,[ 720,872,720,1328,1040,1328,1040,888,1024,872,720,872],0,1,1,0,556,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 1024,872,1024,888,1040,888,1024,872],0,1,1,0,557,0,0,0,0,0,'1',0, "0",[ ]). text('black',880,879,1,1,1,77,21,558,17,4,0,0,0,0,2,77,21,0,0,"",0,0,0,0,896,'',[ minilines(77,21,0,0,1,0,0,[ mini_line(77,17,4,0,0,0,[ str_block(0,77,17,4,0,0,0,0,0,[ str_seg('black','Times-Bold',1,115200,77,17,4,0,0,0,0,0,0,0, "Stooge.py")]) ]) ])]). text('black',60,919,34,0,1,246,374,582,9,2,0,0,0,0,2,246,374,0,0,"",0,0,0,0,928,'',[ minilines(246,374,0,0,0,0,0,[ mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-1,0,0,0,0,0, "public class Stooge {")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(144,9,2,0,0,0,[ str_block(0,144,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,144,9,2,0,-3,0,0,0,0,0, " // This stooge's name.")]) ]), mini_line(102,9,2,0,0,0,[ str_block(0,102,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,102,9,2,0,-5,0,0,0,0,0, " String name; ")]) ]), mini_line(48,9,2,0,0,0,[ str_block(0,48,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,48,9,2,0,-5,0,0,0,0,0, " ")]) ]), mini_line(186,9,2,0,0,0,[ str_block(0,186,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,186,9,2,0,-3,0,0,0,0,0, " // Response to being smacked.")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-5,0,0,0,0,0, " String smack_response; ")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(102,9,2,0,0,0,[ str_block(0,102,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,102,9,2,0,-3,0,0,0,0,0, " // Constructor.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(222,9,2,0,0,0,[ str_block(0,222,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,222,9,2,0,-1,0,0,0,0,0, " public Stooge(String stooge_name) {")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, " name = stooge_name;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-3,0,0,0,0,0, " // Set this stooge's response.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(246,9,2,0,0,0,[ str_block(0,246,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,246,9,2,0,-1,0,0,0,0,0, " void setResponse(String new_response) {")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-3,0,0,0,0,0, " smack_response = new_response;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-3,0,0,0,0,0, " // Send a smack to another stooge.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(198,9,2,0,0,0,[ str_block(0,198,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,198,9,2,0,-1,0,0,0,0,0, " void sendSmack(Stooge target) {")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-3,0,0,0,0,0, " target.receiveSmack();")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(246,9,2,0,0,0,[ str_block(0,246,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,246,9,2,0,-3,0,0,0,0,0, " // Receive a smack from another stooge.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-1,0,0,0,0,0, " void receiveSmack() {")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-1,0,0,0,0,0, " System.out.println(")]) ]), mini_line(228,9,2,0,0,0,[ str_block(0,228,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,228,9,2,0,-3,0,0,0,0,0, " name + \": \" + smack_response);")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]) ])]). text('black',732,919,24,0,1,276,264,587,9,2,0,0,0,0,2,276,264,0,0,"",0,0,0,0,928,'',[ minilines(276,264,0,0,0,0,0,[ mini_line(78,9,2,0,0,0,[ str_block(0,78,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,78,9,2,0,-3,0,0,0,0,0, "class Stooge:")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-3,0,0,0,0,0, " # The constructor.")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,-3,0,0,0,0,0, " def __init__(self, name):")]) ]), mini_line(144,9,2,0,0,0,[ str_block(0,144,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,144,9,2,0,-1,0,0,0,0,0, " self.name = name")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-2,0,0,0,0,0, " self.smack_response = ''")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(198,9,2,0,0,0,[ str_block(0,198,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,198,9,2,0,-3,0,0,0,0,0, " # Set this stooge's response.")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-3,0,0,0,0,0, " def setResponse(self, response):")]) ]), mini_line(228,9,2,0,0,0,[ str_block(0,228,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,228,9,2,0,-1,0,0,0,0,0, " self.smack_response = response")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(222,9,2,0,0,0,[ str_block(0,222,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,222,9,2,0,-3,0,0,0,0,0, " # Send a smack to another stooge.")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-3,0,0,0,0,0, " def sendSmack(self, stooge):")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,-2,0,0,0,0,0, " stooge.receiveSmack()")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(252,9,2,0,0,0,[ str_block(0,252,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,252,9,2,0,-3,0,0,0,0,0, " # Receive a smack from another stooge.")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-3,0,0,0,0,0, " def receiveSmack(self):")]) ]), mini_line(222,9,2,0,0,0,[ str_block(0,222,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,222,9,2,0,-5,0,0,0,0,0, " print \"%s: %s\" % (self.name, ")]) ]), mini_line(276,9,2,0,0,0,[ str_block(0,276,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,276,9,2,0,-2,0,0,0,0,0, " self.smack_response)")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]) ])]). text('black',395,919,37,0,1,306,407,589,9,2,0,0,0,0,2,306,407,0,0,"",0,0,0,0,928,'',[ minilines(306,407,0,0,0,0,0,[ mini_line(90,9,2,0,0,0,[ str_block(0,90,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,90,9,2,0,-3,0,0,0,0,0, "package Stooge;")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, "# The constructor.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(54,9,2,0,0,0,[ str_block(0,54,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,54,9,2,0,-1,0,0,0,0,0, "sub new {")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-3,0,0,0,0,0, " my ($proto, $name) = @_;")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-3,0,0,0,0,0, " my $class = ref($proto) || $proto;")]) ]), mini_line(96,9,2,0,0,0,[ str_block(0,96,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,96,9,2,0,-3,0,0,0,0,0, " my $self = {};")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " # This stooge's name.")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-5,0,0,0,0,0, " $self->{name} = $name; ")]) ]), mini_line(180,9,2,0,0,0,[ str_block(0,180,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,180,9,2,0,-3,0,0,0,0,0, " # Response to being smacked.")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-5,0,0,0,0,0, " $self->{smack_response} = \"\"; ")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " bless($self, $class);")]) ]), mini_line(90,9,2,0,0,0,[ str_block(0,90,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,90,9,2,0,-3,0,0,0,0,0, " return $self;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,-3,0,0,0,0,0, "# Set this stooge's response.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-1,0,0,0,0,0, "sub set_response {")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(204,9,2,0,0,0,[ str_block(0,204,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,204,9,2,0,-3,0,0,0,0,0, " $self->{smack_response} = shift;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, "# Smack another stooge.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(96,9,2,0,0,0,[ str_block(0,96,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,96,9,2,0,-1,0,0,0,0,0, "sub send_smack {")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-3,0,0,0,0,0, " my ($self, $target) = @_;")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-3,0,0,0,0,0, " $target->receive_smack();")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(186,9,2,0,0,0,[ str_block(0,186,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,186,9,2,0,-3,0,0,0,0,0, "# Be smacked by another stooge.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-1,0,0,0,0,0, "sub receive_smack {")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, " my ($self) = @_;")]) ]), mini_line(306,9,2,0,0,0,[ str_block(0,306,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,306,9,2,0,-3,0,0,0,0,0, " print \"$self->{name}: $self->{smack_response}\\n\";")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-3,0,0,0,0,0, "1;")]) ]) ])]). page(2,"",1,''). text('black',96,94,3,0,1,912,52,448,14,3,0,0,0,0,2,912,52,-1,0,"",0,0,0,0,108,'',[ minilines(912,52,-1,0,0,0,0,[ mini_line(912,14,3,0,0,0,[ str_block(0,912,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,912,14,3,0,-2,0,0,0,0,0, "At any given time, there were always three stooges. Of the three, Larry and Moe were always present. To differentiate between types of stooge, we can define ")]) ]), mini_line(886,14,3,0,0,0,[ str_block(0,886,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,886,14,3,0,-2,0,0,0,0,0, "a class that is identical to Stooge with the exception of two extra attributes that indicate the years he joined and left the stooges. This class, ThirdStooge, is a ")]) ]), mini_line(836,14,4,-1,0,0,[ str_block(0,577,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,577,14,3,0,-2,0,0,0,0,0, "subclass of Stooge. Everything that you can say about a Stooge can also be said about a ThirdStooge. ")]), str_block(0,71,14,4,0,-3,0,0,0,[ str_seg('black','Times-Bold',1,80640,71,14,4,0,-3,0,0,0,0,0, "Stooge is a ")]), str_block(0,87,14,3,-1,0,0,0,0,[ str_seg('black','Times-BoldItalic',3,80640,87,14,3,-1,0,0,0,0,0,0, "generalization")]), str_block(0,101,14,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,80640,101,14,4,0,-1,0,0,0,0,0, " of ThirdStooge.")]) ]) ])]). text('black',96,282,6,0,1,598,103,461,14,3,0,0,0,0,2,598,103,0,0,"",0,0,0,0,296,'',[ minilines(598,103,0,0,0,0,0,[ mini_line(598,14,4,0,0,0,[ str_block(0,203,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,203,14,3,0,-2,0,0,0,0,0, "By the same logic, ThirdStooge is a ")]), str_block(0,81,14,4,0,-1,0,0,0,[ str_seg('black','Times-Italic',2,80640,81,14,4,0,-1,0,0,0,0,0, "specialization")]), str_block(0,314,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,314,14,3,0,-2,0,0,0,0,0, " of Stooge. Generalization is often implemented using a ")]) ]), mini_line(580,14,3,0,0,0,[ str_block(0,580,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,580,14,3,0,-2,0,0,0,0,0, "feature called inheritance. Using inheritance, a subclass inherits all the methods and attributes from its ")]) ]), mini_line(578,14,3,0,0,0,[ str_block(0,578,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,578,14,3,0,-2,0,0,0,0,0, "parent class, or superclass. The subclass can, as with ThirdStooge, define additional features, such as ")]) ]), mini_line(127,14,3,0,0,0,[ str_block(0,127,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,127,14,3,0,-2,0,0,0,0,0, "methods or attributes. ")]) ]), mini_line(0,14,3,0,0,0,[ str_block(0,0,14,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,80640,0,14,3,0,0,0,0,0,0,0, "")]) ]), mini_line(414,14,3,0,0,0,[ str_block(0,414,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,414,14,3,0,-2,0,0,0,0,0, "Here are the ThirdStooge subclasses of Stooge in Java, Perl, and Python:")]) ]) ])]). polygon('black','',6,[ 48,408,48,772,368,772,368,424,352,408,48,408],0,1,1,0,639,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 352,408,352,424,368,424,352,408],0,1,1,0,640,0,0,0,0,0,'1',0, "0",[ ]). text('black',208,415,1,1,1,137,21,641,17,4,0,0,0,0,2,137,21,0,0,"",0,0,0,0,432,'',[ minilines(137,21,0,0,1,0,0,[ mini_line(137,17,4,0,0,0,[ str_block(0,137,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,137,17,4,0,-1,0,0,0,0,0, "ThirdStooge.java")]) ]) ])]). text('black',60,447,28,0,1,294,308,669,9,2,0,0,0,0,2,294,308,0,0,"",0,0,0,0,456,'',[ minilines(294,308,0,0,0,0,0,[ mini_line(246,9,2,0,0,0,[ str_block(0,246,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,246,9,2,0,-1,0,0,0,0,0, "public class ThirdStooge extends Stooge {")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(294,9,2,0,0,0,[ str_block(0,294,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,294,9,2,0,-3,0,0,0,0,0, " int year_joined; // year he joined the stooges.")]) ]), mini_line(282,9,2,0,0,0,[ str_block(0,282,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,282,9,2,0,-3,0,0,0,0,0, " int year_left; // year he left the stooges.")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(234,9,2,0,0,0,[ str_block(0,234,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,234,9,2,0,-3,0,0,0,0,0, " // Invoke the superclass constructor.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(252,9,2,0,0,0,[ str_block(0,252,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,252,9,2,0,-1,0,0,0,0,0, " public ThirdStooge(String stooge_name) {")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, " super(stooge_name);")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-1,0,0,0,0,0, " void setYearJoined(int year) {")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, " year_joined = year;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-1,0,0,0,0,0, " int getYearJoined() {")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, " return year_joined;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(180,9,2,0,0,0,[ str_block(0,180,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,180,9,2,0,-1,0,0,0,0,0, " void setYearLeft(int year) {")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " year_left = year;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-1,0,0,0,0,0, " int getYearLeft() {")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " return year_left;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]) ])]). text('black',724,931,21,0,1,306,231,675,9,2,0,0,0,0,2,306,231,0,0,"",0,0,0,0,940,'',[ minilines(306,231,0,0,0,0,0,[ mini_line(102,9,2,0,0,0,[ str_block(0,102,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,102,9,2,0,0,0,0,0,0,0, "#!/usr/bin/python")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(306,9,2,0,0,0,[ str_block(0,306,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,306,9,2,0,-3,0,0,0,0,0, "# import classes from Stooge.py and ThirdStooge.py.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-1,0,0,0,0,0, "from Stooge import Stooge")]) ]), mini_line(210,9,2,0,0,0,[ str_block(0,210,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,210,9,2,0,-1,0,0,0,0,0, "from ThirdStooge import ThirdStooge")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, "# Create Moe and Curly.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-2,0,0,0,0,0, "moe = Stooge(\"Moe\")")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-2,0,0,0,0,0, "curly = ThirdStooge(\"Curly\")")]) ]), mini_line(276,9,2,0,0,0,[ str_block(0,276,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,276,9,2,0,-2,0,0,0,0,0, "curly.setResponse(\"Nyuk nyuk nyuk nyuk nyuk.\")")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-3,0,0,0,0,0, "curly.setYearJoined(1934);")]) ]), mini_line(144,9,2,0,0,0,[ str_block(0,144,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,144,9,2,0,-3,0,0,0,0,0, "curly.setYearLeft(1946);")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, "# Info about curly.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(306,9,2,0,0,0,[ str_block(0,306,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,306,9,2,0,-2,0,0,0,0,0, "print \"Curly joined in %d.\" % curly.getYearJoined()")]) ]), mini_line(282,9,2,0,0,0,[ str_block(0,282,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,282,9,2,0,-2,0,0,0,0,0, "print \"Curly left in %d.\" % curly.getYearLeft()")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(240,9,2,0,0,0,[ str_block(0,240,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,240,9,2,0,-3,0,0,0,0,0, "moe.sendSmack(curly) # Moe smacks Curly.")]) ]) ])]). group([ box('black','',548,180,676,244,0,1,1,449,0,0,0,0,0,'1',0,[ ]), text('black',612,184,1,1,1,82,19,450,15,4,0,0,0,0,2,82,19,0,0,"",0,0,0,0,199,'',[ minilines(82,19,0,0,1,0,0,[ mini_line(82,15,4,0,0,0,[ str_block(0,82,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,82,15,4,0,-1,0,0,0,0,0, "ThirdStooge")]) ]) ])]), poly('black','',2,[ 548,204,676,204],0,1,1,451,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]), text('black',556,208,2,0,1,99,30,452,12,3,0,0,0,0,2,99,30,0,0,"",0,0,0,0,220,'',[ minilines(99,30,0,0,0,0,0,[ mini_line(99,12,3,0,0,0,[ str_block(0,99,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,99,12,3,0,0,0,0,0,0,0, "year_joined: integer")]) ]), mini_line(86,12,3,0,0,0,[ str_block(0,86,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,86,12,3,0,0,0,0,0,0,0, "year_left: integer")]) ]) ])]) ], 681,0,0,[ ]). group([ box('black','',240,160,376,264,0,1,1,606,0,0,0,0,0,'1',0,[ ]), text('black',308,164,1,1,1,45,19,607,15,4,0,0,0,0,2,45,19,0,0,"",0,0,0,0,179,'',[ minilines(45,19,0,0,1,0,0,[ mini_line(45,15,4,0,0,0,[ str_block(0,45,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,45,15,4,0,-1,0,0,0,0,0, "Stooge")]) ]) ])]), poly('black','',2,[ 240,184,376,184],0,1,1,608,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]), text('black',248,188,2,0,1,121,30,609,12,3,0,0,0,0,2,121,30,0,0,"",0,0,0,0,200,'',[ minilines(121,30,0,0,0,0,0,[ mini_line(63,12,3,0,0,0,[ str_block(0,63,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,63,12,3,0,0,0,0,0,0,0, "name: String")]) ]), mini_line(121,12,3,0,0,0,[ str_block(0,121,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,121,12,3,0,0,0,0,0,0,0, "smack_response: String")]) ]) ])]), poly('black','',2,[ 240,224,376,224],0,1,1,610,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]), text('black',248,228,2,0,1,108,30,611,12,3,0,0,0,0,2,108,30,0,0,"",0,0,0,0,240,'',[ minilines(108,30,0,0,0,0,0,[ mini_line(108,12,3,0,0,0,[ str_block(0,108,12,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,69120,108,12,3,0,-2,0,0,0,0,0, "send_smack(Stooge)")]) ]), mini_line(86,12,3,0,0,0,[ str_block(0,86,12,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,69120,86,12,3,0,-2,0,0,0,0,0, "receive_smack()")]) ]) ])]) ], 688,0,0,[ ]). poly('black','',2,[ 548,212,392,212],0,1,1,691,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). polygon('black','',4,[ 376,212,392,200,392,224,376,212],0,1,1,0,692,0,0,0,0,0,'1',0, "0",[ ]). text('black',96,66,1,0,1,128,23,724,18,5,0,0,0,0,2,128,23,0,0,"",0,0,0,0,84,'',[ minilines(128,23,0,0,0,0,0,[ mini_line(128,18,5,0,0,0,[ str_block(0,128,18,5,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,103680,128,18,5,0,-1,0,0,0,0,0, "Generalization")]) ]) ])]). text('black',112,810,4,0,1,912,68,733,14,3,0,0,0,0,2,912,68,0,0,"",0,0,0,0,824,'',[ minilines(912,68,0,0,0,0,0,[ mini_line(891,14,3,0,0,0,[ str_block(0,891,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,891,14,3,0,-1,0,0,0,0,0, "Generalization lets you substitute a ThirdStooge anywhere a Stooge is needed. For example, Moe can smack Larry because Larry is a Stooge. Moe can also")]) ]), mini_line(854,14,3,0,0,0,[ str_block(0,854,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,854,14,3,0,-2,0,0,0,0,0, "smack Shemp, Curly, Curly Joe, or Joe, because a ThirdStooge can be used anywhere a Stooge is needed. This property of replaceability is known as ")]) ]), mini_line(912,14,3,0,0,0,[ str_block(0,912,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,912,14,3,0,-2,0,0,0,0,0, "polymorphism. The reverse is not true: if you tried to find out what year a Stooge left or joined the Three Stooges, you would be at a loss. Only a ThirdStooge has ")]) ]), mini_line(132,14,3,0,0,0,[ str_block(0,132,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,132,14,3,0,-1,0,0,0,0,0, "that sort of information.")]) ]) ])]). text('black',96,782,1,0,1,125,23,735,18,5,0,0,0,0,2,125,23,0,0,"",0,0,0,0,800,'',[ minilines(125,23,0,0,0,0,0,[ mini_line(125,18,5,0,0,0,[ str_block(0,125,18,5,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,103680,125,18,5,0,-1,0,0,0,0,0, "Polymorphism")]) ]) ])]). polygon('black','',6,[ 384,896,384,1200,704,1200,704,912,688,896,384,896],0,1,1,0,746,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 688,896,688,912,704,912,688,896],0,1,1,0,747,0,0,0,0,0,'1',0, "0",[ ]). text('black',544,903,1,1,1,108,21,748,17,4,0,0,0,0,2,108,21,0,0,"",0,0,0,0,920,'',[ minilines(108,21,0,0,1,0,0,[ mini_line(108,17,4,0,0,0,[ str_block(0,108,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,108,17,4,0,-1,0,0,0,0,0, "polyStooge.pl")]) ]) ])]). text('black',392,931,23,0,1,306,253,752,9,2,0,0,0,0,2,306,253,0,0,"",0,0,0,0,940,'',[ minilines(306,253,0,0,0,0,0,[ mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,0,0,0,0,0,0, "#!/usr/bin/perl -w")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(306,9,2,0,0,0,[ str_block(0,306,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,306,9,2,0,-3,0,0,0,0,0, "# Import classes from Stooge.pm and ThirdStooge.pm.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(66,9,2,0,0,0,[ str_block(0,66,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,66,9,2,0,-3,0,0,0,0,0, "use Stooge;")]) ]), mini_line(96,9,2,0,0,0,[ str_block(0,96,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,96,9,2,0,-3,0,0,0,0,0, "use ThirdStooge;")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-1,0,0,0,0,0, "# Create Moe and Curly")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, "$moe = new Stooge(\"Moe\");")]) ]), mini_line(204,9,2,0,0,0,[ str_block(0,204,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,204,9,2,0,-3,0,0,0,0,0, "$curly = new ThirdStooge(\"Curly\");")]) ]), mini_line(300,9,2,0,0,0,[ str_block(0,300,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,300,9,2,0,-3,0,0,0,0,0, "$curly->set_response(\"Nyuk nyuk nyuk nyuk nyuk.\");")]) ]), mini_line(180,9,2,0,0,0,[ str_block(0,180,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,180,9,2,0,-3,0,0,0,0,0, "$curly->set_year_joined(1934);")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-3,0,0,0,0,0, "$curly->set_year_left(1946);")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, "# Info about curly.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-5,0,0,0,0,0, "print \"Curly joined in \", ")]) ]), mini_line(222,9,2,0,0,0,[ str_block(0,222,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,222,9,2,0,-3,0,0,0,0,0, " $curly->get_year_joined(), \".\\n\";")]) ]), mini_line(144,9,2,0,0,0,[ str_block(0,144,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,144,9,2,0,-5,0,0,0,0,0, "print \"Curly left in \", ")]) ]), mini_line(210,9,2,0,0,0,[ str_block(0,210,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,210,9,2,0,-3,0,0,0,0,0, " $curly->get_year_left(), \".\\n\";")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(270,9,2,0,0,0,[ str_block(0,270,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,270,9,2,0,-3,0,0,0,0,0, "$moe->send_smack($curly); # Moe smacks Curly.")]) ]) ])]). polygon('black','',6,[ 720,896,720,1200,1040,1200,1040,912,1024,896,720,896],0,1,1,0,757,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 1024,896,1024,912,1040,912,1024,896],0,1,1,0,758,0,0,0,0,0,'1',0, "0",[ ]). text('black',880,903,1,1,1,108,21,759,17,4,0,0,0,0,2,108,21,0,0,"",0,0,0,0,920,'',[ minilines(108,21,0,0,1,0,0,[ mini_line(108,17,4,0,0,0,[ str_block(0,108,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,108,17,4,0,-1,0,0,0,0,0, "polyStooge.pl")]) ]) ])]). polygon('black','',6,[ 48,896,48,1200,368,1200,368,912,352,896,48,896],0,1,1,0,760,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 352,896,352,912,368,912,352,896],0,1,1,0,761,0,0,0,0,0,'1',0, "0",[ ]). text('black',208,903,1,1,1,124,21,762,17,4,0,0,0,0,2,124,21,0,0,"",0,0,0,0,920,'',[ minilines(124,21,0,0,1,0,0,[ mini_line(124,17,4,0,0,0,[ str_block(0,124,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,124,17,4,0,-1,0,0,0,0,0, "polyStooge.java")]) ]) ])]). text('black',56,931,24,0,1,312,264,773,9,2,0,0,0,0,2,312,264,0,0,"",0,0,0,0,940,'',[ minilines(312,264,0,0,0,0,0,[ mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-1,0,0,0,0,0, "public class polyStooge {")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(252,9,2,0,0,0,[ str_block(0,252,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,252,9,2,0,-1,0,0,0,0,0, " public static void main(String argv[]) {")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-1,0,0,0,0,0, " // Create Moe and Curly")]) ]), mini_line(36,9,2,0,0,0,[ str_block(0,36,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,36,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(210,9,2,0,0,0,[ str_block(0,210,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,210,9,2,0,-3,0,0,0,0,0, " Stooge moe = new Stooge(\"Moe\");")]) ]), mini_line(294,9,2,0,0,0,[ str_block(0,294,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,294,9,2,0,-3,0,0,0,0,0, " ThirdStooge curly = new ThirdStooge(\"Curly\");")]) ]), mini_line(306,9,2,0,0,0,[ str_block(0,306,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,306,9,2,0,-3,0,0,0,0,0, " curly.setResponse(\"Nyuk nyuk nyuk nyuk nyuk.\");")]) ]), mini_line(180,9,2,0,0,0,[ str_block(0,180,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,180,9,2,0,-3,0,0,0,0,0, " curly.setYearJoined(1934);")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-3,0,0,0,0,0, " curly.setYearLeft(1946);")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-3,0,0,0,0,0, " // Get info about curly.")]) ]), mini_line(36,9,2,0,0,0,[ str_block(0,36,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,36,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(258,9,2,0,0,0,[ str_block(0,258,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,258,9,2,0,-1,0,0,0,0,0, " System.out.println(\"Curly joined in \" +")]) ]), mini_line(312,9,2,0,0,0,[ str_block(0,312,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,312,9,2,0,-3,0,0,0,0,0, " curly.getYearJoined() + \".\");")]) ]), mini_line(246,9,2,0,0,0,[ str_block(0,246,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,246,9,2,0,-1,0,0,0,0,0, " System.out.println(\"Curly left in \" +")]) ]), mini_line(300,9,2,0,0,0,[ str_block(0,300,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,300,9,2,0,-3,0,0,0,0,0, " curly.getYearLeft() + \".\");")]) ]), mini_line(102,9,2,0,0,0,[ str_block(0,102,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,102,9,2,0,-5,0,0,0,0,0, " ")]) ]), mini_line(144,9,2,0,0,0,[ str_block(0,144,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,144,9,2,0,-3,0,0,0,0,0, " // Moe smacks Curly.")]) ]), mini_line(36,9,2,0,0,0,[ str_block(0,36,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,36,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, " moe.sendSmack(curly);")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]) ])]). box('black','',48,1212,368,1328,0,1,1,810,0,0,0,0,0,'1',0,[ ]). box('black','',52,1232,356,1324,0,1,1,811,0,0,0,0,0,'1',0,[ ]). box('black','',52,1215,364,1227,1,1,1,812,0,0,0,0,0,'1',0,[ ]). text('black',54,1215,1,0,1,106,11,816,9,2,1,0,0,0,2,106,11,0,0,"",0,0,0,0,1224,'',[ minilines(106,11,0,0,0,0,0,[ mini_line(106,9,2,0,0,0,[ str_block(0,106,9,2,0,-1,0,0,0,[ str_seg('white','Helvetica-Bold',1,46080,106,9,2,0,-1,0,0,0,0,0, "Running polyStooge.java...")]) ]) ])]). box('black','',356,1232,364,1324,1,1,1,838,0,0,0,0,0,'1',0,[ ]). poly('white','',4,[ 356,1236,360,1232,364,1236,356,1236],0,1,1,839,0,2,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). polygon('white','',4,[ 356,1320,360,1324,364,1320,356,1320],2,1,1,0,841,0,0,0,0,0,'1',0, "0",[ ]). oval('white','',356,1308,364,1312,2,1,1,842,0,0,0,0,0,'1',0,[ ]). text('white',56,1235,5,0,1,192,55,852,9,2,0,0,0,0,2,192,55,0,0,"",0,0,0,0,1244,'',[ minilines(192,55,0,0,0,0,0,[ mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-1,0,0,0,0,0, "bash2-2.03$ java polyStooge")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, "Curly joined in 1934.")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, "Curly left in 1946.")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-3,0,0,0,0,0, "Curly: Nyuk nyuk nyuk nyuk nyuk.")]) ]), mini_line(72,9,2,0,0,0,[ str_block(0,72,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,72,9,2,0,-5,0,0,0,0,0, "bash2-2.03$ ")]) ]) ])]). box('black','',124,1280,128,1288,1,1,1,863,0,0,0,0,0,'1',0,[ ]). box('black','',384,1212,704,1328,0,1,1,866,0,0,0,0,0,'1',0,[ ]). box('black','',388,1232,692,1324,0,1,1,867,0,0,0,0,0,'1',0,[ ]). box('black','',388,1215,700,1227,1,1,1,868,0,0,0,0,0,'1',0,[ ]). text('black',390,1215,1,0,1,96,11,869,9,2,1,0,0,0,2,96,11,0,0,"",0,0,0,0,1224,'',[ minilines(96,11,0,0,0,0,0,[ mini_line(96,9,2,0,0,0,[ str_block(0,96,9,2,0,-1,0,0,0,[ str_seg('white','Helvetica-Bold',1,46080,96,9,2,0,-1,0,0,0,0,0, "Running polyStooge.pl...")]) ]) ])]). box('black','',692,1232,700,1324,1,1,1,870,0,0,0,0,0,'1',0,[ ]). poly('white','',4,[ 692,1236,696,1232,700,1236,692,1236],0,1,1,871,0,2,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). polygon('white','',4,[ 692,1320,696,1324,700,1320,692,1320],2,1,1,0,872,0,0,0,0,0,'1',0, "0",[ ]). oval('white','',692,1308,700,1312,2,1,1,873,0,0,0,0,0,'1',0,[ ]). text('white',392,1235,5,0,1,192,55,874,9,2,0,0,0,0,2,192,55,0,0,"",0,0,0,0,1244,'',[ minilines(192,55,0,0,0,0,0,[ mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,0,0,0,0,0,0, "bash2-2.03$ ./polyStooge.pl")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, "Curly joined in 1934.")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, "Curly left in 1946.")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-3,0,0,0,0,0, "Curly: Nyuk nyuk nyuk nyuk nyuk.")]) ]), mini_line(72,9,2,0,0,0,[ str_block(0,72,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,72,9,2,0,-5,0,0,0,0,0, "bash2-2.03$ ")]) ]) ])]). box('black','',460,1280,464,1288,1,1,1,875,0,0,0,0,0,'1',0,[ ]). box('black','',720,1212,1040,1328,0,1,1,916,0,0,0,0,0,'1',0,[ ]). box('black','',724,1232,1028,1324,0,1,1,917,0,0,0,0,0,'1',0,[ ]). box('black','',724,1215,1036,1227,1,1,1,918,0,0,0,0,0,'1',0,[ ]). text('black',726,1215,1,0,1,99,11,919,9,2,1,0,0,0,2,99,11,0,0,"",0,0,0,0,1224,'',[ minilines(99,11,0,0,0,0,0,[ mini_line(99,9,2,0,0,0,[ str_block(0,99,9,2,0,-1,0,0,0,[ str_seg('white','Helvetica-Bold',1,46080,99,9,2,0,-1,0,0,0,0,0, "Running polyStooge.py...")]) ]) ])]). box('black','',1028,1232,1036,1324,1,1,1,920,0,0,0,0,0,'1',0,[ ]). poly('white','',4,[ 1028,1236,1032,1232,1036,1236,1028,1236],0,1,1,921,0,2,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). polygon('white','',4,[ 1028,1320,1032,1324,1036,1320,1028,1320],2,1,1,0,922,0,0,0,0,0,'1',0, "0",[ ]). oval('white','',1028,1308,1036,1312,2,1,1,923,0,0,0,0,0,'1',0,[ ]). text('white',728,1235,5,0,1,192,55,924,9,2,0,0,0,0,2,192,55,0,0,"",0,0,0,0,1244,'',[ minilines(192,55,0,0,0,0,0,[ mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-1,0,0,0,0,0, "bash2-2.03$ ./polyStooge.py")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, "Curly joined in 1934.")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, "Curly left in 1946.")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-3,0,0,0,0,0, "Curly: Nyuk nyuk nyuk nyuk nyuk.")]) ]), mini_line(72,9,2,0,0,0,[ str_block(0,72,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,72,9,2,0,-5,0,0,0,0,0, "bash2-2.03$ ")]) ]) ])]). box('black','',796,1280,800,1288,1,1,1,925,0,0,0,0,0,'1',0,[ ]). group([ polygon('black','',6,[ 720,288,720,772,1040,772,1040,304,1024,288,720,288],0,1,1,0,642,0,0,0,0,0,'1',0, "00",[ ]), polygon('black','',4,[ 1024,288,1024,304,1040,304,1024,288],0,1,1,0,643,0,0,0,0,0,'1',0, "0",[ ]), text('black',880,295,1,1,1,131,21,644,17,4,0,0,0,0,2,131,21,0,0,"",0,0,0,0,312,'',[ minilines(131,21,0,0,1,0,0,[ mini_line(131,17,4,0,0,0,[ str_block(0,131,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,131,17,4,0,-1,0,0,0,0,0, "ThirdStooge.pm")]) ]) ])]), text('black',736,327,40,0,1,228,440,656,9,2,0,0,0,0,2,228,440,0,0,"",0,0,0,0,336,'',[ minilines(228,440,0,0,0,0,0,[ mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-3,0,0,0,0,0, "package ThirdStooge;")]) ]), mini_line(66,9,2,0,0,0,[ str_block(0,66,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,66,9,2,0,-3,0,0,0,0,0, "use Stooge;")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, "@ISA = qw(Stooge);")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, "# The constructor.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(54,9,2,0,0,0,[ str_block(0,54,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,54,9,2,0,-1,0,0,0,0,0, "sub new {")]) ]), mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-3,0,0,0,0,0, " my $proto = shift;")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-3,0,0,0,0,0, " my $class = ref($proto) || $proto;")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(228,9,2,0,0,0,[ str_block(0,228,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,228,9,2,0,-3,0,0,0,0,0, " # Invoke the superclass constructor.")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-3,0,0,0,0,0, " my $self = $class->SUPER::new(@_);")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-3,0,0,0,0,0, " # Additional properties.")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,-5,0,0,0,0,0, " $self->{year_joined} = \"\"; ")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-5,0,0,0,0,0, " $self->{year_left} = \"\"; ")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " bless($self, $class);")]) ]), mini_line(90,9,2,0,0,0,[ str_block(0,90,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,90,9,2,0,-3,0,0,0,0,0, " return $self;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-1,0,0,0,0,0, "sub set_year_joined {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(198,9,2,0,0,0,[ str_block(0,198,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,198,9,2,0,-3,0,0,0,0,0, " $self->{year_joined} = shift;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-1,0,0,0,0,0, "sub get_year_joined {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-3,0,0,0,0,0, " return $self->{year_joined};")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-1,0,0,0,0,0, "sub set_year_left {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(186,9,2,0,0,0,[ str_block(0,186,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,186,9,2,0,-3,0,0,0,0,0, " $self->{year_left} = shift;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-1,0,0,0,0,0, "sub get_year_left {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(180,9,2,0,0,0,[ str_block(0,180,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,180,9,2,0,-3,0,0,0,0,0, " return $self->{year_left};")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-3,0,0,0,0,0, "1;")]) ]) ])]) ], 8979,0,0,[ ]). polygon('black','',6,[ 384,408,384,772,704,772,704,424,688,408,384,408],0,1,1,0,645,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 688,408,688,424,704,424,688,408],0,1,1,0,646,0,0,0,0,0,'1',0, "0",[ ]). text('black',544,415,1,1,1,124,21,647,17,4,0,0,0,0,2,124,21,0,0,"",0,0,0,0,432,'',[ minilines(124,21,0,0,1,0,0,[ mini_line(124,17,4,0,0,0,[ str_block(0,124,17,4,0,0,0,0,0,[ str_seg('black','Times-Bold',1,115200,124,17,4,0,0,0,0,0,0,0, "ThirdStooge.py")]) ]) ])]). text('black',404,447,27,0,1,240,297,672,9,2,0,0,0,0,2,240,297,0,0,"",0,0,0,0,456,'',[ minilines(240,297,0,0,0,0,0,[ mini_line(240,9,2,0,0,0,[ str_block(0,240,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,240,9,2,0,-1,0,0,0,0,0, "# import the Stooge class from Stooge.py")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-1,0,0,0,0,0, "from Stooge import Stooge")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-3,0,0,0,0,0, "class ThirdStooge(Stooge):")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-3,0,0,0,0,0, " # The constructor.")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,-3,0,0,0,0,0, " def __init__(self, name):")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(240,9,2,0,0,0,[ str_block(0,240,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,240,9,2,0,-3,0,0,0,0,0, " # Invoke superclass constructor.")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-5,0,0,0,0,0, " Stooge.__init__(self, name) ")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(198,9,2,0,0,0,[ str_block(0,198,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,198,9,2,0,-3,0,0,0,0,0, " # Initialize year values.")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-1,0,0,0,0,0, " self.year_joined = 0")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-1,0,0,0,0,0, " self.year_left = 0")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(204,9,2,0,0,0,[ str_block(0,204,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,204,9,2,0,-3,0,0,0,0,0, " def setYearJoined(self, year):")]) ]), mini_line(186,9,2,0,0,0,[ str_block(0,186,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,186,9,2,0,0,0,0,0,0,0, " self.year_joined = year")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-3,0,0,0,0,0, " def getYearJoined(self):")]) ]), mini_line(186,9,2,0,0,0,[ str_block(0,186,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,186,9,2,0,0,0,0,0,0,0, " return self.year_joined")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-3,0,0,0,0,0, " def setYearLeft(self, year):")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,0,0,0,0,0,0, " self.year_left = year")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-3,0,0,0,0,0, " def getYearLeft(self):")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,0,0,0,0,0,0, " return self.year_left")]) ]) ])]). text('black',552,20,1,0,1,477,15,9744,12,3,0,0,0,0,2,477,15,0,0,"",0,0,0,0,32,'',[ minilines(477,15,0,0,0,0,0,[ mini_line(477,12,3,0,0,0,[ str_block(0,477,12,3,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,69120,477,12,3,0,-1,0,0,0,0,0, "UML and Patterns for Web Database Applications - December 16, 1999 - Page 2")]) ]) ])]). page(3,"",1,''). text('white',56,118,5,0,1,441,85,926,14,3,0,0,0,0,2,441,85,0,0,"",0,0,0,0,132,'',[ minilines(441,85,0,0,0,0,0,[ mini_line(439,14,3,0,0,0,[ str_block(0,439,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,439,14,3,0,-2,0,0,0,0,0, "When you need to model a part-whole relationship, you can use composition ")]) ]), mini_line(441,14,3,0,0,0,[ str_block(0,441,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,441,14,3,0,-2,0,0,0,0,0, "to indicate that an instance of one class is part of an instance of another class. ")]) ]), mini_line(428,14,3,0,0,0,[ str_block(0,428,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,428,14,3,0,-2,0,0,0,0,0, "Leaving the Stooges behind, let's look at an example of composition. In this ")]) ]), mini_line(424,14,3,0,0,0,[ str_block(0,424,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,424,14,3,0,-2,0,0,0,0,0, "example, we see a Radio class that is composed of a few essential parts: a ")]) ]), mini_line(299,14,3,0,0,0,[ str_block(0,299,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,299,14,3,0,-1,0,0,0,0,0, "Speaker, Tuner, Volume Control, and Power Switch.")]) ]) ])]). poly('black','',2,[ 844,162,808,162],0,1,1,975,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). polygon('black','',5,[ 792,162,800,158,808,162,800,166,792,162],1,1,1,0,1001,0,0,0,0,0,'1',0, "00",[ ]). box('black','',671,132,791,276,0,1,1,974,0,0,0,0,0,'1',0,[ ]). text('black',731,136,1,1,1,39,19,973,15,4,0,0,0,0,2,39,19,0,0,"",0,0,0,0,151,'',[ minilines(39,19,0,0,1,0,0,[ mini_line(39,15,4,0,0,0,[ str_block(0,39,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,39,15,4,0,-1,0,0,0,0,0, "Radio")]) ]) ])]). poly('black','',2,[ 671,156,791,156],0,1,1,972,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). text('black',679,160,2,0,1,103,30,971,12,3,0,0,0,0,2,103,30,0,0,"",0,0,0,0,172,'',[ minilines(103,30,0,0,0,0,0,[ mini_line(66,12,3,0,0,0,[ str_block(0,66,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,66,12,3,0,0,0,0,0,0,0, "model: String")]) ]), mini_line(103,12,3,0,0,0,[ str_block(0,103,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,103,12,3,0,0,0,0,0,0,0, "manufacturer: String")]) ]) ])]). box('black','',844,136,972,196,0,1,1,967,0,0,0,0,0,'1',0,[ ]). text('black',908,140,1,1,1,52,19,966,15,4,0,0,0,0,2,52,19,0,0,"",0,0,0,0,155,'',[ minilines(52,19,0,0,1,0,0,[ mini_line(52,15,4,0,0,0,[ str_block(0,52,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,52,15,4,0,-1,0,0,0,0,0, "Speaker")]) ]) ])]). poly('black','',2,[ 844,160,972,160],0,1,1,965,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). text('black',852,164,2,0,1,70,30,964,12,3,0,0,0,0,2,70,30,0,0,"",0,0,0,0,176,'',[ minilines(70,30,0,0,0,0,0,[ mini_line(70,12,3,0,0,0,[ str_block(0,70,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,70,12,3,0,0,0,0,0,0,0, "wattage: float")]) ]), mini_line(56,12,3,0,0,0,[ str_block(0,56,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,56,12,3,0,0,0,0,0,0,0, "ohms: float")]) ]) ])]). polygon('black','',5,[ 692,285,696,277,700,285,696,293,692,285],1,1,1,0,1036,0,0,0,0,0,'1',0, "00",[ ]). group([ box('black','',664,388,792,452,0,1,1,1038,0,0,0,0,0,'1',0,[ ]), text('black',728,392,1,1,1,39,19,1039,15,4,0,0,0,0,2,39,19,0,0,"",0,0,0,0,407,'',[ minilines(39,19,0,0,1,0,0,[ mini_line(39,15,4,0,0,0,[ str_block(0,39,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,39,15,4,0,-1,0,0,0,0,0, "Tuner")]) ]) ])]), poly('black','',2,[ 664,412,792,412],0,1,1,1040,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]), text('black',672,416,2,0,1,79,30,1041,12,3,0,0,0,0,2,79,30,0,0,"",0,0,0,0,428,'',[ minilines(79,30,0,0,0,0,0,[ mini_line(70,12,3,0,0,0,[ str_block(0,70,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,70,12,3,0,0,0,0,0,0,0, "am_fm: String")]) ]), mini_line(79,12,3,0,0,0,[ str_block(0,79,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,79,12,3,0,0,0,0,0,0,0, "frequency: float")]) ]) ])]) ], 1067,0,0,[ ]). poly('black','',4,[ 696,284,696,308,632,308,632,328],0,1,1,1084,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). box('black','',760,328,888,372,0,1,1,1089,0,0,0,0,0,'1',0,[ ]). text('black',824,332,1,1,1,104,19,1090,15,4,0,0,0,0,2,104,19,0,0,"",0,0,0,0,347,'',[ minilines(104,19,0,0,1,0,0,[ mini_line(104,15,4,0,0,0,[ str_block(0,104,15,4,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,97920,104,15,4,0,-1,0,0,0,0,0, "VolumeControl")]) ]) ])]). poly('black','',2,[ 760,352,888,352],0,1,1,1091,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). text('black',768,356,1,0,1,43,15,1092,12,3,0,0,0,0,2,43,15,0,0,"",0,0,0,0,368,'',[ minilines(43,15,0,0,0,0,0,[ mini_line(43,12,3,0,0,0,[ str_block(0,43,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,43,12,3,0,0,0,0,0,0,0, "level: int")]) ]) ])]). box('black','',568,328,696,372,0,1,1,1099,0,0,0,0,0,'1',0,[ ]). text('black',632,332,1,1,1,88,19,1100,15,4,0,0,0,0,2,88,19,0,0,"",0,0,0,0,347,'',[ minilines(88,19,0,0,1,0,0,[ mini_line(88,15,4,0,0,0,[ str_block(0,88,15,4,0,0,0,0,0,[ str_seg('black','Times-Roman',0,97920,88,15,4,0,0,0,0,0,0,0, "PowerSwitch")]) ]) ])]). poly('black','',2,[ 568,352,696,352],0,1,1,1101,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). text('black',576,356,1,0,1,111,15,1102,12,3,0,0,0,0,2,111,15,0,0,"",0,0,0,0,368,'',[ minilines(111,15,0,0,0,0,0,[ mini_line(111,12,3,0,0,0,[ str_block(0,111,12,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,69120,111,12,3,0,0,0,0,0,0,0, "switch_state: boolean")]) ]) ])]). polygon('black','',5,[ 724,285,728,277,732,285,728,293,724,285],1,1,1,0,1115,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',5,[ 756,285,760,277,764,285,760,293,756,285],1,1,1,0,1116,0,0,0,0,0,'1',0, "00",[ ]). poly('black','',4,[ 760,292,760,308,824,308,824,328],0,1,1,1125,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('black','',2,[ 728,292,728,388],0,1,1,1127,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). poly('black','',2,[ 671,192,791,192],0,1,1,1153,0,0,0,0,0,0,0,'1',0,0, "0","",[ 0,8,3,0,'8','3','0'],[0,8,3,0,'8','3','0'],[ ]). text('black',679,196,4,0,1,91,60,1162,12,3,0,0,0,0,2,91,60,0,0,"",0,0,0,0,208,'',[ minilines(91,60,0,0,0,0,0,[ mini_line(62,12,3,0,0,0,[ str_block(0,62,12,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,69120,62,12,3,0,-2,0,0,0,0,0, "switch_on()")]) ]), mini_line(64,12,3,0,0,0,[ str_block(0,64,12,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,69120,64,12,3,0,-2,0,0,0,0,0, "switch_off()")]) ]), mini_line(81,12,3,0,0,0,[ str_block(0,81,12,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,69120,81,12,3,0,-2,0,0,0,0,0, "set_volume(int)")]) ]), mini_line(91,12,3,0,0,0,[ str_block(0,91,12,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,69120,91,12,3,0,-2,0,0,0,0,0, "tune(String, float)")]) ]) ])]). text('black',60,355,87,0,1,306,957,1228,9,2,0,0,0,0,2,306,957,0,0,"",0,0,0,0,364,'',[ minilines(306,957,0,0,0,0,0,[ mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-3,0,0,0,0,0, "use Class::Template;")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(282,9,2,0,0,0,[ str_block(0,282,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,282,9,2,0,0,0,0,0,0,0, "# Use Class::Template to create definitions for")]) ]), mini_line(270,9,2,0,0,0,[ str_block(0,270,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,270,9,2,0,-5,0,0,0,0,0, "# the PowerSwitch, Tuner, VolumeControl, and ")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, "# Speaker classes.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(48,9,2,0,0,0,[ str_block(0,48,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,48,9,2,0,-5,0,0,0,0,0, "struct( ")]) ]), mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-1,0,0,0,0,0, " PowerSwitch => {")]) ]), mini_line(168,9,2,0,0,0,[ str_block(0,168,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,168,9,2,0,-3,0,0,0,0,0, " switch_state => '$',")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-3,0,0,0,0,0, ");")]) ]), mini_line(42,9,2,0,0,0,[ str_block(0,42,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,42,9,2,0,-1,0,0,0,0,0, "struct(")]) ]), mini_line(84,9,2,0,0,0,[ str_block(0,84,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,84,9,2,0,-1,0,0,0,0,0, " Tuner => {")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, " am_fm => '$',")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, " frequency => '$',")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-3,0,0,0,0,0, ");")]) ]), mini_line(42,9,2,0,0,0,[ str_block(0,42,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,42,9,2,0,-1,0,0,0,0,0, "struct(")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-1,0,0,0,0,0, " VolumeControl => {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " level => '$',")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-3,0,0,0,0,0, ");")]) ]), mini_line(42,9,2,0,0,0,[ str_block(0,42,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,42,9,2,0,-1,0,0,0,0,0, "struct(")]) ]), mini_line(96,9,2,0,0,0,[ str_block(0,96,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,96,9,2,0,-1,0,0,0,0,0, " Speaker => {")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " wattage => '$',")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " ohms => '$',")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-3,0,0,0,0,0, ");")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, "# The Radio Class.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(84,9,2,0,0,0,[ str_block(0,84,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,84,9,2,0,-3,0,0,0,0,0, "package Radio;")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(54,9,2,0,0,0,[ str_block(0,54,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,54,9,2,0,-1,0,0,0,0,0, "sub new {")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,-3,0,0,0,0,0, " # Standard Perl OO setup.")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-3,0,0,0,0,0, " my $proto = shift;")]) ]), mini_line(228,9,2,0,0,0,[ str_block(0,228,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,228,9,2,0,-3,0,0,0,0,0, " my $class = ref($proto) || $proto;")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, " my $self = {};")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-3,0,0,0,0,0, " bless ($self, $class);")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(306,9,2,0,0,0,[ str_block(0,306,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,306,9,2,0,-3,0,0,0,0,0, " # Create the PowerSwitch, Tuner, VolumeControl,")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, " # and Speaker.")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(276,9,2,0,0,0,[ str_block(0,276,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,276,9,2,0,-3,0,0,0,0,0, " $self->{power_switch} = new PowerSwitch();")]) ]), mini_line(198,9,2,0,0,0,[ str_block(0,198,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,198,9,2,0,-3,0,0,0,0,0, " $self->{tuner} = new Tuner();")]) ]), mini_line(300,9,2,0,0,0,[ str_block(0,300,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,300,9,2,0,-3,0,0,0,0,0, " $self->{volume_control} = new VolumeControl();")]) ]), mini_line(222,9,2,0,0,0,[ str_block(0,222,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,222,9,2,0,-3,0,0,0,0,0, " $self->{speaker} = new Speaker();")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(276,9,2,0,0,0,[ str_block(0,276,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,276,9,2,0,-3,0,0,0,0,0, " # Set reasonable defaults for the Speaker.")]) ]), mini_line(30,9,2,0,0,0,[ str_block(0,30,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,30,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-3,0,0,0,0,0, " $self->{speaker}->wattage(3.75);")]) ]), mini_line(180,9,2,0,0,0,[ str_block(0,180,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,180,9,2,0,-3,0,0,0,0,0, " $self->{speaker}->ohms(8);")]) ]), mini_line(102,9,2,0,0,0,[ str_block(0,102,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,102,9,2,0,-3,0,0,0,0,0, " return $self;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-3,0,0,0,0,0, "# Turn the radio on.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(90,9,2,0,0,0,[ str_block(0,90,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,90,9,2,0,-1,0,0,0,0,0, "sub switch_on {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(258,9,2,0,0,0,[ str_block(0,258,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,258,9,2,0,-3,0,0,0,0,0, " $self->{power_switch}->switch_state(1);")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, "# Turn the radio off.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(96,9,2,0,0,0,[ str_block(0,96,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,96,9,2,0,-1,0,0,0,0,0, "sub switch_off {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(258,9,2,0,0,0,[ str_block(0,258,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,258,9,2,0,-3,0,0,0,0,0, " $self->{power_switch}->switch_state(0);")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(102,9,2,0,0,0,[ str_block(0,102,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,102,9,2,0,-3,0,0,0,0,0, "# Set the volume.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(96,9,2,0,0,0,[ str_block(0,96,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,96,9,2,0,-1,0,0,0,0,0, "sub set_volume {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-3,0,0,0,0,0, " my $level = shift;")]) ]), mini_line(258,9,2,0,0,0,[ str_block(0,258,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,258,9,2,0,-3,0,0,0,0,0, " $self->{volume_control}->level($level);")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(102,9,2,0,0,0,[ str_block(0,102,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,102,9,2,0,-3,0,0,0,0,0, "# Tune the radio.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(60,9,2,0,0,0,[ str_block(0,60,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,60,9,2,0,-1,0,0,0,0,0, "sub tune {")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " my $self = shift;")]) ]), mini_line(192,9,2,0,0,0,[ str_block(0,192,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,192,9,2,0,-3,0,0,0,0,0, " my ($frequency, $band) = @_;")]) ]), mini_line(198,9,2,0,0,0,[ str_block(0,198,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,198,9,2,0,-3,0,0,0,0,0, " $self->{tuner}->am_fm($band);")]) ]), mini_line(252,9,2,0,0,0,[ str_block(0,252,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,252,9,2,0,-3,0,0,0,0,0, " $self->{tuner}->frequency($frequency);")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-3,0,0,0,0,0, "1;")]) ]) ])]). polygon('black','',6,[ 48,312,48,1320,368,1320,368,328,352,312,48,312],0,1,1,0,1239,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 352,312,352,328,368,328,352,312],0,1,1,0,1240,0,0,0,0,0,'1',0, "0",[ ]). text('black',208,315,1,1,1,78,21,1241,17,4,0,0,0,0,2,78,21,0,0,"",0,0,0,0,332,'',[ minilines(78,21,0,0,1,0,0,[ mini_line(78,17,4,0,0,0,[ str_block(0,78,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,78,17,4,0,-1,0,0,0,0,0, "Radio.pm")]) ]) ])]). polygon('black','',6,[ 388,496,388,1320,708,1320,708,512,692,496,388,496],0,1,1,0,1286,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 692,496,692,512,708,512,692,496],0,1,1,0,1287,0,0,0,0,0,'1',0, "0",[ ]). text('black',548,499,1,1,1,84,21,1288,17,4,0,0,0,0,2,84,21,0,0,"",0,0,0,0,516,'',[ minilines(84,21,0,0,1,0,0,[ mini_line(84,17,4,0,0,0,[ str_block(0,84,17,4,0,-1,0,0,0,[ str_seg('black','Times-Bold',1,115200,84,17,4,0,-1,0,0,0,0,0, "Radio.java")]) ]) ])]). text('black',396,531,71,0,1,306,781,1306,9,2,0,0,0,0,2,306,781,0,0,"",0,0,0,0,540,'',[ minilines(306,781,0,0,0,0,0,[ mini_line(270,9,2,0,0,0,[ str_block(0,270,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,270,9,2,0,-5,0,0,0,0,0, "// Define PowerSwitch, Tuner, VolumeControl, ")]) ]), mini_line(90,9,2,0,0,0,[ str_block(0,90,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,90,9,2,0,-3,0,0,0,0,0, "// and Speaker.")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-1,0,0,0,0,0, "//")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-1,0,0,0,0,0, "class PowerSwitch {")]) ]), mini_line(186,9,2,0,0,0,[ str_block(0,186,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,186,9,2,0,-3,0,0,0,0,0, " boolean switch_state = false;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(78,9,2,0,0,0,[ str_block(0,78,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,78,9,2,0,-1,0,0,0,0,0, "class Tuner {")]) ]), mini_line(90,9,2,0,0,0,[ str_block(0,90,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,90,9,2,0,-3,0,0,0,0,0, " String am_fm;")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, " double frequency;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-1,0,0,0,0,0, "class VolumeControl {")]) ]), mini_line(72,9,2,0,0,0,[ str_block(0,72,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,72,9,2,0,-3,0,0,0,0,0, " int level;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(90,9,2,0,0,0,[ str_block(0,90,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,90,9,2,0,-1,0,0,0,0,0, "class Speaker {")]) ]), mini_line(102,9,2,0,0,0,[ str_block(0,102,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,102,9,2,0,-3,0,0,0,0,0, " double wattage;")]) ]), mini_line(84,9,2,0,0,0,[ str_block(0,84,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,84,9,2,0,-3,0,0,0,0,0, " double ohms;")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, "// The Radio class.")]) ]), mini_line(12,9,2,0,0,0,[ str_block(0,12,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,12,9,2,0,-1,0,0,0,0,0, "//")]) ]), mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-1,0,0,0,0,0, "public class Radio {")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-3,0,0,0,0,0, " PowerSwitch power_switch;")]) ]), mini_line(84,9,2,0,0,0,[ str_block(0,84,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,84,9,2,0,-3,0,0,0,0,0, " Tuner tuner;")]) ]), mini_line(186,9,2,0,0,0,[ str_block(0,186,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,186,9,2,0,-3,0,0,0,0,0, " VolumeControl volume_control;")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, " Speaker speaker;")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-1,0,0,0,0,0, " public Radio() {")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(240,9,2,0,0,0,[ str_block(0,240,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,240,9,2,0,-5,0,0,0,0,0, " // Create the PowerSwitch, Tuner, ")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-3,0,0,0,0,0, " // VolumeControl, and Speaker.")]) ]), mini_line(48,9,2,0,0,0,[ str_block(0,48,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,48,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(234,9,2,0,0,0,[ str_block(0,234,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,234,9,2,0,-3,0,0,0,0,0, " power_switch = new PowerSwitch();")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-3,0,0,0,0,0, " tuner = new Tuner();")]) ]), mini_line(258,9,2,0,0,0,[ str_block(0,258,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,258,9,2,0,-3,0,0,0,0,0, " volume_control = new VolumeControl();")]) ]), mini_line(180,9,2,0,0,0,[ str_block(0,180,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,180,9,2,0,-3,0,0,0,0,0, " speaker = new Speaker();")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(294,9,2,0,0,0,[ str_block(0,294,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,294,9,2,0,-3,0,0,0,0,0, " // Set reasonable defaults for the Speaker.")]) ]), mini_line(48,9,2,0,0,0,[ str_block(0,48,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,48,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,-3,0,0,0,0,0, " speaker.wattage = 3.75;")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " speaker.ohms = 8;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " // Turn the radio on.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-1,0,0,0,0,0, " public void switchOn() {")]) ]), mini_line(234,9,2,0,0,0,[ str_block(0,234,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,234,9,2,0,-3,0,0,0,0,0, " power_switch.switch_state = true;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(144,9,2,0,0,0,[ str_block(0,144,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,144,9,2,0,-3,0,0,0,0,0, " // Turn the radio off.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-1,0,0,0,0,0, " public void switchOff() {")]) ]), mini_line(240,9,2,0,0,0,[ str_block(0,240,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,240,9,2,0,-3,0,0,0,0,0, " power_switch.switch_state = false;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-3,0,0,0,0,0, " // Set the volume.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(216,9,2,0,0,0,[ str_block(0,216,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,216,9,2,0,-1,0,0,0,0,0, " public void setVolume(int level) {")]) ]), mini_line(210,9,2,0,0,0,[ str_block(0,210,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,210,9,2,0,-3,0,0,0,0,0, " volume_control.level = level;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-3,0,0,0,0,0, " // Tune the radio.")]) ]), mini_line(24,9,2,0,0,0,[ str_block(0,24,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,24,9,2,0,-1,0,0,0,0,0, " //")]) ]), mini_line(306,9,2,0,0,0,[ str_block(0,306,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,306,9,2,0,-1,0,0,0,0,0, " public void tune(double frequency, String band) {")]) ]), mini_line(150,9,2,0,0,0,[ str_block(0,150,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,150,9,2,0,-3,0,0,0,0,0, " tuner.am_fm = band;")]) ]), mini_line(204,9,2,0,0,0,[ str_block(0,204,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,204,9,2,0,-3,0,0,0,0,0, " tuner.frequency = frequency;")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,-2,0,0,0,0,0, " }")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,-2,0,0,0,0,0, "}")]) ]) ])]). polygon('black','',6,[ 728,616,728,1320,1048,1320,1048,632,1032,616,728,616],0,1,1,0,1324,0,0,0,0,0,'1',0, "00",[ ]). polygon('black','',4,[ 1032,616,1032,632,1048,632,1032,616],0,1,1,0,1325,0,0,0,0,0,'1',0, "0",[ ]). text('black',888,619,1,1,1,71,21,1326,17,4,0,0,0,0,2,71,21,0,0,"",0,0,0,0,636,'',[ minilines(71,21,0,0,1,0,0,[ mini_line(71,17,4,0,0,0,[ str_block(0,71,17,4,0,0,0,0,0,[ str_seg('black','Times-Bold',1,115200,71,17,4,0,0,0,0,0,0,0, "Radio.py")]) ]) ])]). text('black',740,651,61,0,1,288,671,1336,9,2,0,0,0,0,2,288,671,0,0,"",0,0,0,0,660,'',[ minilines(288,671,0,0,0,0,0,[ mini_line(264,9,2,0,0,0,[ str_block(0,264,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,264,9,2,0,-5,0,0,0,0,0, "# Define PowerSwitch, Tuner, VolumeControl, ")]) ]), mini_line(84,9,2,0,0,0,[ str_block(0,84,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,84,9,2,0,-3,0,0,0,0,0, "# and Speaker.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, "class PowerSwitch:")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " def __init__(self):")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-1,0,0,0,0,0, " self.switch_state = 0")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(72,9,2,0,0,0,[ str_block(0,72,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,72,9,2,0,-3,0,0,0,0,0, "class Tuner:")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " def __init__(self):")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-2,0,0,0,0,0, " self.am_fm = ''")]) ]), mini_line(144,9,2,0,0,0,[ str_block(0,144,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,144,9,2,0,-1,0,0,0,0,0, " self.frequency = 0")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-3,0,0,0,0,0, "class VolumeControl:")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " def __init__(self):")]) ]), mini_line(120,9,2,0,0,0,[ str_block(0,120,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,120,9,2,0,-1,0,0,0,0,0, " self.level = 0")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(84,9,2,0,0,0,[ str_block(0,84,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,84,9,2,0,-3,0,0,0,0,0, "class Speaker:")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " def __init__(self):")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-1,0,0,0,0,0, " self.wattage = 0")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-1,0,0,0,0,0, " self.ohms = 0")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(108,9,2,0,0,0,[ str_block(0,108,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,108,9,2,0,-3,0,0,0,0,0, "# The Radio class.")]) ]), mini_line(6,9,2,0,0,0,[ str_block(0,6,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,6,9,2,0,0,0,0,0,0,0, "#")]) ]), mini_line(72,9,2,0,0,0,[ str_block(0,72,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,72,9,2,0,-3,0,0,0,0,0, "class Radio:")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " def __init__(self):")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(234,9,2,0,0,0,[ str_block(0,234,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,234,9,2,0,-5,0,0,0,0,0, " # Create the PowerSwitch, Tuner, ")]) ]), mini_line(210,9,2,0,0,0,[ str_block(0,210,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,210,9,2,0,-3,0,0,0,0,0, " # VolumeControl, and Speaker.")]) ]), mini_line(48,9,2,0,0,0,[ str_block(0,48,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,48,9,2,0,-5,0,0,0,0,0, " # ")]) ]), mini_line(234,9,2,0,0,0,[ str_block(0,234,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,234,9,2,0,-2,0,0,0,0,0, " self.power_switch = PowerSwitch()")]) ]), mini_line(156,9,2,0,0,0,[ str_block(0,156,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,156,9,2,0,-2,0,0,0,0,0, " self.tuner = Tuner()")]) ]), mini_line(258,9,2,0,0,0,[ str_block(0,258,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,258,9,2,0,-2,0,0,0,0,0, " self.volume_control = VolumeControl()")]) ]), mini_line(180,9,2,0,0,0,[ str_block(0,180,9,2,0,-2,0,0,0,[ str_seg('black','Courier',0,57600,180,9,2,0,-2,0,0,0,0,0, " self.speaker = Speaker()")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(288,9,2,0,0,0,[ str_block(0,288,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,288,9,2,0,-3,0,0,0,0,0, " # Set reasonable defaults for the speaker.")]) ]), mini_line(48,9,2,0,0,0,[ str_block(0,48,9,2,0,-5,0,0,0,[ str_seg('black','Courier',0,57600,48,9,2,0,-5,0,0,0,0,0, " # ")]) ]), mini_line(198,9,2,0,0,0,[ str_block(0,198,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,198,9,2,0,-1,0,0,0,0,0, " self.speaker.wattage = 3.75")]) ]), mini_line(162,9,2,0,0,0,[ str_block(0,162,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,162,9,2,0,-1,0,0,0,0,0, " self.speaker.ohms = 8")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-3,0,0,0,0,0, " # Turn the radio on.")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(126,9,2,0,0,0,[ str_block(0,126,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,126,9,2,0,-3,0,0,0,0,0, " def switchOn(self):")]) ]), mini_line(246,9,2,0,0,0,[ str_block(0,246,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,246,9,2,0,-3,0,0,0,0,0, " self.power_switch.switch_state = 1;")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(138,9,2,0,0,0,[ str_block(0,138,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,138,9,2,0,-3,0,0,0,0,0, " # Turn off the radio.")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(132,9,2,0,0,0,[ str_block(0,132,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,132,9,2,0,-3,0,0,0,0,0, " def switchOff(self):")]) ]), mini_line(246,9,2,0,0,0,[ str_block(0,246,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,246,9,2,0,-3,0,0,0,0,0, " self.power_switch.switch_state = 0;")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, " # Set the volume.")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,-3,0,0,0,0,0, " def setVolume(self, level):")]) ]), mini_line(234,9,2,0,0,0,[ str_block(0,234,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,234,9,2,0,0,0,0,0,0,0, " self.volume_control.level = level")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]), mini_line(114,9,2,0,0,0,[ str_block(0,114,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,114,9,2,0,-3,0,0,0,0,0, " # Tune the radio.")]) ]), mini_line(18,9,2,0,0,0,[ str_block(0,18,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,18,9,2,0,0,0,0,0,0,0, " #")]) ]), mini_line(204,9,2,0,0,0,[ str_block(0,204,9,2,0,-3,0,0,0,[ str_seg('black','Courier',0,57600,204,9,2,0,-3,0,0,0,0,0, " def tune(self, frequency, band):")]) ]), mini_line(174,9,2,0,0,0,[ str_block(0,174,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,174,9,2,0,0,0,0,0,0,0, " self.tuner.am_fm = band")]) ]), mini_line(228,9,2,0,0,0,[ str_block(0,228,9,2,0,-1,0,0,0,[ str_seg('black','Courier',0,57600,228,9,2,0,-1,0,0,0,0,0, " self.tuner.frequency = frequency")]) ]), mini_line(0,9,2,0,0,0,[ str_block(0,0,9,2,0,0,0,0,0,[ str_seg('black','Courier',0,57600,0,9,2,0,0,0,0,0,0,0, "")]) ]) ])]). text('black',56,82,1,0,1,114,23,1352,18,5,0,0,0,0,2,114,23,0,0,"",0,0,0,0,100,'',[ minilines(114,23,0,0,0,0,0,[ mini_line(114,18,5,0,0,0,[ str_block(0,114,18,5,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,103680,114,18,5,0,-1,0,0,0,0,0, "Composition")]) ]) ])]). text('black',544,12,1,0,1,477,15,9746,12,3,0,0,0,0,2,477,15,0,0,"",0,0,0,0,24,'',[ minilines(477,15,0,0,0,0,0,[ mini_line(477,12,3,0,0,0,[ str_block(0,477,12,3,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,69120,477,12,3,0,-1,0,0,0,0,0, "UML and Patterns for Web Database Applications - December 16, 1999 - Page 3")]) ]) ])]). page(4,"",1,''). text('black',68,78,1,0,1,158,23,2190,18,5,0,0,0,0,2,158,23,0,0,"",0,0,0,0,96,'',[ minilines(158,23,0,0,0,0,0,[ mini_line(158,18,5,0,0,0,[ str_block(0,158,18,5,0,-1,0,0,0,[ str_seg('black','Helvetica-Bold',1,103680,158,18,5,0,-1,0,0,0,0,0, "UML In Web Apps")]) ]) ])]). text('black',88,110,8,0,1,908,136,7772,14,3,0,0,0,0,2,908,136,0,0,"",0,0,0,0,124,'',[ minilines(908,136,0,0,0,0,0,[ mini_line(634,14,3,0,0,0,[ str_block(0,634,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,634,14,3,0,-1,0,0,0,0,0, "UML was originally developed to facilitate object-oriented design, but it has been adapted to many other areas.")]) ]), mini_line(0,14,3,0,0,0,[ str_block(0,0,14,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,80640,0,14,3,0,0,0,0,0,0,0, "")]) ]), mini_line(859,14,3,0,0,0,[ str_block(0,859,14,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,80640,859,14,3,0,0,0,0,0,0,0, "Let's look at how you can use UML in web applications. Much of the notation we'll use here was inspired by Jim Conallen's Modeling Web Application")]) ]), mini_line(494,14,3,0,0,0,[ str_block(0,494,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,494,14,3,0,-1,0,0,0,0,0, "Architectures with UML (Communications of the ACM, October 199, Vol. 42. No. 10).")]) ]), mini_line(0,14,3,0,0,0,[ str_block(0,0,14,3,0,0,0,0,0,[ str_seg('black','Times-Roman',0,80640,0,14,3,0,0,0,0,0,0,0, "")]) ]), mini_line(902,14,3,0,0,0,[ str_block(0,902,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,902,14,3,0,-2,0,0,0,0,0, "You'll find that web applications aren't always made of truly object-oriented components. For example, a CGI script is usually a small program with a minimal ")]) ]), mini_line(908,14,3,0,0,0,[ str_block(0,908,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,908,14,3,0,-1,0,0,0,0,0, "amount of branching and decisions. While a CGI script may make use of objects (as we'll see in some examples), it's usually just a simple program. But, it needs")]) ]), mini_line(670,14,3,0,0,0,[ str_block(0,670,14,3,0,-2,0,0,0,[ str_seg('black','Times-Roman',0,80640,670,14,3,0,-2,0,0,0,0,0, "to be modeled, so we'll model it using the UML class notation. Here is a gallery of some of the notations we'll be using:")]) ]) ])]). text('black',304,480,3,0,1,696,51,7818,14,3,0,0,0,0,2,696,51,0,0,"",0,0,0,0,494,'',[ minilines(696,51,0,0,0,0,0,[ mini_line(679,14,3,0,0,0,[ str_block(0,679,14,3,0,-1,0,0,0,[ str_seg('black','Times-Roman',0,80640,679,14,3,0,-1,0,0,0,0,0, "A form is represented in this document with the <