Heim > Backend-Entwicklung > PHP-Tutorial > 面向对象分析与设计疑点

面向对象分析与设计疑点

WBOY
Freigeben: 2016-06-13 12:10:03
Original
1014 Leute haben es durchsucht

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

通过阅读网上的帖子,我觉得:
用户对象应该包含:用户名,密码,角色对象,积分对象
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 />
Nach dem Login kopieren


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

<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 />
Nach dem Login kopieren

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage