Appendix E: Using UML in Class Design

Similar documents
System Design and Programming II

Introduction to Classes

Chapter 13: Introduction to Classes Procedural and Object-Oriented Programming

Chapter 15: Inheritance, Polymorphism, and Virtual Functions

This page intentionally left blank

Inheritance, Polymorphism, and Virtual Functions

System.out.print(); Scanner.nextLine(); String.compareTo();

Chapter 11: Inheritance

Chapter 10: Inheritance

System Design and Programming II

1. the base class s (default) constructor is executed first, 2. followed by the derived class s constructor

Chapter 6: Inheritance

Abstract Data Types. Lecture 23 Section 7.1. Robb T. Koether. Hampden-Sydney College. Wed, Oct 24, 2012

CS 1302 Chapter 9 (Review) Object & Classes

CHAPTER 10 INHERITANCE

Object-oriented basics. Object Class vs object Inheritance Overloading Interface

Inheritance. A mechanism for specialization A mechanism for reuse. Fundamental to supporting polymorphism

Object Oriented Methods with UML

Principles of Software Construction: Objects, Design and Concurrency. Packages and Polymorphism. toad Fall 2012

Principles of Software Construction: Objects, Design, and Concurrency

Intro to Computer Science 2. Inheritance

CS1083 Week 3: Polymorphism

Introduction to Inheritance

Administrivia. IBM Info Session Date: Wed,, Jan 13 Time: 5:30 7 pm Location: Wesbrook 100

Inheritance Advanced Programming ICOM 4015 Lecture 11 Reading: Java Concepts Chapter 13

Software Design and Analysis for Engineers

Java How to Program, 10/e. Copyright by Pearson Education, Inc. All Rights Reserved.

Inheritance (P1 2006/2007)

Implementing Classes (P1 2006/2007)

Chapter Goals. Chapter 9 Inheritance. Inheritance Hierarchies. Inheritance Hierarchies. Set of classes can form an inheritance hierarchy

Where do we stand on inheritance?

CS112 Lecture: Defining Classes. 1. To describe the process of defining an instantiable class

Introduction to Classes and Objects Pearson Education, Inc. All rights reserved.

Implementing Classes

Chapter 15: Object Oriented Programming

Introduction to Classes and Objects

CSC Inheritance. Fall 2009

Object oriented programming

Rectangle. Lecture 2 week 2 - Objects & Classes Exercise 1. A. Write a driver class code in java depending on the following UML:

Outline CSE 142. Specification vs Implementation - Review. CSE142 Wi03 F-1. Instance Variables

Introduction. Introduction. Introduction

1 Short Answer (10 Points Each)

Abstract and final classes [Horstmann, pp ] An abstract class is kind of a cross between a class and an interface.

Encapsulation. Mason Vail Boise State University Computer Science

CS 162, Lecture 25: Exam II Review. 30 May 2018

Spring 2003 Instructor: Dr. Shahadat Hossain. Administrative Matters Course Information Introduction to Programming Techniques

Chapter 9: A Second Look at Classes and Objects

Lecture #1. Introduction to Classes and Objects

CS 1301 Ch 8, Handout 2

The most common relationships are: dependency, association, generalization, and realization.

What Is Inheritance? Generalization and Specialization

CS 106 Introduction to Computer Science I

Agenda: Notes on Chapter 3. Create a class with constructors and methods.

Anatomy of a Class Encapsulation Anatomy of a Method

Chapter 6 Class and Method

