Please scroll down.
| Item | Description |
| Abstract classes |
model properties or behaviour common to a set of classes, but do not correspond to any real-world things in the problem. |
| Abstraction |
A simplified description of a system that emphasises some of its details while suppressing others. Building good abstractions depends on classification schemes (identifying classes and extracting commonalities into more generalised classes), determining class granularities (how big the classes are in terms of what they model, what concepts they encompass), and defining interfaces for classes. Abstraction and encapsulation are complementary; abstraction focuses on the outside view of an object. It aids us in deciding the granularity of an object, its public interface, the visibility of the different attributes/relationships/methods, and its dynamic and static properties. |
| Accessor methods |
Also known as reader methods, used to read attribute values and relationships, possibly sending a message to do so. |
| Aggregation hierarchy. |
See aggregation relationships. E.g.:

|
| Aggregation Relationship |
A relationship between two objects where one object is part of another object, i.e. one object contains another. The existence of the contained object depends on the existence of the containing object. E.g. bank account objects cannot exist without being related to a bank object.

Nested aggregation relationships form an aggregation hierarchy. |
| Association Relationship |
A relationship where each class is entirely independent of the others. E.g. Account holder can own zero or more bank account objects. Also known as 'using' relationship.
|
| Attribute |
Attributes model properties of an object. They are defined in a class in much the same way as entity attributes are defined in the corresponding entity type. The different objects (instances) of this class have different values for the attributes. E.g. account number or balance are attributes of class Bank account. A single valued property of a simple type (e.g. integer, string, etc.) A difference between OO and ER is that certain concepts that would typically be modelled as attributes in an ER are often modelled as relationships in an object model.
Attributes are used to model properties of simple types such as integers, characters, etc. These are the pre-defined types that are available in most programming languages. |
| Attribute domain |
Used in extended versions of ER; e.g. date is often declared as a domain to which many attributes may be associated. The purpose in defining domains in ER is to be able to define a data format and any associated validation rules that can be reused across multiple attributes. "Date has its own unique format and validation rules that constitute valid dates.
In OO, a class can represent a domain. When an attribute belongs to a significant domain, it can be modelled instead as a relationship to the domain class. Any data format, validation rules, or even conversion routines can be defined within the domain class. The advantage of the OO approach is that it can be used for arbitrarily complex domains.
A word often used for domains in OO literature is 'type'. |
| BAC |
Business Area Class. |
| Behaviour |
What an object does. The behaviour of a class consists of the allowed operations on that class. |
| Behaviour model |
The behaviour model addresses the time-dependent behaviour of objects. It models object states, transitions between states and the events that cause these transitions. It also models the class methods that affect these state transitions.
Events - whether they are external or temporal - affect a class by causing it to move from one state to another. The set of object states and the allowed transitions between them are depicted in an OLCD for that class. The behaviour of each class is determined by how it responds to these events:
- How its attribute values change
- What it needs to do to process this event
Interactions between the classes and elementary processes in the business area are initially represented in a Class-to-Elementary Process association matrix. This provides a starting point for identifying the events that affect a class.
A behaviour model consists of:
Different problems require different levels of emphasis on modelling the behaviour of objects. There are problem domains where the behaviour of the classes is trivial. In such cases, behaviour modelling may be de-emphasised or even skipped for some of the classes. For example, batch systems often have complex processes, but simple behaviour, so their classes tend to have simple object life cycles. |
| Body |
A method has a specification and a body. The specification includes the name of the method and its input and output parameters, which are specified by name, type and order. The body is the fragment of process logic or code that implements the method. |
| Business area classes |
model the properties and behaviours of items of significance to the business area.
Relationships to business area classes are also used to model class properties. If the property is sufficiently complex, or if it has distinct and identifiable behaviour, it can be modelled as a separate business area class. An association is created between this class and the original class. As shown below, the regional HQ of a particular video store may be better modelled as a separate class than as an attribute in the video store class. One reason for modelling the property as a separate class is to allow the property to have its own life cycle and existence independent of the original class.

