ITEC324 Principle of CS III

Slides:



Advertisements
Similar presentations
Object-Oriented Application Development Using VB.NET 1 Chapter 5 Object-Oriented Analysis and Design.
Advertisements

Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall A.1.
Systems Analysis and Design 8th Edition
Chapter 22 Object-Oriented Systems Analysis and Design and UML Systems Analysis and Design Kendall and Kendall Fifth Edition.
Designing Classes Chapter 3. 2 Chapter Contents Encapsulation Specifying Methods Java Interfaces Writing an Interface Implementing an Interface An Interface.
Lecture 11: Chapter 22 Topics –Object Oriented Modeling –UML –Use case.
OOdesignProcess1 The Object-Oriented Design Process Part 1: objects & classes.
CPSC 2100 Software Design and Development
Object-oriented design Part 4: More UML. Interfaces An interface is a language construct specific to Java Java does not support multiple inheritance Interfaces.
Unified Modeling Language
Chapter 2 (Horstmann’s Book) – Part 2 The Object-Oriented Design Process Hwajung Lee.
OO Analysis and Design CMPS OOA/OOD Cursory explanation of OOP emphasizes ▫ Syntax  classes, inheritance, message passing, virtual, static Most.
Object-Oriented Design & Patterns Cay S
Unified Modeling Language, Version 2.0
CSC 480 Software Engineering OOAD Process. Topics Overview: OOAD Process The object model Identifying classes Responsibilities and collaborations Hierarchy:
CS3773 Software Engineering Lecture 04 UML Class Diagram.
Systems Analysis & Design 7 th Edition Chapter 5.
Systems Analysis and Design 8 th Edition Chapter 6 Object Modeling.
Unified Modeling Language © 2002 by Dietrich and Urban1 ADVANCED DATABASE CONCEPTS Unified Modeling Language Susan D. Urban and Suzanne W. Dietrich Department.
1 Class Diagrams: The Essentials. 2 Terms and Concepts A class is... The most important building block of any object-oriented system. A description of.
UML Diagrams A tool for presentation of Architecture.
An Introduction to the Unified Modeling Language
Designing Classes Chapter 3. 2 Chapter Contents Encapsulation Specifying Methods Java Interfaces Writing an Interface Implementing an Interface An Interface.
CIS 112 Exam Review. Exam Content 100 questions valued at 1 point each 100 questions valued at 1 point each 100 points total 100 points total 10 each.
UML as a Specification Language for Embedded Systems. By, Mir Ahmed Ali, Asst. Professor, ECM department, SNIST. By, Prof. Narsiah sir, Director of School.
CS 151: Object-Oriented Design September 5 Class Meeting Department of Computer Science San Jose State University Spring 2013 Instructor: Ron Mak
ITEC324 Principle of CS III Chapter 2 (Horstmann’s Book) – Part 1 The Object-Oriented Design Process Hwajung Lee.
Internet and Intranet Protocols and Applications Lecture 5a: HTTP Client-Server Design and Implementation February 15, 2005 Arthur Goldberg Computer Science.
Chapter 2: Introduction to Object Orientation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph S. Valacich, Jeffrey A.
Object-Oriented Software Engineering Practical Software Development using UML and Java Modelling with Classes.
Object Oriented Programming and Data Abstraction Earl Huff Rowan University.
Chapter 2 (Horstmann’s Book) – Part 1 The Object-Oriented Design Process Hwajung Lee.
Introduction to Unified Modeling Language (UML) By Rick Mercer with help from The Unified Modeling Language User Guide, Grady Booch, James Rumbaugh, Ivar.
Slide 1 Unified Modeling Language, Version 2.0 Object-Oriented SAD.
5 Systems Analysis and Design in a Changing World, Fourth Edition.
The Object-Oriented Design Process Chapter 2. Chapter Topics From Problem to Code The Object and Class Concepts Identifying Classes Identifying Responsibilities.
Chapter 12 – Object-Oriented Design
The Movement To Objects
Object-Oriented Modeling with UML
Systems Analysis and Design With UML 2
Unified Modeling Language
Introduction to Unified Modeling Language (UML)
Week 10: Object Modeling (1)Use Case Model
OO Domain Modeling With UML Class Diagrams and CRC Cards
DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING
A short introduction to UML Eivind J. Nordby Karlstad University
Introduction to Object Oriented Analysis, Design and Unified Modeling Language (UML) Shanika Karunasekera.
Advanced Java Programming
A tool for presentation of Architecture
A tool for presentation of Architecture
Unified Modeling Language
UML: Unified Modeling Language
UML Class Diagram.
Introduction to Unified Modeling Language (UML)
Chapter 20 Object-Oriented Analysis and Design
Appendix A Object-Oriented Analysis and Design
Understand and Use Object Oriented Methods
Class Diagrams – Part I Chapter 3.
Analysis models and design models
Software Design Lecture : 15.
Systems Analysis – ITEC 3155 Modeling System Requirements – Part 2
Copyright 2007 Oxford Consulting, Ltd
Chapter 12 – Object-Oriented Design
Analysis and Design with UML: Classes and Relationships
Chapter 5.
Chapter 22 Object-Oriented Systems Analysis and Design and UML
CIS 375 Bruce R. Maxim UM-Dearborn
Appendix A Object-Oriented Analysis and Design
Appendix A Object-Oriented Analysis and Design
ITEC324 Principle of CS III
Presentation transcript:

