Friday, August 1, 2008

Core C++: A Software Engineering Approach

Core C++

Core C++: A Software Engineering Approach

Aimed at the Visual C++ newcomer, Core C++: A Software Engineering Approach provides a rich and sometimes densely packed tour of the language, with plenty of advice on the best ways to use this powerful programming language effectively. It's full to the brim with useful advice for creating and using classes effectively, and gaining an expert's understanding of the language.

The writing style and presentation of C++ in this book are outstanding. The explanations of key C++ concepts, from basic language features to class design to advanced C++ whistles and bells, are by turns colloquial, garrulous, and almost always enjoyable and understandable. While it's not uncommon for today's computer book to weigh in at over 1,000 pages, the raw word count here is quite exceptional. You're challenged repeatedly to think for yourself, and the intricacies of C++ are exposed thoroughly, from language features that are indispensable to what to avoid in your code.

You'll get pretty much everything that you need to learn C++ effectively, starting with basic keywords, data types, flow-control statements, and arrays. The guide to understanding object-oriented concepts, like coupling and cohesion, will help you design better classes. Even experienced programmers will appreciate the thorough coverage of memory-management techniques in C++ (including the five kinds of scopes for variables).

An important middle section provides a blueprint for the methods and functions that most C++ code should offer, including such methods as default and copy constructors, destructors, and overloaded assignment operators. (By following this idiom, you'll be able to write reusable C++ classes.) The book also illustrates class design with basic UML notation, excels at presenting the details of how to overload C++ operators to provide easier syntax for custom C++ classes, and provides excellent explanations of the pros and cons of composition and inheritance for getting classes to work together. A look at more advanced C++ features, like templates and exception handling, wraps things up. Along the way, you get a taste of UML notation and a thorough introduction to some of the best practices for writing C++ code effectively.

Core C++ is certainly no quick read, and, if you're in a rush to learn quickly, there are plenty of more concise treatments that are available. But, if you're ambitious and want to master the intricacies of C++ class design with some of its underlying design principles, this is an original and thorough package that offers unique strengths. --Richard Dragan

Topics covered:

# The software crisis
# Software project-management techniques
# Design-quality principles
# Introduction to the C++ language
# A minimum C++ application explained
# C++ data types
# Operators and flow control
# Arrays
# C/C++ structures
# Unions
# Enumerations and bit fields
# Memory-management techniques (including stack and heap allocation, dynamic allocation, avoiding memory leaks)
# File I/O with and without stream classes
# Basic C++ class design
# Parameter passing in C++ (options and best practices)
# Creating custom programmer-defined data types

# Cohesion
# Coupling
# Data encapsulation and information hiding
# Guidelines for C++ class design: constructors (default, conversion, and copy constructors), overloading the assignment operator, destructors
# In-depth guide to overloading C++ operators
# Introduction to UML class diagrams
# Aggregation and inheritance
# C++ class syntax
# Inheritance vs. composition
# Virtual methods and late binding
# Multiple inheritance
# Advanced operator overloading techniques
# C++ templates and exceptions
# Standard C++ type cast operators
# Review of material covered

Book Description
Teaches C++ by applying the best software engineering practices and methodologies to programming in C++. Shows the user how to build code that is more robust, easier to maintain and modify, and more valuable. Softcover. DLC: C++ (Computer programming language).

Download Link 1

Download Link 2