-
An object is a software “bundle,” usually thought of as being a class or structure consisting of a set of variables which defines the states the object can exist in, and a set of functions that defines the behavior of the object.
Object
-
A single version of an object/class.
Instance
-
The process of creating a new version of an object/class.
Instantiation
-
The header file, one of the two files needed to define a class. Contains the definition of the class, using a syntax similar to that for defining a data structure.
Interface File
-
The second file needed to define a class. It contains all of the functions that are members of that class.
Implementation File
-
In C++ classes you can assign to the variables and functions an access scope using: public, private, and protected.
Member Access Specifiers
-
A function that is not a part of a class, but has been given access to the private members (variables and functions) of the class.
Friend Function
-
A mechanism by which one class acquires the properties (member variables and member functions) of another class.
Inheritance
-
A class can have more than one superclass.
Multiple Inheritance**
-
The ability to use the same named functions in sub-classes of a parent class to perform different actions.
Polymorphism**
-
The source code for an object can be written and maintained independently of the source code for other objects.
Modularity
-
By interacting only with an object's methods, the details of its internal implementation remain hidden from the outside world.
Information Hiding**
-
If an object already exists (perhaps written by another software developer), you can use that object in your program.
Code re-use
-
If a particular object turns out to be problematic, you can simply remove it from your application and plug in a different object as its replacement.
Pluggability and debugging ease
-
A block of code in an application which can be written, compiled, and maintained independently of the rest of the code in the application.
Module**
-
Reducing the interdependency of objects in an application to make the application more flexible and to enable modifying an object without affecting other objects in the application.
Loose Coupling
-
When an object needs to perform a certain task, but instead of doing that task directly it "asks" another object to handle the task, or sometimes just part of the task.
Delegation
-
Hiding the internal state of an object and requiring all interaction to be performed through an objects methods. (Note: the answer is not Data Hiding)
Encapsulation**
-
An expression of desired behavior for a software system. It is specific thing your system has to do to work correctly.
Requirement**
-
Determining a set of components (objects, classes, etc.) and interfaces between those components in a software system that will satisfy the requirements and solve the problem.
Object Oriented Design*
-
What are the three places in memory where variables and instances of structs and classes can be allocated?
Stack, Heap, and Microprocessor
-
Refers to where a variable can be accessed in a program.
Scope
-
A specifier used to specify access to a global variable in one source file when the actual global variable is defined in another source file.
Extern
-
A variable defined this way will be allocated on the heap.
Static
-
Identifying, at run time, the sub-class type of an object given only a parent class pointer or reference to the object.
RTTI**
-
What are virtual functions? Why is it best to make a function in a parent class virtual so that sub-classes have to implement it, i.e. explain early vs. late binding.
- Early / Static / Compile time binding
- Late / Dynamic / Run time binding
-
A section of code (usually one or more functions) in a program that is running independently of the rest of the program. Threading is a type of multi-tasking, and there are two types: Process based and Thread based.
Threads
-
If a function in a parent class is labeled this, all subclasses are forced to override and implement their own version of that function.
Virtual
-
A system that allows a software designer to graphically layout and model a software application.
UML
-
The process of creating the design by starting at a high level of abstraction and iteratively working down to more detail.
Step-Wise Refinement
-
The process of studying and analyzing what the customer wants in order to develop a stated list of requirements.
Requirement Analysis
-
Flags if a resource is being used.
Semaphores
-
Works like a token in a token ring network.
Mutexes
-
A way for threads to communicate between themselves.
Event objects
-
Another way for threads to communicate or time events.
Waitable timers
-
Provides synchronization similar to mutex.
Critical Sections
|
|