ITEC324 Principle of CS III Chapter 2 (Horstmann’s Book) – Part 1 The Object-Oriented Design Process Hwajung Lee ITEC324 Principle of CS III

Chapter Topics 1 From Problem to Code Use Cases Identifying Classes Identifying Responsibilities Relationships Between Classes

Chapter Topics 2 CRC Cards UML Class Diagrams Sequence Diagrams State Diagrams Using javadoc for Design Documentation Case Study: A Voice Mail System 

From Problem to Code Three Phases: Case Study: Voice Mail System Analysis Design Implementation Case Study: Voice Mail System

From Problem to Code 1. Analysis Phase Functional Specification Completely defines tasks to be solved Free from internal contradictions Readable both by domain experts and software developers Reviewable by diverse interested parties Testable against reality Artifact Use cases

From Problem to Code 2. Design Phase Goals Identify classes Identify behavior of classes Identify relationships among classes Artifacts Textual description of classes and key methods Diagrams of class relationships Diagrams of important usage scenarios State diagrams for objects with highly state-dependent

From Problem to Code 3. Implementation Phase Implement and test classes Combine classes into program Avoid "big bang" integration Prototypes can be very useful

1. Anaysis Phase

Use Cases Analysis technique Each use case focuses on a specific scenario Use case = sequence of actions Action = interaction between actor and computer system Each action yields a result Each result has a value to one of the actors Use variations for exceptional situations

Sample Use Case Leave a Message Caller dials main number of voice mail system System speaks prompt Enter mailbox number followed by # User types extension number System speaks You have reached mailbox xxxx. Please leave a message now Caller speaks message Caller hangs up System places message in mailbox

Sample Use Case -- Variations 1.1. In step 3, user enters invalid extension number 1.2. Voice mail system speaks You have typed an invalid mailbox number. 1.3. Continue with step 2. Variation #2 2.1. After step 4, caller hangs up instead of speaking message 2.3. Voice mail system discards empty message

2. Design Phase

Identifying Classes Rule of thumb: Look for nouns in problem description Mailbox Message User Passcode Extension Menu Focus on concepts, not implementation MessageQueue stores messages Don't worry yet how the queue is implemented

Identifying Classes Categories of Classes Tangible Things Agents Events and Transactions Users and Roles Systems System interfaces and devices Foundational Classes