It is important to note the differences between business area classes and event manager classes:
- Business area classes are persistent, event manager classes are not.
-
Business area classes model real world concepts (tangible or intangible). They have a set of defined states and methods to manipulate their states. Event manager classes model an event. They usually have just one method whose only responsibility is to process the event. They have no state.
A business area class method exists to perform exactly one logical method on a business area class, independent of who invoked it and why it was invoked.
The object navigation diagram is a graphical way of specifying the business area class methods that an event manager class method can invoke. |
| Business Area Class methods: scope |
BAC methods:
-
should implement a single logical operation, and the rules of nature that correspond to that operation. This operation can be a state change, or an algorithm that transforms one set of values to another. A rule of nature is one that is not likely to change. For example, an 'order line item' cannot exist without a parent 'order'. The operation 'delete order', therefore, should be responsible for invoking methods to first delete all dependent 'order line item' instances. The EMC method, or any other method, should not be responsible for enforcing that rule. Business rules which are not rules of nature should be externalised from fundamental methods. These rules can be described by a class (e.g. storing the table of stock reorder quantities from different stock numbers) for run-time reference, or can be built into the EMC.
-
Should only contain logic used for all contexts. Each context corresponds to the invocation of the method, either directly or indirectly, in response to a particular business event.
-
should not contain logic associated with a user interface. User interfaces tend to be specific to a particular context.
-
should only have visibility to the classes directly related to it in the object model. In other words, class-to-class method invocations should traverse relationships in the object model one at a time. The principle of limiting the visibility of each method minimises the effect on methods of changes to the object model.
-
should not make decisions based solely upon incoming message data (which would imply a context-dependency), set default values (which are usually dependent upon context), or explicitly handle exceptions (which overly complicate the method and move it away from having a single purpose).
-
should recognise exceptions that are valid occurrences in the business area, and indicate in the completion status the fact that the exception was encountered.
See also 'Method Scope'
|
| BARA |
Business Area Requirements Analysis |
| C++ |
If a subclass can inherit something from more than one parent class, it has to explicitly decide the source. As C++ is strongly typed, this determination has to be made at compile time. |
| cardinality |
|
| CASE |
Computer Assisted Software Engineering. An OO CASE tool can be used to develop OO models for analysis or design, and generate code for an object-oriented application, typically in an OOPL. Usually works with windows and GUIs. |
| Child |
See 'inheritance' |
| Class |
A generic object. Describes data and behaviour. Similar to an entity Type(q.v.) in ER modelling, but includes behaviour. A sort of template that defines data and behaviour. There are different kinds of classes, including 'business area classes', 'abstract classes' and 'domain classes'. Classes are arranged into class inheritance hierarchies. |
| Class relationship |
|
| Class relationship diagram |
Represents the classes, their properties, and the relationships between them. Each class is represented by a rectangular box. Relationships between classes are represented by lines between the related classes. Annotations on these lines describe the names of the relationships and their cardinalities.

Note that a CRD is a simplified graphical representation of the semantics of the object model. Static rules that apply at object creation and deletion time are shown. Dynamic, time-dependent rules that govern how the classes behave cannot be shown in such a static representation. These are modelled as part of the class's behaviour or described as rules and constraints in the textual definition of the appropriate class. |
| Class-to-Elementary Process association matrix |
Interactions between the classes and elementary processes in the business area are initially represented in a Class-to-Elementary Process association matrix. This provides a starting point for identifying the events that affect a class. |
| Conceptual System Design |
The EMC is part of the purely logical specification of process and data. During Conceptual System Design (CSD), the models evolve from a purely logical specification to one that takes into account the physical characteristics and constraints of the implementation environment, organisation and technology. Events are mapped to physical triggers that evoke corresponding business transactions. Procedures are work-flow-based decompositions of a business transaction. The procedure manager class, as part of the CSD specification, is analogous to the Event Manager Class. Instead of handling the processing for a logical business event, the PMC handles the processing for a physical trigger. In effect, it specifies the logic for a procedure. The ONDs developed in BARA are used as the basis for developing procedure ONDs in CSD. |
| Constructor methods |
Constructor methods are invoked when an object is created., e.g. to initialise attributes and check for existence of related objects. |
| CRD |
Class/relationship diagram. |
| Crud |
Create, Read, Update and Delete operations. |
| CSD |
Conceptual Systems Design |
| Data |
What is known about an object, e.g. the amount of money in a bank a/c, the address, the interest rate. |
| Destructors |
Destructor methods are invoked when an object is deleted. |
| Domain classes |
Model complex class properties. Domain classes differ from regular business area classes in that they have no meaningful states. Validation logic is declaratively specified during the analysis phase and modelled as a method only during design. |
| Elementary Processes |
The process model specifies the elementary processes (EP) and the cause and effect relationship between business events and elementary processes. Elementary processes are specified in terms of the class methods discovered during behaviour modelling.
Processes typically access and manipulate data defined in multiple classes. For example, the work performed to accept a returned video tape may be modelled as an EP. This EP effects data defined in the 'rental agreement', 'video tape' and 'rental agreement line' classes.
An EP to class matrix can be used to illustrate the effects of EPs on classes.

A column represents the effects of a single EP on the classes. A row represents the effects of all EPs on a single class. The intersection represents the effect of an EP on a class, which is usually implemented as a class method. Therefore, a method name at a column/row intersection indicates the effect (s) that an EP has on that class. This effect typically is a transition in state. Note that the same method may appear in more than one cell in a row, indicating that the same method is called (i.e. the same state transition is effected) by more than one EP
The set of methods for a class (methods along a row) characterise the class's behaviour and are shown on the OLCD. The set of methods invoked by an EP (methods down a column) is the primary logic for the EP. The set of methods invoked, and the order in which they are invoked, are represented in the object navigation diagram.
However, the complete specification for an EP is more than just the set of class methods it invokes. It also needs to include event-specific or context-sensitive processing that needs to be modelled outside any of the individual business area classes. Global consistency checks, input validation, error handling, etc., are examples of this. Such logic is defined in the event manager class method.. |
| EMC |
Event Manager Class |
| Encapsulation |
The only access to an object's data is through its operations; the object is responsible for maintaining its own integrity. The internals of how an operation is accomplished is hidden from the user of the operation, allowing internal changes to be made without affecting the rest of the system.
Each class defines a public and a private part. The data and methods that reside in the public part of a class definition can be freely accessed from the outside. The private part, however, cannot. Hence, the public part of a class is usually referred to as its interface (or its specification) and its private part as its implementation. This clear distinction between the interface and its implementation is called encapsulation.
Encapsulation and abstraction are complementary. Encapsulation prevents the clients of that object from seeing the inside of that object, where its behaviour is implemented.

