Java bank - Requirements Analysis

The first step in developing a program is to share a clear understanding of what program to make. This step is called Requirements Analysis. Requirements Analysis involves writing a scenario.

Scenario

A bank registers an account.
A bank searches for an account by account number.
A bank can find an account by the owner's name.
A bank can view a list of all accounts.
An account consists of the owner's name, account number, and balance.
An account has deposit and withdrawal functions and a balance check function. Whenever there is a change in balance, An account stores it in a transaction. A transaction consists of the transaction date, transaction time, deposit/withdrawal, transaction amount, and balance.

Class Diagram

You need to extract the classes, fields, and methods from a scenario.
Nouns become classes or variables. Verbs become methods.

JavaBank Class Diagram

Besides Class diagrams, there are Use case diagrams and Sequence diagrams. Depending on your project, you may need more of these, but a Class diagram is sufficient for the Java bank project.

The private is represented as -, public as +, and protected as # in a class diagram.

Class diagrams express the structure of classes and the relationships between objects.

A line connecting two classes indicates that the objects created from each class have a relationship.

A "has a" relationship is one in which an object has other objects as parts. A line with a diamond at one end indicates a "has a" relationship between objects. --The class adjacent to the diamond is the body, and the class opposite the diamond is the part--

There are two types of "has a" relationships: Composition and Aggregation.

The composition has a high degree of coupling. In a high degree of coupling, parts disappear as the body disappears. A class diagram expresses it with a diamond filled.

The aggregation has a low degree of coupling. In a low degree of coupling, the parts do not disappear even if the body disappears. A class diagram expresses it by a hollow diamond.

The number above the line indicates the maximum number of instances between related instances. 0 or * means zero or more.

An arrow is a direction in which an object calls the methods of another one.

Because a bank has multiple accounts, Bank and Account objects have a "has a" relationship.

In Java, you can implement Composition and Aggregation by declaring variables that store the part objects' references in the body object.