Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > คือผมสงสัยมากถึงมากที่สุดว่า OOP ดีกว่า Function ธรรมดายังไง ? - -"



 

คือผมสงสัยมากถึงมากที่สุดว่า OOP ดีกว่า Function ธรรมดายังไง ? - -"

 



Topic : 078466



โพสกระทู้ ( 33 )
บทความ ( 0 )



สถานะออฟไลน์




คือผมสงสัยมากถึงมากที่สุดว่า OOP ดีกว่า Function ธรรมดายังไง ? - -"

ก็ตามหัวกระทู้ละครับ

เพราะถ้าเราจะใช้ function ไหนเยอะๆ ก็ แยก ออก มาก็ได้นิครับ

คือแยกออกมาไว้เป็นไฟล์ function โดยฉะเพราะเลยก็ได้นิครับ

ผมเลยไม่เห็นถึงความต่างระหว่าง function ธรรมดากับ OOP เลยครับ

หรือถ้าเป็น Winapp ก็แยกออกมาเป็นไฟล์ DLL ก็ ได้นิครับ

ช่วยตอบหน่อยครับ ผมอยากจะเริ่มหัด OOP แล้วละครับ

ไม่รู้สิฮ่ะ แต่ผมมีความรู้สึกว่า OOP มันดูหรูกว่าอะฮ่ะ ฮ่าๆ ๆ

เอิ่มมมมมมม แล้วถ้าเวลาเราทำงานส่งลูกค้างี้ ลูกค้าเขาก็ก็อปสคริปเราไปใช้ได้นะสิครับ

หรือไม่ต้องสนใจเรื่องแบบนั้นก็ได้หรอครับ ? ? ? ? อันนี้ผมก็สงสัยไม่แพ้กัน

ฮ่าๆ ๆ ๆ ๆ

ขอบคุณมากครับ



Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-05-16 03:10:48 By : IOlIDIl View : 4124 Reply : 4
 

 

No. 1



โพสกระทู้ ( 937 )
บทความ ( 2 )



สถานะออฟไลน์
Facebook

ไม่แน่ใจเท่าไหร่แต่พอรู้มาบ้างเล็กน้อยว่าการเขียนแบบoop ช่วยให้แบ่งแยกการทำงานอย่างชัดเจน โดยการประมวลผลต่างๆจะแยกส่วนจากdesign โดยการประมวลผลจะอยู่หลังบ้านจัดการได้ง่ายกว่า และ ง่ายต่อการเข้าใจ code เพราะมีการแยกส่วนของ design function process อย่างขัดเจน ผู้ที่มาทำงานต่อจากเรา ก็จะเข้าใจระบบมากขึ้น

มีใครทราบอีกมั้งค่ะ สนใจเหมือนกันลองเขียนมานิดๆหน่อยๆและจากเดิมที่เขียนแบบทั่วๆไป






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-16 08:58:46 By : LuckyStar
 


 

No. 2



โพสกระทู้ ( 752 )
บทความ ( 3 )



สถานะออฟไลน์
Blogger

OOP มีความซับซ้อนทางความคิดมากกว่าการเขียนแบบ Procedure มันมี Encapsulation คือการปกปิดไม่ให้ใช้งาน Method ที่เราไม่ต้องการ
ให้ใช้งานได้โดยตรง ต้องไปเรียก Method อื่นก่อนถึงจะเรียกใช้งาน Method ที่ต้องการได้ ความซับซ้อนนี้ เราเป็นคนกำหนดและออกแบบมา
เพื่อป้องกัน หรือ ให้เป็นระบบที่เป็นทิศทางของเรา คนอื่นที่มาพัฒนาต่อเข้าใจง่าย ถ้าหากผ่านตามาแล้วก็จะเห็น Public, Private, Protected

