`Gudmundson et al.
`
`|||||||||||||||||||||||||
`
`US005680619A
`[11] Patent Number:
`[45] Date of Patent:
`
`5,680,619
`Oct. 21, 1997
`
`[54] HIERARCHICAL ENCAPSULATION OF
`INSTANTIATED OBJECTS INA
`MULTIMEDIA AUTHORING SYSTEM
`
`[75] Inventors: Norman K. Gudmundson, San Mateo;
`R. Hamish Forsythe, Palo Alto;
`Wayne A. Lee, San Mateo, all of Calif.
`[73] Assignee: mEactory, Inc., Burlingame, Calif.
`
`ABSTRACT
`[57]
`An application development system, optimized for author
`ing multimedia titles, enables its users to create selectively
`reusable object containers merely by defining links among
`instantiated objects. Employing a technique known as Hier
`archical Encapsulation, the system automatically isolates the
`external dependencies of the object containers created by its
`users, thereby facilitating reusability of object containers
`and the objects they contain in other container environ
`ments. Authors create two basic types of objects: Elements,
`[21] Appl. No.: 415,848
`which are the key actors within an application, and
`[22] Filed:
`Apr. 3, 1995
`Modifiers, which modify an Element’s characteristics. The
`object containers (Elements and Behaviors—i.e., Modifier
`[51] Int. Cl* ~~~~~~~~~~~~~~ G06F 9/40
`containers) created by authors spawn hierarchies of objects,
`[52] U.S. Cl. … 395/701
`including the Structural Hierarchy of Elements within
`[58] Field of Search ..................................... 395/650, 700,
`Elements, and the Behavioral Hierarchy, within an Element,
`395/701
`of Behaviors (and other Modifiers) within Behaviors. The
`system utilizes an Element’s dual hierarchies to make that
`Element an environmental frame of reference to the objects
`it contains. Through techniques known as Hierarchical Mes
`sage Broadcasting, Hierarchical Variable Scoping and Hier
`archical Relative Positioning, objects automatically receive
`messages sent to their object container and access data
`known to their object container. An Element's position is
`even determined relative to the position of its parent Ele
`ment container. The system is highly extensible through a
`Component API in which Modifiers and Services that sup
`port them can be added and integrated seamlessly into the
`system. The system’s architecture is substantially platform
`independent, automatically allowing most author’s titles to
`run on multiple platforms. In addition, the entire authoring
`environment can be ported relatively easily to a variety of
`platforms due to the isolation a platform-dependent layer
`within the system.
`48 Claims, 46 Drawing Sheets
`
`[56]
`
`References Cited
`U.S. PATENT DOCUMENTS
`5,287,447 2/1994 Miller et al. ............................ 395/157
`5,423,041
`6/1995 Burke et al. ............................ 395/700
`5,493,680 2/1996 Danforth ....
`. 395/700
`5,499,333 3/1996 Doudnikoff et al. ..
`. 395/600
`5,499,371
`3/1996 Henninger et al. ..................... 395/700
`OTHER PUBLICATIONS
`Booch, “Elements of the Object Model”, Object Oriented
`Analysis and Design with Applications, 2nd Ed. 1994, pp.
`40–77.
`
`Primary Examiner—Kevin A. Kriess
`Assistant Examiner—John L. Chavis
`Attorney, Agent, or Firm—Daniel R. Siegel; Ariel Reich
`
`PROJECT P
`
`SECTIOt, S1
`
`SECTION S2
`
`WARIABLE
`
`112
`
`105
`
`SECTION SS2
`
`
`
`
`
`
`
`SHARED SCENE
`
`108->
`
`ELEMENT E1
`
`ELEMENT E3
`
`
`
`
`
`l 11
`
`Et_EMENT E4.
`
`114-7 t 15 - 1 16
`
`1 : 8
`
`Page 1 of 88
`
`GOOGLE EXHIBIT 1022
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 1 of 46
`
`5,680,619
`
`1 O1
`
`FIG, .
`
`PROJECT P
`
`1 O2
`
`1 O3
`
`SECTION S1
`
`SECTION S2
`
`104
`
`SUBSECTION SS1
`
`VARIABLE
`V1
`
`112
`
`1 05
`
`SECTION SS2
`
`1 O7
`
`
`
`1 O6
`
`VARIABLE
`V2
`
`113
`
`SHARED SCENE
`SCO
`
`SCENE SC 1
`
`108
`
`109
`
`1 1 C
`
`ELEMENT E1
`
`ELEMENT E2
`
`ELEMENT E3
`
`1 11
`
`ELEMENT E4 ||MOD MOD MOD | M4
`M :
`M2 ||
`|| M3
`1 17
`
`1 18
`BEHAVIOR
`B1
`
`1 14- 1 15 - 1 16
`
`1 1 9
`
`MOD ||BEHAVIOR VARIABLE
`M5
`B2
`V3
`
`120
`
`121
`
`122
`
`M6
`
`M7
`
`1 23
`
`Page 2 of 88
`
`
`
`U.S. Patent
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 2 of 46
`
`5,680,619
`5,680,619
`
`
`
`
`
`„z ryw º ?o ** ** * * ?
`
`paynun| IMMIAYe[GD
`qvzc~fepajnun||auonsesqns[se|[a_2ue0s
`
`
`
`
`
` ”av“PmiofPoPFYugo?BeessceagcePere98E€gerogc?
`eSueuy=PUKPQOy
`
`6‘Old
`
`
`
`suaospaqqun
`
`Page 3 of 88
`
`Page 3 of 88
`
`
`
`
`U.S. Patent
`U.S. Patent
`
`Oct. 21, 1997
`Oct. 21, 1997
`
`Sheet 3 of 46
`Sheet 3 of 46
`
`5,680,619
`5,680,619
`
`:
`
`:
`
`:
`
`g
`FIG.3
`
`:
`310
`
`
`
`É
`
`: i
` LAYER
`ORDEROFELEMENTS
`
`É
`
`#
`
`Page 4 of 88
`
`Page 4 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 4 of 46
`
`r
`
`5,680,619
`
`3020-?e, [[Auntitled—1–303
`J02b
`[[F. untitled section-T 304
`J02c
`305 _-[]untitled subsection
`302d
`305-I?è untitled scene
`308-?ºl Grophic Modifier
`307--Thuntilled SCEIlê
`
`502e
`
`
`
`727
`
`Library Name
`
`Trash Con
`728 7296
`
`
`
`Sqve Pop-Up
`730
`
`729e-Hº Change Scene Modifier
`729f #| Bob's Movie
`
`FIG, 6
`
`520
`
`Page 5 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 5 of 46
`
`5,680,619
`
`7540
`
`751
`
`754b
`
`754c
`
`752
`
`754d
`
`EID - -----------------
`
`==E---
`
`753
`
`70/
`
`851
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Toon recelved Mouse Down
`Messenger sent Author Event 1 to Graphic Element
`Graphic Element received Author Event 1
`Scene Trqnsition Modifier received Author Event
`Image Effect Modifier received Author Event 1
`Movie received Author Event 1
`Behavior received Author Event 1
`Miniscript Modifier received Author Event 1
`
`
`
`FIG, 8
`
`Page 6 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 6 of 46
`
`5,680,619
`
`FIG. 9(a)
`902
`903
`904
`FEEH tº MFIºn=
`Cel: |003 || Selection: TII)|[=|III). Show:
`
`------- TÉ
`
`901
`
`900
`
`
`
`
`
`
`
`
`
`============== Source File Info ==::::::::::=======
`| Path: Kitty:Projects:MF:Interface:
`Elements:Toon
`911
`002 Dog Walking 00007 PICS
`003 Dog,008
`PICT
`004 Dog.009
`PICT
`002 Dog.004
`PICT
`002 Dog.003
`PICT
`002 Dog.004
`PICT
`002 Dog,003
`
`
`
`
`
`
`
`
`
`-Compressor=
`Type:
`| Animation IT
`Depth:
`H255 ºf TIF
`[T]Randomly Accessible
`Quality
`
`Least
`
`Low Medium
`
`High
`
`Most
`
`
`
`Untitled—1
`
`000000|º
`
`º-ÉH;
`FIG, 9( d) |Climbing
`OOATOO9.
`
`Page 7 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 7 of 46
`
`5,680,619
`
`
`
`95]
`
`== Element info E
`
`Source File Path: Macintosh HD:Eqrth Folder:
`-
`Ocean Folder:Fish
`
`964
`
`Initiqi State
`959
`[T] Mute
`º-T Loop
`Poused S-F Back ond forth
`
`-
`
`Volume:
`100%
`
`962
`Rote: AT- Layer:
`[T][3].
`
`955
`
`956
`
`957
`
`958
`
`963
`
`961
`
`950
`
`FIG, [O
`
`Page 8 of 88
`
`
`
`
`
`
`
`SoadSjuawaryajpjna}09
`
`LeeZeeere
`
`
`
`
`asnowpajqouyJeuinju04>Bunyso1,}—________[
`CF)
`[enon|FeSSEBFinyiyTaargoyous[]
`ajyopdyapayojsauacs
`Ove
`
`
`
`
`
`UdUM91g0Siq:UaYyMalqou
`[-
`
`U.S. Patent
`U.S. Patent
`
`Oct. 21, 1997
`Oct. 21, 1997
`
`Sheet 8 of 46
`Sheet 8 of 46
`
`5,680,619
`
`5,680,619
`
`
`
`<>
`t?
`oy
`
`Il‘Sls
`
`
`
`»)he(fs8zI§ayopdy
`
`(s)by]
`
`(c)EI
`
`2IS{OUT
`
`uojoyBog
`(2)SS
`
`
`
`(DEI
`
`yuyuasodsuosy
`
`yuawery
`
`----~~~~----------------------
`========::=??===
`
`
`
`
`
`
`
`
`
`Page 9 of 88
`
`Page 9 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 9 of 46
`
`5,680,619
`
`1001
`1000
`=\ Integer Variable =
`
`1002
`
`1003
`
`
`
`
`
`1004
`
`1005
`
`FIG, 12(a)
`
`=\ Integer Variable —
`
`1022
`
`|
`
`Integer Range Variable
`
`Walue
`
`Start:
`
`End:
`
`
`
`
`
`1024
`
`1025
`
`FIG, 12(b)
`
`Page 10 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 10 of 46
`
`5,680,619
`
`1041
`== Vector Variable =
`
`1040
`
`Angie:
`
`Magnitude:
`
`
`
`
`
`
`
`104.4
`
`FIG, 12(c)
`
`1045
`
`! 061
`
`! 060
`
`
`
`= Boolean Variable =
`
`1064
`
`1065
`
`FIG, 12(d)
`
`Page 11 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 11 of 46
`
`5,680,619
`
`1121
`
`4 120
`
`-
`
`= Point Variable E
`
`1122
`
`Point Variable
`
`
`
`Wolue
`
`X:
`
`Y;
`
`-
`1123
`
`
`
`
`
`
`
`1124
`
`F.G. 12(g)
`
`1125
`
`1141
`
`1 140
`
`= Time Variable F
`
`Time Voriqble
`
`Walue
`
`00:00.00
`
`
`
`
`
`
`
`
`
`1144
`
`1145
`
`FIG, 12(h)
`
`Page 12 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 12 of 46
`
`5,680,619
`
`1081
`
`1080
`
`E=Siringvariable =
`|-º
`
`Walues
`
`"MIropolis'
`
`1082
`
`
`
`1083
`
`
`
`1103
`
`1 104
`
`1105
`
`FIG, 12(f)
`
`Page 13 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 13 of 46
`
`5,680,619
`
`120.1
`
`1200
`
`H Messenger E
`
`
`
`1203
`
`
`
`
`
`
`
`
`
`
`
`Message
`Event/Commond:
`
`Destinotion [TE]
`
`Message Options
`DX Immediate
`
`1209
`
`-
`
`1210
`
`1211
`
`FIG. [3(a)
`
`Page 14 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 14 of 46
`
`5,680,619
`
`1221
`
`1220
`
`# If Messenger É
`
`Execute when:
`
`Message
`Event/Commond:
`With:
`TIE,
`Destination TIE,
`
`-i?-i tº
`
`
`
`
`
`1230
`
`Message Options
`Dº Immediate
`
`1231
`
`1232
`
`FIG, 3(b)
`
`Page 15 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 15 of 46
`
`5,680,619
`
`
`
`
`
`Execute when:
`
`
`
`Terminate when:
`
`1244
`
`1241
`1240
`= Timer Messenger E
`tºg_-5 tº
`-[E.T. E. E.
`F. El
`
`1245
`
`
`
`
`
`247
`124
`
`
`
`1248
`
`
`
`1252
`
`Delay For
`00:00.00
`
`DZ Loop timer 4-> -->
`º
`1246
`
`Message
`Event/Commond.
`
`With:
`
`[TE][Til?º
`º Destination
`TTE
`
`D
`º
`
`1249
`
`Message Options
`
`- DX|Immedicte
`
`Ex Coscode
`
`DZ Relay
`
`1251
`
`1253
`
`1254
`
`FIG, [3(c)
`
`Page 16 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 16 of 46
`
`5,680,619
`
`1262
`
`
`
`
`
`1268
`
`
`
`
`
`1270
`
`#261
`1260
`H Boundary Detection Messenger =
`|
`Bonday Detection Mºsell
`Enqble when:
`Disqble when:
`FTT Rºl
`
`El
`
`1264
`
`1266
`Delay Element's Parent's Borders
`AT-->
`(C) On first detection
`O While detected O Exiting
`
`Message Specifications
`Message/Command:
`
`With:
`
`Rºl
`TTE
`
`Destinqtion
`
`1267
`
`
`
`Rºl
`
`1275
`
`Message Options
`DX|Immediate
`
`DX Cascade
`
`DX Relay
`
`1271
`
`FIG, [3(d)
`
`Page 17 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 17 of 46
`
`5,680,619
`
`1281
`
`1280
`
`
`
`Enable When:
`
`Disable When:
`
`Collide With:
`
` Collision Messenger
`
`
`1282 || [CollisonMessenger=Messenger[CollisonMessenger
`
`
`
`
`1283 [ParentEnabied|Enabled[ParentEnabiod|[]}[noneewme
`1285
`|
`Any Element
`[=]
`Detect Elernents
`
`y
`Detect Layer
`KX Behind
`th Front
`Message Specifications
`Message/Command:
`With:
`i=A8
`(© Tocollisionelements(s) ——Tootherdestination=e
`..
`
`1286
`1287
`
`1288
`
`|
`1290 |
`
`zz
`
`@ Onfirst contact
`©) While in contact
`© Exiting
`
`1293
`al 1299
`| 1295
`
`1289
`
`1279 ~_yw
`
`Message Options
`
`Q Immediate
`
`kK Cascade
`
`Xx Relay
`
`1299
`
`FIG. I3(e)
`
`Page 18 of 88
`
`Page 18 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 18 of 46
`
`5,680,619
`
`1301
`1300
`# Hypertext Messenger E
`T [Epeted Messenger
`Execute when:
`
`On;
`
`[…]
`
`A-> -1305
`R7] [T]Remain ºnted
`
`[º]
`
`
`
`
`
`With: : Ha*=
`
`
`
`1307
`
`Apply
`Highlight Effect:
`
`Messoge
`Event/Command:
`
`t
`
`
`
`1302
`
`1306
`
`1308
`
`Destinotion
`
`TTE
`
`SNZ
`
`
`
`1309
`
`Message Options
`DZ Immediate
`
`1310
`
`FIG. I3(f)
`
`Page 19 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 19 of 46
`
`5,680,619
`
`
`
`1321
`1320
`= Keyboard Messenger ---
`|
`Keyboard Messenger
`
`Execute When
`
`Key State
`
`
`
`1322
`
`
`
`
`
`Message
`Event/Command:
`
`With:
`
`*~|-|[TE][T][7]
`T.TIRZ.
`
`
`
`Destination
`
`-
`
`1327
`
`
`
`1328
`
`Message Options
`DZ Immediate
`
`Page 20 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`1401
`
`Sheet 20 of 46
`
`5,680,619
`
`1400
`
`1402
`
`1 404
`
`Execute When:
`
`Specifications
`(C) Next scene in subsection
`O Previous scene in subsection
`OSpecify scene:
`
`I? Add to destination background
`|I|Add to return list
`
`
`
`FIG, 14(b)
`
`Page 21 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 21 of 46
`
`5,680,619
`
`1441
`
`1440
`
`Specifications
`Tronsition:
`
`1444
`
`
`
`
`
`Scene Change Modifier
`1505
`Scene Chonge Modifier with "Add to Return List" *::::
`
`1525
`ene Chonge Modifier
`1535
`
`Return Modifier
`1545
`
`Page 22 of 88
`
`
`
`U.S. Patent
`
`
`
`Oct. 21, 1997
`
`Sheet 22 of 46
`
`5,680,619
`
`
`
`
`
`|E| (EN PEIL?E,
`
`auON @|
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`Page 23 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 23 of 46
`
`5,680,619
`
`1641
`
`1640
`
`Execute When:
`
`Terminate When:
`
`|R1||Nº||Fl
`1643–4|Mouse Up
`pecifications
`| =Path= Position
`Cel:
`
`1644
`
`
`
`1645 {# Hº?ºf 9 i??ºjo? 12
`
`
`
`T .
`
`FIG, 16(c)
`
`1647
`1648
`
`1654
`
`1661
`= Vector Motion Modifief
`
`1660
`
`Execute When:
`
`Termingte. When:
`
`*—HIZiºn.
`1663–1-?ºup-Fi None-º-TR
`1664 |
`Specifications
`With:
`
`1865–Hºw
`
`---
`
`IE
`
`º 1666
`
`1667
`
`FIG, 16(d)
`
`Page 24 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 24 of 46
`
`5,680,619
`
`1701
`
`1700
`
`ETHGººdwº E
`1702–HF Icºphºmo?e. T
`Apply When:
`Remove When:
`*-i-B?l?r? IF Erºs
`Specifications===
`Ink:
`1705-HETIE TH-- 1708
`|
`F] []-—1709
`T |Rectangº
`Fl
`
`
`
`
`
`
`
`Matte:
`
`| Shape:
`
`º, º wº
`
`Elº,
`
`jºr
`
`
`
`
`
`1711
`
`
`
`Border =
`
`T][3] [I]
`
`
`
`1722
`
`1723
`
`1725
`
`Apply When:
`Remove When:
`|Scene Stºred ºil- None
`Specifications
`Color Table:
`
`Page 25 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 25 of 46
`
`5,680,619
`
`1741
`
`1740
`
`FEGrºom wome E
`*—-ºfºº
`
`
`
`
`
`Remove When:
`
`
`
`TE 1744
`1743
`Cº-º: |
`| Style
`-
`1745 H-Hºr?e # Tiki 1746
`CConce?)(CIOKD
`FIG, [7(e) " "
`
`
`
`E. image Effect Modifier
`
`Apply When:
`
`Remove When:
`
`Specifications
`Image Effect:
`
`Bevel Width:
`
`Tone Amount:
`
`Ex|Extend to margins
`
`E=IÉ) [54][3]
`
`-
`
`1764
`
`1766
`
`Page 26 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 26 of 46
`
`5,680,619
`
`1801
`1800
`E Sound Modifier =
`1802
`T
`[Sound Modifier
`| Execute When:
`Terminate When:
`*—it?.T.T.T.E. Tº TIRZ:
`Specifications
`Sound
`SystemTºp Tºl (Freiew D
`
`
`
`
`
`1804
`
`
`
`1805
`
`
`
`
`
`Concel
`
`1807
`
`1808
`
`1821
`== Sound Fade Modifier =
`1822
`l
`Sound Fode Modifier
`| Execute When:
`Termingte When:
`1823–1t?ºn. Fºll.
`Tº [Nº.
`2 || 7 |
`Specifications
`Fode to:
`Duration:
`100%
`00:03,00
`
`
`
`
`
`1825
`
`
`
`1824
`
`
`
`t
`
`1826
`
`FIG, 18(b)
`
`Page 27 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 27 of 46
`
`5,680,619
`
`Apply When:
`Remove When:
`Farent Fº?? El Tºng NTF
`Specifications
`Font:
`?åenevºls:
`|E|| | Dunderine
`ÉpîF| | I] Shadow
`[T]Condensed
`Extended
`
`Alignment:
`
`Size:
`
`t
`
`Outline
`
`1904
`
`1910
`
`
`
`1921
`
`1920
`
`Apply When:
`
`Remove When:
`
`- - -
`
`? tº
`
`-
`
`1924
`
`== Cº-P
`ºn-Histº
`1923–H-Rºuse over TE Nºne TNTE
`Specifications
`Cursor:
`
`
`
`1925
`
`
`
`FIG. 20 * *
`
`Page 28 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 28 of 46
`
`5,680,619
`
`
`
`1981
`
`1980
`
`1982
`
`set my Fioqt to 4,555
`
`Page 29 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 29 of 46
`
`5,680,619
`
`1941
`1940
`1945
`= Classification Modifie? =
`|Cassification Modifier
`|
`1942
`Apply. When:
`Remove When: W_ --
`Porent Engbled
`|Fi None
`1943
`|E|
`Classificqtion
`1944–-Forêts dissº? F.
`
`
`
`Hºrrºr
`
`
`
`1962
`1963
`
`|| |s*Wous modifierº |
`Execute When:
`F.
`--Specifications-----------------
`Set:
`1964—Hincoming Da??|E||
`| To:
`we-H None
`|E|.
`
`1966
`
`Page 30 of 88
`
`
`
`USS. Patent
`
`Oct. 21, 1997
`
`Sheet 30 of 46
`
`5,680,619
`
`FIG. 24
`
`EDIT MODE FUNCTIONALITY
`
`> RUNTIME FUNCTIONALITY
`:
`
`Ba
`
`
`
`
`TLE
`BUILDER
`
`LIBRARIES
`
`of
`
`52.
`
`
`
`
`19
`
`LAYERS
`VIEW
`
`LAYOUT
`VIEW
`
`33
`
`31
`
`VIEWS
`STRUCTURE
`VIEW
`
`BEHAVIOR
`VIEW
`
`GER
`
`OBJECT
`LOADER
`
`17
`
`16
`
`SOUND
`MANAGER
`
`15
`
`MOUSE
`
`aoon>tal
`
`AUTHORING GUI
`ORAG &
`DROP
`
`3
`
`4
`
`COMPONENT MANAGER
`SERVICE
`COMPONENT
`MANAGER
`API
`2
`
`23
`
`:
`
`LINKING
`
`LOG
`
`4)
`
`* TITLE CONTENT
`> & PERIPHERALS
`
`
`
`WORLD MANAGER
`
`ASSET MANAGER -
` 5alwn
`
`:
`7
`—_ —
`
`
`
`ALIAS MANAGER:
`MEDIA PLAY—
`‘
`ER CLASSES
`:
`12
`8
`
`TOON
`||
`DISPLAY
`
`HYPERTEXT SUPPORT
`MESSAGING
`EDITOR
`:
`
`MANAGEMENT
`
`55
`
`
`xwnxme)
`S|=2aOo
`
`
`
`
`
`
`18
`itmM=QaxX
`SYMBOL MANAGER
`
`
`
`
`
`
`
`54 100
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`P= =)
`
`
`
`
`
`44 |:|2442 2
`
`
`
`
`40:
`
`
`
`50
`
`Page 31 of 88
`
`Page 31 of 88
`
`
`
`U.S. Patent
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 31 of 46
`
`5,680,619
`5,680,619
`
`091gs}
`
`6S!
`
`e9tcgLOL
`
`
`
`
`
`YILIGOWYILICONYaLIGOW
`
`
`
`Uaddvum“GON—YaddvaM“OOM—Uaddvym“CON
`
`
`
`
`
`
`
`
`
`W3ISAS
`
`FavACaVHassy
`
`asfSSIO¥Sgtcol
`
`
`NLVYad0
`
`S|
`
`YBAYTd
`
`Go‘Old
`
`0s
`
`(NOLIO3SgnS)
`(NOLL3SENS)
`
`IN3NS13
`
`
`
`
`
`Page 32 of 88
`
`ISL
`
`IN3WT1g
`
`(3N30S)
`
`INGWT14rINWW313
`
`ect
`
`Page 32 of 88
`
`
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 32 of 46
`
`5,680,619
`
`FIG, 26
`
`
`
`
`
`
`
`SERVICE
`WRAPPER
`
`1.65
`
`SERVICE
`WRAPPER
`
`1 66
`
`SERVICE
`WRAPPER
`
`167
`
`164:
`
`SERVICE
`
`SERVICE
`
`SERVICE
`
`168
`
`169
`
`17O
`
`Page 33 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 33 of 46
`FIG, 27
`
`5,680,619
`
`175
`
`SCENE 1
`
`SCENE 2
`
`SCENE 3
`
`
`
`
`
`
`
`APPLICATION
`
`STRUCTURAL ELEMENTS
`
`TABLE OF ASSETS
`SCENE 1 OBJECTS
`BACKGROUND PICTURE
`
`176
`
`177
`178
`179
`18O
`
`
`
`
`
`TABLE OF ASSETS
`SCENE 2 OBJECTS
`
`181
`182
`
`
`
`ASSETS
`
`TABLE OF ASSETS
`SCENE 3 OBJECTS
`
`183
`184
`
`Page 34 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 34 of 46
`
`5,680,619
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`SYSTEM
`PROCESSING
`
`
`
`PENDING
`MESSAGE
`TO SERVICE/
`MODIFER
`7
`
`POST MODIFIER/
`SERVICE
`THREAD
`
`
`
`CAN
`THEY BE
`DEFERRED
`7
`
`PERFORM SERVICE/
`MODIFIER
`PROCESSING
`
`NOTIFY THOSE
`ELEMENTS
`DRAW COMPLETE
`
`
`
`
`
`
`
`PERFORM
`END PLAY
`PROCEDURES
`
`ANIMATE
`SHARED SCENE
`
`257
`
`
`
`ANIMATE
`ACTIVE SCENE
`258
`
`PROCESS
`POSTED MODIFIER/
`SERVICE THREADS
`
`PERFORM ALL
`PENDING DRAWS
`
`ANY
`ELEMENTS
`NEED TO KNOW
`
`
`
`FIG, 28
`
`
`
`RELINQUISH
`CONTROL
`2
`
`Page 35 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 35 of 46
`
`5,680,619
`
`
`
`SNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
`
`62 "
`
`Page 36 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 36 of 46
`
`P61
`
`q6Z1
`
`261
`
`P6CL
`
`621
`
`
`
`YOLONYLSNODdNOd
`
`OSZL
`
`BCL
`
`98Zzl
`
`
`
`VY]gvlA
`
`98h
`
`JIEVLA
`
`5,680,619
`2621
`
`SCOHLAW
`
`~~OFOld
`
`AVL
`
`4Q
`
`S3STavl
`
`Page 37 of 88
`
`Page 37 of 88
`
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 37 of 46
`
`5,680,619
`
`RESOURCES
`DIRECTORY
`
`
`
`
`
`276
`
`IDENTIFY
`KIT FILES
`277
`
`COUNT
`COMPONENTS
`278
`
`BUILD
`COMPONENT
`TABLES
`
`LOAD KIT,
`INITIALIZE
`SELF RECORDS
`
`INITIALIZE
`METHODS
`
`BUILD TABLES
`AND
`RESOLVE SIZES
`
`
`
`
`
`
`
`
`
`
`
`
`
`FIG, 3.
`
`Page 38 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 38 of 46
`
`5,680,619
`
`ë, Fle
`
`Edit
`
`Fomat
`
`Amange
`
`Object
`
`Wew
`
`Window
`
`J8
`
`320
`
`330
`
`
`
`U
`
`|
`|
`|United Sºtomºl United Sºciºl|United Scene v Kliº
`#LE=NEWSNAKE:Structure
`D;
`v. 450 [] Snakehead
`&
`451
`Graphic Modifier
`452 Al SnokeheadVector
`453 [2] Snakeheadmotion
`454
`Snakehit Sound
`455
`Boundary Detection Messenger
`460 [] SnakeMiddle
`461
`Graphic Modifier
`462 || "... Full Motion Modifier
`463
`Timer Messenger
`470 [] SnakeMiddle
`47 | [F Graphic Modifier
`472
`Full Motion Modifier
`473
`Timer Messenger
`480 [] SnakeMiddle
`481
`Graphic Modifier
`482
`Full Motion Modifier
`483
`Timer Messenger
`490 [] Snake Toil
`491
`Graphic Modifier
`492
`Messenger
`493
`Full Motion Modifier
`494
`Timer Messenger s
`
`450
`
`470
`
`490
`
`Sº, Sº,
`
`Page 39 of 88
`
`
`
`US. Patent
`
`Oct. 21, 1997.
`
`Sheet 39 of 46
`
`5,680,619
`
`7550[qd -Scene-A
`
`Scene-A 350
`
`
`[i25} SchoolingPrabability
`351
`
`
`
`352 [123] SwitchProbability
`Csa[ss
`391 552 353 354 3a
`353 [125] TopBottom
`
`
`
`-
`354 [25] LeftRight
`
`355.
`[25] MoxSwitchangle
`
`356 | Graphic Modifiar
`
`
`7 360 [| fhtoon1)
`
`
`
`361
`Transparent
`
`362 [2] Myelocity
`
`
`363
`NewVelocity
`
`
`364
`Drag Motion Modifier
`
`365
`Vector Motion Modifier
`
`366
`Tick Messenger
`
`aoe
`370
`
`
`
`371
`18 Border Detection Messenger
`
`372
`LR Border Detection Messenger
`
`
`373 Sul BounceOffBorder
`
`374 f&) BounceSound
`IZ
`380 &! Trend—Setting Behavior
`
`InvokeRandomDirection
` 381
`DecideToRandomlySwitch
`382 $y|
`Peary
`
`Delayed MyHeading Broadcast
`
`391 Sy| Schooling Decision
`
`
`392
`-eores
`
`
`
`396 fi-74 LeftCelRange
`
`
`397
`RightCelRange
`
` 330
`398 S\| Miniscript Modifier
`
`
`
`
`
`FIG. 33
`
`Page 40 of 88
`
`Page 40 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 40 of 46
`
`5,680,619
`
`2120
`
`2220
`| Window X ||
`
`2240
`||
`
`FIG, 34(a) "
`
`
`
`FIG, 34(b) Tº
`
`FG 34(c)."
`
`
`
`
`
`FG 34(3)." | 2500
`
`0
`FIG. 34(e)
`| Window X |
`
`FIG, 34(f) 2600
`
`| |
`
`FIG, 34(g) Tº
`
`Page 41 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 41 of 46
`
`5,680,619
`
`2000
`2010
`2020
`2030
`2040
`2100
`2101
`2102
`2103
`2104
`2105
`2106
`2120
`212]
`2122
`2123
`2124
`2125
`
`~
`x7.
`~7.
`
`*7
`v
`
`WINDOW Example
`?º Window Selection
`If Window Subsection
`[] Window Shored Scene
`[] Window Scene
`[]
`
`?.
`
`Nome
`BoundingRect TopLeft
`BoundingRect_BottomRight
`Graphic Modifier
`Image Effect Modifier
`CREATE Window
`TitleBar
`EA Text Style Modifier
`Graphic Modifier
`TitleRect TopLeft
`TitleRect Bottom Right
`$º CREATE TitleBor
`
`FIG, 35(a)
`
`Page 42 of 88
`
`
`
`U.S. Patent
`
`Sheet 42 of 46
`
`Oct. 21, 1997
`[I]
`
`.
`
`Window X + Minhºax
`Nome
`BoundingRect_TopLeft
`BoundingRect BottomRight
`Graphic Modifier
`Image Effect Modifier
`3. CREATE Window
`ºf MiniMaxFesponse
`Max Response
`Min Response
`TitleBor
`#A Text Style Modifier
`Graphic Modifier
`TitleRect_TopLeft
`TitleRect Bottom Right
`CREATE TitleBar
`MinºloxResponse
`
`[A]
`
`-
`
`?.
`*) ji
`
`~ * = * * *
`
`Image Effect Modifier
`Graphic Modifier
`MinFlag
`BoxRect_TopLeft
`BoxRect BottomRight
`Minl(XONDimensions
`CREATE Minbox
`MinMoxBehavior
`$.
`DetectMinboxSelect
`3. Minºlox Response
`
`FIG, 35(b)
`
`5,680,619
`2200
`220.1
`2202
`2203
`2204
`2205
`2206
`2207
`2208
`2209
`2220
`2221
`2222
`2225
`2224
`2225
`2226
`2240
`2241
`2242
`2243
`2244
`22:45
`2246
`2247
`2248
`2249
`2250
`
`Page 43 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 43 of 46
`
`5,680,619
`
`vv
`
`(Oy
`
`Window X +MinMax + Drag
`Name
`
`BoundingRect_TopLeft
`BoundingRect_BottomRight
`Graphic Modifier
`Image Effect Modifier
`CREATE Window
`Sul
`| MinMaxResponse
`>|
`Window DRAG Behavior
`- Sd
`Follow Mouse
`TiteBor
`24}
`Text Style Modifier
`Graphic Modifier
`
`b
`v7
`
`v7
`
`23500
`
`2301
`
`2502
`
`2303
`
`2304
`
`2305
`
`2306
`
`2507
`
`2308
`
`2309
`
`2320
`
`2321
`
`2522
`
`2323
`
`2524
`
`23525
`
`23526
`
`TitleRect_TopLeft
`TitleRect_BottomRight
`CREATE TitleBar
`S|
`MinMaxResponse
`3!
`| —_TitleBar DRAG Behavior
`MouseOffset
`2328
`<0}=MouseDown
`2329
`S|
`CalcMouseOffset
`TitleBarMouseTracking
`23351
`<0}=MouseUp
`2552
`bp
`(ma
`MinBox
`2540
`FIG. 35(c)
`
`>
`v7
`
`2527
`
`2330
`
`v
`
`fom
`
`b
`
`Window X’
`[abc]
`Name
`BoundingRect_TopLeft
`BoundingRect_BottomRight
`Graphic Modifier
`CREATE. Window
`TitleBar
`
`S|
`
`v-
`
`2400
`
`2401
`
`2402
`
`2403
`
`2404
`
`2405
`
`2420
`
`FIG. 35(d)
`
`Page 44 of 88
`
`Page 44 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 44 of 46
`
`5,680,619
`
`<z
`
`|E||
`
`~z
`
`~7.
`
`~z
`
`~z
`
`2500
`Window X + WindowShode
`2501
`Nome
`2502
`BoundingRect TopLeft
`2503
`BoundingRect BottomRight
`2504
`Graphic Modifier
`2505
`CREATE Window
`3.
`2506
`*| WINDOW WinShaderesponse
`2507
`Shodedown Response
`2508
`Shadeup Response
`2520
`[A] TitleBor
`2521
`EA Text Style Modifier
`2522
`Graphic Modifier
`2523
`TitleRect_TopLeft
`2524
`TitleRect BottomRight
`2525
`3. CREATE TitleBor
`2526
`* WinShadeBehavior
`2527
`WinShadeflag
`2528
`WinShade Sound
`<!;
`2529
`INTFlag
`$...
`25.30
`*] Detect?)oubleClick
`2531
`[?º]
`ClickFog
`2532
`3. INIFog
`3. MouseupResponse 2533
`Ö| Clicktimer
`2534
`3. SingleClick
`2535
`
`FIG, 35(e)
`
`Page 45 of 88
`
`
`
`U.S. Patent
`
`Oct. 21, 1997
`
`Sheet 45 of 46
`
`5,680,619
`
`2600
`
`2601
`
`2602
`
`2603
`
`2604
`
`2605
`
`2606
`
`2607
`
`2608
`
`2620
`
`2621
`
`2622
`
`2623
`
`2624
`
`2625
`
`2626
`
`2627
`
`Pli¢¢PAAR
`
`Window X + WindowShade + Drag
`Name
`
`BoundingRect_TopLeft
`BoundingRect_BottomRight
`Graphic Modifier
`
`Image Effect Modifier
`
`CREATE Window
`WINDOW WinShadeResponse
`Window DRAG Behavior
`
`.
`
`TitleBar
`[a4]
`Text Style Modifier
`Graphic Modifier
`TitleRect_TopLeft
`TitleRect_BottomRight
`CREATE TitleBar
`Sl
`| WinShadeBehavior
`| ‘TitleBar DRAG Behavior
`
`FIG. 35(f)
`
`v7
`
`(|
`
`>
`b
`
`vv
`
`b
`>
`
`Page 46 of 88
`
`Page 46 of 88
`
`
`
`U.S. Patent
`
`v
`
`Oct. 21, 1997
`[] ALL
`
`Sheet 46 of 46
`
`:
`
`[[F]
`
`Nome
`BoundingRect Tople?
`BoundingRect_BottomRight
`Grophic Modifier
`Image Effect Modifier
`CREATE Window
`?.
`* Mink?qxResponse
`* WINDOW WinShadeResponse
`& Window DRAG Behavior
`TitleBor
`[A] Text Style Modifier
`Graphic Modifier
`TitleRect TopLeft
`TitleRect BottomRight
`& CREATE TitleBor
`ºf MinwoxResponse
`sº WinShadeBehavior
`& TitleBor DRAG Behavior
`[] Minbox
`Image Effect Modifier
`Graphic Modifier
`MinFlag
`BoxRect TopLeft
`BoxRect_Bottom Right
`MiniCONDimensions
`CREATE Minbox
`MinbloxBehavior
`MINBOX WinShaderesponse
`
`FIG, 35(g)
`
`5,680,619
`2700
`2701
`2702
`2703
`2704
`2705
`2706
`2707
`2708
`2709
`2720
`2721
`2722
`2723
`2734
`2725
`2726
`27.27
`2728
`2740
`2741
`2742
`2743
`2744
`2745
`2746
`2747
`2748
`2749
`
`Page 47 of 88
`
`
`
`5,680,619
`
`1
`HIERARCHICAL ENCAPSULATION OF
`INSTANTIATED OBJECTSIN A
`MULTIMEDIA AUTHORING SYSTEM
`
`L BACKGROUND
`A. Field of the Invention
`B. Description of the Related Art
`1. Reusability and the Modular Interface
`2. Encapsulation and the Object Interface
`3. The Need for Selective Reusability of “User Objects”
`a. An OOP Windowing Example
`4. The Lack of Selective Reusability in Multimedia
`Authoring Systems
`,
`I. SUMMARY OF THE INVENTION
`IL BRIEF DESCRIPTION OF THE DRAWINGS
`IV. DETAILED DESCRIPTION
`A. External Architecture—“Author’s-Eye View”
`1. Objects: Elements and Modifiers
`2. Object Containers: Elements and Behaviors
`3. Object Hierarchies: Structural Hierarchy and Behav-
`ioral Hierarchy
`a. Types of Elements in the Structural Hierarchy
`(1) Projects
`(2) Sections
`(3) Subsections
`(4) Scenes
`(5) Media Elements
`b. Isolation of External Dependencies of Object Con-
`tainers
`(1) Hierarchical Message Broadcasting
`(2) Hierarchical Variable Scoping
`(3) Hierarchical Relative Positioning
`c. Selective Reusability through Adoption and Trans-
`plantation
`‘
`4. Object Authoring Interface
`a. Layout View
`b. Layers View
`c. Structure View
`d. Asset Palette
`e. Library
`f. Alias Palette
`g. Messaging Log
`h. mToon Editor
`i. Modifier Palettes
`j. Drag and Drop
`. Object Messaging
`a. Categories of Messages
`(1) Author Messages
`(2) Environment Messages
`(3) Commands
`b. Parts of a Message
`(1) Message Name
`(2) Message Destination
`(3) Message Data
`(4) Message Path
`6. Object Configuration
`a. Elements
`b. Modifiers
`(1) Behavior
`(2) Variables
`(3) Capabilities
`B. Core System Architecture
`1. Edit Mode Functionality
`a. Connecting Objects
`(1) Hlement To Element Connection
`
`tn
`
`10
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`50
`
`35
`
`65
`
`2
`(2) Modifier Connections
`(3) Player and Asset Connections
`(4) Touch-Up Process
`b. Aliasing
`2. Saving Projects andTitles
`3. Runtime Functionality
`a. Message Targeting and Dispatching
`b. Event Loop Processing
`C. Component API—“Programmer’s-Eye View”
`1. Object Model
`2. Component Methods
`3, Registration Process
`4. Core and Service Utilities
`D. Examples
`1. Snake
`2. Fish
`
`3. Windowing System
`TABLES
`
`Table L System Messages And Commands
`Table II. Message Destinations
`Table II. Message Data Structure
`Table IV. Base Component Class Functions
`Table V. Sample Instance Data Structure
`FIGURES
`
`FIG. 1 Dual Hierarchy
`FIG, 2 Layout View With Tool, Object Information And
`Modifier Palettes
`
`FIG. 3 Layers View
`PIG. 4 Structure View
`FIG. 5 Asset Palette
`
`FIG. 6 Library
`FIG.7 Alias Palette
`
`FIG. 8 Messaging Log
`FIGS. 9%a)}{(d) mToon Editor
`FIG. 10 Element Configuration Dialog
`FIG. 11 Behavior Interface
`
`FIGS. 12(a)h) Variable Interfaces
`FIGS. 13(a)-(g) Messenger Interfaces
`FIGS. 14(a)-(c) Scene-Based Modifier Interfaces
`FIG. 15 Scene Change And Return Modifiers
`FIGS. 16(a)(d) Motion Modifier Dialogs
`FIGS. 17(a)-(d) Visual Modifier Dialogs
`FIGS. 18(a)-(d) Sound Modifier Dialogs
`FIG. 19 Style Modifier Dialog
`FIG. 20 Cursor Modifier Dialog
`FIG. 21 Miniscript Modifier Dialog
`FIG. 22 Classification Modifier Dialog
`FIG. 23 Set Value Modifier Dialog
`FIG. 24 System Architecture
`FIG. 25 Object Interconnections
`FIG. 26 Service Connections
`
`FIG. 27 Title Storage
`PIG. 28 Event Loop Processing
`FIG. 29 Interfaces Architecture
`FIG. 30 Operation Of Object Model
`FIG. 31 Loading Of Components
`FIG. 32 Implementation Of A Snake
`FIG. 33 Implementation Of Fish
`
`Page 48 of 88
`
`Page 48 of 88
`
`
`
`5,680,619
`
`3
`FIGS. 34(a}-(g) Selectively Reusable Windows Example
`FIGS. 35(a)-(g) Implementation Of Windows Example
`I. BACKGROUND
`
`A. Field of the Invention
`This inventionrelates to application development systems
`generally, and in particular to systems for authoring inter-
`active multimedia applications.
`B. Description of the Related Art
`Since the advent of computers many decades.ago, com-
`puter scientists have labored to build increasingly powerful
`computer hardware that is faster and cheaperto build thanits
`predecessors. Today’s computers can perform,
`in one
`second, many millions of “add,”“shift,” “load,”“‘store” and
`other relatively simple functions.
`To perform tasks of any significant complexity, however,
`one must somehow cause computers to perform vast num-
`bers of these simple functions in some sequence. Computer
`software, in its most basic form, comprises programs or
`sequences of instructions, each of which directs a computer
`to perform the function corresponding to that instruction.
`Yet, even as computers have become more powerful,
`developers of computer software continue to struggle to
`create complex programs without having to “reinvent the
`wheel” for each task they direct computers to perform. This
`need for “reusability” permeates virtually every aspect of
`software development, and is driven ultimately by the end
`user’s desire for “ease of use.”
`1. Reusability and the Modular Interface.
`Although there are many varied approachesto this basic
`problem of reusability, one technique remains constant—
`“modular programming,” ie. the “bootstrapping” of mul-
`tiple simple functions into “modules”of greater and greater
`complexity that can be reused through higher-level “modu-
`lar interfaces.” Virtually all software relies on modular
`programming to some extent.
`For example, assemblers and compilers enable program-
`mers to bootstrap from the machine language defined by a
`computer’s instruction set to a higher-level, more human-
`readable language. Similarly, operating systems perform
`many of the low-level support tasks commonly needed by
`applications software developers (e.g., file system, memory
`Management, basic GUI routines, etc.), and then provide
`developers with a library of “reusable” modules.
`In essence,all application development systems provide
`to their users a language, an application prograrmminginter-
`face (“API”), or some other form of modular interface
`designed to facilitate development of general purpose or
`highly specialized applications. Such modular interfaces
`provide reusability of the “hidden” functionality which
`implements that interface.
`2. Encapsulation and the Object Interface.
`One of the most popular current trends designed to
`promote the creation of reusable software is in the field of
`object-oriented programming (“OOP”). There are a variety
`of OOP languagesand application developmenttools on the
`market today (e.g., C++ and Kaleida Labs’ “ScriptX™”), as
`well as a number of “pseudo-OOP”tools (e.g., “Hyper-
`Card™” from Apple Computer and “Visual Basic™” from
`Microsoft which borrow some, but not all, of the basic
`principles of OOP.
`OOP systems generally are intended to extend reusability
`to all portions of a computer program, not just to particular
`modules. This is accomplished by distributing control of the
`various tasks performed by a program to individual
`“objects” with well-defined modular interfaces. These
`
`4
`objects typically communicate by directly calling one anoth-
`er’s capabilities or “methods.”
`OOPapplication development systems generally require
`their users to define abstract “classes” of objects that define
`the characteristics of the objects in that class. The actual
`Objects in the user’s application are instantiated as neededat _
`“runtime” from this class “template.” Such systems also
`typically include certain built-in reusable class libraries to
`provide the user with an initial base of functionality.
`The instantiated objects that perform the various tasks
`within the user’s application are reusable in large part duc to
`a process knownas“encapsulation.” Encapsulation involves
`defining a class of objects with a well-defined external
`interface, and “hiding” within the objects the code and data
`necessary to implement that interface. In other words, the
`implementation of an object’s interface is “encapsulated”
`entirely within the object.
`Thus, programmers can reuse objects in variousdifferent
`contexts within their application. All other objects that are
`aware of this interface can “reuse” this object because its
`external dependencies are isolated within its modular
`“object interface.”
`:
`Programmers also can use a process known as “inherit-
`ance”to “specialize” or modularly extend an object’s func-
`tionality by reusing some or all of that object’s character-
`istics via its interface or class definition—i.e. , the public
`methods and data structures that define the template for
`instancesof that class. For example, programmers may wish
`to extend the base functionality of an existing class (whether
`created by the programmer or provided in a reusable class
`library) by adding a new method to objects in that class, or
`replacing (i.c., overriding) or supplementing (i.e.,
`overloading) an existing method.