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

16 - Problem Decomposition - Revisited

The document discusses object oriented design for automating bank operations. It describes identifying relevant classes like Customer and Account, defining the information and behaviors for each class, developing use cases, defining the application programming interface, and specifying instance variables to support the API before implementing the code.

Uploaded by

chupa ku
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)
53 views

16 - Problem Decomposition - Revisited

The document discusses object oriented design for automating bank operations. It describes identifying relevant classes like Customer and Account, defining the information and behaviors for each class, developing use cases, defining the application programming interface, and specifying instance variables to support the API before implementing the code.

Uploaded by

chupa ku
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/ 14

Problem Decomposition Revisited

(Again):
Object Oriented Design

There’s more…?

zombie[3]
zombie[1]

zombie[4]

zombie[5]
zombie[2]
zombie[0]

Fundamentals of Computer Science


Outline

 Object Oriented Design


 Identify the Classes

 Identify what Information each Class Needs

 Identify what each Class Needs to Do


Software Development Life Cycle

1. Understand the Problem = Requirements


Analysis
2. Work out the Logic = Design
3. Convert it to Code = Implementation
4. Test/Debug
5. Maintenance

Today we will talk about requirements


analysis and object oriented design.

3
What are the Nouns?

 You have been hired to automate bank operations


for a local credit union. They have told you that
their business operates as follows:
 Customers can open accounts. They can make deposits and
withdrawals and can close accounts also. On some accounts
interest needs to be added, and sometimes fees are deducted.
 All employees can help customers with deposits and
withdrawals. Only some employees are authorized to open
and close accounts.

4
Initial Diagram

5
UML Diagram

6
UML with Some Data Types Added

7
Simplified Bank Customer:
Instance Variables:
Let’s ignore some of the complexity and Name
assume a bank employee is running our Address
program. The employee can work with SSN
Customers and Accounts. Accounts
Methods:
For one scenario, assume a person comes Add Customer
into our bank and wants to open an account. Delete Customer
This person is not yet a customer, so the
bank employee needs to add them as a Account:
customer and then open the account for Instance Variables:
them, and make that first deposit into the Balance
account. Account Number
Customer
(By the way, this way of thinking about a Methods:
problem, by looking at scenarios, is called Open Account
developing use cases.) Close Account
Deposit
Our job is to first define the API. Withdraw
Transfer Money
8
Simplified Bank Customer:
Instance Variables:
Our job is to first define the API. Name
Address
SSN
What will our methods need in Accounts
order to run, and what will they Methods:
return to the client program? Add Customer
Delete Customer

Customer – Add Customer Account:


Delete Customer Instance Variables:
Balance
Account Number
Account – Open Account Customer
Close Account Methods:
Deposit Open Account
Withdraw Close Account
Transfer Money Deposit
Withdraw
Transfer Money
9
API
Customer
Customer(String firstName, String lastName,
String SSN, String street, String city,
String state, String zipCode)
Customer DeleteCustomer()

Account
Account(Customer customer, long acctNumber)
Account(Customer customer, long acctNumber,
double initAmt)
Account DeleteAccount()
Deposit(double amount)
Withdraw(double amount)
TransferMoney(double amount, Account account)
// Comment: the account parameter is the account
// transferred to
10
Instance Variables
Now that the API is defined, we need to make sure our
instance variables are adequate to support the API.

1. What are the data types of each?


2. Do we need to refine any of them further?
Customer:
Name
Address
SSN
Accounts

Account:
Balance
Account Number
Customer

11
Instance Variables

Customer:

String firstName
String lastName
String SSN
String street
String city
String state
String zipCode
Account [] accounts
//Comment: Let’s say a customer can have a maximum of 20 accounts

Account:
double Balance
long accountNumber
Customer customer

12
Simplified Bank

Once we are happy with our class definitions, then we get to


write some code!!

13
Summary

 Object Oriented Design


 Identify the classes

 Identify what information each class needs

 Identify what each class needs to do

 Identify use cases

 Define the API

 Define the instance variables

 Finally – write some code!

You might also like