用面向对象模型描述大学人员数据库如图2-20所示。学校的成员包括学生和工作人员,不管他们在学校中的作用,他们都具有学校中人的特性,如姓名、年龄、性别、地址等,同时还有适合于他们本身的特殊的特性。一个本科生除具有符合大学生的特性,还有只适合于本科生的特殊的特性。研究生也是如此。 下面是学校成员的类层次定义。由定义中可以看到,人与学生和教员、以及学生与本科生和研究生之间的关系就是超类与子类的关系。本科生除了具有大学生的特性以外,不包含自己特殊的特性,但每个本科生的状态约束值必须是本科生"undergrad"。而研究生不是学生对象的简单子集,因为研究生除了学生的特性外,还有他们自己的独有的特性,如导师等。本科生类和研究生类组成的对象是学生类对象集合的子集。人、教师、学生、本科生和研究生的描述如下。 图2-24 大学成员层次结构 name: string; sex: [M,F]; age: integer; address: string; spouse: person; ENDCLASS CLASS teacher(教员); IS_A person; status: string; salary: real; CONSTRAINT status='teacher'; ENDCLASS CLASS student(学生); IS_A person; status: string; degree:integer; record:[grade:integer,course:string]; CONSTAINT status='undergrad','postgrad' ; METHOD averge-grade(record, student); ENDCLASS CLASS undergrad(本科生); IS_A student ; CONSTAINT status='undergrad'; ENDCLASS CLASS postgrad(研究生); IS_A student; divisor: teacher; CONSTAINT status='postgrad'; ENDCLASS |