복습 - 은행 계좌 관리자
Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 91개 중 20번째.
챌린지
쉬움이 장에서 배운 모든 class property 개념을 하나로 모아 완전한 은행 계좌 관리 시스템을 만들어 보겠습니다. 계좌 데이터를 적절히 캡슐화하면서 은행 전체 통계를 추적하는 BankAccount class를 만들게 됩니다.
코드는 두 개의 파일로 구성합니다.
BankAccount.php: 개별 계좌를 관리하고 전체 은행 통계를 추적하는BankAccountclass를 Define합니다. class에는 다음 항목이 포함되어야 합니다.100으로 설정된 상수MINIMUM_BALANCE- 생성 후 변경할 수 없는 public readonly property
string $accountId - 계좌 소유자의 이름을 위한 public property
$holderName - 계좌 잔액을 보호하기 위한 private property
$balance 0에서 시작하는 private static property$totalAccounts0에서 시작하는 private static property$totalDeposits
getBalance(): current 잔액을 반환deposit($amount): 잔액에 금액을 더하고 total deposits tracker를 업데이트한 후 새로운 잔액을 반환withdraw($amount): 남은 잔액이 minimum balance constant 이상으로 유지되는 경우에만 잔액에서 차감하고, 새로운 잔액을 반환합니다. (출금이 allowed되지 않으면 변경되지 않은 잔액을 반환합니다.)- static method
getTotalAccounts(): 생성된 총 계좌 수를 반환 - static method
getTotalDeposits(): 모든 계좌에서 이루어진 모든 예금의 합계를 반환
main.php: BankAccount class 파일을 Include합니다. 네 개의 inputs를 받습니다. 첫 번째 account ID, 첫 번째 holder name, 두 번째 account ID, 두 번째 holder name입니다. 두 개의 계좌를 만들고, 두 계좌 모두 initial 잔액은500으로 설정합니다. 첫 번째 계좌의 경우:200을 deposit한 다음100을 withdraw합니다. 다음 형식으로 한 줄에 account ID, holder name, 잔액을 Print합니다:"[accountId]: [holderName] - $[balance]"두 번째 계좌의 경우:300을 deposit한 다음800을 withdraw하려고 시도합니다. (minimum balance 때문에 실패해야 합니다.) 이 계좌에도 동일한 형식으로 Print합니다. 마지막으로 total accounts와 total deposits를 별도의 줄에 Print합니다."Total Accounts: [count]""Total Deposits: $[amount]"
이 challenge에서는 변경할 수 없는 식별자를 위한 readonly properties, 보호된 데이터를 위한 getter methods가 있는 private properties, 고정된 규칙을 위한 constants, 그리고 은행 전체 통계를 위한 static properties와 static methods를 함께 사용합니다.
직접 해보기
<?php
require_once 'BankAccount.php';
// 입력 읽기
$firstAccountId = trim(fgets(STDIN));
$firstHolderName = trim(fgets(STDIN));
$secondAccountId = trim(fgets(STDIN));
$secondHolderName = trim(fgets(STDIN));
// TODO: 초기 잔액 500으로 첫 번째 계좌 생성
// TODO: 초기 잔액 500으로 두 번째 계좌 생성
// TODO: 첫 번째 계좌: 200 입금 후 100 출금
// TODO: 첫 번째 계좌 정보 출력: "[accountId]: [holderName] - $[balance]"
// TODO: 두 번째 계좌: 300 입금 후 800 출금 시도
// TODO: 두 번째 계좌 정보 출력: "[accountId]: [holderName] - $[balance]"
// TODO: Print "Total Accounts: [count]"
// TODO: Print "Total Deposits: $[amount]"
?>객체 지향 프로그래밍의 모든 레슨
직접 연습해 보세요: 온라인 PHP 컴파일러