Menu
Coddy logo textTech

요약 - 직원 계층 구조

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 42번째.

challenge icon

챌린지

쉬움

이 장의 모든 상속 개념을 하나로 묶는 완전한 직원 계층 시스템을 구축해 보겠습니다. 기본 직원 클래스를 만들고 이를 확장하여 각각 고유한 동작을 가진 전문화된 역할을 만들 것입니다.

코드를 두 개의 파일로 구성합니다:

  • employee.dart: 여기에 직원 계층을 정의합니다:
    • String name, double salary, int id 속성을 가진 Employee 기본 클래스. 생성자와 '[name] (ID: [id]) - Salary: $[salary]'를 반환하는 getDetails() 메서드를 포함합니다.
    • Employee를 확장하고 int teamSize 속성을 추가하는 Manager 클래스. 상속된 필드에 super 파라미터를 사용하세요. getDetails()를 오버라이드하여 부모의 상세 정보 뒤에 ', Team: [teamSize] members'가 붙은 문자열을 반환합니다.
    • Employee를 확장하고 String language 속성을 추가하는 Developer 클래스. getDetails()를 오버라이드하여 부모의 상세 정보 뒤에 ', Specializes in [language]'가 붙은 문자열을 반환합니다.
    • Developer를 확장하고 int projectCount 속성을 추가하는 TeamLead 클래스. getDetails()를 오버라이드하여 Developer 버전에 ', Leading [projectCount] projects'를 추가하여 빌드합니다.
  • main.dart: 직원 파일을 임포트하고 각 직원 유형의 인스턴스를 생성합니다:
    • 이름이 'Alice', 급여가 50000.0, id가 101Employee를 생성합니다.
    • 이름이 'Bob', 급여가 75000.0, id가 102, teamSize가 8Manager를 생성합니다.
    • 이름이 'Carol', 급여가 65000.0, id가 103, language가 'Dart'Developer를 생성합니다.
    • 이름이 'David', 급여가 80000.0, id가 104, language가 'Python', projectCount가 3TeamLead를 생성합니다.
    • 각 직원에 대해 getDetails()를 호출한 결과를 한 줄에 하나씩 출력합니다.

TeamLead가 다단계 상속을 어떻게 보여주는지 주목하세요. TeamLeadDeveloper를 확장하고, DeveloperEmployee를 확장합니다. 각 단계는 super를 사용하여 부모 클래스의 정보를 보존하면서 자신만의 상세 정보를 추가합니다.

예상 출력:

Alice (ID: 101) - Salary: $50000.0, Team: 8 members
Bob (ID: 102) - Salary: $75000.0, Team: 8 members
Carol (ID: 103) - Salary: $65000.0, Specializes in Dart
David (ID: 104) - Salary: $80000.0, Specializes in Python, Leading 3 projects

직접 해보기

import 'employee.dart';

void main() {
  // TODO: name이 'Alice', salary가 50000.0, id가 101인 Employee를 생성하세요

  // TODO: name이 'Bob', salary가 75000.0, id가 102, teamSize가 8인 Manager를 생성하세요

  // TODO: name이 'Carol', salary가 65000.0, id가 103, language가 'Dart'인 Developer를 생성하세요

  // TODO: name이 'David', salary가 80000.0, id가 104, language가 'Python', projectCount가 3인 TeamLead를 생성하세요

  // TODO: 각 직원에 대해 getDetails()를 한 줄에 하나씩 출력하세요
}

객체 지향 프로그래밍의 모든 레슨