• Complain

Stephen C. Dewhurst - C++ Common Knowledge: Essential Intermediate Programming

Here you can read online Stephen C. Dewhurst - C++ Common Knowledge: Essential Intermediate Programming full text of the book (entire story) in english for free. Download pdf and epub, get meaning, cover and reviews about this ebook. year: 2005, publisher: Addison-Wesley Professional, genre: Computer. Description of the work, (preface) as well as reviews are available. Best literature library LitArk.com created for fans of good reading and offers a wide selection of genres:

Romance novel Science fiction Adventure Detective Science History Home and family Prose Art Politics Computer Non-fiction Religion Business Children Humor

Choose a favorite category and find really read worthwhile books. Enjoy immersion in the world of imagination, feel the emotions of the characters or learn something new for yourself, make an fascinating discovery.

Stephen C. Dewhurst C++ Common Knowledge: Essential Intermediate Programming
  • Book:
    C++ Common Knowledge: Essential Intermediate Programming
  • Author:
  • Publisher:
    Addison-Wesley Professional
  • Genre:
  • Year:
    2005
  • Rating:
    4 / 5
  • Favourites:
    Add to favourites
  • Your mark:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

C++ Common Knowledge: Essential Intermediate Programming: summary, description and annotation

We offer to read an annotation, description, summary or preface (depends on what the author of the book "C++ Common Knowledge: Essential Intermediate Programming" wrote himself). If you haven't found the necessary information about the book — write in the comments, we will try to find it.

We live in a time when, perhaps surprisingly, the best printed works on C++ are just now emerging. This is one of those works. Although C++ has been at the forefront of innovation and productivity in software development for more than two decades, it is only now being fully understood and utilized. This book is one of those rare contributions that can bear repeated study by practitioners and experts alike. It is not a treatise on the arcane or academicrather it completes your understanding of things you think you know but will bite you sooner or later until you really learn them. Few people have mastered C++ and software design as well as Steve has; almost no one has such a level head as he when it comes to software development. He knows what you need to know, believe me. When he speaks, I always listenclosely. I invite you to do the same. You (and your customers) will be glad you did.Chuck Allison, editor, The C++ Source Steve taught me C++. This was back in 1982 or 1983, I thinkhe had just returned from an internship sitting with Bjarne Stroustrup inventor of C++ at Bell Labs. Steve is one of the unsung heroes of the early days, and anything Steve writes is on my A-list of things to read. This book is an easy read and collects a great deal of Steves extensive knowledge and experience. It is highly recommended.Stan Lippman, coauthor of C++ Primer, Fourth Edition I welcome the self-consciously non-Dummies approach of a short, smart book.Matthew P. Johnson, Columbia University I agree with the authors assessment of the types of programmers. I have encountered the same types in my experience as a developer and a book like this will go far to help bridge their knowledge gap.... I think this book complements other books, like Effective C++ by Scott Meyers. It presents everything in a concise and easy-to-read style.Moataz Kamel, senior software designer, Motorola Canada Dewhurst has written yet another very good book. This book should be required reading for people who are using C++ (and think that they already know everything in C++).Clovis Tondo, coauthor of C++ Primer Answer BookWhat Every Professional C++ Programmer Needs to KnowPared to Its Essentials So It Can Be Efficiently and Accurately Absorbed C++ is a large, complex language, and learning it is never entirely easy. But some concepts and techniques must be thoroughly mastered if programmers are ever to do professional-quality work. This book cuts through the technical details to reveal what is commonly understood to be absolutely essential. In one slim volume, Steve Dewhurst distills what he and other experienced managers, trainers, and authors have found to be the most critical knowledge required for successful C++ programming. It doesnt matter where or when you first learned C++. Before you take another step, use this book as your guide to make sure youve got it right! This book is for you if Youre no dummy, and you need to get quickly up to speed in intermediate to advanced C++ Youve had some experience in C++ programming, but reading intermediate and advanced C++ books is slow-going Youve had an introductory C++ course, but youve found that you still cant follow your colleagues when theyre describing their C++ designs and code Youre an experienced C or Java programmer, but you dont yet have the experience to develop nuanced C++ code and designs Youre a C++ expert, and youre looking for an alternative to answering the same questions from your less-experienced colleagues over and over again C++ Common Knowledge covers essential but commonly misunderstood topics in C++ programming and design while filtering out needless complexity in the discussion of each topic. What remains is a clear distillation of the essentials required for production C++ programming, presented in the authors trademark incisive, engaging style.

