Ada Reference Manual (Ada 2022 Draft 34)Legal Information
Contents   Index   References   Search   Previous   Next 

1.3.1 Types, Objects, and their Properties

1/5
abstract type

a tagged type intended for use as an ancestor of other types, but which is not allowed to have objects of its own
2/5
access type

a type that has values that designate aliased objects
3/5
Note: Access types correspond to “pointer types” or “reference types” in some other languages.
4/5
accessibility level

a representation of the lifetime of an entity in terms of the level of dynamic nesting within which the entity is known to exist
5/5
aliased view

a view of an object that can be designated by an access value
6/5
Note: Objects allocated by allocators are aliased. Objects can also be explicitly declared as aliased with the reserved word aliased. The Access attribute can be used to create an access value designating an aliased object.
7/5
ancestor of a type

the type itself or, in the case of a type derived from other types, its parent type or one of its progenitor types or one of their ancestors
8/5
Note: Ancestor and descendant are inverse relationships.
9/5
array type

a composite type whose components are all of the same type
10/5
aspect

a specifiable property of an entity
11/5
Note: An aspect can be specified by an aspect_specification on the declaration of the entity. Some aspects can be queried via attributes.
12/5
attribute

a characteristic or property of an entity that can be queried, and in some cases specified
13/5
category of types

a set of types with one or more common properties, such as primitive operations
14/5
Note: A category of types that is closed under derivation is also known as a class.
15/5
character type

an enumeration type whose values include characters
16/5
class of types

a set of types that is closed under derivation, which means that if a given type is in the class, then all types derived from that type are also in the class
17/5
Note: The set of types of a class share common properties, such as their primitive operations.
18/5
composite type

a type with components, such as an array or record
19/5
controlled type

a type that supports user-defined assignment and finalization
20/5
Note: Objects are always finalized before being destroyed.
21/5
default initial condition

a property that holds for every default-initialized object of a given type
22/5
derived type

a type defined in terms of a parent type and zero or more progenitor types given in a derived type definition
23/5
Note 1: A derived type inherits properties such as components and primitive operations from its parent and progenitors.
24/5
Note 2: A type together with the types derived from it (directly or indirectly) form a derivation class.
25/5
descendant of a type

the type itself or a type derived (directly or indirectly) from it
26/5
Note: Descendant and ancestor are inverse relationships.
27/5
discrete type

a type that is either an integer type or an enumeration type
28/5
discriminant

a parameter for a composite type, which can control, for example, the bounds of a component that is an array
29/5
Note: A discriminant for a task type can be used to pass data to a task of the type upon its creation.
30/5
elementary type

a type that does not have components
31/5
enumeration type

a type defined by an enumeration of its values, which can be denoted by identifiers or character literals
32/5
incomplete type

a view of a type that reveals only a few of its properties
33/5
Note 1: The remaining properties are provided by the full view given elsewhere.
34/5
Note 2: Incomplete types can be used for defining recursive data structures.
35/5
indexable container type

a type that has user-defined behavior for indexing, via the Constant_Indexing or Variable_Indexing aspects
36/5
integer type

a type that represents signed or modular integers
37/5
Note: A signed integer type has a base range that includes both positive and negative numbers, and has operations that can raise an exception when the result is outside the base range. A modular type has a base range whose lower bound is zero, and has operations with “wraparound” semantics. Modular types subsume what are called “unsigned types” in some other languages.
38/5
interface type

an abstract tagged type that has no components or concrete operations except possibly null procedures
39/5
Note: Interface types are used for composing other interfaces and tagged types and thereby provide multiple inheritance. Only an interface type can be used as a progenitor of another type.
40/5
invariant

an assertion that is expected to be True for all objects of a given private type when viewed from outside the defining package
41/5
iterable container type

a type that has user-defined behavior for iteration, via the Default_Iterator and Iterator_Element aspects
42/5
limited type

a type for which copying (such as in an assignment_statement) is not allowed
43/5
Note: A nonlimited type is a type for which copying is allowed.
44/5
needed component

a component of a record type or record extension that is required to have its value specified within a given aggregate
45/5
nominal subtype of a view of an object

the subtype specified when the view is defined
46/5
object

an entity that contains a value, and is either a constant or a variable
47/5
Note: An object is created by an object_declaration or by an allocator. A formal parameter is (a view of) an object. A subcomponent of an object is an object.
48/5
operational aspect

an aspect that indicates a logical property of an entity, such as the precondition of a subprogram, or the procedure used to write a given type of object to a stream
49/5
parent of a derived type

the first ancestor type given in the definition of the derived type
50/5
Note: The parent can be almost any kind of type, including an interface type.
51/5
primitive operations of a type

the operations (such as subprograms) declared together with the type declarations
52/5
Note: Primitive operations are inherited by other types in the same derivation class of types.
53/5
private extension

a type that extends another type, with the additional properties hidden from its clients
54/5
private type

a view of a type that reveals only some of its properties
55/5
Note: The remaining properties are provided by the full view given elsewhere. Private types can be used for defining abstractions that hide unnecessary details from their clients.
56/5
progenitor of a derived type

one of the types given in the definition of the derived type other than the first
57/5
Note: A progenitor is always an interface type. Interfaces, tasks, and protected types can also have progenitors.
58/5
protected type

a composite type whose components are accessible only through one of its protected operations, which synchronize concurrent access by multiple tasks
59/5
real type

a type that has values that are approximations of the real numbers
60/5
Note: Floating point and fixed point types are real types.
61/5
record extension

a type that extends another type optionally with additional components
62/5
record type

a composite type consisting of zero or more named components, possibly of different types
63/5
reference type

a type that has user-defined behavior for “.all”, defined by the Implicit_Dereference aspect
64/5
representation aspect

an aspect that indicates how an entity is mapped onto the underlying hardware, for example the size or alignment of an object
65/5
scalar type

either a discrete type or a real type
66/5
stable property

a characteristic associated with objects of a given type that is preserved by many of the primitive operations of the type
67/5
storage pool object

an object associated with one or more access types from which the storage for objects created by allocators of the access type(s) is obtained
68/5
Note: Some storage pools can be partitioned into subpools in order to support finer-grained storage management.
69/5
stream

a sequence of elements that can be used, along with the stream-oriented attributes, to support marshalling and unmarshalling of values of most types
70/5
subtype

a type together with optional constraints, null exclusions, and predicates, which constrain the values of the type to the subset that satisfies the implied conditions
71/5
synchronized entity

an entity that can be safely operated on by multiple tasks concurrently
72/5
Note: A synchronized interface can be an ancestor of a task or a protected type. Such a task or protected type is called a synchronized tagged type.
73/5
tagged type

a type whose objects each have a run-time type tag, which indicates the specific type for which the object was originally created
74/5
Note: Tagged types can be extended with additional components.
75/5
task type

a composite type used to represent active entities which execute concurrently and that can communicate via queued task entries
76/5
Note: The top-level task of a partition is called the environment task.
77/5
type
a defining characteristic of each object and expression of the language, with an associated set of values, and a set of primitive operations that implement the fundamental aspects of its semantics
78/5
Note: Types are grouped into categories. Most language-defined categories of types are also classes of types.
79/5
type invariant

see invariant
80/5
view of an entity

a representation of an entity that reveals some or all of the properties of the entity
81/5
Note: A single entity can have multiple views.

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe