ปัจจุบันภาษาโปรแกรมสมัยใหม่นั้น รองรับการเขียนโปรแกรมเชิงวัตถุ ไม่ว่าจะเป็น ภาษา Java Swift Python PHP C++,C# Objective C เป็นต้น แม้ว่าแนวคิดการเขียนโปรแกรมเชิงวัตถุจะมีมานานแล้วก็ตาม ช่วงปี พ.ศ. 2500-2510 เพื่อเป็นอีกทางเลือกในการเขียนโปรแกรมเพื่อแก้ปัญหา ซึ่งเดิมทีจะใช้การเขียนโปรแกรมเชิงโครงสร้างในการแก้ปัญหา
การศึกษาการเขียนโปรแกรมเชิงวัตถุนั้นยังเป็นพื้นฐานในการเรียนรู้ Design Patterns ช่วยให้การออกแบบซอฟต์แวร์มีแบบแผนที่ดี แต่ทั้งนี้ขึ้นอยู่กับองค์ความรู้ของผู้ที่ประยุกต์ใช้งานด้วยเช่นกัน
Design Patterns ได้รับการเผยแพร่ในหนังสือ Design Patterns: Elements of Reusable Object-Oriented Software ตั้งแต่ปี 2538 ซึ่งถูกนำมาประยุกต์ใช้งานจริงอย่างแพร่หลาย อาทิ เช่น Singleton, Facade, Strategy เป็นต้น และใน Kotlin มี คีย์เวิร์ค Object ในการสร้างคลาสแบบ Singleton
การสร้างคลาสในภาษา Java
ไวยากรณ์
class ClassName {
modifiers data_type properties;
modifiers return_type method() { }
}
modifier แบ่งเป็น
- access modifier เช่น default, public, protected, private
- non access modifier เช่น static, final, abstract, synchronized กับ volatile (threads)
ตัวอย่าง
// Product.java
public class Product {
private String productID;
private String productName;
Product(String p_id, String p_name){
productID = p_id;
productName = p_name;
}
public String getDetailProduct(){
return "Product ID : "+productID+" and Product Name : "+productName;
}
}
// TestDriveClass.java
public class TestDriveClass {
public static void main(String[] args) {
Product p = new Product("P0001","Nintendo Switch");
System.out.println(p.getDetailProduct());
}
}
การสร้างคลาสในภาษา Kotlin
ไวยากรณ์
class ClassName {
modifiers val properties:data_type
modifiers fun method():return_type{
}
}
modifier เกี่ยวกับ access control เช่น public, internal, fileprivate, private
ตัวอย่าง
// Product.kt
public class Product1 {
private val productID:String
private val productName:String
constructor(p_id:String, p_name:String){
productID = p_id
productName = p_name
}
public fun getDetailProduct():String{
return "Product ID : $productID and Product Name : $productName"
}
}
// TestDriveClassK.kt ไม่ต้องสร้างคลาสเพื่อเรียกใช้ กำหนด Main Class ใน Configuration เป็น TestDriveClassKKt
fun main(){
val p1 = Product1("P0002","Play Station 4")
println(p1.getDetailProduct())
}
มี constuctor 2 แบบ
primary constructor
class Product constructor(productName: String) { … }
หรือละคำว่า constructor
class Product (productName: String) { … }
secondary constructor
init{…} // ใช้ตอนสร้างอ็อบเจ็คแบบไม่ระบุพารามิเตอร์ มีมากกว่า 1 ได้
constructor(){...} // กรณีมีการระบุพารามิเตอร์หลายรูปแบบ
modifier เช่น open, override
เนื้อหาที่เกี่ยวข้อง
การสร้างคลาสในภาษา Swift
ไวยากรณ์
class ClassName {
modifiers var properties:data_type
modifiers func method()->return_type{
}
}
modifier เกี่ยวกับ access control เช่น public, internal, fileprivate, private
เนื้อหาที่เกี่ยวข้อง
ตัวอย่าง ใช้ playground
public class Product {
private var productID:String
private var productName:String
init(p_id:String, p_name:String){
productID = p_id
productName = p_name
}
public func getDetailProduct()-> String{
return "Product ID : \(productID) and Product Name : \(productName)"
}
}
var p = Product(p_id:"P0001",p_name:"Nintendo Switch")
print(p.getDetailProduct())
print(p.getDetailProduct()+"\n")
การสร้างคลาสในภาษา PHP
ไวยากรณ์
class ClassName {
modifiers $properties
modifiers function method(){ // ไม่ต้องระบุ return type
return // กรณีมีการส่งค่ากลับ
}
}
modifier
public, private, protected, abstract, final ใช้ได้กับ function
public, private, protected ใช้ได้กับ properties
abstract, final ใช้ได้กับ class
ตัวอย่าง PHP 7.x
class Product {
private $productID;
private $productName;
function __construct($p_id,$p_name){
$this->productID = $p_id;
$this->productName = $p_name;
}
public function getDetailProduct(){
return "Product ID : ".$this->productID." and Product Name : ".$this->productName;
}
}
$p = new Product("P0001","Nintendo Switch");
print $p->getDetailProduct();
function หากไม่ระบุ modifier จะเป็น public
การสร้างคลาสในภาษา Python
ไวยากรณ์
class ClassName:
def __init__(self):
def method(self):
}
ตัวอย่าง Python 3.x
class Product:
def __init__(self, product_id, product_name):
self.product_id = product_id
self.product_name = product_name
def getDetailProduct(self):
return "Product ID : "+self.product_id+" and Product Name : "+self.product_name
p1 = Product("P0001", "Nintendo Switch")
print(p1.getDetailProduct())
modifiers ของ properties
self.name=name # public attribute
self._name=name # protected attribute
self.__name=name # private attribute
modifiers ของฟังก์ชัน เช่น public, private, and protected
notation เช่น @staticmethod