복습 - 은행 계좌
Coddy Kotlin 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 57개 중 11번째.
챌린지
중급BankAccount(val owner: String, opening: Int) 클래스를 완성하세요. 해당 init 블록은 비어 있지 않은 owner(owner is empty)와 음수가 아닌 초기 입금액(opening must not be negative)을 요구합니다. balance에는 private setter가 있습니다. 거래 내역은 private MutableList에 저장되며 val transactions: List<String>로 노출됩니다. deposit(amount)와 withdraw(amount)는 성공 시 true를 반환합니다. 1 미만인 금액은 거부되며, 잔액보다 큰 금액을 인출하려는 요청도 거부됩니다. 성공한 변경 사항은 +50 또는 -20으로 기록됩니다. statement()는 Ada: 30 (+50, -20) 또는 Ada: 0 (no transactions)을 반환합니다.
제공된 코드는 소유자와 초기 입금액(name,amount)을 읽은 다음 d n 또는 w n 명령을 읽습니다. 실패한 명령에는 refused를 출력하고, 마지막으로 명세를 출력합니다. 유효하지 않은 계정인 경우 오류 메시지를 출력합니다.
코드는 BankAccount.kt에 작성하세요. Main.kt에는 제공된 입력/출력 코드가 포함되어 있으며 수정할 수 없습니다.
직접 해보기
fun main() {
// 제공된 입력/출력 코드: 그대로 유지하세요
val input = generateSequence(::readLine).toList()
try {
val (name, amount) = input[0].split(",")
val account = BankAccount(name, amount.toInt())
for (cmd in input.drop(1)) {
val (op, n) = cmd.split(" ")
val ok = if (op == "d") account.deposit(n.toInt()) else account.withdraw(n.toInt())
if (!ok) println("refused")
}
println(account.statement())
} catch (e: IllegalArgumentException) {
println(e.message)
}
}
객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: Kotlin 플레이그라운드