CSE2305
  Glossary
	
  - Abstract Base Class
- 
    A class that specifies only an interface¤, 
    not an implementation¤. 
    It is assumed the implementation will be provided in classes that inherit 
    from the absrtract base class. In C++, abstract base classes define only pure 
    virtual functions¤ 
    in their public interface.
 
 
- Abstraction
-  The theoretical removal of non-significant differences between objects 
    (for example: identity, state¤, 
    scope, etc) in order to classify them according to shared features. See also 
    "classification¤". 
     
   
- Accessibility
-  Whether a given member¤ 
    of a class¤ can be referred 
    to from a certain point in the program. For example, private members¤ 
    of a given class¤ are accessible 
    only by member¤ functions 
    and friend¤ functions 
    of the same class¤. 
     
   
- Accessor Function
-  A public member¤ function¤ 
    which provides the means to modify or retrieve the value of one or more non-public 
    data members¤¤ 
    of a class¤ (often a container 
    class¤¤). 
     
   
- Aggregation
-  The collecting together of objects or types to create more complex objects 
    or types. 
     
   
- Ancestor class
-  A class¤ from which 
    the class¤ under discussion 
    (directly or indirectly). See also: "parent class¤¤", 
    "child class¤¤", 
    "descendant class¤¤" 
     
   
- Base class
-  An ancestor class¤¤ 
    of the class¤ under discussion. 
     
   
- Behaviour
-  The set of allowed actions which may be performed on objects of a specific 
    class¤. In object-oriented 
    languages this corresponds to the function members¤¤ 
    specified for a class¤ 
    (and accesible via instances¤ 
    of that class¤). 
     
   
- Child class
-  A class¤ which inherits 
    the class¤ under discussion 
    inherits directly. See also: "parent class¤¤", 
    "ancestor class¤¤", 
    "descendant class¤¤". 
     
   
- Class
-  An object-oriented typing¤ 
    construct which specifies the common state¤ 
    (data members¤¤) 
    and behaviour¤ (function 
    members¤¤) 
    shared by all objects of the corresponding type. 
     
   
- Classification
-  Grouping objects or types based on their significant commonalities. Separating 
    objects or types based on their significant differences. See also "abstraction¤". 
     
   
- Const member function
-  A class¤ member¤ 
    function¤ with 
    a constkeyword after its parameter list. The keyword 
    indicates that the member¤ 
    function¤ is 
    "safe" to call on constant objects. See also: "mutable" 
   
- Constructor
-  A special member¤ function¤ 
    which is automatically called whenever an instance¤ 
    of a class¤ is created. 
     
   
- Container class
-  A class¤ (or more commonly 
    a templated class¤) used 
    to store a collection of values in some useful data structure. 
     
   
- Copy constructor
-  A class¤ constructor¤ 
    which takes a single argument which is a reference¤ 
    to another object of the same class¤. 
    The copy constructor¤¤ 
    is invoked whenever a class¤ 
    object is to be copied (for example, when it is passed to or returned from 
    a function by copy). 
     
   
- Data member
-  A storage location (and associated reference¤) 
    within an object. Used to store object state¤. 
     
   
- Decorator
-  See "mixin¤" 
     
   
- Derived class
-  A descendant class¤¤ 
    of the class¤ under discussion. 
     
   
- Descendant class
-  A class¤ which inherits 
    the class¤ under discussion 
    (directly or indirectly). See also: "parent class¤¤", 
    "ancestor class¤¤", 
    "child class¤¤". 
     
   
- Destructor
-  A special member¤ function¤ 
    which is automatically called whenever an instance¤ 
    of a class¤ ceases to exist. 
     
   
- Dispatch
-  The selection of which function to invoke in response to a specific function 
    call within a program. 
     
   
- Dynamic dispatch
-  A form of dispatch¤ 
    where the selection of which function to call based on dynamic typing¤¤. 
    Calls to dynamically-dispatched functions cannot be "hard-coded" into 
    an executable by the compiler and must be resolved during execution. See also: 
    "virtual function¤". 
     
   
- Dynamic typing
-  The situation where the type of an object or expression cannot be fully 
    determined before the program containing it is executed, and must therefore 
    be resolved during execution. Compare with: "static typing¤¤". 
     
   
- Early binding
-  See "static typing¤¤" 
     
   
- Encapsulation
-  The division of a system into non-interacting components, connected by 
    pre-specified interfaces¤ 
    and the enforcement of such divisions. The "hiding" of state¤ 
    and/or behaviour¤ on 
    a "need-to-know" basis. In object-oriented languages the primary means 
    of encapsulation¤ 
    is normally within a private section of a class¤. 
     
   
