Menu
Coddy logo textTech

요약 - 직원 역할

Coddy Lua 여정의 Object Oriented Programming 섹션에 포함된 레슨 — 70개 중 42번째.

challenge icon

챌린지

쉬움

서로 다른 직원 유형이 동일한 인터페이스를 공유하면서 보너스를 다르게 계산하는 방법을 보여주는 급여 보너스 시스템을 구축해 봅시다!

네 개의 파일에 걸쳐 작은 직원 계층 구조를 만들 것입니다:

  • Employee.lua: 일반 직원을 나타내는 기본 클래스입니다. 생성자 :new(name, salary)는 직원의 이름과 급여를 모두 저장해야 합니다. 급여의 10%(일반 직원의 기본 보너스)를 반환하는 :calculateBonus() 메서드와 이름을 가져오는 :getName() 메서드를 포함하세요.
  • Manager.lua: Employee를 상속받는 자식 클래스입니다. 매니저는 열심히 일하고 보상을 받습니다. :calculateBonus()를 오버라이드하여 기본 10% 대신 급여의 20%를 반환하도록 하세요.
  • Intern.lua: Employee를 상속받는 또 다른 자식 클래스입니다. 인턴은 급여에 상관없이 50의 고정 보너스를 받습니다. :calculateBonus()를 오버라이드하여 항상 이 금액을 반환하도록 하세요.
  • main.lua: 모든 것을 하나로 합칩니다! 직원의 이름에 대한 세 개의 입력과 급여에 대한 세 개의 입력을 읽습니다. 매니저 한 명, 인턴 한 명, 그리고 일반 직원 한 명을 생성하세요. 세 명 모두를 테이블에 저장한 다음, 루프를 돌며 각 사람의 이름과 계산된 보너스를 출력하세요.

여섯 개의 입력을 받게 됩니다:

  1. 매니저의 이름
  2. 매니저의 급여
  3. 인턴의 이름
  4. 인턴의 급여
  5. 일반 직원의 이름
  6. 일반 직원의 급여

컬렉션의 각 직원(매니저, 인턴, 일반 직원 순서)에 대해 이름과 보너스를 다음 형식으로 출력하세요:

{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}

Object Oriented Programming의 모든 레슨