What is data abstraction?
The separation of a data type's logical properties from its implementation. (p66)
What is data encapsulation?
The separation of the representation of data from the applications that use the data at a logical level; a programming language feature that enforces information hiding. (p67)
What is an abstract data type (ADT)?
A data type whose properties (domain and operations) are specified independently of any particular implementation. (p68)
What is a data structure?
A collection of data elements whose organization is characterized by accessing operations that are used to store and retrieve the individual data elements; the implementation of the composite data members are in an abstract data type. (p68)
What is a composite data type?
A data type that allows a collection of values to be associated with an object of that type. (p74)
What is a class?
An unstructured type that encapsulates a fixed number of data components (data members) with the functions (member functions) that manipulate them; the predefined operations on an instance of a class are the whole assignment and component access. (p87)
What is a client?
Software that declares and manipulates objects (instances) of a particular class. (p87)
What is inheritance?
A mechanism used within a hierarchy of classes in which each descendant class inherits the properties (data and operations) of its ancestor class. (p93)
What is polymorphism?
The ability to determine which of several operations with the same name is appropriate; a combination of static and dynamic binding. (p94)
What is overloading?
Giving the same name to more than one function or using the same operator or symbol for more than one operation; usually associated with static binding. (p94)
What is static binding?
The compile-time determination of which implementation of an operation is appropriate. (p95)
What is dynamic binding?
The run-time determination of which implementation of an operation is appropriate. (p95)
What is composition?
(Also called containment) A mechanism by which an internal data member of one class is defined to be an object of another class type. (p95)
What is containment?
(Also called composition) A mechanism by which an internal data member of one class is defined to be an object of another class type. (p95)
What is Big-O notation?
(Also called order of magnitude) A notation that expresses computing time (complexity) as the term in a function that increases the most rapidly relative to the size of a problem. (p104)
What is order of magnitude?
(Also called Big-O notation) A notation that expresses computing time (complexity) as the term in a function that increases the most rapidly relative to the size of a problem. (p104)
What is the application level?
(Also called user level or problem domain). A way of modeling real-life data in a specific context. (p70)
What is the problem domain?
(Also called application level or problem domain). A way of modeling real-life data in a specific context. (p70)
What is the user level?
(Also called the application level or problem domain). A way of modeling real-life data in a specific context. (p70)
What is the logical level?
(Also called the abstract level) An abstract view of the data values (the domain) and the set of operations to manipulate them. (p70)
What is the abstract level?
(Also called the logical level) An abstract view of the data values (the domain) and the set of operations to manipulate them. (p70)
What is the implementation level?
A specific representation of the structure to hold the data items, and the coding of the operations in a programming language (if the operations are not already provided by the language). (p70)
What are constructors?
An operation that creates a new instance (object) of an abstract data type. It is almost always invoked at the language level by some sort of declaration. (p73)
What are transformers?
(Also called mutators) Operations that change the state of one or more of the data values, such as inserting an item into an object, deleting an item from an object, or making an object empty. (p73)
What are mutators?
(Also called transformers) Operations that change the state of one or more of the data values, such as inserting an item into an object, deleting an item from an object, or making an object empty. (p73)
What is a binary transformer?
An operation that takes two objects and merges them into a third object. (p73)
What are observers?
An operation that allows us to observe the state of one or more data values without changing them. (p73)
What is an accessor function?
(Also called selector function) A function that returns a copy of an item in the object. (p73)
What is a selector function?
(Also called accessor function) A function that returns a copy of an item in the object. (p73)
What are iterators?
An operation that allows us to process all components in a data structure sequentially. (p74)
What concerns the application or user level?
How the data type might be used to solve a problem. Why the operations do what they do. (v)
What concerns the implementation level?
Where the operations are actually coded. This level is concerned with the how questions. (v)
[Exam] What is the difference between the C++ types "struct" and "class"?
A C++ struct has only public variables and functions. A C++ class uses the principle of information hiding, allowing the programmer to choose between public and private variables and functions.
What is an unstructured composite type?
A collection of components that are not organized with respect to each other. (p74)
What is a structured data type?
An organized collection of components in which the organizatio ndetermines the method used to access individual data components (p74)
What is a record?
A composite data type made up of a finite collection of not necessarily homogeneous elements called members or fields. (p75)
What is an array descriptor?
(Also called a dope vector) A table that stores information about the array characteristics. (p82)
What is a dope vector?
(Also called an array descriptor) A table that stores information about the array characteristics. (p82)
What are the three basic ingredients in any object oriented language?
(3) Polymorphism (p93)
What is an inheritance hierarchy?
A hierarchy in which each concept inherits the properties of the concept immediately above it in the hierarchy. (p94)
[Exercise 2] Explain the programming goal "to protect our data abstraction through encapsulation."
When data abstraction is protected through encapsulation, the data user can deal with the data abstraction but cannot access its implementation, which is encapsulated. The data user accesses data that is encapsulated through a set of operations specified to create, access, and change the data. Data encapsulation is accomplished through a programming language feature.
[Exercise 5] What composite types are predetefined in the C++ language?
Array, struct, union, and classes.
[Exercise 8] Describe the component selectors for one-dimensional arrays at the logical level.
The syntax of the component selector is the array name followed by the index of the desired item: array-name[index-expression].
[Exercise 20] How is the client prevented from directly accessing the details of an instance of a class?
The members of a class are private unless specified as public. Client code cannot access private members.