Object modeling

43
Amandeep S. Patti 1 Object Modeling OOAD MCA 405 C (N2)

description

 

Transcript of Object modeling

Page 1: Object modeling

Amandeep S. Patti 1

Object Modeling

OOADMCA 405 C (N2)

Page 2: Object modeling

Amandeep S. Patti 2

Objects and Classes Object can be a concept, abstraction or

thing with crisp boundaries and meaning for the problem at hand.

They promote understanding of the real world and provide a practical basis for computer implementations.

Page 3: Object modeling

Amandeep S. Patti 3

Objects and Classes A class describes a group of objects with

similar properties (attributes), common behaviour (operations), common relations to other objects and common semantics.

The objects in a class share a common semantic purpose.

Page 4: Object modeling

Amandeep S. Patti 4

Object Diagram Object diagram provide a formal graphic

notation for modeling objects, classes and their relationships to one another.

Object diagrams are useful both for abstract modeling and for designing actual programs.

Page 5: Object modeling

Amandeep S. Patti 5

Object Diagram There are two types of object diagrams.

A class diagram is a schema, pattern or template for describing many possible instances of data. A class diagram describes object classes.

An instance diagram describes how a particular set of objects relate to each other. An instance diagram describes object instances.

Page 6: Object modeling

Amandeep S. Patti 6

Attributes An attribute is a data value held by the objects in

a class. Each attribute has a value for each object

instance. Different object instances may have same or

different values for a given attribute. Each attribute name is unique within a class. An attribute should be a pure data value, not an

object.

Page 7: Object modeling

Amandeep S. Patti 7

Operations and Methods

Operations An operation is a function or transformation that

may be applied to or by objects in a class. Each operation has a target object as an implicit

argument. The behaviour of the operation depends on the class of its target.

The same operation may apply to many different classes.

Page 8: Object modeling

Amandeep S. Patti 8

Operations and Methods A method is the implementation of the operation

for a class. An operation may have arguments in addition to

its target object. Such arguments parameterize the operation but do not affect the choice of method.

The method depends only on the class of the target object.

When an operation has methods on several classes, it is important that the methods all have the same signature.

Page 9: Object modeling

Amandeep S. Patti 9

Notations for Class Diagram Place the name of the

class in the first partition (centered, bolded, & capitalized), list the attributes in the second partition, and write operations into the third.

Class NameAttribute: Type = Value

Operation(arg_List): return type

Page 10: Object modeling

Amandeep S. Patti 10

Links and Associations Represent static relationship between

classes. A link is a physical or conceptual

connection between object instances. An association describes a group of links

with common structure and common semantics.

Page 11: Object modeling

Amandeep S. Patti 11

Links and Associations All the links in an association connect

objects from the same classes. Both often appear as verbs in a problem

statement. Associations are inherently bi-directional. Associations are often implemented in

programming languages as pointers from one object to another.

Page 12: Object modeling

Amandeep S. Patti 12

Links and Associations

1 No more than one

0..1 Zero or One

* Many

0..* Zero or Many

1..* One or Many

Company

Person

1

1..*

Page 13: Object modeling

Amandeep S. Patti 13

Multiplicity It specifies how many instances of one class

may relate to a single instance of an associated class.

It constrains the number of related objects. It is generally described as being “one” or

“many”, but it is a subset of non-negative integers.

It depends on assumptions and how you define the boundaries of a problem.

Page 14: Object modeling

Amandeep S. Patti 14

For example, one company will have one or more employees, but each employee works for

one company only.

Multiplicity

Operation(arg_List): return type

Attribute: Type = Value

Class Name

Operation(arg_List): return type

Attribute: Type = Value

Class Name

{Constraints}

**

1..* 1

Page 15: Object modeling

Amandeep S. Patti 15

Link Attributes A link attribute is a property of the links in

an association.

Accessible by

Access permission

File User

Page 16: Object modeling

Amandeep S. Patti 16

Role Names A role is an end of an association. A binary association has two roles, each of which

may have a role name. A role is a name that uniquely identifies one end

of an association. Role names are necessary for associations

between two objects of same class.EmployeePerson Company

EmployerWorks-

for

Page 17: Object modeling

Amandeep S. Patti 17

