0

我有以下情况:

在此处输入图像描述

如您所见,我有两个班级,讲师和学生。班级教师助理是讲师和学生的混合体,因为他们可以注册课程,但也可以讲一些基本主题(不被视为讲师)。我产生了使用接口对这种情况进行建模的想法,因为我将使用 Java 进行编程。这个建模正确吗?

在此处输入图像描述

这样 TA 类将实现接口教学,其中包含分配给该学生教授的课程数组。

但是,如果我以这种方式建模,我会意识到我完全失去了课堂讲师。我如何对这种多重继承的情况进行建模,但又不会丢失 Lecturers 类?我的意思是,如果我将 Lecturers 编程为一个接口,它就不会有任何我需要进一步的方法,例如,计算它的工资福利等等。有什么推荐吗?

4

3 回答 3

3

您可以制作Lecturer一个接口,然后同时拥有TeachingAssistantProfessor实现它。TeachingAssistant可以扩展Student,因为从逻辑上讲,助教就是学生。

于 2013-08-19T00:43:44.013 回答
1

一种选择是拥有TeacherandTeachable接口,然后拥有Lecturer实现Teacher(因为缺少像 Teacherable 这样的词!),Student实现TeachableTA实现Teacherand Teachable

LecturerStudent并且TA都可以扩展Faculty_Staff

于 2013-08-19T01:10:44.540 回答
1

在我看来,tbodt 的方法总体上是合理的。你只需要问:如果一些客户端代码需要Lecturer一个 TA,一个 TA 的实例就足够了吗?如果这有问题,您可以选择使用组合来设计它,将教学能力抽象到一个单独的类中,就像TeachingJob(我想不出更好的名字)。这样,实际Professors 和TeachingAssistants 唯一的共同点是他们有相似的教学工作;它们不属于同一个“类”(实际上是接口)。

混合方法将涉及TeachingJob接口Lecturer,例如Lecturer将有一个assign(TeachingJob assignment)方法。

于 2013-08-19T01:34:12.207 回答