요약 - 직원 역할
Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 42번째.
챌린지
쉬움서로 다른 직원 유형이 동일한 인터페이스를 공유하면서 보너스를 다르게 계산하는 방법을 보여주는 급여 보너스 시스템을 구축해 봅시다!
네 개의 파일에 걸쳐 작은 직원 계층 구조를 만들 것입니다:
Employee.lua: 일반 직원을 나타내는 기본 클래스입니다. 생성자:new(name, salary)는 직원의 이름과 급여를 모두 저장해야 합니다. 급여의 10%(일반 직원의 기본 보너스)를 반환하는:calculateBonus()메서드와 이름을 가져오는:getName()메서드를 포함하세요.Manager.lua: Employee를 상속받는 자식 클래스입니다. 매니저는 열심히 일하고 보상을 받습니다.:calculateBonus()를 오버라이드하여 기본 10% 대신 급여의 20%를 반환하도록 하세요.Intern.lua: Employee를 상속받는 또 다른 자식 클래스입니다. 인턴은 급여에 상관없이50의 고정 보너스를 받습니다.:calculateBonus()를 오버라이드하여 항상 이 금액을 반환하도록 하세요.main.lua: 모든 것을 하나로 합칩니다! 직원의 이름에 대한 세 개의 입력과 급여에 대한 세 개의 입력을 읽습니다. 매니저 한 명, 인턴 한 명, 그리고 일반 직원 한 명을 생성하세요. 세 명 모두를 테이블에 저장한 다음, 루프를 돌며 각 사람의 이름과 계산된 보너스를 출력하세요.
여섯 개의 입력을 받게 됩니다:
- 매니저의 이름
- 매니저의 급여
- 인턴의 이름
- 인턴의 급여
- 일반 직원의 이름
- 일반 직원의 급여
컬렉션의 각 직원(매니저, 인턴, 일반 직원 순서)에 대해 이름과 보너스를 다음 형식으로 출력하세요:
{name}: {bonus}예를 들어, 입력값이 Alice, 5000, Bob, 2000, Carol, 3000인 경우 출력은 다음과 같아야 합니다:
Alice: 1000
Bob: 50
Carol: 300동일한 :calculateBonus() 호출이 각 직원의 유형에 따라 어떻게 다른 결과를 생성하는지 확인해 보세요. 이것이 바로 다형성(polymorphism)의 원리입니다! 매니저는 5000의 20%를 받고, 인턴은 고정된 50을 받으며, 일반 직원은 3000의 10%를 받습니다.
직접 해보기
-- main.lua: 모든 요소를 하나로 통합합니다
local Employee = require('Employee')
local Manager = require('Manager')
local Intern = require('Intern')
-- 입력 읽기
local managerName = io.read()
local managerSalary = tonumber(io.read())
local internName = io.read()
local internSalary = tonumber(io.read())
local employeeName = io.read()
local employeeSalary = tonumber(io.read())
-- TODO: Manager 한 명, Intern 한 명, 그리고 일반 Employee 한 명을 생성하세요
-- TODO: 세 명 모두를 테이블에 저장하세요 (순서: Manager, Intern, Employee)
-- TODO: 테이블을 반복문으로 돌면서 각 사람의 이름과 보너스를 출력하세요
-- 형식: {name}: {bonus}