OOP ออกแบบมาเพื่อแก้ไขปัญหาการเขียนซ้ำ การทำซ้ำ หรือต้องเพิ่มในส่วนหนึ่งๆ แต่ไม่ต้องการแก้ไขตัว Function โดยตรงเพราะอาจ
กระทบกับการแสดงผลในส่วนอื่นๆ OOP ก็เพิ่มส่วนของการทำแม่แบบ แล้วขยายออกมาเป็น Class ใหม่ ถ้าลองศึกษาจะพบว่ามีเรื่องนี้อยู่ด้วย

OOP กับ PHP นั้นถูกนำมาพัฒนาต่อในเรื่องของ MVC หรือ PHP Frameworks อาทิ เช่น PHPCake, CodeIgniter, Zend ฯลฯ ตัวช่วยเหล่านี้
ก็จะออกแบบมาเพื่อให้เราลดการเขียนโค้ดที่เยอะเกินความจำเป็นหรือลดการเขียนซ้ำให้น้อยลง ท้ายที่สุดคุณอาจจะเขียน Frameworks เป็น
ขแงตัวเองและนำมันไปใช้ได้ในหลายๆ งาน

ส่วนตัว ผมหันมาใช้ OOP เพราะว่าเบื่อที่ต้องมานั่งเขียนอะไร ซ้ำๆ ซากๆ ทำงานใหม่ก็เขียนใหม่ ไม่ยืดหยุ่นเท่าที่ควรจะเป็น การเขียนแบบ
Procedure นั้นไม่ได้เสียหายอะไร แต่พอรับงานหลายๆ งาน ที่มีการทำงานไม่เหมือนกัน ก็ต้องเขียนใหม่ตลอด แต่ความจริงพอลองมองให้
กว้างๆ จะพบว่า เว็บไซต์จะมีแค่ ดู เพิ่ม แก้ไข ลบ ข้อมูล เป็นพฤติกรรมหลักๆ เลยครับ

หากผมผิดพลาดประการใด ต้องขออภัยมาด้วยนะครับ ตอบตามความเข้าใจน่ะครับ อิอิ

ส่วนเรื่องหลัง ไม่ขอตอบนะครับ เป็นวิจารณญานส่วนบุคคล อิอิ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-16 09:34:15 By : ALTELMA
 

 

No. 3



โพสกระทู้ ( 33 )
บทความ ( 0 )



สถานะออฟไลน์


โอ้วววว เข้าใจเพิ่มขึ้น เยอะเลย ครับ

เดี๋ยวผมจะลอง ศึกษา Zend framwork แล้วค่อยเขียนเป็น framwork ของตัวเองทีหลังครับ

ขอบคุณมากครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-16 21:49:18 By : IOlIDIl
 


 

No. 4

Guest


Code
<?php 

class TemperatureDegrees{
	private $value;
	private $temperatureUnit;
	
	public function __construct($value,$temperatureUnit){
		$this->value=$value;
		$this->temperatureUnit=$temperatureUnit;
		$temperatureUnit->setTemperatureDegrees($this);
	}
	
	public function setTemperatureUnit($temperatureUnit){
		$this->temperatureUnit=$temperatureUnit;
	}
	
	public function getValue(){
		return ($this->value);
	}
	
	public function setValue($value){
		$this->value=$value;
	}
	
	public function __toString(){
		return (string)$this->getValue();
	}
	
	public function add($addDegrees){
		return $this->temperatureUnit->add($addDegrees);
	}
	public function sub($subDegrees){
		return $this->temperatureUnit->sub($subDegrees);
	}
	public function addToSeft($addDegrees){
		$this->temperatureUnit->addToSeft($addDegrees);
	}
	public function toCelsius(){
		return $this->temperatureUnit->toCelsius();
	}
	public function toFahrenheit(){
	   return $this->temperatureUnit->toFahrenheit(); 
	}
	public function toKelvin(){
		return $this->temperatureUnit->toKelvin(); 
	}
}

class Celsius extends TemperatureDegrees{
	public function __construct($value){
		parent::__construct($value,new TemperatureUnitCelsius());
	}
}

