(A)のコーディング


     1  -- ******  クラス定義
     2
     3  class 従業員 ()
     4    名前     : string
     5    職種     : string
     6    年齢     : number
     7    住所     : string
     8  end
     9
    10  class SE (従業員)
    11    担当機種 : string
    12  end
    13
    14  class 営業 (従業員)
    15    売上     : number := 0
    16  end
    17
    18  class 事務 (従業員) end
    19
    20  class 会社 ()
    21    SEリスト : sequence of SE
    22    営業リスト : sequence of 営業
    23    事務リスト : sequence of 事務
    24  end
    25
    26  -- *********  メソッド
    27
    28  method 開始 会社 ()
    29    variable fd   : file
    30             キー : string
    31
    32    open fd "人事マスタ" input
    33    while not eof(fd) do
    34      read fd キー
    35      switch キー
    36        case "SE" insert new_SE() after SEリスト
    37                    send @SEリスト ファイル入力 (fd, キー)
    38        case "営業" insert new_営業() after 営業リスト
    39                    send @営業リスト ファイル入力 (fd, キー)
    40        case "事務" insert new_事務() after 事務リスト
    41                    send @事務" insert new_事務() after 事務リスト
    41                    send @事務リスト ファイル入力 (fd, キー)
    42      end
    43    end
    44    expose self using インヘリタンスのみ
    45  end
    46
    47  method ファイル入力 SE (fd : file, キー : string)
    48     set 職種 := キー
    49       read fd 名前, 年齢, 住所, 担当機種
    50  end
    51   
    52  method ファイル入力 営業 (fd : file, キー : string)
    53     set 職種 := キー
    54     read fd 名前, 年齢, 住所, 売上
    55  end
    56
    57  method ファイル入力 事務 (fd : file, キー : string)
    58     set 職種 := キー
    59     read fd 名前, 年齢, 住所
    60  end
    61
    62  method SE書式 会社 ( x : SE, i : index )
    63     format "~A" ( x.名前 )
    64  end
    65
    66  method SE選択 会社 ( x : SE, i : index )
    67     expose x using 表示
    68  end
   69
    70  method 営業書式 会社 ( x : 営業, i : index )
    71     format "~A" ( x.名前 )
    72  end
    73
    74  method 営業選択 会社 ( x : 営業, i : index )
    75     expose x using 表示
    76  end
    77
    78  method 事務書式 会社 ( x : 事務, i : index )
    79     format "~A" ( x.名前 )
    80  end
    81
    82  method 事務選択 会社 ( x : 事務, i : index )
    83     expose x using 表示
    84  end
    85
    86  -- ****** プレゼンテーション
    87
    88  frame インヘリタンスのみ 会社 { pushpin : true }
    89     scrollinglist : SEリスト
    90         { formatmethod : SE書式,
    91           selectmethod : SE選択 }
    92     scrollinglist : 営業リスト
    93         { formatmethod : 営業書式,
    94           selectmethod : 営業選択 }
    95     scrollinglist : 事務リスト
    96         { formatmethod : 事務書式,
    97           selectmethod : 事務選択  }
    98  end
    99
   100  frame 共通 従業員
   101    textfield    : 名前
   102    abbrevfield  : 職種
   103    numericfield : 年齢
   104    textfield    : 住所
   105  end
   106
   107  frame 表示 SE { pushpin : true }
   108     panel      : 共通
   109     textfield  : 担当機種
   110  end
   111
   112  frame 表示 営業 { pushpin : true }
   113     panel        : 共通
   114     numericfield : 売上
   115  end
   116
   117  frame 表示 事務 { pushpin : true }
   118     panel        : 共通
   119  end
   120
   121  start 会社 with 開始