任何人都可以帮我解决有关C#中接口的问题

时间:2011-05-31 18:04:40

标签: c# interface

我被问到这个问题。

创建IPeople界面:教师和学生有许多共同之处,但有一些细微差别。创建一个接口以公开它们之间的所有commanlity。您需要修改教师和学生的部分类,以便他们实现此界面。

现在我不完全确定这告诉我要做什么。教师由以下人员组成: TeacherId,FirstName,LasteName,DateOfBirth,AnnualSalary,DepartmentId ,学生由以下人员组成: StudentId,FirstName,LastName, DateOfBirth,AverageScore,DepartmentId。

我猜那时候的名字是FirstName,LastName,DateOfBirth和DepartmentId。此外, 教师 会教授 课程 学生 参加 课程

现在我相信我需要修改教师的部分班级和学生的部分班级以将CourseID添加到班级中,这样我也可以在我需要的另外一个问题中创建两者之间的链接一个人的课程。我认为接口可以显示两个类的常用值,以创建一个可以过滤的列表。

所以我的问题是。到目前为止,我是否正确行事?我没有这种工作的经验。如果有人能指出我正确的方向来创建一个很棒的界面。任何编码或网站示例。

4 个答案:

答案 0 :(得分:1)

这里的完整答案将占用大量空间。许多书的全部章节都专门讨论这样的主题。总的来说,你走在正确的轨道上。

您可能遇到的问题是您正在考虑设计的深层次。那不是你的错。这个问题本身令人不安,并且表明提出这个问题的人可能也在错误的抽象层面上呈现材料。

问题是选择IPeople并不是一个好的开始(它应该是IPerson),然后它会继续要求你在详细程度上进行OO设计,你应该从更高的层面思考它。你应该考虑“学生和老师都是一种人”这样的事情,而不是像“学生和老师都有一个名为LasteName的领域”之类的东西。

让我举一个例子,说明这个问题的抽象程度太深,是否有问题。考虑问题的方式意味着您将创建一个IPerson界面来表示“一个人”的抽象概念。学生和老师都继承了这个IPerson。因此,您设计了一个界面,其中包含学生和教师之间的“所有共性”(就像问题所说)并且您提出 StudentId,FirstName,LastName,DateOfBirth,AverageScore,DepartmentId。(当你表示)。

在这个细节水平上尽可能好。但请考虑一下:以后您可能需要为学生的父母添加一个课程,从而为您提供第三种“亲切”的人。如果Parent有一个DepartmentId字段会有意义吗?

通过考虑设计的深度细节,就像这个问题所鼓励的那样,你可以(并且将会)最终得到可怕的脆弱设计,这些设计从更高的抽象层次来看是没有意义的。

答案 1 :(得分:0)

您已识别教师和学生对象的公共属性/成员。除非问题指定这样做,否则您不需要添加更多内容 - 只需为相交成员创建接口即可。你在那里大约有50%,所以现在你只需要创建界面并标记每个类来实现它。

答案 2 :(得分:0)

为了满足这一点,您所要做的就是创建具有您已识别的公共属性的接口,然后在部分类中有两个类实现接口,例如:

public partial class Student : IUniversityPerson{ ... }

其中IUniversityPerson是您创建的界面。在我阅读时,链接课程等不在问题的范围内。

答案 3 :(得分:0)

是的,你走在正确的轨道上......这里的共同点是老师和学生都是人。因此,您可以创建IPerson接口和Person基类。然后,学生和教师都将继承Person基类并实现IPerson接口。

这种划分允许您将处理一般“人”要求所需的代码分离到单独的模块中。它还允许更容易的维护,因为只要需要对常见的“人”属性进行更改,它只需要在一个地方。这些是面向对象编程的一些基本原则。