`(12) Reissued Patent
`Patel et al.
`
`USOORE37258E
`
`US RE37,258 E
`(10) Patent Number:
`(45) Date of Reissued Patent:
`Jul. 3, 2001
`
`2 as als
`
`Talal C al. ....................
`
`5,123,757 * 6/1992 Nagaoka et al. ..................... 395/114
`5,125,091
`6/1992 Staas, Jr. et al. .................... 395/650
`5,133,075 * 7/1992 Risch ................................... 395/800
`E. : 810: St.
`et al i.
`35.
`5,181,162
`1/1993 Smith et al. ......................... 364/419
`5,226,112 * 7/1993 Mensing et al. ..................... 395/114
`5,287,194 * 2/1994 Lobiondo .............
`... 395/114
`5,303.336 * 4/1994 Kageyama et al. .................. 395/114
`5,323,393 * 6/1994 Barrett et al. ...
`... 370/85.8
`5,337,258 * 8/1994 Dennis .....
`... 395/575
`5,353.388 * 10/1994 Motoyama
`... 395/117
`5,495,561
`2/1996 Holt ..................................... 395/112
`OTHER PUBLICATIONS
`IBM Technical Disclosure Bulletin, V. 34(10A), New York,
`US, pp. 912-193 “Use of Agraphical User Interface for
`Printers' Mar. 1992 *
`* cited by examiner
`Primary Examiner Dov Popovici
`(74) Attorney, Agent, or Firm Morgan & Finnegan, LLP
`(57)
`ABSTRACT
`An object-oriented printing System includes objects that
`provide query, data transfer, and control methods. The
`inventive object-oriented printing System communicates
`with the remainder of the operating System by means of a
`Standard interface Such as a grafport and printer drivers are
`provided for each printer type within the operating System.
`Thus, an application not only need not worry about the
`particular printer/computer combination with which it is to
`operate, but also need not have a built in document format
`ting capability. The printing System includes objects that
`provide queries for device identification, optimized imaging,
`and printer Status. Other objects are also provided for data
`transfer to bracket connections prior to Sending and receiv
`ing information. Still other objects are provided for cancel
`ling a print job, pausing a job, and clearing out a job. Finally,
`an object is also provided for Supporting multiple Streams of
`communication to an imaging task.
`
`33 Claims, 12 Drawing Sheets
`
`(54) OBJECT ORIENTED PRINTING SYSTEM
`(75) Inventors: Jayendra Natubhai Patel, Sunnyvale;
`Ryoji Watanabe, Cupertino; Mark
`ENER k Elysis
`~.
`s
`View, all of CA (US)
`(73) Assignee: Object Technology Licensing Corp.,
`Cupertino, CA (US)
`
`(21) Appl. No.: 09/173,465
`(22) Filed:
`Oct. 14, 1998
`Related U.S. Patent Documents
`
`Reissue of:
`5,566,278
`(64) Patent No.:
`Oct. 15, 1996
`Issued:
`08/111.238
`Appl. No.:
`Aug. 24, 1993
`Filed:
`(51) Int. Cl." .................................................. G06F 15/00
`(52) U.S. Cl. .......................................... 358/1.15; 358/1.13
`(58) Field of Search .................................. 358/1.13, 1.15,
`358/1.18, 1.1, 1.16, 1.17; 345/433,438;
`710/1, 11, 14, 19, 24, 33, 34, 39, 50, 54,
`72, 100, 104, 105,106, 112, 129; 395/500.44
`
`(56)
`
`References Cited
`U.S. PATENT DOCUMENTS
`... 364/578
`4,821,220 * 4/1989 Duisberg ...
`... 364/900
`4.885,717 * 12/1989 Becket al......
`... 340/706
`4,891,630 * 1/1990 Friedman et al.
`... 364/200
`4,953,080 * 8/1990 Dysart et al. ..
`5,025,398
`6/1991 Nelson ................................. 395/112
`5,025,399 * 6/1991 Wendt et al. ........................ 395/117
`5,041,992 * 8/1991 Cunningham et al.
`... 364/518
`5,050,090 * 9/1991 Golub et al. ..........
`... 364/478
`5,052,834 * 10/1991 Feistel et al. ..
`... 400/121
`5,060,276
`10/1991 Morris et al. ............................ 382/8
`5,075,848
`12/1991 Lai et al. ............................. 395/425
`5,093.914 * 3/1992 Coplien et al.
`... 395/700
`5,119,475
`6/1992 Smith et al. ......................... 395/156
`
`COMPUTER
`
`
`
`404
`
`APPLICATION
`PROGRAM
`
`OPERATING
`SYSEM
`
`printing
`INTERFACE
`
`
`
`
`
`414 -
`
`PRINTER
`
`NHANDLER
`
`PRINTER
`port
`
`/ 422
`W
`
`S.
`
`- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
`
`420
`
`-1-
`
`Amazon v. Audio Pod
`US Patent 10,805,111
`Amazon EX-1056
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 1 of 12
`
`US RE37,258 E
`
`| | | | | | | | |
`
`| | | | | | | | | | | |
`
`|WELLSÅS
`
`
`
`(LHV HOIHd) ! "5D|-/
`
`0 || |||
`
`
`
`| | | | | | | | | | | |
`
`| | | | | | | | | | |
`
`-2-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 2 of 12
`
`US RE37,258 E
`
`5) NI LW/>|E|dO
`
`WELLSÅS
`
`
`
`(LHV »JOIHd) Z ’91. H.
`
`
`
`
`
`
`
`
`
`
`
`
`
`MELmdWoo (Tººº
`
`-3-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 3 of 12
`
`US RE37,258 E
`
`XISIG
`
`EARICI
`
`009
`
`€ 1,9
`
`8 | 9
`
`
`
`9 (9 IAI
`
`
`
`CIRIVOE AEX;
`
`809
`
`-4-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 4 of 12
`
`US RE37,258 E
`
`_^QIELLTld|NOSO
`
`007L – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
`
`
`
`
`
`
`
`0 || 7
`
`707
`
`-5-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 5 of 12
`
`US RE37,258 E
`
`[=
`
`ceG0S
`
`LNIdd
`
`ADIAAg
`
`82S
`
`waroodsaa(
`=~9zg
`SLVIGSWNYALNI
`ASVYOLS
`(a
`Y43100dS
`
`ces
`
`8LS
`
`§DIA
`
`
`
`YSTONVHYSiLNidd
`
`c L
`
`S
`
`OLS
`
`80S90S
`
`vOS
`
`cOS
`
`00S
`
`LNIdd
`
`adsAYdsaS
`
`TANNVHO
`LNldd
`(7
`LNAWN3D00
`orlod
`
`-6-
`
`
`
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 6 of 12
`
`US RE37,258 E
`
`9AUNDIA
`
`YSLNIHd
`
`YSTONVH
`
`
`
`
`
`(AYOLSS-1Z0OWYSLNIdL)NOdly9S3d
`
`
`ALVLSLNALSISHAdgorLNIddL
`
`NOLWHNDINOS
`“914‘dNLas
`
`TWOISAHd
`
`YaLNidd
`
`
`
`\(1SGOWHALNIddL)
`
`
`
`YALNIHddOLNS3d
`
`
`
`3LVLSSINVNAG
`
`
`
`‘MALNIYdJHL40
`
`‘anandgor
`
`‘O13
`
`SHSLLNIMd
`
`NOLLVHNDIANOD
`
`\anandaor
`
`ssoTvida
`
`NOLLVYNDIANOD
`
`HALNIddL
`
`-7-
`
`
`
`ALITIWNOSHadHSLNIMd
`
`»LNSWnd0Gd,
`
`(BAIHDYYNV)
`
`-7-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 7 of 12
`
`US RE37,258 E
`
`HAAS
`AHLAgGa.Lida/aainddns)OLV.LVOMVH
`(YSYNLOVINNVS91A30HALLNIYdSHL
`
`
`(77Nolidiuosaa“sy~GOPINIHdLWILvLV
`
`
`
`NOLLVO!ISILON‘013‘SNLVLS
`SNLVLS‘aorVvLNIHdOL
`
`WVSLYSIGNVHYSLNidd
`
`
`
`YaTONVHHALNIYdL
`
`LOaraoGANSLivis¢>-
` AMOWSIN|em-—NIGALQSYYSS3SY¢S193frd03SWVSSHL=~—-—----”
`
`SINVNACSHSLNIdd
`
`dsdNLsaNnanodgor
`
`onetee
`
`
`
`NOLLVUNDIINODANIddL,)eeee
`
`peeree¢TANNVHI~
`
`~~ZDIAAGHSLNIddL.—
`
`
`
`ALIIVNOSH3dH3LNIdd
`
`wLNAWNDOD,
`
`
`
`SOIAs0HALNINdLL
`
`TANNVHO
`
`24andld
`
`aseeeyte, on™~€
`
`
`
`
`isanoau
`
`\SSIARGWHOL
`~—eeeeeee
`
`NNYTWHO
`
`
`
`
`
`~~39DVdJNO
`
`
`aa—cea
`
`¢~NaolAadANIdL
`
`~w
`
`
`
`(LNSWNDOdSH1L)
`
`NOYLNIdd
`
`(Y3HDLVdsia)
`
`(BWILLVLY3NO)
`
`saor
`
`ASVONISVINI
`
`aLVLS
`
`
`
`
`
`~ae
`
`—=-
`
`“amee
`
`-8-
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 8 of 12
`
`US RE37,258 E
`
`(WaHOLVdSIGALOWSYN
`
` oT7(MSNONVHMGINIALJ47
`
`N
`
`~A--
`
`FONVHOXSOdILpF7_---@---.
`
`(SVLONIOWWIHELNIGLYsaeTse
`o:SSIAAGLNIYdL“¢
`
`_-%re>ADIASCGIVYOL
`éaenone
`
`NeeI(NOLLdOSSQSOrINIAL)
`
`-
`
`Nee
`
`8DI
`
`‘“~*-
`
`-9-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 9 of 12
`
`US RE37,258 E
`
`
`
`LNI? Hd
`
`LSEfn?DE?-!_LNEWTOOC]
`
`6 (OICH
`
`
`
`ETTETO EOT
`
`-10-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 10 of 12
`
`US RE37,258 E
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`DOCUMENT
`
`REOUEST
`
`PRINTER HANDLER
`
`
`
`TRECEIVERTASKPROGRAM
`
`JOB OUEUE
`
`
`
`TMAGING TASK
`
`PRINTER'S
`DYNAMIC STATE
`
`TDEVICECHANNEL
`
`PRINTER HANDLER
`
`
`
`
`
`
`
`
`
`MESSAGE
`STREAM
`
`REQUEST
`
`
`
`TRECEIVERTASKPROGRAM
`
`JOB OUEUE 11
`
`TIMAGING TASK
`
`PRINTER'S
`DYNAMIC STATE
`
`
`
`TDEVICECHANNEL
`
`FIG. I0
`
`-11-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 11 of 12
`
`US RE37,258 E
`
`
`
`
`
`REOUEST
`
`DOCUMENT
`
`PRINTER HANDLER
`
`
`
`TRECEIVERTASKPROGRAM
`
`
`
`
`
`JOB OUEUE
`
`TIMAGING TASK
`
`
`
`
`
`
`
`PRINTER'S
`DYNAMIC STATE
`
`TDEVICECHANNEL
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`MESSAGE
`STREAM
`
`PRINTER HANDLER
`
`RECQUEST
`
`
`
`
`
`
`
`TRECEIVERTASKPROGRAM
`
`JOB OUEUE 11
`
`TIMAGING TASK
`
`
`
`PRINTER'S
`DYNAMIC STATE
`
`
`
`
`
`TDEVICECHANNEL
`
`
`
`
`
`FIG. II
`
`-12-
`
`
`
`U.S. Patent
`
`Jul. 3, 2001
`
`Sheet 12 of 12
`
`US RE37,258 E
`
`
`
`
`
`RECQUEST
`
`
`
`PRINTER HANDLER
`
`DOCUMENT
`
`
`
`
`
`JOB OUEUE
`
`PRINTER'S
`DYNAMIC STATE
`
`TRECEIVERTASKPROGRAM
`
`TIMAGING TASK
`
`TDEVICECHANNEL
`
`
`
`
`
`
`
`FIG. I2
`
`NETWORK PRINTER,
`SUCH AS:
`- NOVELLIPX
`- PAP
`-TCP/IP
`
`-13-
`
`
`
`US RE37,258 E
`
`1
`OBJECT ORIENTED PRINTING SYSTEM
`
`appears in the
`Matter enclosed in heavy brackets
`original patent but forms no part of this reissue specifi
`cation; matter printed in italics indicates the additions
`made by reissue.
`COPYRIGHT NOTIFICATION
`Portions of this patent application contain materials that
`are Subject to copyright protection. The copyright owner has
`no objection to the facsimile reproduction by anyone of the
`patent document or the patent disclosure, as it appears in the
`Patent and Trademark Office.
`
`2
`By itself, the operating System generally provides only
`very basic functions and must be accompanied by an “appli
`cation' program. The application program interacts with the
`operating System to provide much higher level functionality
`and a direct interface with the user. During the interaction
`between the application program and the operating System,
`the application program typically makes use of operating
`System functions by Sending a Series of task commands to
`the operating System which then performs the requested
`tasks. For example, the application program may request
`that the operating System Store particular information on the
`computer disk memory or display information on the Video
`display.
`FIG. 1 is a Schematic illustration of a typical computer
`System utilizing both an application program and an oper
`ating System. The computer System is Schematically repre
`sented by dotted box 100, the application program is rep
`resented by box 102 and the operating system by box 106.
`The interaction between the application program 102 and the
`operating system 106 is illustrated schematically by arrow
`104. This dual program System is used on many types of
`computerS Systems ranging from mainframes to personal
`computers.
`The method for handling printing, however, varies from
`computer to computer, and, in this regard, FIG. 1 represents
`a prior art personal computer System. In order to provide
`printing functions, the application program 102 interacts (as
`shown schematically by arrow 108) with printer driver
`Software 110. Printer driver Software 110 is generally asso
`ciated with an application program and reformats and con
`verts the printable information as necessary. Since each
`printer has its own particular format and control command
`set, which must be embedded in the text properly to control
`the printer, the printer driver software 110 must be specifi
`cally designed to operate with one printer or one type of
`printer.
`The printer driver software 110 produces a reformatted
`information Stream containing the embedded commands as
`shown schematically as arrow 114. The converted informa
`tion Stream is, in turn, applied to a printer port 112 which
`contains circuitry that converts the incoming information
`Stream into electrical Signals. The Signals are, in turn, Sent
`over a cable 116 to the printer 118. Printer 118 usually
`contains an "imaging engine' which is a hardware device or
`a ROM-programmed computer which takes the incoming
`information Stream and converts it into the electrical signals
`necessary to drive the actual printing elements. The result is
`a “hard copy’ output on the Selected medium.
`While the configuration shown in FIG. 1 generally works
`in a Satisfactory manner, it has Several drawbacks. Since the
`printer driver software 110 is specific to each type of printer,
`a separate driver had to be provided for each printer type
`with which the application program is to operate. In the
`personal computer market, there are a large number of
`different printer types that are compatible with each type of
`computer and, therefore, as the number of printer types
`proliferated, so did the number of printer drivers which were
`required for each application program So that the program
`was compatible with most available printers. Therefore,
`application program developerS had to provide larger and
`larger numbers of printer drivers with each application
`program, resulting in wasted time and effort and wasted disk
`space to hold the drivers, only one or two of which were of
`interest to any particular user. Unfortunately, if a user
`purchased an application program and it did not include a
`printer driver which could control the printer which the user
`owned, unpredictable operation occurred, resulting in pro
`gram returns and user dissatisfaction.
`
`35
`
`FIELD OF THE INVENTION
`15
`The invention generally relates to improvements in com
`puter Systems and, more particularly, to operating System
`Software for printing documents.
`BACKGROUND OF THE INVENTION
`One of the most important aspects of a modern computer
`System is the ability to generate a "hard’ copy of textual
`information or graphics which can be manipulated by the
`computer, Visually displayed and Stored. In order to accom
`25
`plish this task, a computer System generally includes a
`printing device which is electrically connected to the com
`puter System and controlled by it in order to generate a
`permanent image on a Selected medium. Examples of print
`ing devices in common use are dot matrix, inkjet and laser
`printers which fix permanent images on paper under control
`of the computer. Although paper is the most common
`medium, other media are often used, Such as photographic
`film.
`In order to print a document which is displayed on the
`monitor or Stored, within the memory, Several actions must
`take place. First, Since the print medium generally has a
`fixed size, the printable information must be divided into
`pieces which are Small enough to fit on the Selected medium,
`a proceSS which is called pagination. In addition, the infor
`mation may need to be reformatted from the format in which
`it is either displayed or stored into a format which is suitable
`for controlling the printing device to actually perform the
`printing on the medium. The reformatting in this latter Step
`may include the insertion of control commands into the
`printable information in order to control the printing device.
`These added commands may, for example, include Such
`commands as carriage returns, line feeds, form feeds, Spaces
`and font information, all of which format the printable
`information. The reformatting may also include a conver
`Sion Step in which a graphical display is converted into the
`form used by the printing device.
`The pagination and reformatting necessary to convert the
`printable information into a form which can be printed on a
`given printing device is generally performed by Software
`programs running within the computer System. Software
`programs operating on a computing System generally can be
`categorized into two broad classes: operating Systems which
`are usually Specific to a type of computer System and consist
`of a collection of utility programs that enable the computer
`System to perform basic operations, Such as Storing and
`retrieving information on a peripheral disk memory, display
`ing information on an associated Video display, performing
`rudimentary file operations including the creation, naming
`and renaming of files and, in Some cases, performing diag
`nostic operations in order to discover or recover from
`malfunctions.
`
`50
`
`55
`
`60
`
`65
`
`40
`
`45
`
`-14-
`
`
`
`US RE37,258 E
`
`15
`
`25
`
`35
`
`40
`
`3
`In addition, it was also necessary for each application
`program to provide high level printing functions Such as
`pagination and page composition (including addition of
`margins, footnotes, figure numbers, etc.) if Such functions
`were desired. Consequently, each application program
`developer had to spend time developing programs to imple
`ment common printing functions which programs were
`Specific to each application program, thereby resulting in
`duplicated effort and wasted time.
`In order to overcome the aforementioned difficulties, the
`prior art arrangement was modified as shown in FIG. 2. In
`this new arrangement, computer System 200 is still con
`trolled by application program 202 which cooperates, as
`shown Schematically by arrow 204, with operating System
`206. However, in the system shown in FIG. 2 operating
`system 206 includes printer drivers 214. A separate printer
`driver must still be provided for each different type of
`printer, but the printer drivers are Sold with, and part of, the
`operating System. Consequently, it is not necessary for each
`application program to have its own set of printer drivers. An
`application program, Such as application program 202, com
`municates with the printer driver 214 by means of a stan
`dardized interface 210. Two common interfaces are called
`"grafports' or “device contexts'. Illustratively, application
`program 202 provides information (shown Schematically
`shown by arrow 208) in a standardized form to the grafport
`210. The grafport 210, in turn, forwards information, as
`shown by arrow 212, to printer driver 214 which reformats
`and converts the information as previously described into
`the format required by the printer. The output of printer
`driver 214 is provided (illustratively shown as arrow 216) to
`printer port 218 where it is converted to electrical Signals
`that are transmitted, via cable 220, to the printer 222.
`The configuration shown in FIG. 2 has the advantage that
`the application program developer need not worry about the
`Specific computer and printer combination on which the
`program will ultimately run in order to provide printing
`capabilities to the application program. However, it still
`Suffers from the drawback that, if desired, high level printing
`capabilities Such as pagination and page composition must
`Still be designed into each application program, thereby
`duplicating program code and wasting programming
`CSOUCCS.
`
`45
`
`50
`
`SUMMARY OF THE INVENTION
`The foregoing problems are overcome and the foregoing
`object is achieved in an illustrative embodiment of the
`invention in which an object-oriented printing interface
`includes document grouping or folio objects which, once
`instantiated provide complete and flexible printing capabil
`ity that is transparent to the application program. The
`printing interface objects include objects that provide query,
`data transfer, and control methods.
`The inventive object-oriented printing interface commu
`55
`nicates with the remainder of the operating System by means
`of a Standard interface Such as a grafport and printer drivers
`are provided for each printer type within the operating
`System. Thus, an application not only need not worry about
`the particular printer/computer combination with which it is
`to operate, but also need not have a built in document
`formatting capability. The printing System includes objects
`that provide queries for device identification, optimized
`imaging, and printer Status. Other objects are also provided
`for data transfer to bracket connections prior to Sending and
`receiving information. Still other objects are provided for
`canceling a print job, pausing a job, and clearing out a job.
`
`60
`
`65
`
`4
`Finally, an object is also provided for Supporting multiple
`Streams of communication to an imaging task.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`The above and further advantages of the invention may be
`better understood by referring to the following description in
`conjunction with the accompanying drawings, in which:
`FIG. 1 is a Schematic block diagram of a prior art
`computer System showing the relationship of the application
`program to the operating System and the printer driver in the
`prior art;
`FIG. 2 is a Schematic block diagram of a modification of
`the prior art system shown in FIG. 1 to allow the application
`program to interface to a Standard printing interface in the
`prior art;
`FIG. 3 is a block Schematic diagram of a computer
`System, for example, a personal computer System on which
`the inventive object-oriented printing interface operates in
`accordance with a preferred embodiment;
`FIG. 4 is a Schematic block diagram of modified computer
`System in which the operating System includes an inventive
`object-oriented printing interface in accordance with a pre
`ferred embodiment;
`FIG. 5 is a block schematic diagram of the information
`paths and hardware by which printable information is chan
`neled through intermediate Storage to a print device in
`accordance with a preferred embodiment;
`FIG. 6 shows how the personality document is used by
`different parts of the printing System in accordance with a
`preferred embodiment;
`FIG. 7 details the printer handler components and their
`interactions in accordance with a preferred embodiment;
`FIG. 8 illustrates the relationship between various printer
`handler classes in accordance with a preferred embodiment;
`FIG. 9 is a block diagram of local printing in accordance
`with a preferred embodiment;
`FIG. 10 is a block diagram of remote imaging in accor
`dance with a preferred embodiment;
`FIG. 11 is a block diagram of local imaging in accordance
`with a preferred embodiment; and
`FIG. 12 is a block diagram of local imaging to a net
`worked printer.
`DETAILED DESCRIPTION OF THE
`ILLUSTRATIVE EMBODIMENTS
`The invention is preferably practiced in the context of an
`operating System resident on a personal computer Such as
`the IBM, PS/2, or Apple, Macintosh, computer. A represen
`tative hardware environment is depicted in FIG. 3, which
`illustrates a typical hardware configuration of a computer
`300 in accordance with the subject invention. The computer
`300 is controlled by a central processing unit 302, which
`may be a conventional microprocessor, a number of other
`units, all interconnected via a system bus 308, are provided
`to accomplish Specific tasks. Although a particular computer
`may only have some of the units illustrated in FIG.3 or may
`have additional components not shown, most computers will
`include at least the units shown.
`Specifically, computer 300 shown in FIG. 3 includes a
`random access memory (RAM)306 for temporary storage of
`information, a read only memory (ROM)304 for permanent
`Storage of the computer's configuration and basic operating
`commands and an input/output (I/O) adapter 310 for con
`necting peripheral devices Such as a disk unit 313 and printer
`
`-15-
`
`
`
`S
`314 to the bus 308, via cables 315 and 312, respectively. A
`user interface adapter 316 is also provided for connecting
`input devices, Such as a keyboard 320, and other known
`interface devices including mice, Speakers and microphones
`to the bus 308. Visual output is provided by a display adapter
`318 which connects the bus 308 to a display device 322 such
`as a Video monitor. The WorkStation has resident thereon and
`is controlled and coordinated by operating System Software
`Such as the Apple System/7, operating System.
`In a preferred embodiment, the invention is implemented
`in the C++ programming language using object-oriented
`programming techniques. C++ is a compiled language, that
`is, programs are written in a human-readable Script and this
`Script is then provided to another program called a compiler
`which generates a machine-readable numeric code that can
`be loaded into, and directly executed by, a computer. AS
`described below, the C++ language has certain characteris
`tics which allow a Software developer to easily use programs
`written by others while Still providing a great deal of control
`over the reuse of programs to prevent their destruction or
`improper use. The C++ language is well-known and many
`articles and texts are available which describe the language
`in detail. In addition, C++ compilers are commercially
`available from several vendors including Borland
`International, Inc. and MicroSoft Corporation. Accordingly,
`for reasons of clarity, the details of the C++ language and the
`operation of the C++ compiler will not be discussed further
`in detail herein.
`As will be understood by those skilled in the art, Object
`Oriented Programming (OOP) techniques involve the
`definition, creation, use and destruction of “objects'. These
`objects are Software entities comprising data elements and
`routines, or functions, which manipulate the data elements.
`The data and related functions are treated by the Software as
`an entity and can be created, used and deleted as if they were
`a single item. Together, the data and functions enable objects
`to model virtually any real-world entity in terms of its
`characteristics, which can be represented by the data
`elements, and its behavior, which can be represented by its
`data manipulation functions. In this way, objects can model
`concrete things like people and computers, and they can also
`model abstract concepts like numbers or geometrical
`designs.
`Objects are defined by creating “classes” which are not
`objects themselves, but which act as templates that instruct
`the compiler how to construct the actual object. A class may,
`for example, Specify the number and type of data variables
`and the Steps involved in the functions which manipulate the
`data. An object is actually created in the program by means
`of a special function called a constructor which uses the
`corresponding class definition and additional information,
`Such as arguments provided during object creation, to con
`Struct the object. Likewise objects are destroyed by a special
`function called a destructor. Objects may be used by using
`their data and invoking their functions.
`The principle benefits of object-oriented programming
`techniques arise out of three basic principles, encapsulation,
`polymorphism and inheritance. More specifically, objects
`can be designed to hide, or encapsulate, all, or a portion of,
`the internal data Structure and the internal functions. More
`particularly, during program design, a program developer
`can define objects in which all or some of the data variables
`and all or Some of the related functions are considered
`“private” or for use only by the object itself. Other data or
`functions can be declared “public' or available for use by
`other programs. Access to the private variables by other
`programs can be controlled by defining public functions for
`
`35
`
`40
`
`45
`
`50
`
`55
`
`60
`
`65
`
`US RE37,258 E
`
`15
`
`25
`
`6
`an object which access the object's private data. The public
`functions form a controlled and consistent interface between
`the private data and the “outside” world. Any attempt to
`write program code which directly accesses the private
`variables cause the compiler to generate an error during
`program compilation which error Stops the compilation
`process and prevents the program from being run.
`Polymorphism is a concept which allows objects and
`functions which have the same overall format, but which
`work with different data, to function differently in order to
`produce consistent results. For example, an addition func
`tion may be defined as variable A plus variable B (A+B) and
`this same format can be used whether the A and B are
`numbers, characters or dollars and cents. However, the
`actual program code which performs the addition may differ
`widely depending on the type of variables that comprise A
`and B. Polymorphism allows three separate function defi
`nitions to be written, one for each type of variable (numbers,
`characters and dollars). After the functions have been
`defined, a program can later refer to the addition function by
`its common format (A+B) and, during compilation, the C++
`compiler will determine which of the three functions is
`actually being used by examining the variable types. The
`compiler will then Substitute the proper function code.
`Polymorphism allows similar functions which produce
`analogous results to be "grouped in the program Source
`code to produce a more logical and clear program flow.
`The third principle which underlies object-oriented pro
`gramming is inheritance, which allows program developerS
`to easily reuse pre-existing programs and to avoid creating
`Software from Scratch. The principle of inheritance allows a
`Software developer to declare classes (and the objects which
`are later created from them) as related. Specifically, classes
`may be designated as Subclasses of other base classes. A
`subclass “inherits” and has access to all of the public
`functions of its base classes just as if these function appeared
`in the Subclass. Alternatively, a Subclass can override Some
`or all of its inherited functions or may modify some or all of
`its inherited functions merely by defining a new function
`with the same form (overriding or modification does not
`alter the function in the base class, but merely modifies the
`use of the function in the subclass). The creation of a new
`subclass which has some of the functionality (with selective
`modification) of another class allows Software developers to
`easily customize existing code to meet their particular needs.
`Although object-oriented programming offerS Significant
`improvements over other programming concepts, program
`development Still requires significant outlays of time and
`effort, especially if no pre-existing Software programs are
`available for modification. Consequently, a prior art
`approach has been to provide a program developer with a Set
`of pre-defined, interconnected classes which create a set of
`objects and additional miscellaneous routines that are all
`directed to performing commonly-encountered tasks in a
`particular environment. Such pre-defined classes and librar
`ies are typically called "application frameworks” and essen
`tially provide a pre-fabricated Structure for a working appli
`cation.
`For example, an application framework for a user inter
`face might provide a set of predefined graphic interface
`objects which create windows, Scroll bars, menus, etc. and
`provide the Support and “default” behavior for these graphic
`interface objects. Since application frameworks are based on
`object-oriented techniques, the pre-defined classes can be
`used as base classes and the built-in default behavior can be
`inherited by developer-defined subclasses and either modi
`fied or overridden to allow developers to extend the frame
`
`-16-
`
`
`
`7
`work and create customized Solution in a particular area of
`expertise. This object-oriented approach provides a major
`advantage over traditional programming Since the program
`mer is not changing the original program, but rather extend
`ing the capabilities of the original program. In addition,
`developerS are not blindly working through layers of code
`because the framework provides architectural guidance and
`modeling and, at the same time, frees the developerS to
`Supply Specific actions unique to the problem domain.
`There are many kinds of application frameworks
`available, depending on the level of the System involved and
`the kind of problem to be solved. The types of frameworks
`range from high-level application frameworks that assist in
`developing a user interface, to lower-level frameworks that
`provide basic System Software Service S. Such as
`communications, printing, file Systems Support, graphics,
`etc. Commercial examples of application frameworks
`include MacApp (Apple), Bedrock (Symantec), OWL
`(Borland), NeXTStep App Kit (NEXT), and Smalltalk-80
`MVC (ParcPlace).
`While the application framework approach utilizes all the
`principles of encapsulation, polymorphism, and inheritance
`in the object layer, and is a Substantial improvement over
`other programming techniques, there are difficulties which
`arise. These difficulties are caused by the fact that it is easy
`for developers to reuse their own objects, but it is difficult for
`the developerS to use objects generated by other programs.
`Further, application frameworks generally consist of one or
`more object “layers' on top of a monolithic operating
`system and even with the flexibility of the object layer, it is
`Still often necessary to directly interact with the underlying
`operating System by means of awkward procedural calls.
`In the same way that an application framework provides
`the developer with prefab functionality for an application
`program, a System framework, Such as that included in a
`preferred embodiment, can provide a prefab functionality
`for System level Services which developerS can modify or
`override to create customized Solutions, thereby avoiding
`the awkward procedural calls necessary with the prior art
`application frameworks programs. For example, consider a
`printing framework which could provide the foundation for
`automated pagination, pre-print processing and page com
`position of printable information generated by an application
`program. An application Software developer who needed
`these capabilities would ordinarily have to write specific
`routines to provide them. To do this with a framework, the
`developer only needs to Supply the chara