(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 開始