- Exception
-  In C++ an exception¤ 
    is an object which is created in response to an unusual condition (typically 
    an error condition), and used to pass information back to some (higher) level 
    of the code, where the condition is handled. 
     
   
- Friend
-  A function which is not a member¤ 
    of a class¤, but which 
    the class¤ has granted 
    full access rights. In other words, a non-class¤-member¤ 
    which can nevertheless access the non-public members¤ 
    of a specific class¤. 
     
   
- Function member
-  A function associated with a specific class¤. 
    Used to specify object behaviour¤. 
     
   
- Generic
-  Defined independently from a particular class¤. 
    Typically used when referring to class¤ 
    or function templates. Also used to refer to pointer variables of type void*, 
    which can be used to store pointers of any type. 
   
- Genericity
-  A form of abstraction¤ 
    in which functional (semantic) differences are ignored, so as to abstract 
    on structural (syntactic) similarities. 
     
   
- Hierarchy
-  The use of abstraction¤ 
    to create increasing more general categories, producing a tree in which higher 
    nodes abstract lower nodes. 
     
   
- Implementation
-  The non-public "internals" of a class¤, 
    which determine how a class¤ 
    provides the functionality specified by its interface¤. 
     
   
- Initializer list
-  As part of the specification of a class¤ 
    constructor¤, a list 
    of explicit constructor¤ 
    calls for the class¤'s 
    parents and data members¤¤. 
     
   
- Instance
-  An object of a given type. A specialization¤ 
    of a given template. 
     
   
- Interface
-  The publicly assessible components of a class¤, 
    which determine what may be done with a class¤. 
     
   
- Iterators
-  Objects which act like pointers into a specific type of container class¤¤. 
    They are specifically designed to simplify the task of sequentially stepping 
    through each element of a container, and are widely used in the STL¤. 
     
   
- Late binding
-  See "dynamic typing¤¤" 
     
   
- Leak
-  To allocate dynamic memory during a program's execution and then fail to 
    deallocate it before losing access to it. Leaking causes a program to grow 
    in size as it executes, since the dynamic memory manager does not know that 
    it could "reuse" the (now unused) memory which has been allowed to 
    leak¤. 
     
   
- Member
-  A property of a class¤. 
    Typically either a data member¤¤ 
    (state¤) or a function 
    member¤¤ 
    (behaviour¤). 
     
   
- Member function
-  See "function member¤¤" 
     
   
- Mixin
-  A class¤ representing 
    a specific property or behaviour¤, 
    which can be added to existing classes¤ 
    by means of multiple inheritance¤. 
    Mixin¤ classes¤ 
    are typically named with adjectives (for example, SelfLinking,Persistent,Clonable, etc.) denoting 
    the property they confer. 
   
- Modularity
-  The division of a system into "loosely-coupled" components, connected 
    by pre-specified interfaces¤. 
    See also "encapsulation¤" 
     
   
- Multiple inheritance
-  Where a class¤ is simulaneously 
    derived from two (or more) parent classes¤¤, 
    and inherits properties from each. 
     
   
- Mutable 
-  A keyword which may be placed in front of a class¤ 
    data member¤¤ 
    declaration. The presence of the keyword indicates that the data member¤¤ 
    may be "safely" changed within a const member¤ 
    function¤¤. 
     
   
- Object-orientation
-  An approach to systems design and implementation¤ 
    in which the problem is decomposed into interacting encapsulation¤ 
    of state¤ (objects) with 
    specific associated behaviours¤ 
    (methods). 
     
   
- Operator overloading
-  Adding new behaviour¤ 
    to a standard C++ operator for operations involving objects of a user-defined 
    class¤. 
     
   
- Overloaded function
-  A set of functions which share the same name (but which have distinct signatures¤). 
    Alternatively, an individual function which belongs to such a set. 
     
   
- Overloaded operator
-  See "operator overloading¤" 
     
   
- Parent class
-  A class¤ from which 
    the class¤ under discussion 
    inherits directly. See also: "ancestor class¤¤", 
    "child class¤¤", 
    "descendant class¤¤". 
     
   
- Persistence
-  The property of objects and types in some languages that they continue 
    to exist (in some form) beyond the boundaries of the program execution in 
    which they are originally created. See also: "temporal persistence¤¤", 
    "spatial persistence¤¤". 
     
   
- Polymorphism
-  A property of class¤ 
    hierarchies whereby the result of calling a specific virtual member¤ 
    function¤ of 
    an object depends on the actual (run-time) type of the object, rather than 
    on the (compile-time) type of the pointer or reference¤ 
    through which the call is initiated. 
     
   