Stephen C. Dewhurst: author's other books


Who wrote C++ Common Knowledge: Essential Intermediate Programming? Find out the surname, the name of the author of the book and a list of all author's works by series.

C++ Common Knowledge: Essential Intermediate Programming — read online for free the complete book (whole text) full work

Below is the text of the book, divided by pages. System saving the place of the last page read, allows you to conveniently read the book "C++ Common Knowledge: Essential Intermediate Programming" online for free, without having to search again every time where you left off. Put a bookmark, and you can go to the page where you finished reading at any time.

Light

Font size:

Reset

Interval:

Bookmark:

Make
Index
[]Abstract data type. [See ]Accessor functions. [See ]Address arithmetic. [See ]]Array index calculation. [See ]Arraysas function arguments. [See ]]Audit trails, resource control. [See ] auto_ptr
Index
[]Base classes
Bibliography

Alexandrescu, Andrei. Modern C++ Design . Addison-Wesley, 2001.

Dewhurst, Stephen C. C++ Gotchas . Addison-Wesley, 2003.

Gamma, Erich, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns . Addison-Wesley, 1995.

Josuttis, Nicolai M. The C++ Standard Library . Addison-Wesley, 1999.

Meyers, Scott. Effective C++ , Third Edition. Addison-Wesley, 2005.

Meyers, Scott. Effective STL . Addison-Wesley, 2001.

Meyers, Scott. More Effective C++ . Addison-Wesley, 1996.

Sutter, Herb. Exceptional C++ . Addison-Wesley, 2000.

Sutter, Herb. More Exceptional C++ . Addison-Wesley, 2002.

Sutter, Herb. Exceptional C++Style . Addison-Wesley, 2005.

Sutter, Herb, and Andrei Alexandrescu. C++ Coding Standards . Addison-Wesley, 2005.

Vandevoorde, David, and Nicolai M. Josuttis. C++ Templates . Addison-Wesley, 2003.

Wilson, Matthew. Imperfect C++ . Addison-Wesley, 2005.

Index
[]]]Cast operatorsnew styleClass layoutClass objects. [See ]Classes]]Communication, with other programmersComplete specialization. [See ]Const member functionsConstructionConstructorsContravariance]]
Item 1. Data Abstraction

A "type" is a set of operations, and an "abstract data type" is a set of operations with an implementation. When we identify objects in a problem domain, the first question we should ask about them is, "What can I do with this object?" not "How is this object implemented?" Therefore, if a natural description of a problem involves employees, contracts, and payroll records, then the programming language used to solve the problem should contain Employee , Contract , and PayrollRecord types. This allows an efficient, two-way translation between the problem domain and the solution domain, and software written this way has less "translation noise" and is simpler and more correct.

In a general-purpose programming language like C++, we don't have application-specific types like Employee . Instead, we have something better: the language facilities to create sophisticated abstract data types. The purpose of an abstract data type is, essentially, to extend the programming language into a particular problem domain.

No universally accepted procedure exists for designing abstract data types in C++. This aspect of programming still has its share of inspiration and artistry, but most successful approaches follow a set of similar steps.

Choose a descriptive name for the type. If you have trouble choosing a name for the type, you don't know enough about what you want to implement. Go think some more. An abstract data type should represent a single, well-defined concept, and the name for that concept should be obvious.
List the operations that the type can perform. An abstract data type is defined by what you can do with it. Remember initialization (constructors), cleanup (destructor), copying (copy operations), and conversions (nonexplicit single-argument constructors and conversion operators). Never, ever, simply provide a bunch of get/set operations on the data members of the implementation. That's not data abstraction; that's laziness and lack of imagination.
Design an interface for the type. The type should be, as Scott Meyers tells us, "easy to use correctly and hard to use incorrectly." An abstract data type extends the language; do proper language design. Put yourself in the place of the user of your type, and write some code with your interface. Proper interface design is as much a question of psychology and empathy as technical prowess.
Implement the type. Don't let the implementation affect the interface of the type. Implement the contract promised by the type's interface. Remember that the implementations of most abstract data types will change much more frequently than their interfaces.
Item 2. Polymorphism