class Fahrenheit extends TemperatureDegrees{
	public function __construct($value){
		parent::__construct($value,new TemperatureUnitFahrenheit());
	}
}
class Kelvin extends TemperatureDegrees{
	public function __construct($value){
		parent::__construct($value,new TemperatureUnitKelvin());
	}
}
	

class TemperatureUnit{

	public function setTemperatureDegrees($degrees){
		$this->degrees=$degrees;
	}
	
	protected function getName(){
		return  substr(get_class($this),strpos(get_class($this),'Unit')+4);
	}
	
	public function add($addDegrees){
		$class=$this->getName();
		$method='to'.$this->getName();
		return new $class($this->degrees->getValue()+$addDegrees->$method()->getValue());
	}
	public function sub($subDegrees){
		$class=$this->getName();
		$method='to'.$this->getName();
		return new $class($this->degrees->getValue()-$subDegrees->$method()->getValue());
	}
	
	public function subToSeft($subDegrees){
		$class=$this->getName();
		$method='to'.$this->getName();
		$this->degrees->setValue(new $class($this->degrees->getValue()-$subDegrees->$method()->getValue()));
		return $this->degrees;
	}
	public function addToSeft($addDegrees){
		$class=$this->getName();
		$method='to'.$this->getName();
		$this->degrees->setValue(new $class($this->degrees->getValue()+$addDegrees->$method()->getValue()));
		return $this->degrees;
	}
}
class TemperatureUnitCelsius extends TemperatureUnit{
	
	public function toCelsius(){
		return $this->degrees;
	}
	public function toFahrenheit(){
	    return new Fahrenheit($this->degrees->getValue() * (9 / 5) + 32);
	}
	public function toKelvin(){
		return new Kelvin($this->degrees->getValue() + 273.15);
	}
}

class TemperatureUnitFahrenheit	 extends TemperatureUnit{	
	public function toCelsius(){
		return new Celsius(($this->degrees->getValue() -32) * 5/9); 
	}
	public function toFahrenheit(){
		return new Fahrenheit($this->degrees->getValue());
	}
	public function toKelvin(){
	   return new Kelvin(($this->degrees->getValue() + 459.67) * 5/9);
	}

}

class TemperatureUnitKelvin	 extends TemperatureUnit{	
	public function toCelsius(){
		return new Celsius($this->degrees->getValue() - 273.15);
	}
	public function toFahrenheit(){
		return new Fahrenheit($this->degrees->getValue() * (9/5) - 459.67);
	}
	public function toKelvin(){
		return new Kelvin($this->degrees->getValue());
	}

}




$celsius=new Celsius(-150);
echo $celsius . 'C<br/>';
echo $celsius->toFahrenheit(). 'F<br/>';
echo $celsius->toKelvin() . 'K<br/>';
echo '<br/>';
$fahrenheit=new Fahrenheit(123);
echo $fahrenheit . 'F<br/>';
echo $fahrenheit->toCelsius(). 'C<br/>';
echo $fahrenheit->toKelvin(). 'K<br/>';
echo '<br/>';
$kelvin=new Kelvin(9.15);
echo $kelvin .'K<br/>';
echo $kelvin->toCelsius().  'C<br/>';
echo $kelvin->toFahrenheit().'F<br/>';

$result=$celsius->add($celsius)
				->add($celsius->toFahrenheit())
				->add($celsius->toKelvin())
				->add($fahrenheit)
				->add($fahrenheit->toCelsius())
				->add($fahrenheit->toKelvin())
				->add($kelvin)
				->add($kelvin->toCelsius())
				->add($kelvin->toFahrenheit())
				->sub(new Fahrenheit(1000));
echo '<br/>';		
echo $result . 'C<br/>';
echo $result->toFahrenheit(). 'F<br/>';
echo $result->toKelvin() . 'K<br/>';


ลองดูเป็นตัวอย่าง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-16 23:37:30 By : MenX
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : คือผมสงสัยมากถึงมากที่สุดว่า OOP ดีกว่า Function ธรรมดายังไง ? - -"
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 05
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่