This allows us to change the implementation of a particular method or modify the representation of an object, we can do so without changing the interface. Encapsulation allows us to maintain fine-grained control over the visibility of a class's internals. |
| Entity instance |
An Object in ER. Unlike objects they are passive, and are acted upon by external processes. |
| Entity/relationship |
(not OO). An Entity-Relationship diagram shows the data entities (things of importance to a business area or system about which data needs to be stored) and how they are related to one another. |
| Entity type |
A class in ER, but only defines data whereas a class defines behaviour, too. Models only the information about the concept. |
| EP |
Elementary Processes |
| ER |
Entity/relationship modelling |
| Event |
Events to which an application must respond fall into 2 categories:
- business events, both external and temporal
- internal system events, such as those generated from an event-driven GUI.
It is important to distinguish between these event types. Business events are real world events. They initiate processing that involves a subset of the business area classes. System events, on the other hand, are lower-level events initiated, for example, during a user's interaction with the system. Moving a mouse on a screen or clicking on a button in a window generates system events. It is important during analysis to focus on business events, rather than system events. |
| Event manager classes |
The complete specification for an EP is more than just the set of class methods it invokes. It also needs to include event-specific or context-sensitive processing that needs to be modelled outside any of the individual business area classes. Global consistency checks, input validation, error handling, etc., are examples of this. Such logic is defined in the event manager class method.
A business event represents a message from outside the business area that must be recognised and processed by something within the business area. an event manager class encapsulates the processing required to process such an event. An event manager class is defined for each business event. Each event manager class has exactly one public method. This method receives the incoming event and is responsible for processing it (see Event manager class methods below).
Event manager class objects exist only for the duration of processing the event; they are not persistent. Each time a business event occurs, an object of the corresponding event manager class is instantiated. This object's only responsibility is to process the event. This involves validating the event data, invoking appropriate methods on business area classes, and responding to the source of the business event. Once this is done, the event manager class object is destroyed.
It is important to note the differences between business area classes and event manager classes:
- Business area classes are persistent, event manager classes are not.
- Business area classes model real world concepts (tangible or intangible). They have a set of defined states and methods to manipulate their states. Event manager classes model an event. They usually have just one method whose only responsibility is to process the event. They have no state.
|
|
Event Manager Class Methods |
An event manager class has one primary method to specify the event handling logic. This method differs in purpose from business area class methods. A business area class method exists to perform exactly one logical method on a business area class, independent of who invoked it and why it was invoked. An event manager class method, on the other hand, models event-dependent and context-sensitive logic. It is responsible for invoking methods in other classes and for performing work based on how the event was invoked, and how the other methods have done their work. The processing performed by an event manager class method can be categorised as follows:
- Pre-processing. Incoming event data and constraints upon the processing of the event are validated. Pre-processing can include method invocations for data access against business area classes.
- Event processing. Business area class methods are invoked. After each invocation, completion status is checked, and any event-specific design logic necessary to determine the next processing path is executed.
- Post Processing. Output parameters, including completion status and error messages, are set.
The object navigation diagram is a graphical way of specifying the business area class methods that an event manager class method can invoke. |
| Event manager class methods: scope |
- should contain only policy logic: accessing BACs to determine the context of the event being processed, making context-dependent decisions about what methods to invoke, performing user I/O, setting defaults, and handling exceptions.
- should not contain algorithms or state-change logic.
See also 'Method Scope' |
| EY/NSS |
Ernst & Young Navigator Systems Series |
| Generalisation/specialisation hierarchy |
Inheritance hierarchy |
| Generic object |
Objects with similar properties can be represented by a generic object in which all the data and behaviour are defined, e.g. a generic Bank Account, Car. also known as. CLASS |
| Granularity |
See 'abstraction'. |
| GUI |
Graphical User Interface |
| IBAIM |
? (non-OO) |
| IE |
Information Engineering |
| Implementation |
The private part of a class (see 'encapsulation'). |
| Inheritance |
The mechanism by which 'child' classes inherit data and behaviour from the parent class. e.g. cheque and savings account 'child' classes inherit data such as names and operations such as deposit, from a 'parent' class 'bank account', which has operations and data common to more than one type of bank account. |
| Inheritance Hierarchy |
Inheritance hierarchies consist of classes linked with inheritance relationships. Any parent class in the hierarchy is termed a superclass. Any child class is called a subclass. The relationship meaning is such that a subclass "is a" superclass. These relationships are very different from association or aggregation relationships because they represent relationships between classes rather than between objects. A single object may belong to classes along an entire leg of the class hierarchy.
Inheritance is the mechanism by which a class's data and behaviour are available to its subclasses. The superclasses usually define the more generalised attributes, relationships and methods. The subclasses inherit them and are free to use them as is, or specialise them. These subclasses can be parent classes of other classes. Classes are then said to be in an inheritance hierarchy. )or a generalisation/specialisation hierarchy).
A class may have any number of subclasses. If a class is only allowed to have one direct superclass, this is called single inheritance. If a class can inherit more than one parent class, this is called multiple inheritance. |
| Interface |
The public part of a class (see 'encapsulation'). |
| Iterator methods |
Iterator methods allow different parts of an object to be accessed, or a particular method to be invoked repeatedly, in some pre-specified order. e.g. list last 5 a/c txns. |
| Legacy System |
Pre-OO system still live. |
| Messages |
Communication between objects. E.g. A 'deposit' message asks a bank account object to perform a deposit operation. The bank account object does not and should not know where the deposit came from. Sending a message to an object is similar to invoking a function defined on that object. When an object receives a message, it finds the appropriate method to invoke and executes it. A message is a request for a logical operation that will be carried out for the target object by a method defined on the object's class, or inherited from a superclass. |
| Method |
A class-specific implementation of an operation. The way an operation is implemented for a particular class. An object's behaviour is characterised by the different things that can be done to it. Things can be done to an object only by passing messages to it and having it execute the corresponding method. The set of methods defined in a class, therefore, implements the behaviour of that class. A method can access only the properties of its class (unlike a subroutine in IE which is free to access any data in the system).
A method has a specification and a body. The specification includes the name of the method and its input and output parameters, which are specified by name, type and order. The body is the fragment of process logic or code that implements the method. There may be several methods that represent different implementations of the same logical operation, to be used in different cases. It is not necessary for a calling program to know the class of the target object when the message is sent. The correct method is selected based upon the class of the target object.
In general, there are 5 kinds of methods.: constructors, Destructors, modifiers (or writers), accessors (or readers) and iterators. The first 4 correspond to Create, Read, Update and Delete (CRUD) operations respectively. |
| Method scope |
The scope of each method should adhere to certain basic principles to maximise the potential for reusability, extendibility, and maintainability. These methods are different for the EMC and BAC methods (q.v.). These principles need to be considered when defining methods in terms of their method invocations on the OND, and when describing the detail specification and logic of each method.
In order to maximise the potential for reusability, extensibility and maintainability, it is important to carefully consider method scope boundaries. Method scope refers to the total functionality that a method provides, including any processing achieved by invoking other methods. The object navigation diagram provides a good vehicle for initial analysis of method scope boundaries, because the scope of a method is significantly reflected by the methods it invokes.
All rules concerning method scope for event manager classes and business area classes should be considered during creation or analysis of the OND. In addition, the pattern of method invocations should be analysed to remove dependencies of a particular method upon any context of invocation.


