【发布时间】:2015-01-07 14:19:31
【问题描述】:
我们被分配了一个任务来构造面向对象的类,基本上只看一个在 main 方法中运行的测试器类。
using System;
using school;
namespace testschool{
public class Tester {
static void Main(){
Faculty scienceFac=University.createFaculty("Science");
Department compSciDept= scienceFac.openNewDepartment("Computer Science");
Department physicsDept= scienceFac.openNewDepartment("Physics");
Console.WriteLine(Object.ReferenceEquals(
scienceFac, physicsDept.Faculty)); //expected to return scienceFac object
Console.WriteLine(University.numberOfFaculties());
//..... MORE CODE
我认为他使代码尽可能地令人困惑,而且它确实变得令人困惑。我才刚刚开始,我已经被困住了,但这就是我到目前为止所拥有的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace testschool
{
class University
{
List<Faculty> all_faculty = new List<Faculty>();
public Faculty createFaculty(string faculty_name)
{
Faculty new_faculty = new Faculty(faculty_name);
all_faculty.Add(new_faculty);
return new_faculty;
}
public int numberOfFaculties()
{
return all_faculty.Count;
}
}
class Faculty
{
string faculty_name;
List<Department> all_departments = new List<Department>();
public Faculty(string faculty_name)
{
this.faculty_name = faculty_name;
}
public Department openNewDepartment(string department_name)
{
Department new_department = new Department(department_name, this);
all_departments.Add(new_department);
return new_department;
}
}
class Department
{
string department_name;
Faculty parent_faculty;
public Department(string department_name, Faculty faculty)
{
this.department_name = department_name;
parent_faculty = faculty;
}
public Faculty Faculty
{
get { return parent_faculty; }
}
}
}
到目前为止我的两个问题是:
首先:
这一行:Faculty scienceFac = University.createFaculty("Science"); 似乎是马上打电话给大学,没有对象引用。我将大学宣布为一门课程,因为它似乎也有像 .createFaculty("Science") 和 .numberOfFaculties() 这样的方法。那么这可能是一个错误吗?或者大学实际上是一个命名空间还是其他有自己方法的东西?
第二: 大学有院系,院系有系,最终到了有学生和有课程的地步。从代码中可以看出,我使用了列表,但我们还没有深入研究。只有数组(是的,我知道列表也是数组,但我说我只想坚持使用数组)。是否可以在不声明预定义大小的情况下使用数组? (我总是可以将大小设置为像 999 这样大的东西,但它并不实用)
【问题讨论】:
-
请注意,我还没有以任何方式测试过代码,我被大学错误困住了,如果它错了,我不想从一开始就继续处理错误的代码
-
Faculty scienceFac = University.createFaculty("Science");只能在你有public static Faculty createFaculty(string faculty_name)时使用