Ordering The ordering is an inherent part of the

association. An ordered set of objects on the “many” end of an association is indicated by writing “{ordered}” next to the multiplicity dot for the role.

This is a special kind of constraint.

Window Screen{Ordered} Visible-

on

Page 18: Object modeling

Amandeep S. Patti 18

Qualification A qualified association relates two classes

and a qualifier. One to many and many to many

associations may be qualified. The qualifier is a special attribute that

reduces the effective multiplicity of an association.

Page 19: Object modeling

Amandeep S. Patti 19

Qualification The qualifier distinguishes among the set

of objects at the many end of an association.

A qualified association can also be considered as ternary association.

Directory File name

File

Page 20: Object modeling

Amandeep S. Patti 20

Aggregation Aggregation is the “part-whole” or “a-part-of”

relationship in which objects representing the components of something are associated with an object representing the entire assembly.

The aggregate is semantically an extended object that is treated as a unit in many operations, although physically it is made of several objects.

Page 21: Object modeling

Amandeep S. Patti 21

Aggregation Aggregation is inherently transitive; An

aggregate has parts, which may in turn have parts.

Many aggregate operations operate on both direct and indirect parts.

Aggregation can be fixed, variable or recursive.

Page 22: Object modeling

Amandeep S. Patti 22

Types of Aggregation A fixed aggregate has a fixed structure; The

types and number of subparts are predefined. A variable aggregate has a finite number of

levels, but the number of parts may vary. A recursive aggregate contains directly or

indirectly, an instance of the same kind of aggregate; the no. of potential levels is unlimited.

Page 23: Object modeling

Amandeep S. Patti 23

Propagation of Operations Propagation is the automatic application of an

operation to a network of objects when the operation is applied to some starting object.

The propagation behaviour is bound to an association, direction and operation.

Propagation is indicated on object models with a small arrow & operation name next to the affected association. The arrow indicates the direction of propagation.

Page 24: Object modeling

Amandeep S. Patti 24

Generalization It is the relationship between a class and

one or more refined versions of it. The class being refined is called the superclass and each refined version is called subclass.

It is sometimes called the “is-a” relationship because each instance of a subclass is an instance of superclass as well.

Page 25: Object modeling

Amandeep S. Patti 25

Generalization The notation for generalization is a triangle

connecting a superclass to its subclasses. The superclass is connected by a line to the apex of the triangle and the subclasses are connected by the line to a horizontal bar attached to the base of the triangle.

Page 26: Object modeling

Amandeep S. Patti 26

Generalization “Dimensionality” is

discriminator. It is an attribute of

enumeration type that indicates which property of an object is being abstracted by a particular generalization relationship.

Figure

ColorCenter position

Moveselect

One Dim

Orientation

Scale

Two Dim

OrientationFill type

Scalefill

dimensionality

Page 27: Object modeling

Amandeep S. Patti 27

Generalization, Inheritance and Specialization

Generalization is used to refer to the relationship among classes, while inheritance refers to the mechanism of sharing attributes and operations using the generalization relationship.

Generalization and specialization are two different viewpoints of the same relationship, viewed from superclass or from the subclass.

Page 28: Object modeling

Amandeep S. Patti 28

Aggregation V/s Generalization Aggregation relates instances. Two distinct

objects are involved; One of them is part of other whereas generalization relates classes and is a way of structuring the description of a single object. Both super class and subclass refer to properties of a single object.

Page 29: Object modeling

Amandeep S. Patti 29

Aggregation V/s Generalization An aggregation tree is composed of object

instances that are all part of a composite object; A generalization tree is composed of classes that describe an object.

Aggregation is often called “a-part-of” relationship (sometime called “and-relationship”); Generalization is often called “a-kind of” or “is-a” relationship (sometime called “or-

relationship”).

Page 30: Object modeling

Amandeep S. Patti 30

Aggregation v/s Association Aggregation is a special form of association,

not an independent concept. Aggregation adds semantic connotations in

certain cases. If two objects are tightly bound by a part-whole relationship, it is an aggregation.

If two objects are independent, and they are linked, it is an association.

Page 31: Object modeling

Amandeep S. Patti 31

Abstract class An incomplete superclass that defines common