The figure above depicts 2 possible ONDs for the same elementary process. The difference between the 2 is in the interpretation of what decision logic should be built into each method. In the first OND, the event manager class simply initiates the processing. The subsequently invoked methods make all further decisions about what processing to perform. In the second OND the EMC method participates in the decision process about the invocation of method C. In order for this second diagram to be correct, the decision logic in the EMC method must be dependent upon a context of which method B has no knowledge. In this case, the logic is dependent upon something about the initiating event, since the logic is in the EMC method.
It is important to realise that logic that does not invoke methods must be analysed for proper placement through detailed analysis of individual methods, rather than through analysis of the OND. Therefore, analysis of the OND is not a complete check of the proper scoping of methods. However, when developing or refining the OND, it is important to keep in mind the rules governing the appropriate scope of a method. |
| Modifier Methods |
Also known as writer methods, thes e are used to modify an object's attributes and update its relationships. |
| Method specification |
The object model contains a large number of business rules that need not be specified in method descriptions during analysis. An attribute description, for example, records the cardinality and derivation for that attribute. Method descriptions during analysis need only contain the logic that supplements the data descriptions.
When describing methods during analysis, assume that the following are formally covered in the object model:
- setting mandatory attributes for an object when an object is created
- establishing mandatory relationships
- validating that an attribute's value conforms to the rules in the attribute or domain class description
- determining the value of any derived attribute
When a conflict between the scope rules for the BAC and EMC is identified, consider the following solutions:
- re-partition the method logic between existing methods, either between business area methods, or between an EMC method and a BAC method.
- split the method and create 2 methods that are independently invoked.
- split the method and move 1 of the methods to a class lower or higher in the class hierarchy.
- split the method and move 1 of the methods to a related class.
In all cases, try to determine with what class and method the logic is always and fundamentally associated. |
| Multiple inheritance |
If a class can inherit more than one parent class, this is called multiple inheritance.
If an employee of the bank is allowed to hold an account in that bank, this person can be modelled by an Employee Account Holder class that is a subclass of both the Bank employee and Account Holder classes.

