분주한 도시의 젊은 사업가 Mia에게는 몇 가지 문제가 있습니다
그녀의 재정을 관리할 더 좋은 방법이 필요하며 이를 위한 앱을 생각해냅니다
자
앱이 지녀야할 예쁜 디자인과 기능들을 생각해 냈습니다
그리고 결국
멋진 앱이 완성되었으며 그녀의 은행 계정을 확인할 수 있을 뿐 아니라
거래 내역도 조회가 가능해 소비를 조절할 수도 있습니다
이러한 내용의 이야기가 있었으며 그녀가 구상한 UI는 꽤 괜찮아 보였습니다
하지만 이것들은 아직 준비가 되지 않았으며 간단한 것으로 시작해 볼까 합니다
간단한 은행 계좌 프로그램을 만들어볼 것이며
이전에 사용한 여러 개념들을 활용하게 될 것입니다
클래스, 함수, 생성사 및 if문 등
많은 것을 활용할 것입니다
좋습니다
이 프로그램의 끝에 여러분을 위한 작은 과제가 있습니다
하지만 우선 이 프로젝트부터 시작해 봅시다
그러면 이제
새로운 프로젝트를 생성하여 No Activity를 선택하고
Finish(완료)를 클릭합니다
BankAccountProgram(은행계좌프로그램)이라고 부르겠습니다
Android 앱의 맥락에서 이는 앱이 아니기 때문에 프로그램이라고 하겠습니다
그리고 완료를 클릭합니다
로딩을 하는 동안 은행 계좌에 무엇이 필요한지 생각해 봅시다
은행 계좌에는 예금주 이름과 잔고 등이 필요합니다
그리고 은행은 여러 은행 계좌를 저장 혹은 소유하기 때문에
이를 분리된 인스턴스로 사용해야 합니다
따라서 나중에 그 은행 계좌을 확장시켜 볼 수도 있습니다
더 많은 정보가 필요한데 예를 들어 거래 내역은 개별 거래들의 리스트가 될 수도 있습니다
그리고 은행 계정이 저장할 수 있는 메시지 등 많은 것들이 있습니다
만약 리스트만 사용하려고 하면 한정적이겠지만 만약 은행 계좌 클래스를 사용하면
수많은 데이터 종류들을 사용할 수 있는 선택지가 주어지며 추후에 수정을 하기도 좋습니다
은행에 필요한 사항들은 계속 보완해 보겠습니다
좋습니다
그러면 kotlin+java에 가서
새로운 Kotlin Class/File을 생성합니다
이것은 BankMain(은행메인)이라고 부르겠습니다
File입니다
우리 은행의 시작점이 될 것입니다
fun main()을 입력합니다
이는 애플리케이션의 진입점인데 이 또한 콘솔 애플리케이션이기 때문입니다
그리고 5일차 강의부터는 실제 Android 앱들을 만들어보기 시작할 것입니다
앞서 말했듯 새로운 클래스가 필요합니다
그럼 여기서 클래스도 생성해 줍시다
이것은 BankAccount라고 하겠습니다
좋습니다
이 class BankAccount는 특정 정보들이 필요할 것입니다
따라서 여기 프로퍼티를 생성하는 곳에 생성자를 생성해 보겠습니다
그리고 제가 미리 말씀드린 프로퍼티에는 accountHolder(예금주)가 있었는데 String 종류일 것입니다
그리고 balance(잔고)로 시작해 볼 것입니다
물론 나중에 더 확장할 수도 있지만 지금은 이 둘로도 충분합니다
balance에는 Double을 사용할 것이며 잔고는 꼭 정수가 아니기 때문입니다
예를 들어 $2,000.03d일 수도 있습니다
자
그럼 은행 계좌에 바라는 기능들에는 무엇이 있을까요?
그러니까 은행 계좌가 우리에게 해줄 수 있는 동작들은 무엇이 있을까요?
글쎄요, deposit(입금)을 할 수도 있습니다
그럼 입금을 시작해 봅시다
무엇을 입금하려고 할까요?
amount(금액)입니다
얼만큼 입금하고 싶은지를 전달하는 것입니다
다른 함수는 출금으로 하면 좋겠습니다
withdraw(출금)도 Double 종류의 amount가 필요합니다
그리고 거래 내역을 표시해 줄 수도 있습니다
따라서 displayTransactionHistory(거래내역표시)도 또 다른 함수로 사용하겠습니다
이것에는 추가적인 정보가 필요하지 않습니다
바로 거래 내역을 표시할 것입니다
자
deposit() 함수는 계좌에 돈을 넣을 수 있도록 합니다
withdraw() 함수는 계좌로부터 돈을 인출할 수 있도록 하고
displayTransactionJistory는 그간의 거래 내역들을 전부 보여줄 것입니다
따라서 모든 입, 출금 기록을 저장해야 합니다
그것을 리스트해 저장해 볼 것입니다
그리고 이 안에 거래 내역을 담을 변수를 생성해 봅시다
private val transactionHistory입니다
String으로 된 mutable(변할 수 있는) 리스트입니다
지금 시점에는 이 리스트에 아무 내용물도 없습니다
그래서 무슨 종류의 리스트가 될 것인지 미리 정의하는 것입니다
아니면 이런 식으로 빈 String으로 시작하면 String 키워드가 필요 없습니다
하지만
만약 리스트에 추가할 목록의 데이터 종류를 정의하지 않으면 리스트는
종류를 모르기 때문에 수동으로 정의하고 이 홑화살괄호를 사용합니다
이제
이 리스트는 private이 될 것인데 그 이유는 private 키워드가 이 변수에 접근성을
바꿔주기 때문입니다
이전에 보셨던 것처럼 클래스를 다룰 땐
만약 BankAccount로 객체를 생성하려고 한다면
예를 들어 denisesBankAccount(denis의은행계좌)라고 한다면
이는 BankAccount의 객체입니다
그러면 예금주 이름과 또 무엇이었죠?
잔고가 필요한데
1343으로 해보는 것을 어떨까요?
이것은 사실 Double이어야 합니다
이런 식으로 말입니다
이것이 제가 가진 달러입니다
이렇게 denisesBankAccount를 만들어 보았습니다
그리고 여기서 denisesBankAccount.accountHolder에 접근할 수 있습니다
따라서 이 계좌의 예금주가 누군지 출력할 수 있습니다
좋습니다
무슨 뜻인지 살펴보기 위해 실행해 보도록 하겠습니다
보시다시피 "Denis Panjuta"를 잘 출력합니다 그리고 늘 새로운 프로젝트를 생성할 때 그랬듯
두 번 실행해야 처음에 오류가 사라집니다 아무튼 이제 accountHolder에는 접근할 수 있지만
하지만 transactionHistory에는 접근할 수가 없습니다 왜냐하면 private이기 때문에
BankAccount 클래스 외부에서 접근이 불가합니다
그래서 denisesBankAccount에 접근하려고 보면 제안되는 것이 accountHolder와 balance
뿐입니다
만약 private을 없애서 공용으로 만들면 이 transactionHistory에 접근할 수
있습니다
보시다시피 외부에서도 접근이 가능합니다
하지만 제가 원하는 것은 계좌 내역을 저장하는 것입니다
이것이 BankAccount 내에서만 안전하게 보관되길 원합니다
따라서 외부에서 접근할 수 없습니다
BankAccount 클래스 내 함수들만이 이에 접근할 수 있습니다
자 그것이 private의 역할입니다
이 클래스 내에서만 보이도록 하고 클래스 내 함수들만 이것을 다룰 수
있습니다
그리고 그것은 displayTransactionHistory가 사용할 것이며
어떻게 transactionHistory를 표시할지는 클래스 내 로직을 적용할 것입니다
외부에서 활발하게 transactionHistory에 접근하는 것 대신 말입니다
그러므로 예를 들어 BankMain 클래스에서는 데이터를 표시할 수는 있지만
직접 데이터를 수정하거나 접근할 수는 없습니다
그러한 차이점이 있는 것입니다
자
그리고 이 모든 것을 적용해 보기 전에 잠깐 멈추도록 하겠습니다
영상이 너무 길어지고 있기 때문입니다
이번 영상에서는 두 가지를 배웠습니다
우선 리스트를 구축할 때 아무 값 없이도 리스트의 종류를 정의할 수 있다는
것입니다
Kotlin은 리스트가 어떤 종류여야 하는지 추측할 수 없습니다
우리가 수동적으로 리스트 내 항목들이 어떤 종류인지 알려주어야 합니다
그리고 private이라는 키워드가 변수를 숨겨주고 그 변수가 생성된 클래스
외부에서의 접근을 불가하게 합니다
이번 영상은 여기까지입니다
다음 영상에서 뵙겠습니다