0% found this document useful (0 votes)
2 views

chapter01

This document provides course notes for an Object-Oriented Design course offered by the University of Alberta, covering topics such as object-oriented analysis, design principles, and modeling techniques. It outlines the course structure, including modules on object-oriented thinking, design for quality attributes, and specialized UML diagrams. Upon completion, students will be able to explain key concepts and engage in object-oriented modeling and design.

Uploaded by

resonotech
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

chapter01

This document provides course notes for an Object-Oriented Design course offered by the University of Alberta, covering topics such as object-oriented analysis, design principles, and modeling techniques. It outlines the course structure, including modules on object-oriented thinking, design for quality attributes, and specialized UML diagrams. Upon completion, students will be able to explain key concepts and engage in object-oriented modeling and design.

Uploaded by

resonotech
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

COURSE NOTES

Copyright © 2017 University of Alberta.

All material in this course, unless otherwise noted, has been


developed by and is the property of the University of Alberta. The
university has attempted to ensure that all copyright has been
obtained. If you believe that something is in error or
has been omitted, please contact us.

Reproduction of this material in whole or in part is acceptable,


provided all University of Alberta logos and brand markings remain
as they appear in the original work.
Version 0.1.0

Object -Oriented Design | 2


TABLE OF CONTENTS
Course Overview 4
Module 1: Object-oriented analysis and design 5
Object-Oriented Thinking 5
Design in the Software Process 7
Requirements 8
Design 9
Compromise in Requirements and Design 12
Design for Quality Attributes 13
Trade-offs 13
Context and Consequences 14
Satisfying Qualities 14
Compromise 16
Class Responsibility Collaborator 17
CRC Cards 17
Prototyping and Simulation 18
Module 2: Object-Oriented Modelling 20
Creating Models in Design 21
Evolution of Programming Languages 23
Four Design Principles 29
Abstraction 29
Encapsulation 31
Decomposition 33
Generalization 35
Design Structure in Java and UML Class Diagrams 36
Abstraction 37
Encapsulation 39
Decomposition 41
Generalization 46
Module 3: Design Principles 57
Evaluating Design Complexity 57
Coupling 58
Cohesion 59
Separation of Concerns 59
Information Hiding 65
Conceptual Integrity 68
Generalization Principles 70
Specialized UML class diagrams 73
UML Sequence Diagrams 73
UML State Diagrams 77
Model Checking 79
Course Resources 81
Course References 81
Glossary 83

Object -Oriented Design | 3


COURSE OVERVIEW
This course examines object-oriented design as part of the
foundation for becoming an experienced software architect. The
material starts with an introduction to object-oriented thinking,
examining the role of design and quality attributes in the software
development process. This will also include an overview of the Class
Responsibility Collaborator cards technique.

The course then transitions into object-oriented analysis and design.


Building on the material presented in the first module, you will learn
about object-oriented modelling, particularly how design principles
are communicated and expressed in Java and Unified Modelling
Language (UML).

The last section of this course will focus on the more complex
aspects of design principles that support object-oriented design,
which must be understood to create flexible, reusable, and
maintainable software. Some more specialized UML diagrams are
also explained.

This course assumes basic understanding of the programming


language Java.

Upon completion of this course, you will be able to:

1) Explain object-oriented analysis and design.


2) Engage in object-oriented modelling.
3) Explain design principles for object-oriented
programming.

Object -Oriented Design | 4


MODULE 1: OBJECT-ORIENTED ANALYSIS AND DESIGN

Upon completion of this module, you will be able to:

(a) Explain object-oriented thinking.


(b) Understand the role of design and communication in the
software process as well as the link between these concepts
and the use of diagrams.
(c) Design for quality attributes.
(d) Model Class Responsibility Collaborator (CRC) cards.

Object-Oriented Thinking

Object-oriented modelling is a major topic in this specialization.


Before we can discuss this topic in depth, it is important to learn
how to think about problems and concepts as object oriented.

You probably associate the term “object-oriented” with coding and


software development. While that is true, the notion of being
object-oriented can apply outside of the role of a developer.
Object-oriented thinking involves examining the problems or
concepts at hand, breaking them down into component parts, and
thinking of those as objects. For example, a tweet on Twitter or a
product on an online shopping website could be considered
objects.

When translated to object-oriented modelling, object-oriented


thinking involves representing key concepts through objects in your
software. Note that concepts are broad in nature. Even instances of
people, places, or things can be distinct objects in software.

Objects may have specific details associated with them, which are
relevant to users. For example, a person object may have details
such as name, age, gender, and occupation. A place object may
have a size, or a name. An inanimate object may have dimensions or
a colour.

Object-Oriented Design | 5

You might also like