0

0

面向对象分析与设计疑点

php中文网

php中文网

发布时间:2016-06-13 12:10:03

|

1105人浏览过

|

来源于php中文网

原创

面向对象分析与设计疑问
各位大侠好,小弟接触面向对象也有段时间了,可每次设计新系统时都会遇到关于对象如何拆分与设计的问题,特来请教一番。
比如,现在的系统要求有:用户,角色,积分。
用户有:用户名,密码。
角色有:角色名。
积分有:积分值,所属用户,所属模块。

通过阅读网上的帖子,我觉得:
用户对象应该包含:用户名,密码,角色对象,积分对象
code: 
class User {
  public $username;
  public $password;
  public $role;
  public $score;
}

请问是这样设计的吗?可我总感觉哪地方不对,或许我觉得,角色对象和积分对象不作为用户对象的属性,当需要获取用户对象时,重新new一下角色对象,然后将用户对象传入,这样获取用户所对应的角色。这样设计合理吗?
------解决思路----------------------
你第一设计方案,本身并无不妥。只是写死了
而你的第二方案就灵活多了
至于是将用户传入角色,还是将角色传入用户,就是设计模式的选取了
------解决思路----------------------
積分可以分到另一個 class去做。
積分類只增刪改積分,不用處理會員其他資料。例如


class score{

private $_oUser;

public function __construct($oUser){
$this->_oUser = $oUser;
}

public function add(){

}

public function update(){

}

}


具體要看需求。
------解决思路----------------------
上班無聊借此貼來練手並複雜面向對象基礎


//用戶基類
class BaseUser{
public $userName;
public $password;

function __construct($userName,$password){
$this->userName = $userName;
$this->password = $password;
}
}

//角色類
class Role{
private $userName;
public $roleName;

function __construct($userName,$roleName){
$this->userName = $userName;
$this->roleName = $roleName;
}

function GetRoleUserName()
{
return $this->userName;
}
}

//積分類

class Score{
private $userName;
private $module;
public $score;

function __construct($userName,$module,$score){
$this->userName = $userName;
$this->module = $module;
$this->score = $score;
}

function GetScoreUserName()
{
return $this->userName;
}

function GetScoreModule()
{
return $this->module;
}


}

//用戶類 繼承用戶基類
class User extends BaseUser{
public $role;
public $score;

function __construct($userName,$password,$roleName,$score){
parent::__construct($userName, $password);
$this->role = new Role($userName,$roleName);
$this->score = new Score($userName,"module",$score);
}
}

$user = new User("user9527","123","xiaoming",100);

echo "userName: ".$user->userName;
echo "
";
echo "password: ".$user->password;
echo "
";
echo "roleName: ".$user->role->roleName;
echo "
";
echo "score: ".$user->score->score;
echo "
";

/*
userName: user9527
password: 123
roleName: xiaoming
score: 100
*/



//code end

相关专题

更多
php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

6

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

3

2026.01.13

jQuery 正则表达式相关教程
jQuery 正则表达式相关教程

本专题整合了jQuery正则表达式相关教程大全,阅读专题下面的文章了解更多详细内容。

1

2026.01.13

交互式图表和动态图表教程汇总
交互式图表和动态图表教程汇总

本专题整合了交互式图表和动态图表的相关内容,阅读专题下面的文章了解更多详细内容。

15

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

4

2026.01.13

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

5

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python 学习手册
Python 学习手册

共16课时 | 13.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号