1. Trang chủ
  2. » Công Nghệ Thông Tin

OBJECT-ORIENTED ANALYSIS AND DESIGNWith application 2nd phần 10 pdf

54 318 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Object-Oriented Programming Languages
Tác giả Ted Flegal, Diana Kaehler, Steve Merry, Steve Putz
Trường học Unknown University
Chuyên ngành Object-Oriented Programming Languages
Thể loại Lecture notes
Định dạng
Số trang 54
Dung lượng 244,99 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

Object-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 2

Object-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 3

Object-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 4

Object-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 5

Object-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 6

Object-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 7

Object-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 8

Object-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 9

Object-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 10

Object-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 11

Object-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 12

Object-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 13

Object-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 14

Object-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 15

Object-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 16

Object-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 17

References 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 18

References 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 19

References 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 20

References 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 21

References 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 22

References 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 23

References 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 24

References 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 25

References 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 26

References 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 27

References 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

Ngày đăng: 12/08/2014, 21:21

TỪ KHÓA LIÊN QUAN