generated from Learning-Is-Vital-In-Development/study-template
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
57 changed files
with
1,224 additions
and
273 deletions.
There are no files selected for viewing
109 changes: 109 additions & 0 deletions
109
assignmentTest/skill_check _ fastcampus/KoSeonJe/README.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
## 프로젝트 설명 | ||
|
||
자바로 객체 지향 프로그래밍을 배운 후 프로젝트에서 필요한 객체들을 설계하고 이를 구현합니다 . 기본 예금 계좌와 적금 계좌을 가진 뱅킹시스템을 구현하고 각 계좌의 성격에 대한 차이를 다형성을 이용하여 구현해 봅니다. 또한 입력값에 따른 계좌생성, 출금, 입금, 송금 기능을 호출하고 자바에서 제공되는 컬렉션 프레임워크들을 활용하여 뱅킹시스템을 관리할 수 있습니다. 이러한 프로젝트를 구현함으로써 실무에서 객체를 설계하는 방법, BigDecimal 데이터 타입을 이용하여 금액을 다루는 법, 객체 지향 프로그래밍의 장점을 활용하는 방법 그리고 여러 필요한 기능들을 구현하는 방법들을 익힐 수 있습니다.**** | ||
|
||
## 요구사항 | ||
|
||
### 1. 객체 지향적 설계 | ||
|
||
### 2. 계좌 클래스 요구사항 | ||
|
||
- 예금 계좌와 적금 계좌를 가진 뱅킹시스템을 구현하고, 각 계좌의 성격에 대한 차이를 다형성을 이용해 구현 | ||
- 계좌 클래스의 속성은 계좌종류(N: 예금계좌, S:적금계좌), 계좌번호, 소유자, 잔액, 활성화 여부 다섯 가지 | ||
- 일반 예금 계좌 클래스의 각 속성에 getter/setter를 제공하고, 계좌 정보를 보여주는 getAccountInfo() 메서드를 구현합니다. | ||
- 적금 계좌 클래스는 예금 계좌 클래스에서 상속을 받고 목표 금액 속성을 추가하고, 메서드를 재정의 하여 목표 금액 정보도 보여주도록 합니다. | ||
- 뱅크 클래스에서 호출할 출금, 입금 기본 메서드를 생성합니다.**** | ||
|
||
### 3. 뱅크 클래스 요구사항 | ||
|
||
- 계좌 클래스에서 구현한 기본 클래스를 이용하여 계좌생성, 출금, 입금, 송금 메서드를 구현합니다. 메서드 내부적으로 입력값을 받는 액션이 있습니다. | ||
- 적금 계좌는 적금 계좌는 잔액이 목표 금액(%s원) 이상이어야 출금 가능하도록 상속받은 출금 메서드를 조금 다르게 구현해줍니다. | ||
- 계좌 잔액에 대한 이자금액을 반환하는 메서드 | ||
|
||
### 4. 기타 | ||
|
||
- 자바에서 제공되는 컬렉션 프레임워크들을 활용하기 | ||
- BigDecimal 데이터 타입을 이용하여 금액을 다루기 | ||
- 모든 계좌를 관리하기 위한 중앙은행 클래스를 만들기 | ||
- 은행 정기점검 시간에 따른 계좌 송금 가능 여부는 고려 | ||
|
||
## 요구사항 X | ||
|
||
- 금리의 변동은 고려하지 않음 | ||
- 다른 은행 간 송금에 따른 수수료는 고려하지 않음 | ||
- 납입한도는 고려하지 않음 | ||
- 예금/적금의 중도해지는 고려하지 않음 | ||
- 보안과 관련된 사항은 고려하지 않음. | ||
- 사용자의 계좌 생성 제한을 두지 않는다. | ||
- 계좌 비밀번호는 고려하지 않는다. | ||
|
||
## 가정한 것 | ||
|
||
- 하나의 계좌는 하나의 성격(ex. 예금 or 적금)만 가질 수 있다. | ||
- 다양한 예금/적금 방식 중 하나씩 선택함 | ||
- 예금: 보통예금 방식 (언제든 입출금 가능) | ||
- 연 이자율 - 2.0% | ||
- 12개월을 기준으로 함 | ||
- 적금: 자유적금 방식 (언제든 자유롭게 적립 가능) | ||
- 입력한 만기일(3 ~ 12개월)에 따라 연 이자율이 달라짐 | ||
- 3 ~ 6개월 - 2.0% | ||
- 6 ~ 12개월 - 3.0% | ||
|
||
- 계좌번호는 12자리로 생성한다. | ||
|
||
## 도메인 설계 및 ERD | ||
|
||
### 1. 도메인 | ||
|
||
1. 계좌 | ||
- 계좌 종류 | ||
- 계좌 번호 | ||
- 소유자 | ||
- 잔액 | ||
- 활성화 여부 | ||
- 계좌 subclass | ||
- 예금 계좌 | ||
- 적금 계좌 | ||
- 목표 금액 | ||
- 만기일 | ||
|
||
1. 뱅크 | ||
- 이름 | ||
- 이자율 정책 | ||
|
||
### 2. ERD | ||
|
||
<img width="1051" alt="스크린샷 2024-01-30 오후 4 31 31" src="https://github.com/COW-edu/backend-cs-study/assets/127813439/6f036c79-4391-443a-bf7a-de40645f639a"> | ||
|
||
## API 설계 | ||
|
||
- 은행 생성 | ||
- 계좌 생성 | ||
- 특정 계좌 조회 | ||
- 계좌번호 | ||
- 주인 | ||
- 잔액 | ||
- 모든 계좌 조회 | ||
- 출금 | ||
- 출금 후 남은 잔액 | ||
- 입금 | ||
- 입금 후 잔액 | ||
- 송금 | ||
- 송금 후 남은 잔액 | ||
- 계좌 잔액에 대한 이자 금액 조회 | ||
- x구현 | ||
|
||
## 코드 설명 | ||
|
||
1. ‘@Inheritance’를 사용해 DB의 수퍼클래스 서브클래스를 구현 | ||
- Account와 SavingsAccount, InstallmentAccount의 관계 | ||
2. Bank의 이자 정책 | ||
- enum으로 관리 | ||
- Bank를 생성할 때 정책의 이름을 String 타입으로 받아온 뒤 정책 이름을 사용해 알맞은 정책 클래스를 반환한다. | ||
|
||
## 고민해야 할 것들 | ||
|
||
- 상속관계 매핑 | ||
- 동시성 이슈 | ||
- ex) 하나의 계좌에서 동시에 두 명이 돈을 입금 및 출금할 때 | ||
- ex) 출금과 계좌 조회를 동시에 할 때 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
38 changes: 38 additions & 0 deletions
38
assignmentTest/skill_check _ fastcampus/KoSeonJe/banking/build.gradle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
plugins { | ||
id 'java' | ||
id 'org.springframework.boot' version '3.2.2' | ||
id 'io.spring.dependency-management' version '1.1.4' | ||
} | ||
|
||
group = 'com.example' | ||
version = '0.0.1-SNAPSHOT' | ||
|
||
java { | ||
sourceCompatibility = '17' | ||
} | ||
|
||
configurations { | ||
compileOnly { | ||
extendsFrom annotationProcessor | ||
} | ||
} | ||
|
||
repositories { | ||
mavenCentral() | ||
} | ||
|
||
dependencies { | ||
implementation 'org.springframework.boot:spring-boot-starter-data-jpa' | ||
implementation 'org.springframework.boot:spring-boot-starter-jdbc' | ||
implementation 'org.springframework.boot:spring-boot-starter-web' | ||
compileOnly 'org.projectlombok:lombok' | ||
developmentOnly 'org.springframework.boot:spring-boot-devtools' | ||
runtimeOnly 'com.mysql:mysql-connector-j' | ||
runtimeOnly 'com.h2database:h2' | ||
annotationProcessor 'org.projectlombok:lombok' | ||
testImplementation 'org.springframework.boot:spring-boot-starter-test' | ||
} | ||
|
||
tasks.named('test') { | ||
useJUnitPlatform() | ||
} |
Binary file added
BIN
+42.4 KB
assignmentTest/skill_check _ fastcampus/KoSeonJe/banking/gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
5 changes: 3 additions & 2 deletions
5
.../gradle/wrapper/gradle-wrapper.properties → .../gradle/wrapper/gradle-wrapper.properties
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,7 @@ | ||
#Mon Jan 22 13:26:32 KST 2024 | ||
distributionBase=GRADLE_USER_HOME | ||
distributionPath=wrapper/dists | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip | ||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip | ||
networkTimeout=10000 | ||
validateDistributionUrl=true | ||
zipStoreBase=GRADLE_USER_HOME | ||
zipStorePath=wrapper/dists |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1 change: 1 addition & 0 deletions
1
assignmentTest/skill_check _ fastcampus/KoSeonJe/banking/settings.gradle
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
rootProject.name = 'banking' |
15 changes: 15 additions & 0 deletions
15
... _ fastcampus/KoSeonJe/banking/src/main/java/com/example/banking/BankingApplication.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package com.example.banking; | ||
|
||
import org.springframework.boot.SpringApplication; | ||
import org.springframework.boot.autoconfigure.SpringBootApplication; | ||
import org.springframework.data.jpa.repository.config.EnableJpaAuditing; | ||
|
||
@SpringBootApplication | ||
@EnableJpaAuditing | ||
public class BankingApplication { | ||
|
||
public static void main(String[] args) { | ||
SpringApplication.run(BankingApplication.class, args); | ||
} | ||
|
||
} |
Oops, something went wrong.