在类的组成关系中,可以有1对1关联,1对n关联和n对n关联,请问各种关联在类的定义中怎么表示啊?请举例说明,每种关联的正确例子给20分!关联的定义:两个或多个特定类元之间的关系,它描述了这些类元的实例的联系。class CExchange //证券交易所
{
...
};class CCitizen //公民
{
var $id; //身份证号是公民的唯一标志
var $name;
var $sex;
...
};class CCompany //上市公司
{
var $exchange; //上市的交易所
var $manager; // 一个经理
var $employees; // N 个雇员
var $friends; //战略伙伴企业
function CCompany($exc) //构造,假设公司对应的交易所是固定不变的
{
$this->exchange = $exc;
$this->manager = "";
$this->employees = Array();
$this->friends = Array();
}
function EmpolyManager($manager) //聘用或更换经理
{
$this->manager = $manager;
}
function Employ($person) //雇佣普通雇员
{
$this->employees[] = $person;
}
function Dismiss($person) //解雇雇员
{
for ( $i = 0; $i < count($this->employees); $i ++ )
{
if ( $this->employees[$i]->id == $person->id )
{
array_splice($this->employees, $i, 1);
}
}
}
function AddFriend($friend)
{
$this->friends[] = $friend;
}
..
};$Nasdaq = new CExchange;
$BinLaden = new CCitizen;
$JodgeBush = new CCitizen;
$Sadam = new CCitizen; //“萨达姆”是这么拼的吗?呵呵
$TheBase = new CCompany($Nasdaq);
$TheBase->EmpolyManager($BinLaden);
$TheBase->Employ($JodgeBush);
$TheBase->Employ($Sadam);
$TheBase->AddFriend($Taliban);
...class CCompany 与 class CExchange 是 N 对 1 关联(假设一个公司只能在一个地方上市)
class CCompany 与 class CCitizen 有 1 对 1 关联($manager),也有 1 对 N 关联($employees)(假设一个人只能同时受雇于一个公司)
class CCompany 与 class CCompany 是 N 对 N 关联(同时还是自身关联),因为公司 A 可以与公司 B,C,D 有合作关系,B 同时又可以与其它许多公司有关联。其实还有更生活化的例子:一夫一妻、一夫多妻、多夫一妻、多夫多妻(只从理论的可能性上说的,呵呵)
{
...
};class CCitizen //公民
{
var $id; //身份证号是公民的唯一标志
var $name;
var $sex;
...
};class CCompany //上市公司
{
var $exchange; //上市的交易所
var $manager; // 一个经理
var $employees; // N 个雇员
var $friends; //战略伙伴企业
function CCompany($exc) //构造,假设公司对应的交易所是固定不变的
{
$this->exchange = $exc;
$this->manager = "";
$this->employees = Array();
$this->friends = Array();
}
function EmpolyManager($manager) //聘用或更换经理
{
$this->manager = $manager;
}
function Employ($person) //雇佣普通雇员
{
$this->employees[] = $person;
}
function Dismiss($person) //解雇雇员
{
for ( $i = 0; $i < count($this->employees); $i ++ )
{
if ( $this->employees[$i]->id == $person->id )
{
array_splice($this->employees, $i, 1);
}
}
}
function AddFriend($friend)
{
$this->friends[] = $friend;
}
..
};$Nasdaq = new CExchange;
$BinLaden = new CCitizen;
$JodgeBush = new CCitizen;
$Sadam = new CCitizen; //“萨达姆”是这么拼的吗?呵呵
$TheBase = new CCompany($Nasdaq);
$TheBase->EmpolyManager($BinLaden);
$TheBase->Employ($JodgeBush);
$TheBase->Employ($Sadam);
$TheBase->AddFriend($Taliban);
...class CCompany 与 class CExchange 是 N 对 1 关联(假设一个公司只能在一个地方上市)
class CCompany 与 class CCitizen 有 1 对 1 关联($manager),也有 1 对 N 关联($employees)(假设一个人只能同时受雇于一个公司)
class CCompany 与 class CCompany 是 N 对 N 关联(同时还是自身关联),因为公司 A 可以与公司 B,C,D 有合作关系,B 同时又可以与其它许多公司有关联。其实还有更生活化的例子:一夫一妻、一夫多妻、多夫一妻、多夫多妻(只从理论的可能性上说的,呵呵)
解决方案 »
- DateTime()疑问
- 诡异事件,数组问题
- 如何将从SQL语句读取的数据赋值给一个变量?
- PHP解析XML字符串问题,请高手出手相助!
- php连接SQLServer问题
- 有个多用户blog,每个用户注册后,blog访问目录是blog.xxx.com/username/,是如何实现的啊?
- 用PHP可不可以实现一个客户管理的管理程序
- 请教 PHP + aparche 的安装问题,急!!! 在线等待...
- html怎么判断一个字符串前两位等于数组中的某一个值
- 请教Jq获取导航栏内容(包括URL和栏目名字)并为其改变样式这个怎么写(PHP中)
- 急,请高手们,我现在在MYSQL数据库下如建库。还有难题请下面,小弟先谢了。在线等待。
- php4+iis5.0配置问题!?
例如上面的 $TheBase 与 $Nasdaq, $BinLaden, $JodgeBush, $Sadam 这些对象间都存在 link
哈哈哈,你的例举得不错,不过你的代码里只有1对1关联,所以我给你20分,我还需要1对多和多对多的例子。
其实,1对多或多对多关联的例子中,一定需要一个能存贮多个对象用的数据结构,我主要想看的就是这个数据结构如何实现,你上面的例子中没有用代码来表示一个能存贮多个对象的数据结构,因此,我仍然不知道1对多或多对多应该怎么实现,所以我只给了1对1关联的分数。
请继续回答之,我继续给分哦! ^_^
分数全给! 并且整理到FAQ,让大家共享!
你的面向对象功夫不错,这里回答面向对象问题的人寥寥无几,看来以后我的问题只有问你啦 ^_^