home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!nwnexus!ole!rwing!fnx!sgihbtn!dgeary
- From: dgeary@sierra.com (David Geary)
- Newsgroups: comp.object
- Subject: Re: Need basic OO information
- Message-ID: <1992Dec29.161034.13738@sierra.com>
- Date: 29 Dec 92 16:10:34 GMT
- References: <1992Dec11.125457.36573@uservx.plk.af.mil>
- Sender: news@sierra.com
- Organization: Sierra Geophysics, Kirkland WA
- Lines: 263
- Nntp-Posting-Host: grumpy
-
- In article <1992Dec11.125457.36573@uservx.plk.af.mil> tollefson@uservx.plk.af.mil writes:
- >Hi,
- >
- > I was away from programming (doing management, yuk) during the time
- >when object-oriented programming became popular. Now, as I move closer
- >to programming again, I need to quickly gain an understanding of what
- >object-oriented programming really has to offer.
- >
- > I'm looking for a good book (or E-mail replies) which can help me to
- >understand some basics:
- >
- > 1) What are the basic benefits? (why use it over traditional)
-
- When done correctly, OO makes the following *much* easier:
-
- 1. Maintenance.
- 2. Extensibility.
- 3. Ability to change.
-
-
- > 2) How does it work, very generally.
-
- *Very* generally, classes of objects which exhibit similar behavior are
- developed in a hierarchy of classes. Using inheritance, specialized classes
- are derived from existing, more generalized, classes. This is a very natural
- paradigm for us humans; grouping similar classes of objects in hierarchies
- is something we do constantly in everyday life.
-
- > (the only examples I've seen
- > have been complex theoretical nightmares or simple contrived
- > situations easily handled by conventional code.)
-
- The benefits of using OO are proportional to the complexity of the software
- being developed. Therefore, it is difficult to showcase the benefits of OO
- without dicussing "complex theoretical nightmares". Many authors instead
- resort to "simple contrived situations", which are of course, "easily
- handled by conventional code".
-
-
- > 3) How do you tell when to use it and when to avoid it for
- > specific programs?
-
- OO is applicable across many different types of applications. There is
- some performance penalty for using OO in some situations; for speed critical
- apps this may be a problem.
-
- > 4) Can old dogs learn new tricks? (how hard is it for a programmer
- > to convert his thinking)
- >
-
- I think it's a pretty natural thing to pick up. Unfortunately, a
- developer who is mired down in a procedural paradigm may have a harder time
- making the switch to OO than someone who has never written a line of code
- in their life.
-
- I would recommend getting Smalltalk. Smalltalk is a pure OO language where
- one can really see the benefits of having an existing hierarchy of very
- useful classes for building complex applications in a short period of time.
-
- > A description of a case where the programming became much easier or
- >the end product became much better would be very helpful. I'm not looking
- >for source code, but some textual information on how the new scheme helped.
- >
-
- There are quite a few good books that cover simplistic case studies. See
- the reading list that follows:
-
-
- --------------------------------------------------------------------------------
- Object-Oriented Analysis/Design:
- --------------------------------------------------------------------------------
-
- Object-Oriented Modeling And Design, Rumbaugh, et al.
- -----------------------------------
-
- Intended Audience: OOP practitioners.
- -----------------
-
- Excellent writing and presentation get mixed in with some pretty
- intense diagraming techniques for representing class hierarchies, and
- dynamic system behavior. Many good ideas on how to approach OOA/OOD;
- however, symbology is somewhat complex. This book also presents the
- OMT (Object Modeling Technique) notation, which is the basis of
- for some modeling tools.
-
-
- Object-Oriented Design With Applications, Grady Booch.
- ----------------------------------------
-
- Intended Audience: OOP practitioners.
- -----------------
-
- Booch, like Budd, presents applications in different languages: C++,
- SmallTalk, CLOS, Object Pascal and Ada. Booch's diagraming techniques
- seem more intuitive than Rumbaugh's. Booch works at Rational which, among
- others, provides tools for designing in the Booch notation.
-
-
- --------------------------------------------------------------------------------
- Object-Oriented Programming:
- --------------------------------------------------------------------------------
-
- Object-Oriented Software Construction, Bertrand Meyer
- --------------------------------------
-
- Intended Audience: Anyone interested in OOP.
- -----------------
-
- Written by the father of the Eiffel programming language, this book is
- (obviously) biased towards Eiffel and the methodologies it imposes; however
- it is an excellent work on the construction of Object-Oriented software
- in any language. Meyer also discusses a few things which I have not seen
- addressed (to the same degree) by other OOP authors, such as assertions
- and programming by contract. This is a true classic.
-
-
- Object-Oriented Programming An Evolutionary Approach, Brad Cox
- ----------------------------------------------------
-
- Intended Audience: OOP developers and OOP managers.
- -----------------
-
- Written by the father of Objective-C, this book is also biased towards
- Objective-C, but Brad explores many different areas of OOP and reusability
- other than the usage of programming languages to implement OOP methodologies.
-
- Brad stresses software reuse as an end, to which a programming language
- is (secondarily) a means, which is really the inverse of what Meyer does.
-
- This book gives a realistic viewpoint of where the software development
- industry is today, and where it may be tomorrow. There is a very interesting
- analogy of the industrial revolution (and the events leading up to it),
- and the inevitable "evolution" of the software industry.
-
-
- An Introduction To Object-Oriented Programming, Timothy Budd
- ----------------------------------------------
-
- Intended Audience: OOP practitioners.
- -----------------
-
- This one is my favorite. Examples are done in 4 different languages:
- C++, Objective-C, SmallTalk, and Object Pascal.
-
- Budd is an entertaining writer, and explores many aspects of OOP that
- are lost when an author sticks to one programming language. He also
- advocates a very simplistic method of OO design, which may be much more
- palletable than the books listed below by Rumbaugh and Booch concerning
- OOA/OOD.
-
-
- Software Components In Ada, Grady Booch.
- --------------------------
-
- Intended Audience: Ada programmers, and software engineers in general.
- -----------------
-
- Obviously slanted towards Ada, Booch nonetheless presents many excellent
- ideas that can be mapped to any programming language. The design/coding
- of classes one would normally expect to find in a class library, such
- as container classes is explored. It is enlightening to see how
- many of the advantages of OOP are exploited without the use of
- inheritance.
-
-
- Object-Oriented Programming With the X Window System Tookits, Jerry Smith
- ------------------------------------------------------------
-
- Intended Audience: X Window developers.
- -----------------
-
- This (thick) book provides an interesting look at the "object-oriented"
- implementation of the X Window system in C. Although I disagree with
- some of Jerry's statements concerning what is/is not OOP, and whether the X
- Window's OOP technique is on par with C++, nonetheless, exploring the
- implemention of OOP in a non-OOP language is worthwhile in and of itself.
- This book also provides a pragmatic view of developing X apps, and is one
- of the better references for "subclassing" X Widgets (not for the faint
- of heart!).
-
-
- --------------------------------------------------------------------------------
- C++:
- --------------------------------------------------------------------------------
-
- C++ Primer, Stanley Lippman
- ----------
-
- Intended Audience: Beginning and intermediate C++ programmers as a text.
- ----------------- Useful to all C++ programmers as a reference.
-
- Probably the best introduction to C++. Contains information hard to find
- elsewhere (such as ifstreams and ofstreams). Now out in a 2nd edition,
- Lippman covers topics ranging from: C++ data types, and naming of variables
- to templates, exception handling, and object-oriented design.
-
-
- Effective C++, Scott Meyers
- -------------
-
- Intended Audience: Intermediate C++ programmers. Much of what Scott
- ----------------- discusses will make a lot more sense if you've actually
- been writing C++ code for a while.
-
- An excellent set of (50) specific methodologies/constructs which one
- can use to write "effective" C++. This book will keep you out of
- trouble, and make your C++ life much easier. Buy it.
-
-
- C++ Programming Style, Tom Cargill
- ---------------------
-
- Intended Audience: Intermediate C++ programmers. Intended audience is
- ----------------- much the same as "Effective C++".
-
- Looks like Addison-Wesley (publisher) wanted this book to be viewed as
- a sequel to "Effective C++" (the covers are very similar). Whereas
- Scott Meyers presents 50 techniques for improving C++ programs,
- most of which are reinforced by a small code fragment, Cargill presents
- case studies of existing C++ code, and then proceeds to point out flaws in
- the design/code, and ways to implement the functionality better. While
- "Effective C++" presents many small rules to follow, such as:
- "Have operator= return a reference to *this", "C++ Programming Style"
- covers broader issues, such as: Abstraction, and the mis-use of Inheritance.
-
-
- The Annotated Reference Manual, Bjarne Stroustrup
- ------------------------------
-
- Intended Audience: C++ experts/language-lawyers/compiler writers. Good
- ----------------- reference for all C++ programmers.
-
- The "ARM" is for heavyweights. In addition to being a reference for compiler
- writers (it's the ANSI base document), Bjarne waxes eloquent about
- many of the nuances of C++, and the rationale behind them (where
- the "annotated" comes from).
-
- What I especially like is you get to see how certain constructs, such
- as multiple inheritance may be implemented by your compiler. While it is
- not essential to know this information to use C++, reading the ARM
- will improve your debugging skills in C++ by an order of magnitude,
- and give you a deeper understanding of why certain features have/have not
- been included in the language.
-
-
- Advanced C++, Programming Styles and Idioms, Coplien
- -------------------------------------------
-
- Intended Audience: Intermediate to expert C++ programmers.
- -----------------
-
- This book covers a lot of ground. From canonical forms for certain
- categories of C++ classes (such as: orthodox, inheritance, etc.)
- to OOD (Coplien espouses Booch's notation) to envelope and letter
- classes, Coplien explores many implementation techniques not
- found in other literature. Coplien addresses many of the issues Scott
- Meyers talks about, and in addition, presents many idioms to use
- in certain circumstances. Coplien assumes you are a fluent C++
- programmer who understands OOP.
- --
- David Geary | Seattle - America's most attractive city ...
- Sierra Geophysics |
- dgeary@sierra.com | to the jetstream ;-(
-