C++ Review and Best Practices
Because C++ is arguably the most commonly used language in the game
industry, we will focus primarily on C++ in this book. However, most of
the concepts we’ll cover apply equally well to any object-oriented programming language. Certainly a great many other languages are used in the game
industry—imperative languages like C; object-oriented languages like C# and
Java; scripting languages like Python, Lua and Perl; functional languages like
Lisp, Scheme and F#, and the list goes on. I highly recommend that every
programmer learn at least two high-level languages (the more the merrier), as
97
98 3. Fundamentals of Software Engineering for Games
well as learning at least some assembly language programming. Every new language that you learn further expands your horizons and allows you to think in
a more profound and proficient way about programming overall. That being
said, let’s turn our attention now to object-oriented programming concepts in
general, and C++ in particular.
3.1.1 Brief Review of Object-Oriented Programming
Much of what we’ll discuss in this book assumes you have a solid understanding of the principles of object-oriented design. If you’re a bit rusty, the
following section should serve as a pleasant and quick review. If you have
no idea what I’m talking about in this section, I recommend you pick up a
book or two on object-oriented programming (e.g., [5]) and C++ in particular
(e.g., [41] and [31]) before continuing.
3.1.1.1 Classes and Objects
A class is a collection of attributes (data) and behaviors (code) that together
form a useful, meaningful whole. A class is a specification describing how
individual instances of the class, known as objects, should be constructed. For
example, your pet Rover is an instance of the class “dog.” Thus, there is a
one-to-many relationship between a class and its instances.
3.1.1.2 Encapsulation
Encapsulation means that an object presents only a limited interface to the outside world; the object’s internal state and implementation details are kept hidden. Encapsulation simplifies life for the user of the class, because he or she
need only understand the class’ limited interface, not the potentially intricate
details of its implementation. It also allows the programmer who wrote the
class to ensure that its instances are always in a logically consistent state.
3.1.1.3 Inheritance
Inheritance allows new classes to be defined as extensions to preexisting classes.
The new class modifies or extends the data, interface and/or behavior of the
existing class. If class Child extends class Parent, we say that Child inherits from or is derived from Parent. In this relationship, the class Parent is
known as the base class or superclass, and the class Child is the derived class
or subclass. Clearly, inheritance leads to hierarchical (tree-structured) relationships between classes.
0 Comments
Please Comment for any further query :