public class Account { private int id; private static int nextaccountid = 0; private String name; private double balance;

Object-Oriented Programming

1. Which of the following is the correct expression of character 4? a. 4 b. "4" c. '\0004' d. '4'

Data Structures and Other Objects Using C++

2. (True/False) All methods in an interface must be declared public.

UNIT 3 ARRAYS, RECURSION, AND COMPLEXITY CHAPTER 11 CLASSES CONTINUED

Instructions. Quiz #2. Name: Solutions Student Number: Signature:

Intro. Classes Beginning Objected Oriented Programming. CIS 15 : Spring 2007

Object-Oriented Programming

Reusable and Extendable Code. Composition Example (1) Composition Example (2) CS183-Su'02-Lecture 8 17 June by Eric A. Durant, Ph.D.

CS 106X, Lecture 14 Classes and Pointers

Inheritance: Definition

Design Process Modeling Constraints E-R Diagram Design Issues Weak Entity Sets Extended E-R Features Design of the Bank Database Reduction to

UML. By Somenath Mukhopadhyay.

PowerPoint Slides. Object-Oriented Design Using JAVA. Chapter 2. by Dale Skrien

INHERITANCE: CONSTRUCTORS,

Quarter 1 Practice Exam

Introduction to Objects. James Brucker

ICOM 4015 Advanced Programming Laboratory. Chapter 4 Introduction to Object Oriented Programming

Starting Out with Java: From Control Structures Through Objects Sixth Edition

The static Keyword. Lecture 2 Java Intermediate. The static Keyword. The Plan. Class Attributes The static Keyword. Class Methods The static Keyword

1st Semester MTCE 601A COMPUTER SYSTEM SOFTWARE

Assoc. Prof. Dr. Marenglen Biba. (C) 2010 Pearson Education, Inc. All rights reserved.

Drawing Geometrical Objects. Graphic courtesy of Eric Roberts

JAVA PROGRAMMING LAB. ABSTRACT In this Lab you will learn how to describe objects and classes and how to define classes and create objects

STUDENT LESSON A5 Designing and Using Classes

BM214E Object Oriented Programming Lecture 7

Chapter 10 Defining Classes

CSE 403: Software Engineering, Spring courses.cs.washington.edu/courses/cse403/15sp/ UML Class Diagrams. Emina Torlak

Assignment 2 - Specifications and Modeling

Programming a Bank Database. We ll store the information in two tables: INTEGER DECIMAL(10, 2)

Chapter 4. Inheritance

Chapter 10 Inheritance. Big Java by Cay Horstmann Copyright 2009 by John Wiley & Sons. All rights reserved.

Data types. CISC 1600/1610 Computer Science I. Class dog. Introducing: classes. Class syntax declaration. Class syntax function definitions 12/2/2015

PASCAL - OBJECT ORIENTED

CS100J, Fall 2003 Preparing for Prelim 1: Monday, 29 Sept., 7:30 9:00PM

FAQ: Classes & Objects

Imperative Languages!

More C++ : Vectors, Classes, Inheritance, Templates

ICOM 4015: Advanced Programming

2/9/2012. Chapter Three: Implementing Classes. Chapter Goals

9/2/2011. Chapter Goals

AP Computer Science Chapter 10 Implementing and Using Classes Study Guide

Introduction to Classes and Objects Pearson Education, Inc. All rights reserved.

Final Exam. COMP Summer I June 26, points

Transcription:

Z05_GADD9395_08_SE_APP5.indd Page 1 12/02/14 4:49 PM f-w-155-user Appendix E: Using UML in Class Design When designing a class it is often helpful to draw a UML diagram. UML stands for Unified Modeling Language. The UML provides a set of standard diagrams for graphically depicting object-oriented systems. Figure E-1 shows the general layout of a UML diagram for a class. Notice that the diagram is a box that is divided into three sections. The top section is where you write the name of the class. The middle section holds a list of the class s member variables. The bottom section holds a list of the class s member functions. Figure E-1 Class name goes here Member variables are listed here Member functions are listed here For example, in Chapter 13, Introduction to Classes, you studied a Rectangle class that could be used in a program that works with rectangles. The class has the following member variables: width length The class also has the following member functions: setwidth setlength getwidth getlength getarea 1

Z05_GADD9395_08_SE_APP5.indd Page 2 12/02/14 4:49 PM f-w-155-user 2 Appendix E: Using UML in Class Design From this information alone we can construct a simple UML diagram for the class, as shown in Figure E-2. Figure E-2 width length Rectangle setwidth() setlength() getwidth() getlength() getarea() The UML diagram in Figure E-2 tells us the name of the class, the names of the member variables, and the names of the member functions. Compare this diagram to the actual C++ class declaration, which follows. class Rectangle { private: double width; double length; public: void setwidth(double); void setlength(double); double getwidth() const; double getlength() const; double getarea() const; }; The UML diagram in Figure E-2 does not convey many of the class details, such as access specification, member variable data types, parameter data types, and function return types. The UML provides optional notation for these types of details. Showing Access Specification in UML Diagrams The UML diagram in Figure E-2 lists all of the members of the Rectangle class but does not indicate which members are private and which are public. In a UML diagram you may optionally place a - character before a member name to indicate that it is private, or a + character to indicate that it is public. Figure E-3 shows the UML diagram modified to include this notation.

Z05_GADD9395_08_SE_APP5.indd Page 3 12/02/14 4:49 PM f-w-155-user Appendix E: Using UML in Class Design 3 Figure E-3 - width - length Rectangle + setwidth() + setlength() + getwidth() + getlength() + getarea() Data Type and Parameter Notation in UML Diagrams The Unified Modeling Language also provides notation that you may use to indicate the data types of member variables, member functions, and parameters. To indicate the data type of a member variable, place a colon followed by the name of the data type after the name of the variable. For example, the width variable in the Rectangle class is a double. It could be listed as follows in the UML diagram: - width : double NOTE In UML notation the variable name is listed first, then the data type. This is opposite of C++ syntax, which requires the data type to appear first. The return type of a member function can be listed in the same manner: After the function s name, place a colon followed by the return type. The Rectangle class s getlength function returns a double, so it could be listed as follows in the UML diagram: + getlength() : double Parameter variables and their data types may be listed inside a member function s parentheses. For example, the Rectangle class s setlength function has a double parameter named len, so it could be listed as follows in the UML diagram: + setlength(len : double) : void Figure E-4 shows a UML diagram for the Rectangle class with parameter and data type notation.

Z05_GADD9395_08_SE_APP5.indd Page 4 12/02/14 4:49 PM f-w-155-user 4 Appendix E: Using UML in Class Design Figure E-4 Rectangle - width : double - length : double + setwidth(w : double) : void + setlength(len : double) : void + getwidth() : double + getlength() : double + getarea() : double Showing Constructors in a UML Diagram There is more than one accepted way of showing a class s constructor in a UML diagram. In this text we show a constructor just as any other method, except we list no return type. Figure E-5 shows a UML diagram for the InventoryItem class, which was discussed in Chapter 13. This class has three overloaded constructors, as well as some additional member functions. Figure E-5 InventoryItem - description : string - cost : double - units : int + InventoryItem(): + InventoryItem(desc : string) : + InventoryItem(desc : string, c : double, u : int) : + setdescription(d : string) : void + setcost(c : double) : void + setunits(u : int) : void + getdescription() : string + getcost() : double + getunits() : int

Z05_GADD9395_08_SE_APP5.indd Page 5 12/02/14 4:49 PM f-w-155-user Figure E-6 Aggregation UML Diagrams Appendix E: Using UML in Class Design 5 Aggregation occurs when a class contains an instance of another class as a member. You show aggregation in a UML diagram by connecting two classes with a line that has an open diamond at one end. The diamond is closest to the class that contains instances of other classes. For example, suppose we have the PersonalInfo class shown in Figure E-6, which holds information about a person. PersonalInfo - customername : string - customeraddress : string - customercity : string - customerstate : string - customerzip : string + PersonalInfo(name : string, address : string, city : string, state : string, zip : string) : + getname() : string + getaddress() : string + getcity() : string + getstate() : string + getzip() : string Figure E-7 Suppose we also have the BankAccount class shown in Figure E-7, which holds the balance of a bank account, and can perform operations such as making deposits and withdrawals. BankAccount - balance : double - interestrate : double - interest : double + BankAccount(startBalance : double, intrate : double) : + deposit(amount : double) : void + withdraw(amount : double) : void + addinterest() : void + getbalance() : double + getinterest() : double

Z05_GADD9395_08_SE_APP5.indd Page 6 12/02/14 4:49 PM f-w-155-user 6 Appendix E: Using UML in Class Design Figure E-8 Figure E-8 shows a UML diagram for another class, BankCustomer, which contains instances of the PersonalInfo and BankAccount classes as members. The relationship between the classes is shown by the connecting lines with the open diamond. The open diamond is closest to the BankCustomer class because it contains instances of the other classes as members. BankCustomer - info : PersonalInfo - checking : BankAccount - savings : BankAccount + BankCustomer(i : PersonalInfo, c : BankAccount, s : BankAccount) : + getcheckingbalance() : double + getsavingsbalance() : double + checkingdeposit(amt : double) : void + checkingwithdrawal(amt : double) : void + savingsdeposit(amt: double) : void + savingswithdrawal(amt : double) : void PersonalInfo - customername : string - customeraddress : string - customercity : string - customerstate : string - customerzip : string + PersonalInfo(name : string, address : string, city : string, state : string, zip : string) : + getname() : string + getaddress() : string + getcity() : string + getstate() : string + getzip() : string BankAccount - balance : double - interestrate : double - interest : double + BankAccount(startBalance : double, intrate : double) : + deposit(amount : double) : void + withdraw(amount : double) : void + addinterest() : void + getbalance() : double + getinterest() : double

Z05_GADD9395_08_SE_APP5.indd Page 7 12/02/14 4:49 PM f-w-155-user Inheritance in UML Diagrams Appendix E: Using UML in Class Design 7 You show inheritance in a UML diagram by connecting two classes with a line that has an open arrowhead at one end. The arrowhead points to the base class. For example, Figure E-9 shows a UML diagram depicting the relationship between the GradedActivity and FinalExam classes that you studied in Chapter 15. The arrowhead points toward the GradedActivity class, which is the base class. Figure E-9 GradedActivity - score : double + GradedActivity() : + GradedActivity(s : double) : + setscore(s : double) : void + getscore() : double + getlettergrade() : char FinalExam - numquestions : int - pointseach : double - nummissed : int + FinalExam() : + FinalExam(questions : int, missed : int) : + set(questions : int, missed : int) : void + getnumquestions() : double + getpointseach() : double + getnummissed() : int Showing Protected Members Protected class members may be denoted in a UML diagram with the # symbol. In the second version of the GradedActivity class, in Chapter 15, the score member variable was declared protected. Figure E-10 shows a UML diagram for the class.

Z05_GADD9395_08_SE_APP5.indd Page 8 12/02/14 4:49 PM f-w-155-user 8 Appendix E: Using UML in Class Design Figure E-10 GradedActivity # score : double + GradedActivity() : + GradedActivity(s : double) : + setscore(s : double) : void + getscore() : double + getlettergrade() : char