Identifying Responsibilities Rule of thumb: Look for verbs in problem description Behavior of MessageQueue: Add message to tail Remove message from head Test whether queue is empty

Identifying Responsibilities OO Principle: A responsibility must belong to exactly one class Example: Add message to mailbox Who is responsible: Message or Mailbox?

Class Relationships Dependency Aggregation Inheritance "uses" "has" "is"

Class Relationships Dependency Relationship 1 C depends on D: Method of C manipulates objects of D Example: Mailbox depends on Message If C doesn't use D, then C can be developed without knowing about D

Class Relationships Dependency Relationship 2 Minimize dependency: reduce coupling Example: Replace public class Message { void print() {System.out.println(text);} } with public String getText() Removes dependence on System, PrintStream

Class Relationships Aggregation Object of a class contains objects of another class Example: MessageQueue aggregates Messages Example: Mailbox aggregates MessageQueue Implemented through instance fields

Class Relationships Aggregation: Multiplicities 1 : 1 or 1 : 0...1 relationship: public class Mailbox { . . . private Greeting myGreeting; } 1 : n relationship: public class MessageQueue { . . . private ArrayList<Message> elements; }

Class Relationships Inheritance More general class = superclass More specialized class = subclass Subclass supports all method interfaces of superclass (but implementations may differ) Subclass may have added methods, added state Subclass inherits from superclass Example: ForwardedMessage inherits from Message Example: Greeting does not inherit from Message (Can't store greetings in mailbox)

CRC Cards (1) Design Technique CRC = Classes, Responsibilities, Collaborators Developed by Beck and Cunningham Use an index card for each class Class name on top of card Responsibilities on left Collaborators on right 

CRC Cards (2) Responsibilities should be high level 1 - 3 responsibilities per card Collaborators are for the class, not for each responsibility

Walkthroughs (1) Use case: "Leave a message" Caller connects to voice mail system Caller dials extension number "Someone" must locate mailbox Neither Mailbox nor Message can do this New class: MailSystem Responsibility: manage mailboxes Since Walkthough is a part of a design phases, we need to think about interaction between classes. Use Cases are written in an analysis phases. Note that we use the pre-written Use Cases as one of references to tailor our Design.

Walkthroughs (2)

UML Diagrams UML = Unified Modeling Language Unifies notations developed by the "3 Amigos" Booch, Rumbaugh, Jacobson Many diagram types We'll use three types: Class Diagrams Sequence Diagrams State Diagrams

Class Diagrams Rectangle with class name Optional compartments Attributes Methods Include only key attributes and methods

Class Relationships

Multiplicities any number (0 or more): * one or more: 1..* zero or one: 0..1 exactly one: 1

Composition Special form of aggregation Contained objects don't exist outside container Example: message queues permanently contained in mail box

Association (1) Some designers don't like aggregation More general association relationship Association can have roles

Association (2) Some associations are bidirectional Can navigate from either class to the other Example: Course has set of students, student has set of courses Some associations are directed Navigation is unidirectional Example: Message doesn't know about message queue containing it

Interface Types Interface type describes a set of methods No implementation, no state Class implements interface if it implements its methods In UML, use stereotype «interface»

Tips Use UML to inform, not to impress Don't draw a single monster diagram Each diagram must have a specific purpose Omit inessential details

Sequence Diagrams Each diagram shows dynamics of scenario Object diagram: class name underlined

Self call

Object Construction

State Diagram Use for classes whose objects have interesting states

3. Implementation Phase

Design Documentation (1) Recommendation: Use Javadoc comments Leave methods blank /** Adds a message to the end of the new messages. @param aMessage a message */ public void addMessage(Message aMessage) { } Don't compile file, just run Javadoc Makes a good starting point for code later

Design Documentation (2) Please refer details on javadoc in page 6~9 of chapter 1 (Horstmann’s book) Ch1/helloworld/Greeter.java (page 6)

Design Documentation (3)

Design Documentation (4)