Multiple inheritance is difficult to implement because properties and methods can be inherited from all parent classes. If Bank Employee and Account Holder have different definitions of a certain attribute or a method, the correct definition to use must be resolved at runtime or explicitly by the user. A more subtle problem arises when similar properties/methods are inherited under different names from the different parent classes. This leads to conceptual redundancy.
It is usually possible to model without using multiple inheritance. Even this example could be modelled differently to use only single inheritance. Avoid using multiple inheritance without considering single inheritance alternatives.
If a subclass can inherit something from more than one parent class, it has to explicitly decide the source. As C++ is strongly typed, this determination has to be made at compile time. With weakly-typed, dynamically-bound languages, this determination is made at runtime. |
| Object |
A real-world thing or concept, e.g. a bank account; a set of operations on an object. A fundamental building block in analysing a problem and constructing a solution. Similar to an entity instance in ER, but objects are active., and may be affected only by the behaviour (methods) defined for the class to which they belong. An instance of a class. Contains values for the different properties defined in its class and possesses the behaviour defined in its class. |
| Object-based programming languages |
Provide for user-defined classes and encapsulation, but not inheritance. e.g. ADA. See OO languages. |
| Object Life Cycle Diagram |
Events - whether they are external or temporal - affect a class by causing it to move from one state to another. The set of object states and the allowed transitions between them are depicted in an OLCD for that class. Sometimes referred to as a state transition diagram. States are represented as bubbles. Changes in state, called state transitions, are shown by drawing an arc from the start state to the end state. The null state represents the logical state the object is in before it is created, and after it is deleted.

State transitions may be caused by a business event (an external event or a temporal event), or an internal event generated by another object. However, business events drive the modelling process during analysis because internal events (messages) between objects are indirectly caused by business events.

Each business event typically initiates one state transition on each affected class. Each transition is effected by a method. to model this, the arcs representing the transitions in an OLCD are annotated with the name of the method that affects the transition. In the above figure, a video tape has 2 distinct states: 'for rent' and 'rented'. The method 'rent video' effects the state change from 'for rent' to 'rented'.
An object can have an infinite number of physical states as defined by the different possible values of its attributes. However, it is impossible to exhaustively model all possible values of all attributes of an object, and all possible states may not be relevant. For example, in modelling the membership state of a video store member, the analyst may discover that processing is conditionally dependent on whether the account is active or not. Another process may need to know if the balance is positive or negative. If there are no processes or rules that depend on the exact amount of the positive or negative balance, then it is sufficient to model just 2 states, positive-balance and negative-balance, even though every different value of the balance attribute is potentially a different state. States identified during analysis are those to which significant and relevant behaviour is related.

If the number of possible states and allowable transitions gets too high to represent in one (flat) OLCD, nested life cycle diagrams may be used. Here, the diagram is partitioned and may be viewed and constructed at different levels of abstraction and detail. A state at one level is a metastate (or composite state) representing a set of states and transitions that are individually represented in a lower-level OLCD.
During the Business Area Requirements Analysis Stage, the OLCDs represent a purely logical view of the life cycle of objects belonging to each class. During Conceptual System Design, the OLCDs need to be reviewed. The conversion of business events and elementary processes into business transactions and procedures may result in additional object states that need to be reflected in the object life cycle models. For example, if organisational and geographic constraints cause 2 groups of people working on the same business product to be physically separated, you may have to design various states of the product representing hand-off points between groups. Since each of these states is likely to have associated business rules, they should be represented in the object life cycle. |
| Object Navigation diagram |
The object navigation diagram is a graphical way of specifying the business area class methods that an event manager class method can invoke.
An OND specifies the method invocations required to process a business event. It also:
- Helps to ensure that all methods required to respond to a business event have been identified
- Establishes a partial specification of each depicted method, since it shows the allowed method invocations from each method.


