Object-Oriented Programming Languajes 480SmalItalk is built around two simple concepts: everything is treated as an object, and objects communicate by passing messages.. Object-Oriented
Trang 1Object-Oriented Programming Languajes 479Flegal, Ted Kaehler, Diana Merry, and Steve Putz Among other important roles that they played, Adele Goldberg and David Robson served as chroniclers of the Smalltalk project
Table A-1
Smalltalk
There are five identifiable releases of Smalltalk, indicated by their year of release:
Smalltalk-72, -74, -76, -78, and the most current incarnation, SmalItalk80 SmalItalk-72 and -74 did not provide support for inheritance, but they did lay much of the conceptual foundation of the language, including the ideas of message passing and polymorphism Later releases of the language turned classes into first-class citizens, thus completing the view that everything in the environment could be treated as an object Smalltalk-80 has been ported to a variety of machine architectures
There is also an important dialect of SmalItalk provided by Digitalk, Smalltalk/V, that is very similar to SmalItalk-80 and is available on the IBM PC (Windows and OS/2) and Macintosh Except for the user interface classes, the class libraries are quite similar to each other Also like SmalItalk-80, there is a development environment and development tools that are similar in capability, but different in structure and function [4]
Overview
Ingalls states that "the purpose of the Smalltalk project is to support children of all ages in the world of information The challenge is to identify and harness metaphors of sufficient simplicity and power to allow a single person to, have access to, and creative control over, information which ranges from number and text through sounds and images" [5] To this end,
Trang 2Object-Oriented Programming Languajes 480SmalItalk is built around two simple concepts: everything is treated as an object, and objects communicate by passing messages
Table A-1 summarizes Smalltalk's features, relative to, the seven elements of the object model Although the table does not indicate it, multiple inheritance is possible by the redefinition of certain primitive methods [6]
Example
Consider the problem in which we have a heterogeneous list of shapes, in which each particular shape object might be a circle, a rectangle, or a solid rectangle (this is similar to the problem we introduced in Chapter 3) Smalltalk has an extensive class library that already contains classes for circles and rectangles, and so our solution in this language would be almost trivial; this demonstrates the importance of reuse However, for the sake of comparison, lets assume that we only have primitive classes for drawing lines and arcs Therefore, we might define the class AShape as follows:
Object subclass: *AShape
"Initialize the shape"
theCenter := Point new
We may next define the subclass ACircle as follows:
AShape subclass: #ACircle
instanceVariableNames: 'theRadius'
classVariableNames: ‘’
poolDictionaries: ‘’
category: 'Appendix'
Trang 3Object-Oriented Programming Languajes 481
anArc display
index := index+ 1]
Continuing, the subclass ARectangle may be defined as follows:
AShape subclass: #ARectangle
instanceVariableNames: 'theNeight theWidth'
aLine := Line new
upperLeftComer := theCenter x - (theWidth / 2) 0 (theCenter y -
(theHeight 12)
aLine beginPoint: upperLeftCorner
aLine endPoint: upperLeftCorner x + theWidth 0 upperLeftComer y
aLine display
aLine beginPoint: aLine endPoint
aLine endPoint: upperLeftCorner x + theWidth 0 (upperLeftCorner y +
theHeight)
aLine display
aLine beginPoint: aLine endPoint
aLine endPoint: upperLeftCorner x 0 (upperLeftCorner y + theHeight) aLine display
aLine beginPoint: aLine endPoint
aLine endPoint: upperLeftCorner
Trang 4Object-Oriented Programming Languajes 482aLine display
Lastly, the subclass ASolidRectangle may be defined as:
ARectangle subclass: #ASolidRectangle
upperLeftCorner := theCenter x - (theWidth quo: 2) + 1 @
(theCenter y - (theHeight quo: 2) + l)
lowerRightCorner :=(:pperLeftCorner x + theWidth - 1 @
Bits of History, Words of Advice, by Krasner [9] LaLonde and Pugh [10] explore Smalltalk-80 in
great depth, including both the class libraries and application development
Trang 5Object-Oriented Programming Languajes 483
A.3 Object Pascal
Background
Object Pascal was created by developers from Apple Computer (some of whom were involved in the development of Smalltalk), in conjunction with Nalaus Wirth, the designer of Pascal Object PascaPs immediate ancestor is Clascal, an object-oriented version of Pascal for the Lisa Object Pascal was made publicly available in 1986 and is the first object-oriented programming language supported by the Macintosh Programmer's Workshop (MPW), the development environment for Apple's family of Macintosh computers The class library for MPW, called MacApp, provides the frameworks for constructing applications that conform to the Macintosh user interface guidelines
Trang 6Object-Oriented Programming Languajes 484
We summarize the features of Object Pascal in Table A-2, relative to the seven elements of the object model
References
The primary reference for Object Pascal is the MPW Object Pascal Reference from Apple [12]
A.4 C++
Background
C++ was designed by Bjarne Stroustrup of AT&T Bell Laboratories The immediate ancestor
of C++ is a language called C with Classes, also developed by Stroustrup in 1980 In turn, C with Classes was heavily influenced by the languages C and Simula C++ is largely a superset
of C However, in one sense, C++ is simply a better C, in that it provides type checking, overloaded functions, and many other improvements Most importantly, however, C++ adds object-oriented programming features to C
Table A-3
C++
There have been several major releases of the C++ language Version 1.0 and its minor releases added basic object-oriented programming features to C, such as single inheritance
Trang 7Object-Oriented Programming Languajes 485and polymorphism, plus type checking and overloading Version 2.0, released in 1989, improved upon the previous versions in a variety of ways (such as the introduction of multiple inheritance), based upon extensive experience with the language by a relatively large user community Version 3.0, released in 1990, introduced templates (parameterized classes) and exception handling The ANSI X3jl6 C++ committee has recently adopted proposals for namespace control (consistent with our notion of class categories) and run-time type identification
Early translator technology for C++ involved the use of a preprocessor for C, called cfront
Because this translator emitted C code as an intermediate representation, it was possible to port C++ to virtually every UNIX architecture quite quickly Now, C++ translators and native compilers are available commercially for almost every kind of instruction-set architecture
Overview
Stroustrup states that "C++ was primarily designed so that the author and his friends would not have to program in assembler, C, or various modern high-order languages Its main purpose is to make writing good programs easier and more pleasant for the individual programmer There never was a C++ paper design; design, documentation, and implementation went on simultaneously" [13] C++ corrects many of the deficiencies of C, and adds to the language support for classes, type checking, overloading, free store management, constant types, references, inline functions, derived classes, and virtual functions [14]
We summarize the features of C++ in Table A-3 on page 481, relative to the seven elements of the object model
virtual void draw() = 0;
Point center() const;
private:
Point theCenter;
Trang 8Object-Oriented Programming Languajes 486};
class Circle : public Shape {
public:
Circle();
void setRadius(int r);
virtual void draw();
int radius() const;
virtual void Draw();
int height() const;
int width() const;
a separate file, as follows:
Trang 9Object-Oriented Programming Languajes 487void Circle::setRadius(int r)
int X = (centero.x - theRadius);
int Y = (centero.y - theRadius);
XDrawArc(Display, Window, GraphicsContext, X, Y,
Rectangle::Rectangle() : theMeight(0), theWidth(0) {}
void Rectangle::setHeight (int h)
int X = (center().x - (theWidth 2));
int Y = (center().y - (theHeight 2));
XDrawRectangle(Display, Window, GraphicsContext, X, Y,
int X = (center().x - (width() / 2));
int Y = (center() y - (height() / 2));
gc oldGraphicsContext = GraphicsContext;
Trang 10Object-Oriented Programming Languajes 488XSetForeground(Display, GraphicsContext, Gray);
XDrawFilled(Display, Window, GraphicsContext, X, Y, width(),
height());
GraphicsContext = oldGraphicsContext;
};
References
The primary reference for C++ is the Annotated C++ Reference Manual by Ellis and, Stroustrup
[15] Stroustrup [16] provides in-depth coverage of the language and its use in the context of object-oriented design
A.5 Commn Lisp Object System
Background
There are literally dozens of dialects of Lisp, including MacLisp, Standard Lisp, SpiceLisp, S-1 Lisp, Nil, ZetaLisp, InterLisp, and Scheme Starting in the early 1980's, a plethora of new dialects of Lisp emerged that supported object-oriented programming, many of which were invented to support ongoing research in knowledge representation Spurred by the success in standardizing Common Lisp, a similar effort was undertaken in 1986 to standardize these object-oriented dialects
The idea of standardization was put forth at the summer 1986 ACM Lisp and Functional Programming Conference, resulting in the formation of a special, subcommittee as part of the X3jl3 ANSI committee (for the standardization of Common Lisp) Because this new dialect was conceived to be a proper superset of Common Lisp, it was called the Common Lisp Object System, or CLOS for short Daniel Bobrow chaired the committee, whose members included Sonya Keene, Linda DeMichiel, Patrick Dussud, Richard Gabriel, james Kempf, Gregor Kicazles, and David Moon
The design of CLOS was heavily influenced by the languages New Flavors and CommonLoops After about two years of work, the complete specification of CLOS was published in late 1988
Trang 11Object-Oriented Programming Languajes 489
Table A-4
CLOS
Overview
Keene reports that there were three design goals for CLOS:
• CLOS should be a standard language extension that includes the most useful aspects of the existing object-oriented paradigms
• The CLOS programmer interface should be powerful and flexible enough for developing most application programs
• CLOS itself should be designed as an extensible protocol, to allow for customization of its behavior and to encourage further research in object-oriented programming [17]
We summarize the features of CLOS in Table A-4, relative to the seven elements of the object model Although CLOS does not support persistent objects directly, there are straightforward extensions using the metaobject protocol to add persistency [18]
References
The primary reference for CLOS is the Common Lisp Object System Specification [19]
Trang 12Object-Oriented Programming Languajes 490
A.6 Ada
Background
The United States Department of Defense (DoD) is perhaps the largest user of computers in the world By the mid-1970s, software development for its systems had reached crisis proportions: projects were often late, over budget, and they often failed to meet their stated requirements it was evident that the problems would only worsen as software development costs continued to rise and the demand for software increased at an exponential rate To help resolve these problems, which were further compounded by the proliferation of hundreds of different languages, the DoD) sponsored the development of a single, common, high-order programming language In a sense, Ada represents one of the first engineered production-quality languages A set of requirements was developed starting in 1975 and culminated in the Steelman document, which was released in 1978 An international request for proposal (RFP) was then issued, inviting companies to design a language based upon these requirements The RFP drew seventeen responses This number was reduced to four, then two, and then one by an extensive design and evaluation period involving hundreds of computer scientists throughout the world
The winning design was originally called the Green language (so called because of its color code during the competition), and was then renamed Ada, in honor of Ada Augusta, Countess of Lovelace, who was noted for her early observations on the potential power of the computer The primary author of this language was jean Ichbiah of France Other members of the design team included Bernd Krieg-Brueckner, Brian Wichmann, Hemy Ledgard, jean-Claude Heliard, jean-Loup Gailly, jean-Raymond Abrial, john Barnes, Mike Woodger, Olivier Roubine, S A Schuman, and S C Vestal
The immediate ancestors of Ada are Pascal and its derivatives, including Euclid, Lis, Mesa, Modula, and Sue A number of concepts from ALGOL 68, Simula, CLU, and Alphard were also incorporated The ANSI standard for Ada was finally released in 1983 Translators for Ada were slow in coming, but today there are translators for almost every major family of instruction-set architectures Although Ada was originally sponsored by the DoD, it has found an important worldwide role in government and commercial software projects, and is usually the language of choice for large-scale software projects, such as the United States and Canadian air traffic control systems Since ANSI standards must be reviewed every five years,
a project called Ada 9x has been established to update this standard Through Adaqx, the original language definition has changed in a number of small ways, involving clarifications, the filling of gaps, and the correction of errors In its current definition, Ada is object-based, not object-oriented However, Ada9x adds object-oriented programming extensions to the original language definition
Trang 13Object-Oriented Programming Languajes 491
Table A-5
Ada
Overview
According to its designers, Ada was designed with three concerns in mind:
• Program reliability and maintenance
• Programming as a human activity
Trang 14Object-Oriented Programming Languajes 492
A.7 Eiffel
Background
Eiffel was created by Bertrand Meyer not only as an object-oriented programming language, but also as a software engineering tool While Eiffel is influenced by Simula, it was designed from the beginning to be an independent object-oriented language and development environment
Table A-6
Eiffel
The language supports dynamic binding and static typing, providing for flexibility in the design of a class interface, but taking advantage of the type safety that static typing provides There are several significant features that give support for more rigorous software engineering, including parameterized classes, assertions, and exceptions Meyer contends that generic classes complement the inheritance relationship by allowing for horizontal genericity: new classes at the same level of abstraction in an inheritance hierarchy may be created based on type parameters, rather than duplicating behaviors in sibling subclasses
Preconditions and postconditions, both integral parts of the language, implement assertions upon entering and leaving a method, respectively If a precondition fails upon entering a
Trang 15Object-Oriented Programming Languajes 493method, or if a post condition fails when leaving, an exception is raised A mechanism exists
in the language to handle the exception through the use of the rescue clause and retry instruction
Overview
Eiffel stresses the concepts of good software engineering: good class specification, strong typing, and facilities of taking advantage of reuse through both inheritance and generic classes The formal treatment of exceptions allows rigorous specification of class interfaces in the implementation
Eiffel also provides a full development environment including a syntax-directed editor, documentation generation, class libraries, and a browser In addition, code management and build management facilities are supported
Eiffel's features relative to our object model are summarized in Table A-6
Flavors FOOPIog FOOPS FRL Galileo Garp GLISP Gypsy Hybrid Inheritance InnovAda Intermission Jasmine KL-One KRL KRS Littie Smalitalk LOOPS
Lore Mace MELD Mjoiner ModPascal Neon New Flavors NIL
O-CPU
OakLisp Oberon Object Assembier Object Cobol Object Lisp Object Logo Object Oberon Object Pascal Objective-C ObjVLisp OOPC OOPS+
OPAL Orbit Orient84/K OTM PCOL PIE PL/LL Plasma 11 POOL-T PROCOL Quick Pascal Quicktalk ROSS SAST SCOOP SCOOPS Self Simula SINA SmalItalk Smalitalk AT Smalitalk V
Smal1world SPOOL
SR SRI- STROBE
T TrellislOwi Turbo Pascal 5.x Uniform
UNIT,S Vulc8n XLISP Zoom/VM
Trang 16Object-Oriented Programming Languajes 494
A.8 Other Object-Oriented Programming Languages
Figure A~2 provides the names of many other important or influential based and oriented programming languages; the Classified Bibliography offers references to sources of information for most of them
object-Saunders [23] provides a survey of over 80 different object-based and object-oriented programming languages He suggests that object-oriented programming languages may be grouped into seven categories [24]:
concurrency
distributed objects
languages
• Smalltalk-based Smalltalk and its dialects
• Ideological Application of object-oriented features
to other domains
• Miscellaneous Object-oriented languages that do not fit
any other category
Trang 17References 495
References
Mills, H 1985 DMM and Human Productivity Houston, TX: Data Processing Management
Association
The First Section: Concepts
Wagner, J 1986 The Search for Signs of Intelligent Life in the Universe New York, NY: Harper and
Row, p 202 By permission of ICM, Inc
Chapter 1: Complexity
[1] Brooks, F April 1987 No Silver Bullet: Essence and Accidents of Software
Engineering IEEE Computer vol 20(4), p 12
[2] Peters, L 1981 Software Design New York, NY: Yourdon Press, p 22
[3] Brooks No Silver Bullet, p 11
[4] Panias, D july 1985 Software Aspeas of Strategic Defense System Victoria, Canada:
University of Victoria, Report DCS-47-IR
[5] Peter, L 1986 7he Peter Pyramid New York, NY: William Morrow, p 153
[6] Waldrop, M 1992 ComplexityThe Emerging Science at tbe Edge of Order and
Cbaos New York, NY: Simon and Schuster
[7] Courtois, P june 1985 On Time and Space Decomposition of Complex Structures
Communications of tbe ACM vol 28(6), p 596
[8] Simon, H 1982 7be Sciences of tbe Artificial Cambridge, MA: The MIT Press,
Trang 18References 496 p.218
[9] Rechun, E October 1992 The Art of Systems Architecting LEEE Spectrun4 vol
29(10), p 66
[10] Simon Sciences, p 21-7-
[11] Ibid., p 221
[12] Ibid., p 209
[13] Gall, J 1986 Systemantics: How Systems Really Work and How They Fail Second
Edition Ann Arbor, MI: The General Systemantics Press, p 65
[14] Miller, G March 1956 The Magical Number Seven, Plus or Minus Two: Some Limits on Our Capacity for Processing Inforination Zbe Psycbological Review vol 63(2), p 86
[15] Simon Sciences, p 81
[16] Dijkstra, E 1979 Programming Considered as a Human Activity Classics in
Software Engineering New York, NY: Yourdon Press, p.5
[17] Parnas, D December 1985 Software Aspects of Strategic Defense Systems
Communications of tbe ACM vol 28(12), p 1328
[18] Tsai, J and Ridge, J November 1988 intelligent Support for Specifications
Transformation LEEE Software vol 5(6), p 34-
[19] Stein, J March 1988 Object-Oriented Progran-iming and Database Design Dr
Dobb'sjoumal of Software Tbolsfor tbe Professional Programmer, No 137, p 18
[20] Peters Software Design
[21] Yau, S and Tsai, J june 1986 A Survey of Software Design Techniques LEFEE
Transactions on Software Engineering vol SE-12(6)
[22] Teleclyne Brown Engineering Software metbodology Catalog, Report MC87-
COMM/ADP-0036 October 1987 Tinton Falls, Nj
[23] Sommerville, 1 1985 Software Engineering, Second Edition Workingham, England:
Addison-Wesley, p 68
[24] Yourdon, E and Constantine, L 1979 Structured Design Englewood Cliffs, Nj:
Prentice-Hall
Trang 19References 497[25] Myers, G 1978 CompositeIStructured Design New York, NY: Van Nostrand
Reinhold
[26] Page-jones, M 1988 The Practical Guide to Structured Systems Design Englewood
Cliffs, Nj: Yourdon Press
[27] Wirth, N january 1983 Program Development by Stepwise Refinement
Communications of tbe ACM vol, 26(1)
[28] Wirth, N 1986 Algoriffina and Data Structures Englewood Cliffs, Nj: Prentice-Hall
[29] Daffi, 0., Dijkstra, E., and Hoare, C A R 1972 Structured Programming London,
England: Academic Press
[30] Mills, H., Linger, R., and Hevner, A 1986 Principles ofInfonnation System Design
andAnalysis Orlando, FL: Academic Press
[31] Jackson, M 1975 Principles ofProgram Design Orlando, FL: Academic Press
[32] Jackson, M 1983 System Development Englewood Cliffs, Nj: Prentice-Hall
[33] OrT, K 1971 Structured Systems Development New York, NY: Yourdon Press
[34] Langdon, G 1982 Computer Design San Jose, CA: Computeach Press, p 6
[20] Miller Magical Number, p.95
[36] Shaw, M 1981 ALPHARD.- Form and Content New York, NY: Springer-Verlag, p 6
[37] Golciberg, A 1984 Smalltalk-80.- Ybe Interactive Programming Environment
Reading, MA: Addison-Wesley, p 80
[38] Petroski, H 1985 To Engineer Is Human St Martin's Press: New York, p 40
[39] Dijkstra, E january 1993 American Programmer vol 6(1)
[40] Mostow, J Spring 1985 Toward Better Models of the Desi9n Process AI Magazine
vol 6(1), p 44
[41] Stroustrup, B 1991 The C+ Programming Language, Second Edition Reading MA:
Addison-Wesley, p 366
[42] Eastman, N 1984 Software Engineering and Technology Technical Directions vol
10(1): Bethesda, MD: IBM Federal Systems Division, p 5
Trang 20References 498[43] Brooks No Silver Bullet, p 10
Chapter 2: The Object Model
[1] Rentsch, T September 1982 Object-Oriented Programming SIGPL¿1NNoticesvol
[5] Shankar, K 1984 Data Design: Types, Structures, and Abstractions Handbook of
Software Engineering New York, NY: Van Nostrand Reinhold, p 253
[6] Macintosb MacApp 1 1 1 Programmers Reference 1986 Cupertino, CA: Apple Computer, p 2
[7] Bhaskar, K October 1983 How Object-Oriented Is Your System? SIGPLANNotices vol 18(10), p 8
[8] Stefik, M and Bobrow, D Winter 1986 Object-Oriented Programming: Themes and Variations, AIMagazine vol 6(4), p 41
[9] Yonezawa, A and Tolcoro, M 1987 Object-Oriented Concurrent Prograniming: An Introduction, in Object-Oriented Concurrent Programming Cambridge, MA: The MIT Press,
p 2
[10] Levy, H 1984 Capability-Based Computer Systenu Beciford, MA: Digital Press, p.13
[11] Ramarnoorthy, C and Sheu, P Fall 1988 Object-Oriented Systems IEEE Experl vol (3),P
14
[12] Myers, G 1982 Advances in ComputerArchitecture Second Edition New York,
NY: John Wiley and Sons, p 58
[13] Levy Capability-Based computer
[14] Kavi, K and Chen, D 1987 Architectural Support: for Object-Oriented Languages
Proceedings of tbe nirty-second 1EEE Computer Society Intemational Conference lEEE
[15] iAPY 432 Object Primer 1981 Santa Clara, CA: Intel Corporation
Trang 21References 499[16] Dally, W J and Kajiya, J T March 1985 SIGARCH Newsletter vol 13(3)
[17] Dahlby, S., Henry, G., Reynolds, D., and Taylor, P 1982 The IBM System/38: A High Levei Machine, in Computer Structures: Principles and Example& New York, NY: McGraw-Hill
[18] Dijkstra, E May 1968 The Structure of the "THE" Multiprogramming System, Communications of the ACMvol 11(5)
[19] Pashtan, A 1982 Object-Oriented Operating Systems: An Emerging Design
Methodology Proceedings of the ACM '82 Conference ACM
[20] Parnas, D 1979 On the Criteria to Be Used in Decomposing Systems into Modules,
in Classics in Software EngineeiVng New York, NY: Yourdon Press
[21] Liskov, B and Zilles, S 1977 An Introduction to Formal Specifications of Data Abstractions Current Trends in Programming Metbodology: Software Specification and Design vol 1 Englewood Cliffs, Nj: Prentice-Hall
[22] Guttag, 1 1980 Abstract Data Types and the Development of Data Structures, in
Programming Language Design New York, NY: Computer Society Press
[23] Shaw Abstraction Teclmiques
[24] Nygaard, K and Dahl, O-J 1981 The Development of the Simula Languages, in
Histoiy ofProgramming Languages New York, NY: Academic Press, p 460
[25] Atkinson, M and Buneman, P june 1987 Types and Persistence in Database
Programming Languages ACM Computing Surveys vol 19(2), p 105
[26] Rumbaugh, J April 1988 Relational Database Design Using an Object-Oriented
Methodology Communications of tbe ACM vol 31(4), p 415
[27] Chen, P March 1976 The Entity-Relationship Model - Toward a Unified View of
Data ACM Transactions on Database Systems vol l(1)
[28] Barr, A and Feigenbaum, E 1981 Zbe Handbook ofAilijicial intelligence Vol 1
Los Altos, CA: William Kauftnann, p 216
[29] Stillings, N., Feinstein, M., Garfield, J., Rissland, E., Rosenbaum, D., Weisler, S, Baker-Ward,
L 1987 Cognitive Science., An Introduction Cambridge, MA: The MIT Press, p 305
[30] Rand, Ayn 1979 Introduction to Objectivist Epistemology New York, NY: New
American Library
Trang 22References 500[31] Minsky, M 1986 Tbe Society ofMind New York, NY: Simon and Schuster
[32] Jones, A 1979 The Object Model: A Conceptual Tocil for Structuring Software
Operating Systems New York, NY: Springer-Verlag, p 8
[33] Stroustrup, B May 1988 What Is Object-Oriented Programming? IEEE Software vol
5(3), p 10
[34] Cardelli, L and Wegner, P On Understanding Types, Data Abstraction, and
Polymorphism December 1985 ACM Computing Surveys vol 17(4), p 481
[35] DeMarco, T 1979 Structured Analysis and System Specification Englewood Cliffs,
Nj: Prentice-Hall
[36] Yourdon, E 1989 Moderri StructuredAnalysis Englewood Cliffs, Nj: Prentice-Hall
[37] Gane, C and Sarson, T 1979 Structured Systems Analysis Englewood Cliffs, Nj:
Prentice-Hall
[38] Ward, P and Mellor, S 1985 Structured Developmentfor Real-Time Systems
Engle-wood Cliffs, Nj: Yourdon Press
[39] Hatley, D and Pirbhai, 1 1988 Strategiesfor Real-Time System Specification New
York, NY: Dorset House
[40] Jenkins, M and Glasgow, J january 1986 Prograniming Styles in Nial IEEE
Software vol 3(1), p 48
[41] Bobrow, D and Stefik, M February 1986 Perspectives on Artificial Intelligence
Programming Science vol 231, p 951-
[42] Dahl, 0., Dijkstra, E., and Hoare, C A~ R 1972 StructuredProgramming London,
England: Academic Press, p 83- Ik
[43] Shaw, M October 1984 Abstraction Techniques in Modem Programming
Languages IEEE Software vol l(4), p lo
[44] Berzins, V., Gray, M., and Naumann, D May 1986 Abstraction-Based Software Development Communications of the ACM vol 29(5), p 403-
[45] Abelson, H and Sussman, G 1985 Structure and Interpretation of Computer
Programs Cambridge, MA: The MIT Press, p 126
[46] Ibid., p 132
Trang 23References 501[47] Seidewitz, E and Stark, M 1986 Towards a General Object-Oriented Software Development Methodology Proceedings of tbe First International Conference on Ada Programming Language Applicationsfor tbe NASA Space Station NASA Lyndon B Johnson Space Center, TX: NASA, p D.4.6.4
[48] Meyer, B 1988 Object-Oriented Software Construction New York, NY: Prentice
Hall
[49] Wirfs-Brock, R and Wilkerson, B October 1989 Object-Oriented Design: A
Responsibility-Driven Approach SIGPLANNotices vol 24(10)
[50] Ingalls, D The Smalltalk-76 Progranuning System Design and Implementation Proceedings
of the Fifth Annual ACM Symposium on PrVnciples of Programming Languages ACM, p 9
[51] Gannon, J., Hamlet, R., and Mills, H july 1987 Theory of Modules IEEE
Transactions on Software Engineering vol SE-13(7), p 820
[52] Date, C 1986 Relational Database: Selected Writings Reading, MA: Addison-
Wesley, p 180
[53] Liskov, B May 1988 Data Abstraction and Hierarchy SIGPLANNoticesvol 23(5), p
19
[54] Britton, K and Parnas, D December 8, 1981 A- 7E Software Module Guide
Washington, D.C Naval Research Laboratory, Report 4702, p 24
[55] Gabriel, R 1990 Private communication
[56] Stroustrup, B 1988 Private communication
[57] Myers, G 1978 CompositeIStructured Design New York, NY: Van Nostrand
[60] Parnas, D., Clements, P., and Weiss, D March 1985 The Modular Structure of
Complex Systems LEEF Transactions on Software Engineering vol SE-1 1(3), p 260
[61] Britton and Parnas A- 7E Software, p 2
Trang 24References 502[62] Parnas, D., Clements, P., and Weiss, D 1983 Enhancing Reusability with Information Hiding Proceedings of the Worksbop on Reusability in Programming, Stratford, CT: ITT Programming, p 241
[63] Meyer,, Object-Oriented Software Construction, p 47
[64] Cox, B 1986 Object-Oriented ProgrammingAn Evolutionary Approacb Reading,
MA: Addison-Wesley, p 69
[65] Danforth, S and Tomlinson, C March 1988 Type Theories and Object-Oriented
Programming ACH Computing Surveys vol 20(1), P 34
[66] Liskov 1988, p 23
[67] As quoted in Liskov 1980, p 67
[68] Zilles, S 1984 Types, Algebras, and Modeling, in On Conceptual Modeling
Perspectivesfrom Artificial Intelligence, Databases, and Programming Languages
New York, NY: Springer-Verlag, p 442
[69] Borning, A and Lngalls, D 1982 A Type Declaration and Inference System for
Smalltalk Palo Alto, CA: Xerox Palo Alto Research Center, p 134
[70] Wegner, P October 1987 Dimensions of Object-Based Language Design SIGPLAN
Notices vol 22(12), p 171
[71] Stroustrup, B 1992 Private communication
[72] Tesler, L August 1981 The Smalltalk Environment Byte vol 6(8), p 142
[73] Borning and Ingalls Type Declaration, p 133
[74] Thomas, D March 1989 What's in an Object? Byte vol 14(3), p 232
[75] Lim, J and johnson, R April 1989 The Heart of Object-Oriented Concurrent Programming SIGPLANNotices vol 24(4), p 165
[76] Ibid., p 165
[77] Black, A., Hutchinson, N., jul, E., Levy, H., and Carter, L july 1986 Distribution and Abstract Tjpes in Emerald Report 86-02-04 Seatue, WA: UniversitY of Washington, p 3
[78] Proceedings of the ACM SIGPLAN Workshop on Object-Based Concurrent
Programming April 1989 SIGPLANNoticesvol 24(4), p 1
Trang 25References 503[79] Atkinson, M., Bafley, P., Chishoim, K., Cockshott, P., and Morrison, R 1983 An
Approach to Persistent Programming 7be Computerjournal vol 26(4), p 360
[80] Khoshafian, S and Copeland, G November 1986 Object Identity SIGPLANNotices
vol 21(11), p 409
[81] Vbase Tecbnical Overview September 1987 Billerica, MA: Ontologic, p 4
[82] Stroustrup, B November 1987 Possible Directions for C++ Proceedings of tbe USENIY C- Worksbop Santa Fe, NM, p 14
[83] Meyer Object-Oriented Software Construction, p 30-31-
[84] Robson, D August 1981 Object-Oriented Software Systems Byte vol 6(8), p 74
Chapter 3: Classes and Objects
[1] Lefrancois, G 1977 Of Cbildren: An Introduction to Child Development Second
Edition Belmont, CA: Wadsworth, p 244-246
[2] Nygaard, K and Dahl, O-J 1981 The Development of the Simula Languages, in
History ofProgramming Languages New York, NY: Academic Press, p 462
[3] Halbert, D and O'Brien, P September 1988 Using Types and Inheritance in
Object-Oriented Prograniming LEEE Software vol 4(5), Iii 73-
[4] Smith, M and Tockey, S 1988 An Integrated Approach to Software Requirements
Definition Using Objects Seattle, WA: Boeing Commercial Airplane Support
Division, p 132
[5] Cox, B 1986 Object~Oriented Programming: An Evolutionary Approach Reading,
MA: Addison~Wesley, p 29
[6] MacLerman, B December 1982 Values and Objects in Programming Languages
SIGPLAN Notices vol 17(12), p 78
[7] Lippman, S 1989 C++ Primer Reading, MA: Addison-Wesley, p 185
[8] Adams, S 1993 Private communication
[9] Wirfs-Brock, R., Wilkerson, B., and Wiener, L 1990 Designing Object-Oriented
Software Englewood Cliffs, New jersey: Prentice Hall, p 61
Trang 26References 504[10] Rubin, K 1993 Private communication
[11] Macintosb MacApp 1 1 1 Programmer's Reference 1986 Cupertino, CA: Apple
Computer, p 4
[12] Khoshafian, S and Copeland, G November 1986 Object Identity SIGPLANNotices
vol 21(11), p 406
[13] Ingalls, D 1981 Design Principles behind Smalltalk Byte vol 6(8), p 290
[14] Gall, J 1986 Systemantics How Systems Really Work and How 7'bey Fail Second Edition Ann Arbor, MI: The General Systemantics Press, p 158
[15] Seidewitz, E and Stark, M 1986 Towards a General Object-Oriented Software
Development Methodology Proceedings of tbe Fint International Conference on Ada
Programming Language Applicationsfor tbe NASA Space Station NASA Lyndon B Johnson Space Center, TX: NASA, p D.4.6.4
[16] Rumbaugh, J., Blaha, M., Premerlani, W., Eddy, F., and Lorensen, W 1991 Object-
Otiented Modeling and Design- Englewood Cliffs, New jersey: Prentice-Hall, p 459
[17] Websters Thirid New International Dictionary of tbe English Language, unabridged
1986 Chicago, Illinois: Merriarn-Webster
[18] Stroustrup, B 1991 The C+ Programming Language, Second Edition Reading, MA:
Addison-Wesley, p 422
[19] Meyer, B 1987 Programming as Contracting Report TR-El-12/CO Goleta, CA:
Interactive Software Engineering
[20] SnycIer, A November 1986 Encapsulation and Inheritance in Object-Oriented
Programming Languages SIGTEANNotices vol 21(11)
[21] LaLonde, W April 1989 Designing Families of Data Types Using Exemplars ACM
Transactions on Programming Languages and Systems vol 11(2), p 214
[22] Rumbaugh, J April 1988 Relational Database Design Using an Object-Oriented
Methodology Communications of tbe ACMvol 31(4), p 417
[23] Lieberman, H November 1986 Using Prototypical Objects to Implement Shared
Behavior in Object-Oriented Systems SIGTEANNotices vol 21(11)
[24] Rumbaugh, 1991 p 312
[25] Brachman, R October 1983 "at IS-A Is and Isn't: An Analysis of Taxonomic Links
Trang 27References 505
in Semantic Networks LEEE Computer vol 16(10), p 30-
[26] Micallef, J April/May 1988 Encapsulation, ReusabilitY, and Extensibility in ObjectOriented Programming Languages journal of Object-Oriented Programming vol 1(1), p 15
[27] Snyder Encapsulation, p 39
[28] Cardelii, L and Wegner, P On Understanding Types, Data Abstraction, and
Polymorphism December 1985 ACM Computing Surveys vol 17(4), p 475-
[29] As quoted in Harland, D., SzypIewski, M., and Wainwright, J October 1985 An
Altemative View of Polymorphism SIGPLANNotices vol 20(10)
[30] Kaplan, S and johnson, R july 21, 1986 Designing and Implementingfor Reuse
Urbana, IL: University of Illinois, Department of Computer Science, p 8
[31] Deutsch, P 1983 Efficient Implementation of the Smalltalk-80 System, in Proceedings of the
1 1tb Annual ACM Symposium on tbe Principles of Programming Languages, p 300
[32] Ibid., p 299
[33] Duff, C August 1986 Designing an Efficient Language Byte vol 11(8), p 216
[34] Stroustrup, B 1988 Private conununication
[35] Stroustrup, B November 1987 Possible Directions for C++ Proceedings of tbe US~ C++ Workshop Santa Fe, New Mexico, p 8
[36] Keene, S 1989 Object-Oriented Programming in Common Lisp Reading, MA:
[40] Vlissides, J and Linton, M 1988 Applying Object-Oriented Design to Structured
Graphics Proceedings of USENIX C++ Conference Berkeley, CA: USENIX
Association, P 93-
[41] Meyer, B 1988 Object-Oriented Software Construction New York, NY: Prentice
Hall, p 274