COMP 303 - Lecture Notes for Week 2

The Object-Oriented Design Process - Overview

From Problem to Code

Three Phases:

Case Study: Voice Mail System

Analysis Phase: What needs to be done

Functional Specification: detailed textual description

Design Phase: Structuring programming tasks into set of interrelated classes

Goals

Artifacts

Implementation Phase: Programming

Object and Class Concepts

Identifying Classes

Rule of thumb: Look for nouns in functional description

Identifying Classes

Focus on concepts, not implementation

Categories of Classes

Identifying Responsibilities

Rule of thumb: Look for verbs in problem description

Behavior of MessageQueue:

Responsibilities

Class Relationships

  1. Dependency ("uses")
  2. Aggregation ("has")
  3. Inheritance ("is")

Class Relationships (1): Dependency Relationships

Coupling

Class Relationships (2): Aggregation

Multiplicities

1 : 1 or 1 : 0...1 relationship:

 
public class Mailbox
 { ...   
   private Greeting myGreeting;
 }

1 : n relationship:

public class MessageQueue 
  { ...   
    private ArrayList elements;
  }

Class Relationships (3): Inheritance

Use Cases

Sample Use Case

Leave a Message

  1. Caller dials main number of voice mail system
  2. System speaks prompt: "Enter mailbox number followed by #."
  3. User types extension number
  4. System speaks: "You have reached mailbox xxxx. Please leave a message now."
  5. Caller speaks message
  6. Caller hangs up
  7. System places message in mailbox

Sample Use Case -- Variations

Variation #1

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

CRC Cards

CRC Cards


Walkthroughs

Walkthroughs

.


UML Diagrams (a more formal tool)

UML (1): Class Diagrams

Class Diagrams

.

UML Connectors - Class Relationships

.

Multiplicities

.

Composition

.

Association

.

Association

.

Interface Types

.

Tips

UML (2): Sequence Diagrams

,

Sequence Diagrams: Self call

.

Sequence Diagrams: Object Construction

.

UML (3): State Diagrams

.

Design Documentation

Case Study: Voice Mail System

Use Case: Reach an Extension

  1. User dials main number of system
  2. System speaks prompt: "Enter mailbox number followed by #"
  3. User types extension number
  4. System speaks: "You have reached mailbox xxxx. Please leave a message now"

Use Case: Leave a Message

  1. Caller carries out Reach an Extension
  2. Caller speaks message
  3. Caller hangs up
  4. System places message in mailbox

Use Case: Log in

  1. Mailbox owner carries out Reach an Extension
  2. Mailbox owner types password and #
    (Default password = mailbox number. To change, see Change the Passcode)
  3. System plays mailbox menu:
    "Enter 1 to retrieve your messages."
    "Enter 2 to change your passcode."
    "Enter 3 to change your greeting."

Use Case: Retrieve Messages

  1. Mailbox owner carries out Log in
  2. Mailbox owner selects "retrieve messages" menu option
  3. System plays message menu:
    "Press 1 to listen to the current message"
    "Press 2 to delete the current message"
    "Press 3 to save the current message"
    "Press 4 to return to the mailbox menu"
  4. Mailbox owner selects "listen to current message"
  5. System plays current new message, or, if no more new messages, current old message.
    Note: Message is played, not removed from queue
  6. System plays message menu
  7. User selects "delete current message". Message is removed.
  8. Continue with step 3.

Use Case: Retrieve Messages

Variation #1

1.1. Start at Step 6
1.2. User selects "save current message".
       Message is removed from new queue and appended to old queue
1.3. Continue with step 3.

Use Case: Change the Greeting

  1. Mailbox owner carries out Log in
  2. Mailbox owner selects "change greeting" menu option
  3. Mailbox owner speaks new greeting
  4. Mailbox owner presses #
  5. System sets new greeting

Use Case: Change the Greeting

Variation #1: Hang up before confirmation

1.1. Start at step 3.
1.2. Mailbox owner hangs up.
1.3. System keeps old greeting.

Use Case: Change the Passcode

  1. Mailbox owner carries out Log in
  2. Mailbox owner selects "change passcode" menu option
  3. Mailbox owner dials new passcode
  4. Mailbox owner presses #
  5. System sets new passcode

Use Case: Change the Passcode

Variation #1: Hang up before confirmation

1.1. Start at step 3.
1.2. Mailbox owner hangs up.
1.3. System keeps old passcode.

CRC Cards for Voice Mail System

Some obvious classes

Initial CRC Cards: Mailbox

.

Initial CRC Cards: MessageQueue

.

Initial CRC Cards: MailSystem

.

Telephone

Telephone

.

Connection

Connection

.

Analyze Use Case: Leave a message

  1. User dials extension. Telephone sends number to Connection
    (Add collaborator Telephone to Connection)
  2. Connection asks MailSystem to find matching Mailbox
  3. Connection asks Mailbox for greeting
    (Add responsibility "manage greeting" to Mailbox,
    add collaborator Mailbox to Connection)
  4. Connection asks Telephone to play greeting
  5. User speaks greeting. Telephone asks Connection to record it.
    (Add responsibility "record voice input" to Connection)
  6. User hangs up. Telephone notifies Connection.
  7. Connection constructs Message
    (Add card for Message class,
    add collaborator  Message to Connection)
  8. Connection adds Message to Mailbox

Result of Use Case Analysis (Telephone)

.

Result of Use Case Analysis (Connection)

.

Result of Use Case Analysis (Mailbox)

.

Result of Use Case Analysis (Message)

.

Analyse Use Case: Retrieve messages

  1. User types in passcode. Telephone notifies Connection
  2. Connection asks Mailbox to check passcode.
    (Add responsibility "manage passcode" to Mailbox)
  3. Connection sets current mailbox and asks Telephone to speak menu
  4. User selects "retrieve messages". Telephone passes key to Connection
  5. Connection asks Telephone to speak menu
  6. User selects "listen to current message". Telephone passes key to Connection
  7. Connection gets first message from current mailbox.
    (Add "retrieve messages" to responsibility of Mailbox).
    Connection asks Telephone to speak message
  8. Connection asks Telephone to speak menu
  9. User selects "save current message". Telephone passes key to Connection
  10. Connection tells Mailbox to save message
    (Modify responsibility of Mailbox to "retrieve,save,delete messages")
  11. Connection asks Telephone to speak menu

Result of Use Case Analysis (Mailbox)

.

CRC Summary

UML Class Diagram for Mail System

Dependency Relationships

.

Aggregation Relationships

UML Class Diagram for Voice Mail System

.

Sequence Diagram for Use Case: Leave a message

.

Interpreting a Sequence Diagram

Sequence Diagram for Use Case: Retrieve messages

.

Connection State Diagram

.

Java Implementation