돌아오신 것을 환영합니다
이번 영상에서는 어떻게 우리가 원하는 기능들을 적용하는지 살펴볼 것입니다
좋습니다
지난 영상에서는 BankAccount 안에 함수들을 준비해 두었습니다
그러면 본격적으로 그것들을 작업해 봅시다
첫 번째로 고려해야 할 것은 어떤 종류의 거래를 하든
예를 들어 얼마를 입금하든
돈을 입금하거나 출금할 때 그 거래를 transactionHistory에 저장하고 싶습니다
자
그럼 어떻게 하면 좋을까요?
먼저 balance를 업데이트할 수 있어야 합니다
balance는 Double입니다
이 프로퍼티를 업데이트해야 합니다
이런 식으로 두 줄로 만들어주겠습니다
그러면 두 프로퍼티가 더 잘 눈에 들어옵니다
이 accountHolder는 이전에 이미 BankMain에서 접근했었습니다
하지만 이제 이 balance를 바꿔볼 것입니다
balance를 우리가 deposit() 함수에 전달한 양 만큼 바꿀 것입니다
그리고
동시에 transactionHistory도 바꿔야 합니다
transactionHistory에 정보를 추가하는 것입니다
그러면 이제 거래만을 위한 별도의 클래스를 생성해도 됩니다
transactionHistory만을 다루는 것입니다
하지만 일단 지금은 간단하게 유지하겠습니다
그리고 이것은 String으로 저장하겠습니다
"$accountHolder deposited $$amount" ($accountHolder가 $$amount를 입금했습니다)
첫 번째 달러 기호가 실제 달러 기호로 표시되는 것입니다
두 번째 것은 Kotlin 내 코드로 amount를 표시하게 해주는 것입니다
그러니 이 달러 기호들 때문에 당황하지 마시기 바랍니다
보시다시피 이런 식으로 달러 기호를 사용한 것입니다
그리고 amount는 deposit()로 전달 받는 내용입니다
좋습니다
이것이 deposit() 함수입니다
이제 돈을 입금할 수 있습니다
그리고 출금은 알맞은 잔고가 있을 때만 가능합니다
즉 우리가 출금하려는 amount가 balance의 금액보다 높으면 안 됩니다
그렇지 않으면 마이너스 잔고가 되고 외상이 되는 것입니다
자
하지만 우리는 최대한 간단하게 유지하여 충분한 돈이 없으면 출금하지 못하도록
할 것입니다
amount〈=balance로 확인을 한 다음 출금을 할 수 있는 것입니다
이 경우 출금을 할 수 있습니다 계좌에 있는 돈과 같거나 적은 금액을 출금하는 것이기 때문입니다
아닐 경우 출금할 수 없다고 알려줍니다
따라서 println()에 "You don't have the funds to withdraw amount $amount" (잔액이 부족하여 $amount를 출금할 수 없습니다)
를 입력합니다
좋습니다
하지만 출금할 수 있을 땐 어떻게 해야 할까요?
만약 출금을 할 수 있다면 마찬가지로
balance에 작업을 해줍니다
이번에는 마이너스를 하는 것입니다
amount 만큼 말입니다
그리고 이를 다시 balance에 저장합니다
그러니까 이것이 하는 일은 이전에
다른 영상에서 짧게 다뤘었습니다
이는 balance = balance+amount과 동일합니다
자
따라서 두 줄이 같은 의미라는 것입니다
즉 balance는 balance 마이너스 amount입니다
자
그것이 이 문장이 하는 일입니다
그리고 출력 문구에 "deposited"(입금했습니다)를 "withdrawed"(출금했습니다)로 바꿔줍니다
"$accountHolder가 $$amount를 출금했습니다"가 됩니다
그러면 desposit()과 withdraw()가 해야 하는 일은 이 정도입니다
조금 헷갈렸지만 이제 displayTransactionHistory로 넘어가 보겠습니다
이는 모든 거래 내역을 표시하는 함수입니다
그래서 for 반복문을 다시 사용해 볼 것입니다
어떻게 했는지 기억나실 수도 있습니다
for 반복문을 사용해 리스트를 반복/순회했습니다
우리는 transactionHistory라는 mutable(변할 수 있는) 리스트가 있습니다
그리고 매 거래마다 transactionHistory에 항목이 저장됩니다
이 transactionHistory를 하나씩 다루는 것입니다
for(transaction in transactionHIstory)입니다
그러면 이제 transaction(거래)를 사용할 수 있습니다
혹은 그저 transaction을 출력해도 됩니다
그럼
이제 표시될 정보에 대한 설명도 추가해 줍시다
"Transaction history for $accountHolder" ($accounHolder의 거래 내역)
이것으로
사람들에게 이 거래 내역이 무엇인지 알려줍니다
누가 이러한 거래를 했는지 말입니다
그럼 프로그램을 테스트하기 위해 BankMain으로 돌아가서
denisesBankAccount에 접근해 보겠습니다
보시다시피 Denis Panjuta의 새로운 BankAccount가 있고 돈도 조금 있습니다
자
balance가 있습니다
이제 accountHolder를 출력하는 대신 denisesBankAccount에 입금을
해봅시다
예를 들어 $200을 입금해 봅시다
보시다시피 Int는 입력할 수 없습니다
이는 Double이기 때문에 소수점이 포함된 숫자를 입력해야 합니다
따라서
deposit() 함수에 전달해야 하는 것은 Double입니다
아무튼 계좌에 $200을 입금해 보겠습니다
그리고 거래 내역도 불러와 봅시다
.displayTransactionHistory입니다
이는 그저 Denis가 $200을 입금했다는 내용만 있을 것입니다
그럼 이 코드르르 실행해 봅시다
그러면 "Denis의 거래 내역"이 보입니다
"Denis가 $200을 입금했습니다"
그럼 다음으로 할 수 있는 것은 거래 내역을 조금 더 추가하는 것입니다
좋습니다
이번에는 돈을 출금해 봅시다
denisesBankAccount.withdraw()입니다
그리고 $1200을 출금했다고 해봅시다
그리고 이제 월급을 입금해 봅시다
예를 들어 3,000이라고 한 다음 또 조금 더 입금해 보겠습니다 Fo
그 다음 마지막으로 출금을 합니다
이번에 출금할 금액은
$3,333.15입니다
자
그럼 어떻게 최종 잔고를 얻을 수 있을까요?
왜냐하면 이것을 실행해 보면
모든 정보가 보이고
입금하고 출금하고 또 입금을 2번 했다가 출금한 것이 보입니다
하지만 계좌에 남은 금액은 어떻게 알 수 있을까요?
어러분이 직접 시도해 보시기 바랍니다
영상을 멈추고 시도해 보셨으면 좋겠습니다
좋습니다
시도해보셨을 거라고 생각하겠습니다
이는 그저 denisesBankAccount.accounHolder를 입력하고
" 's balance is"(의 잔고는)
다음에 balance를 가져옵니다
denisesBankAccount입니다
이제 이것은 accounHolder 다음에 balance를 표시해 줄 것입니다
즉 잔액이 얼마인지 알려주는 문장입니다
이 입금과 출금 과정이 다 끝나고
보시다시피 일련의 과정을 지나
마지막에 2005.0499999999997이라는 잔고가 보입니다
이건 무슨 일일까요?
이는 프로그래밍 언어 내 오류입니다
자
이 소수가 정확하지 않은 이유는 범위와 정밀도 간의 상충 관계를 최소화하여
실제 숫자의 공식적인 표현을 근사화하는 데 기여하기 때문입니다
그런 개념으로 프로그램은 종종
그저
완전한 숫자나 때로는 소수점을 표현할 수 없기 때문에 이러한 현상이 발생합니다
그래서 수많은 자릿수가 생겨나는 것입니다
좋습니다
그리고 이 애플리케이션은 이게 전부입니다
여러분을 위한 과제가 준비되어 있습니다
우리가 지금까지 작업한 내용입니다
아무튼 첫 애플리케이션을 통해 클래스의 개념을 확실히 하고 반복문 및 리스트도 확실히
배웠습니다
지금까지 배운 모든 개념들을 활용했습니다
변수도 사용했고
반복문도 사용했고
if문도 사용했었나요? 아 사용했었습니다
그리고 배운 모든 개념들을 사용해 이 작은 프로젝트를 완성했습니다
즐거우셨기를 바랍니다
그리고 다가올 과제에도 행운을 빕니다
그리고 꼭 완성시키기 바랍니다
좋습니다
그럼 다음 영상에서 뵙겠습니다