1

在我花几个小时重组并发现这不是做某事的好方法之前,我需要一些指导。我的计划是针对学区的一对一计划。我有一个包含所有作业、学生和计算机的数据库。我正在构建一个面向对象的设计,以使某些东西的编码更加统一(以及所有其他好处)。此应用程序将用于指导用户完成收纸和笔记本电脑检查过程。这是我的困境。

一个学生(对象)可以有一个或两个当前任务(一个是借来的,另一个是永久的)。我最初构建了一个学生对象、一个作业对象和一个设备对象。然后,当创建学生时,我们使用查找工厂来查找该学生的当前作业。然后我从 student 构造中遍历这些,并创建一个分配对象数组,每个对象都查找设备信息。

这很好用,可以获得我需要的所有信息,但我发现很难使用,因为有一组赋值对象,并且有一些逻辑上需要遵循的规则。

必须首先提交借用任务(原始计算机因问题被送走时给出)。而且,一般来说,很难确定这个数组中的哪个赋值对象具有我需要知道的属性。

所以,我的想法(这可能不是一个好主意)是将其分解为一对一的关系。学生到作业到作业到设备。

然后,如果我需要知道学生是否有借用作业,我可以在作业对象中创建一个函数并调用student->assignments->hasLoanerAssignment()

你怎么看互联网?

4

1 回答 1

1

如果我理解正确,您是说借用任务与永久任务不同,这会导致复杂化。如果是这样,那么您可能想要使用继承。贷款和永久分配将是两种类型的分配,您可以给它们自己的属性和方法。

class Assignment 
{
    // instance of Device
    protected $device

    // instance of Student
    protected $student  
}

class LoanerAssignment extends Assignment 
{
    // various properties and methods relevant to loan
}
class PermanentAssignment extends Assignment 
{
    // various properties and methods relevant to permanent
}

假设您将这些数据保存在数据库中,为 Loaner 和 Permanent 制作单独的表,然后很容易向 Student 添加一个方法来查看它是否有一个外借任务,例如:

// in Student class
function hasLoanerAssignment()
{
    return 1 === $yourChosenDBAdaptor->getCountOfLoanerAssignents($this->_studentId);
}
于 2013-03-07T15:26:12.637 回答