features to several classes. Not instantiated. Frequently used to define methods to be

inherited by subclasses. It can define the protocol for an operation

(abstract operation) without supplying a corresponding method, for which each subclass must provide its own implementation.

Page 32: Object modeling

Amandeep S. Patti 32

Concrete class Is a complete class. Describes a concept completely. Is intended to be instantiated. It may have abstract subclasses (but they in

turn must have concrete descendants). Only concrete classes may be leaf classes

in the inheritance tree.

Page 33: Object modeling

Amandeep S. Patti 33

Generalization as Extension and Restriction

In generalization, an instance of a class is an instance of the class. Therefore all ancestor class features must apply to the subclass instances. A descendent class cannot omit or suppress an ancestor attribute because then it could not truly be an ancestor instance. Similarly operations on an ancestor class must apply to all descendent classes. A subclass may re-implement an operation for reasons of efficiency but cannot change the external protocol.

Adding features is called Extension. Constraining ancestor attributes is called Restriction.

Page 34: Object modeling

Amandeep S. Patti 34

Overriding Operations The mechanism by which a child class can

provide an alternative implementation of a method currently provided by a parent class.

Overriding for extension: the new operation is the same as the inherited operation, except it adds some behaviour, usually affecting new attributes of the subclass.

Overriding for restriction: The new operation restricts the protocol, such as tightening the types of arguments.

Page 35: Object modeling

Amandeep S. Patti 35

Overriding Operations Overriding for optimization: An implementation

can take advantage of the constraints imposed by a restriction to improve the code for an operation, and it is valid use of overriding.

Overriding for convenience: A common practice in developing new classes is to look for a class similar to what is desired. The new class is made a subclass of the existing class and overrides the methods that are inconvenient. This ad hoc use of inheritance is semantically wrong.

Page 36: Object modeling

Amandeep S. Patti 36

Multiple Inheritance A class may inherits features from more than one

superclass. Such class is called a join class. A feature from the same ancestor class found

along more than one path is inherited only once. The advantage of multiple inheritance is greater

power in specifying classes and an increased opportunity for reuse. It brings object modeling closer to the way people thinks.

The disadvantage is a loss of conceptual and implementation simplicity.

Page 37: Object modeling

Amandeep S. Patti 37

WorkaroundsEmployee

Employee

Payroll

Employee

Pension

Hourly

Employee

Salaried

Employee

Exempt

Employee

Vested

Employee

Unvested

EmployeeMultiple Inheritance Using delegation

Page 38: Object modeling

Amandeep S. Patti 38

WorkaroundsEmployee

Employee

Pension

Hourly

Employee

Salaried

Employee

Exempt

Employee

Vested

Employee

Unvested

Employee

Pay Status

Pension Status

Multiple Inheritance using inheritance & delegation

Page 39: Object modeling

Amandeep S. Patti 39

Metadata Data about data.

Models are inherently metadata. Parts catalogs, blue-prints, dictionaries etc.

Patterns and Metadata

Page 40: Object modeling

Amandeep S. Patti 40

Constraints Constraints are functional relationships between

entities of an object model. The term entity includes objects, classes, attributes, links and associations.

A constraint restricts the values that entities can assume.

A good object model captures many constraints through its structure.

Object modeling notation for constraints is as follows: Constraints are delimited by braces and positioned near the constrained entity. A dotted line connects multiple constrained entities.

Page 41: Object modeling

Amandeep S. Patti 41

Constraints

Employee

Salary

{Salary <= boss.Salary}

WindowLength

width

{length > width}

Constraints on objects

Country Office Person{ordered}

Constraints on association links

Page 42: Object modeling

Amandeep S. Patti 42

Derived Objects, Links and Attributes

A derived object is defined as a function of one or more objects, which in turn may be derived.

The notation for derived entity is a slash or diagonal line (on the corner of a class box, or an association line, or in front of an attribute).

Machine Assembly Part

Offsetoffset

offset

Page 43: Object modeling

Amandeep S. Patti 43

Homomorphism

CatalogItem

Item

Model number Serial numberDescribes

Maps ContainsContain

s

{Item1 contains item2 => item1.model contains item2.model}

Homomorphism for a parts catalog