- Private inheritance
-  A form of inheritance in which a child class¤¤ 
    inherits the properties of its parent class¤¤(es) 
    in such a way that those properties become private in the in the derived class¤¤ 
    (regardless of their accessibilities in the base class¤¤). 
     
   
- Public inheritance
-  A form of inheritance in which a child class¤¤ 
    inherits the properties of its parent class¤¤(es) 
    in such a way that those properties retain their base-class¤ 
    accessibilities in the derived class¤¤ 
    as well. 
     
   
- Reference
-  A name by which an object or function may be referred to. 
     
   
- STL
-  The usual abbreviation for the C++ Standard Template Library¤. 
     
   
- Signature
-  The combination of the name of a function, the types and order of its parameters, 
    and whether or not it is a const member¤ 
    function¤. The 
    signature¤ of a function 
    in C++ must be unique. 
     
   
- Software Engineering
-  A collection of theories, techniques, and tools which enable fallible humans 
    to design, construct and maintain large software products in a reliable and 
    cost effective manner. 
     
   
- Spatial Persistence
-  A form of persistence¤ 
    in which objects and types are available outside the address space in which 
    they were originally created. 
     
   
- Specialization
-  ...of a template. A class¤ 
    or function defined by providing an appropriate set of template arguments 
    to a template. For example, class¤ 
    map<Face,Name>is a specialization¤ 
    of the STL¤ template class¤map. 
   
- Standard Library
-  A collection of standardized, general programming components for C++ offering
    a high level of abstraction and portability. The library includes: string
    types, a large variety of data structures (queues, lists, dynamic arrays,
    maps, etc.), algorithms (sorting, searching, etc.), numeric classes, Input/Output
    (I/O) and internationalisation support. The C++ Standard Library is a superset
    of the Standard Template Library¤.
    The C++ Standard Library is part of the ANSI/ISO C++ Standard.
     
   
- Standard Template Library
-  A collection of generic¤ 
     algorithms and data structures 
     provided by all standard-conforming C++ implementations¤. 
     
   
- State
-  The data values that a specific class¤ 
    may store. The data values that a specific object currently stores. In object-oriented 
    languages this corresponds to the data members¤¤ 
    specified for a class¤ 
    (and present in instances¤ 
    of that class¤). 
     
   
- Static binding
-  See "static typing¤¤" 
     
   
- Static dispatch
-  A form of dispatch¤ 
    where the selection of which function to call based only on static typing¤¤. 
    Calls to statically-dispatched functions can be "hard-coded" into 
    an executable by the compiler. 
     
   
- Static typing
-  The situation where the type of an object or expression is fully determined 
    before the program containing it is executed. Compare with: "dynamic typing¤¤". 
     
   
- Streaming
-  The conversion of an object or type to or from a portable, storable representation 
    (typically ASCII text). 
     
   
- Strong typing
-  The strict enforcement of type rules with no exceptions¤. 
    Compare with: "weak typing¤¤". 
     
   
- Temporal Persistence
-  A form of persistence¤ 
    in which objects and types are available after the end of the program execution 
    in which they were originally created. 
     
   
- Typing
-  The enforcement of class¤-based 
    distinctions. 
 
 
-  
  
- UML (Unified Modelling Language)
-  A mainly graphical notation system for Object-Oriented¤ 
    analysis and design. It is the unification of the methods of Booch, Rumbaugh 
    (OMT), and Jacobson. 
     
   
-  
  
- Utility function
-  A (usually private) member¤ 
    function of a class¤ which 
    implements some common functionality required by the class¤ 
    public member¤ functions. 
    The use of utility functions¤ 
    improves modularity¤ 
    (and therefore maintainability) by eliminating repeated sequences of code. 
    To avoid loss of run-time performance, utility functions¤ 
    are often declared inline. 
   
- Virtual destructor
-  A class¤ destructor 
    which has also been declared a virtual function¤. 
    Virtual destructors¤¤ 
    are often required to ensure that polymorphic calls to delete(that it, through a base-class¤ 
    pointer) invoke the correct (derived-class¤) 
    destructor¤ first. 
   
- Virtual function
-  A class¤ member¤ 
    function¤ which 
    may be overridden in descendant classes¤¤. 
    The principle mechanism for polymorphism¤ 
    in C++. 
     
   
- Weak typing
-  The strict enforcement of type rules but with well-defined exceptions¤ 
    or an explicit type-violation mechanism. Compare with: "strong typing¤¤".
     
 
  This material is part of the CSE2305 
  - Object-Oriented Software Engineering course.
  Copyright © Jon McCormack, 2005. All rights reserved. 
 Last Modified: 
  July 11, 2005