Skip to content

Latest commit

 

History

History
116 lines (95 loc) · 3.04 KB

File metadata and controls

116 lines (95 loc) · 3.04 KB

TypeScript クラス階層ドキュメント

概要

このプロジェクトは、人物(Person)を基底クラスとし、教師(Teacher)とエンジニア(Engineer)という2つの職業を表現する継承ベースの設計を実装しています。

クラス構造

Person(抽象クラス)

基底となる抽象クラスで、人物の基本的な属性と振る舞いを定義します。

プロパティ

  • species: 静的プロパティ、値は "Homo sapiens"
  • name: 読み取り専用の文字列
  • age: protected修飾子で保護された数値

メソッド

  • isAdult(): 年齢に基づいて成人か未成年かを判定
  • incrementAge(): 年齢を1増加
  • greeting(): 基本的な挨拶を表示
  • job: 抽象ゲッター/セッター

Teacher(具象クラス)

教師を表現するクラスです。

プロパティ

  • _job: 担当科目(private)
    • 選択可能な科目:Mathematics, Science, History, Art

メソッド

  • greeting(): 基本の挨拶に加えて担当科目を表示
  • job: ゲッター/セッター(科目の取得/設定)

Engineer(具象クラス)

エンジニアを表現するクラスです。

プロパティ

  • _job: 専門スキル(private)
    • 選択可能なスキル:JavaScript, TypeScript, Python, Java

メソッド

  • greeting(): 基本の挨拶に加えて専門スキルを表示
  • job: ゲッター/セッター(スキルの取得/設定)

使用例

// 教師のインスタンス作成
const teacher = new Teacher("Alice", 35, "Art");
teacher.greeting();
// 出力:
// Hello, My name is Alice.
// I am 35(adult) years old.
// I teach Art.

// エンジニアのインスタンス作成
const engineer = new Engineer("Bob", 16, "JavaScript");
engineer.greeting();
// 出力:
// Hello, My name is Bob.
// I am 16(minor) years old.
// I work as an engineer in JavaScript.

クラス図

classDiagram
    Person <|-- Teacher
    Person <|-- Engineer

    class Person {
        <<abstract>>
        +String name
        #Number age
        +static String species
        +isAdult() string
        +incrementAge() void
        +greeting() void
        +abstract job getter
        +abstract job setter
    }

    class Teacher {
        -Subject _job
        +job getter Subject
        +job setter Subject
        +greeting() void
    }

    class Engineer {
        -Skill _job
        +job getter Skill
        +job setter Skill
        +greeting() void
    }

    class Subject {
        <<enumeration>>
        Mathematics
        Science
        History
        Art
    }

    class Skill {
        <<enumeration>>
        JavaScript
        TypeScript
        Python
        Java
    }
Loading

注意点

  1. Personクラスは抽象クラスのため、直接インスタンス化することはできません
  2. jobプロパティは各子クラスで具体的な型(SubjectまたはSkill)を実装する必要があります
  3. 年齢による成人判定は18歳以上で行われます