The topic of polymorphism is given mystical status in some programming texts and is ignored in others, but it's a simple, useful concept that the C++ language supports. According to the standard, a "polymorphic type" is a class type that has a virtual function. From the design perspective, a "polymorphic object" is an object with more than one type, and a "polymorphic base class" is a base class that is designed for use by polymorphic objects.

Consider a type of financial option, AmOption , as shown in .

Figure 1. Polymorphic leveraging in a financial option hierarchy. An American option has four types.

An AmOption object has four types It is simultaneously an AmOption an Option - photo 1

An AmOption object has four types: It is simultaneously an AmOption , an Option , a Deal , and a Priceable . Because a type is a set of operations (see , 93]).

Of course, there's a catch. For this leveraging to work, a properly designed polymorphic class must be substitutable for each of its base classes. In other words, if generic code written to the Option interface gets an AmOption object, that object had better behave like an Option!

This is not to say that an AmOption should behave identically to an Option . (For one thing, it may be the case that many of the Option base class's operations are pure virtual functions with no implementation.) Rather, it's profitable to think of a polymorphic base class like Option as a contract. The base class makes certain promises to users of its interface; these include firm syntactic promises that certain member functions can be called with certain types of arguments and less easily verifiable semantic promises concerning what will actually occur when a particular member function is called. Concrete derived classes like AmOption and EurOption are subcontractors that implement the contract Option has established with its clients, as shown in .

Figure 2. A polymorphic contractor and its subcontractors. The Option base class specifies a contract.
For example if Option has a pure virtual price member function that gives the - photo 2

For example, if Option has a pure virtual price member function that gives the present value of the Option , both AmOption and EurOption must implement this function. It obviously won't implement identical behavior for these two types of Option , but it should calculate and return a price, not make a telephone call or print a file.

On the other hand, if I were to call the price function of two different interfaces to the same object, I'd better get the same result. Essentially, either call should bind to the same function:

AmOption *d = new AmOption;Option *b = d;d->price(); // if this calls AmOption::price...b->price(); // ...so should this!

This makes sense. (It's surprising how much of advanced object-oriented programming is basic common sense surrounded by impenetrable syntax.) If I were to ask you, "What's the present value of that American option?" I'd expect to receive the same answer if I'd phrased my question as, "What's the present value of that option?"

The same reasoning applies, of course, to an object's nonvirtual functions:

b->update(); // if this calls Option::update...d->update(); // ...so should this!

The contract provided by the base class is what allows the "polymorphic" code written to the base class interface to work with specific options while promoting healthful ignorance of their existence. In other words, the polymorphic code may be manipulating AmOption and EurOption objects, but as far as it's concerned they're all just Option s. Various concrete Option types can be added and removed without affecting the generic code that is aware only of the Option base class. If an AsianOption shows up at some point, the polymorphic code that knows only about Option s will be able to manipulate it in blissful ignorance of its specific type, and if it should later disappear, it won't be missed.

Next page
Light

Font size:

Reset

Interval:

Bookmark:

Make

Similar books «C++ Common Knowledge: Essential Intermediate Programming»

Look at similar books to C++ Common Knowledge: Essential Intermediate Programming. We have selected literature similar in name and meaning in the hope of providing readers with more options to find new, interesting, not yet read works.


Reviews about «C++ Common Knowledge: Essential Intermediate Programming»

Discussion, reviews of the book C++ Common Knowledge: Essential Intermediate Programming and just readers' own opinions. Leave your comments, write what you think about the work, its meaning or the main characters. Specify what exactly you liked and what you didn't like, and why you think so.