Each rounded box in the diagram represents a method. Each arrow represents a message (method invocation). The naming convention for each method consists of a class name, followed by a colon, followed by a method name. The focal point of this diagram is the event manager class method which is responsible for invoking other business area class methods required to respond to the event. In this example, the event manager class is 'return video'. (The event manager class is also named 'return video'). It invokes 2 other methods directly: 'close line item' on class 'rental agreement line item' , and 'credit account' on class 'member account'. The arrow indicates the direction of method invocation,; a return message is implied in each case.
The lower example shows an expanded version of the same OND showing both the direct and indirect method invocations. The 'close line item' method may invoke 'close rental agreement', which in turn may invoke 'debit account'.
The decisions of how many levels of indirect method invocations should be included on the diagram is influenced by the following guidelines:
- include all required methods that create, update or delete stored data.
- include other methods if they have algorithmically complex processing.
- if a method is being used from a tested class library, or if it has been specified and baselined as part of the current project, include the method, but do not expand it on the diagram by including its method invocations.
The following set of rules apply when ONDs are drawn:
- all processing starts and ends with the event manager class method; the processing depicted by an OND represents a complete logical unit-of-work.
- arrows show the direction of method invocation from the invoking method, to the invoked method.
- even though arrows are unidirectional, a return message is implied, providing at least a completion status.
- each method has visibility only to those methods that it directly invokes.
- the class indicated for each method is the highest class in the class hierarchy to which the method applies.
- the invoking method must have an identifier for the target object. It must either know the object ID, or know specific values for one or more properties of the target object's class that will allow identification and access of the object.
- the method of invocations diagrammed on the OND constitute significant decisions about the scope of each method. All guidelines for the proper scope of event manager class methods and business area class methods should be adhered to while defining method invocations on the OND.
- the event manager class method has the option of aborting the entire unit of work at any time, while business area class methods do not.
An OND is, essentially, a diagrammatic way of representing method logic. It could, therefore, be used to represent the logic for any business area class method, not just event manager class methods. However, since the system is scoped in terms of the events to which the business area will respond, producing a diagram for the event manager methods ensures scope coverage. There may be cases, however, where the logic for a particular business area class method is sufficiently complex to warrant detailed analysis using an OND.
The diagram's syntax appears to assume that the invoking method must know the invoked method's class. This is not true; in an object model, a method needs only to know the target object ID and a method name. The class names are shown only to provide a context for the method name, to help the analyst relate the diagram to the object model. The fact that a subclass may override a particular method is not depicted on this diagram.
|
| Object-oriented programming languages |
support user-defined classes (a.k.a. abstract data types) and provide some level of enforcement for encapsulation and inheritance. See also 'object-based programming languages'. See C++.
|
| Object state |
An object state is characterised by the values of the object's attributes and relationships and is defined as the collection of values that determines the object's response to an event (its behaviour). an object is said to be in the same state as long as its response (behaviour) to an event is unchanged. If 2 different values of a particular attribute do not affect the behaviour of that object (in terms of how it responds to an event), then the object is in the same state regardless of which of the 2 values that attribute has. Hence, if the value of that attribute changes from one of those values to the other, there is no state transition.
This definition of state is necessary because:
- it is impossible to exhaustively model all possible values of all attributes of an object
- it is not always important to know the new value exactly; just being able to determine that its value has changed may be sufficient.
- it may sometimes be necessary to access only the current value of an attribute (e.g. current key), and its history may be irrelevant.
- it may sometimes be necessary to be able to determine both the new and old values.
- all changes of value in an attribute may not necessarily result in a meaningful change in state (e.g. if balance remains positive, the interest calculation method does not change).
|
| ODBMS |
Object Database Management System. Combines encapsulation and inheritance with the database concepts of permanence, sharing, reliability, consistency and associative retrieval. An internal identifier is assigned to each object. Relationships are implemented using these internal identifiers. Any change to a key value is thus seen by all other related objects, unlike relational systems. |
| OLCD |
object life cycle diagram. |
| OND |
Object Navigation Diagram. |
| OO |
Object-Oriented, Object Orientation. The OO approach looks at the different real-world things or concepts (called objects in the system, analysing them to determine what it knows (its data) and what it does (its behaviour). OO models systems as collections of co-operating objects, that communicate by sending messages. |
| OOA |
Object-Oriented Analysis. |
| OOBAIM |
OO Business Area Information Model |
| OOPLs |
Object-Oriented Programming languages. |
| Operation |
E.g. open an a/c, close it, deposit money in it, withdraw cash. A logical unit of behaviour without regard to how that behaviour is implemented. |
| Parent |
See 'inheritance' |
| Persistence |
secondary storage of objects |
| PMC |
Procedure Manager Class. |
| Polymorphism, polymorphic behaviour |
Polymorphism refers to differences in the behaviour of objects for the same logical operation. e.g. the closing of a cheque and a savings account may differ, but each method is called 'close account'. The message requesting closure is sent to the bank account object. The sending object does not need to know the type of account to be closed. The receiving object determines the method to be executed on receipt, depending on the subclass to which the object belongs.
Polymorphism can be misused. If the 2 methods are not logically equivalent, problems can occur when developers who are not aware of that fact attempt to use the method, e.g. if one 'close account' deletes the record, but the other only changes a state variable. |
| Private part |
See 'encapsulation'. |
| Process model |
The process model specifies the elementary processes (EP) and the cause and effect relationship between business events and elementary processes. Elementary processes are specified in terms of the class methods discovered during behaviour modelling. |
| Public part |
See 'encapsulation'. |
| Readers |
another name for Accessor methods. |
| Relationship |
Interaction between one object and another, modelled as relationships between classes, e.g. an account holder class with a bank account class. Analogous to the entity/relationship concept of relationships. E.g. Association relationship, Aggregation relationship, Inheritance. Relationships are defined between classes, but the actual manifestation of these relationships is between objects.
Relationships to domain classes are used to model more complex types of properties. For example, a member's age may be modelled by a relationship from Class Member to domain class for Age. A fundamental advantage of this option (over modelling it as an attribute) is that the domain class can be re-used. By re-using it, we get the validation logic inherent in the definition of the domain class. In this example, if the valid range of a member's age is defined to be 21 - 100, every time a member object is created, the value of the member's age property is checked to ensure that it falls in this range. In addition to re-use, a domain class allows us to localise and encapsulate the specification of validation logic for this property.
Relationships to business area classes are also used to model class properties. If the property is sufficiently complex, or if it has distinct and identifiable behaviour, it can be modelled as a separate business area class. An association is created between this class and the original class. As shown below, the regional HQ of a particular video store may be better modelled as a separate class than as an attribute in the video store class. One reason for modelling the property as a separate class is to allow the property to have its own life cycle and existence independent of the original class.

|
| Relationship Cardinality |
See cardinality. |
| Single inheritance |
If a class is only allowed to have one direct superclass, this is called single inheritance. For example, bank employees and account holders have several things in common (they are both people, for instance). Instead of defining properties common to all people in both these classes, we can make use of inheritance and define these common properties in a Person class and make this the parent class for both the Bank employee and Account Holder classes.
|
| Specification |
A method has a specification and a body. The specification includes the name of the method and its input and output parameters, which are specified by name, type and order. The body is the fragment of process logic or code that implements the method.
The interface, or public part, of a class (see 'encapsulation'). |
| Subclass |
Any child class in an inheritance hierarchy is called a subclass. Inherits data and behaviour. Subclasses are derived by a process of specialisation. |
| Superclass |
Any parent class in an inheritance hierarchy is called a superclass. Superclasses are derived by a process of generalisation. |
| Type |
A word often used for domains in OO literature is 'type' |
| UIB |
User Interface builder |
| Using relationship |
= Association relationship. |
| Writer methods |
Another name for Modifier methods. |
| |
|