面向对象分析与设计疑点

WBOY
Lepaskan: 2016-06-13 12:10:03
asal
989 orang telah melayarinya

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

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

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

<br />class score{<br /><br />    private $_oUser;<br /><br />    public function __construct($oUser){<br />        $this->_oUser = $oUser;<br />    }<br /><br />    public function add(){<br /><br />    }<br /><br />    public function update(){<br /><br />   }<br /><br />}<br />
Salin selepas log masuk


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

<br /><?php<br />//用戶基類<br />class BaseUser{<br />	public $userName;<br />	public $password;<br />	<br />	function __construct($userName,$password){<br />		$this->userName = $userName;<br />		$this->password = $password;<br />	}<br />}<br /><br />//角色類<br />class Role{<br />	private $userName;<br />	public $roleName;<br />	<br />	function __construct($userName,$roleName){<br />		$this->userName = $userName;<br />		$this->roleName = $roleName;<br />	}<br />	<br />	function GetRoleUserName()<br />	{<br />		return $this->userName;<br />	}<br />}<br /><br />//積分類<br /><br />class Score{<br />   private $userName;<br />   private $module;<br />   public $score;<br />   <br />   function __construct($userName,$module,$score){<br />   	   $this->userName = $userName;<br />	   $this->module = $module;<br />	   $this->score = $score;<br />   }<br />   <br />	function GetScoreUserName()<br />	{<br />		return $this->userName;<br />	}<br />	<br />	function GetScoreModule()<br />	{<br />		return $this->module;<br />	}<br /><br />   <br />}<br /><br />//用戶類 繼承用戶基類<br />class User extends BaseUser{<br />	public $role;<br />	public $score;<br />	<br />	function __construct($userName,$password,$roleName,$score){<br />		parent::__construct($userName, $password);<br />		$this->role = new Role($userName,$roleName);<br />		$this->score = new Score($userName,"module",$score);<br />	}<br />}<br /><br />$user = new User("user9527","123","xiaoming",100);<br /><br />echo "userName: ".$user->userName;<br />echo "<br>";<br />echo "password: ".$user->password;<br />echo "<br>";<br />echo "roleName: ".$user->role->roleName;<br />echo "<br>";<br />echo "score: ".$user->score->score;<br />echo "<br>";<br /><br />/*<br />userName: user9527<br />password: 123<br />roleName: xiaoming<br />score: 100<br /> */<br /><br /><br /><br />//code end<br />
Salin selepas log masuk

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan