요약 - 직원 계층 구조
Coddy PHP 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 91개 중 26번째.
챌린지
쉬움이 장에서 배운 모든 상속 개념을 하나로 묶는 직원 계층 시스템을 구축해 보겠습니다. 모든 직원이 갖추어야 할 요소를 정의하는 추상 기본 클래스를 만든 다음, 보너스를 다르게 계산하는 특수 직원 유형으로 이를 확장해 볼 것입니다.
코드는 네 개의 파일로 구성됩니다:
Employee.php— 모든 직원 유형의 기초가 되는 추상Employee클래스를 정의합니다. 보호된(protected) 속성인$name과$salary를 가져야 합니다. 생성자는 두 값을 모두 받아 설정합니다. 이름을 반환하는getName()메서드, 급여를 반환하는getSalary()메서드, 그리고 자식 클래스에서 반드시 구현해야 하는 추상 메서드calculateBonus()를 포함하세요. 또한"[name] earns $[salary] with bonus: $[bonus]"를 반환하는getSummary()메서드를 추가하세요. 여기서[bonus]는calculateBonus()를 호출한 결과입니다.Manager.php—Employee를 상속받는Manager클래스를 정의합니다. 파일 상단에 Employee 파일을 포함(include)하세요. 매니저는 백분율 기반의 보너스를 받습니다. 보호된$bonusPercentage속성을 추가하세요. 생성자는 이름, 급여, 보너스 백분율을 받아야 합니다. 처음 두 개는parent::__construct()를 사용하여 설정하고, 백분율은 직접 설정하세요.calculateBonus()를 구현하여 급여에 보너스 백분율을 곱하고 100으로 나눈 값을 반환하도록 하세요.Developer.php—Employee를 상속받는Developer클래스를 정의합니다. 파일 상단에 Employee 파일을 포함하세요. 개발자는 고정된 프로젝트 완료 보너스를 받습니다. 보호된$projectBonus속성을 추가하세요. 생성자는 이름, 급여, 프로젝트 보너스 금액을 받아야 합니다. 처음 두 개는parent::__construct()를 사용하여 설정하고, 프로젝트 보너스는 직접 설정하세요.calculateBonus()를 구현하여 단순히 고정된 프로젝트 보너스 금액을 반환하도록 하세요.main.php— Manager와 Developer 파일을 모두 포함하세요. 매니저 이름, 매니저 급여, 매니저 보너스 백분율, 개발자 이름, 개발자 급여, 개발자 프로젝트 보너스의 다섯 가지 입력을 받게 됩니다. 이 값들로Manager와Developer객체를 생성하세요. 먼저 매니저의getSummary()호출 결과를 출력하고, 그다음 개발자의 결과를 각각 별도의 줄에 출력하세요.
이 챌린지는 추상 클래스가 어떻게 계약을 강제하는지 보여줍니다. 모든 직원은 보너스를 계산할 수 있어야 하지만, 계산 로직은 역할에 따라 다릅니다. Manager는 급여의 백분율을 사용하고, Developer는 고정된 금액을 받습니다. 부모 클래스에 공유된 getSummary() 메서드는 다형성을 통해 두 가지 보너스 계산 방식 모두와 원활하게 작동합니다.
직접 해보기
<?php
require_once 'Manager.php';
require_once 'Developer.php';
// 입력 읽기
$managerName = trim(fgets(STDIN));
$managerSalary = floatval(trim(fgets(STDIN)));
$managerBonusPercentage = floatval(trim(fgets(STDIN)));
$developerName = trim(fgets(STDIN));
$developerSalary = floatval(trim(fgets(STDIN)));
$developerProjectBonus = floatval(trim(fgets(STDIN)));
// TODO: 매니저 입력을 사용하여 Manager 객체 생성
// TODO: 개발자 입력을 사용하여 Developer 객체 생성
// TODO: 매니저의 요약 정보 출력 (getSummary())
// TODO: 개발자의 요약 정보 출력 (getSummary())
?>객체 지향 프로그래밍의 모든 레슨
8매직 메서드
매직 메서드 소개__toString 및 __debugInfo__get, __set, __isset, __unset__call 및 __callStatic__clone 및 객체 복제__serialize 및 __unserialize요약 - 커스텀 컬렉션