OOP in Dart — มาเรียนรู้ OOP ผ่าน Dart กันเถอะ [ep.1 : Class and Object]

Art Chawarat
3 min readAug 15, 2023

--

ใน ep. ที่แล้วผมได้พาทุกคนไปรู้จักกับ Dart และ OOP มาแล้ว รวมถึงสิ่งที่ควรทราบพื้นฐานเกี่ยวกับทั้งสองเรื่องนี้นะครับ วันนี้ผมก็จะพามาลงรายละเอียดกับศัพท์ที่ทุกคนเริ่มคุ้นชินแล้วอย่าง Class และ Object ครับ

Class คืออะไร

Class คือสิ่งที่เป็นต้นแบบหรือพิมพ์เขียวในการสร้างเป็น Object ต่างๆ โดยใน Class เนี่ยจะประกอบไปด้วย attributes และ methods ที่เราต้องการให้ Object ที่จะสร้างจาก Class เอาไปใช้งาน

การประกาศ Class ใน Dart

ใน Dart เราสามารถประกาศ Class ได้โดยใช้ keyword “class” แล้วตามด้วย {} และในการเขียนชื่อ Class เราจะใช้เป็นการเขียนแบบ PascalCase เช่น Employee, Student, Animal เป็นต้น

class ClassName {
// properties or fields
// methods or functions
}

จาก syntax ข้างต้น :

  • class คือ keyword ที่ใช้กำหนดว่าเราจะประกาศ class นะต่อไปนี้
  • ClassName คือ ชื่อของ class ที่จะอยู่ในรูปแบบของ PascalCase (ขึ้นต้นด้วยตัวพิมพ์ใหญ่ เมื่อมีคำมาต่อท้ายก็ขึ้นต้นด้วยตัวพิมพ์ใหญ่เช่นกัน)
  • Body ของ class อาจเป็น properties หรือไม่ก็เป็น functions
  • Properties ใช้สำหรับการเก็บข้อมูล หรือที่เรารู้จักกันในชื่อว่า attrributes
  • Functions ใช้ในการจัดการการดำเนินการต่างๆ รู้จักกันในชื่อว่า methods

เอาล่ะ เราได้รู้จักกับ syntax ของ class เบื้องต้นแล้ว เดี๋ยวเรามาดูตัวอย่างของการใช้งาน class กันเถอะ

การใช้งาน Class

หัวข้อนี้ผมจะแสดงตัวอย่างการใช้งาน class ใน code จริงๆนะครับ โดยผมจะใช้รูปภาพจาก ep. ที่แล้วมาแปลงเป็น code ใครที่สนใจกลับไปอ่าน ep. ที่แล้วสามารถกดจากลิงก์นี้ได้เลยย ep.0 : OOP คืออะไร??

แผนภาพของ Class Animal

เมื่อมาแปลงเป็น code แล้วจะได้แบบนี้ครับ

class Animal {
//properties or attributes
String? name;
String? color;
String? breed;
int? age;

//methods or functions
void canRun() {
print('Animal can run.');
}

void canEat() {
print('Animal can eat.');
}

void canSleep() {
print('Animal can sleep.');
}

}

Note : โปรแกรมนี้จะไม่ print อะไรออกมาเลย เพราะมันจะต้อง print ออกมาผ่าน การที่ object เรียกใช้เท่านั้น และ เครื่องหมาย ‘ ? ’ ใน code นี้คือ null safety ซึ่งผมอาจจะมีเขียนอธิบายในบทความต่อๆไปครับ

หากสังเกตจากโปรแกรมนี้จะเห็นได้ว่ามีส่วนที่ประกาศ String? name, … ส่วนนี้จะเรียกว่าเป็น properties หรือ attributes นะครับ และส่วนที่เป็น void canRun() {…}… ส่วนนี้จะเรียกว่า methods หรือ functions ครับ

เอาล่ะ เราก็ได้รู้จักกันกับ Class เบื้องต้นกันแล้ว หัวข้อต่อไปเราไปทำความรู้จักกับ Object กันน

Object คืออะไร

ใน OOP เนี่ย object มันคือวัตถุชิ้นหนึ่งครับ ที่ก่อร่างสร้างตัวมาจากต้นแบบ หรือ class ที่เรารู้จักกันมาเมื่อกี้นี่แหละ โดยจะสืบทอดคุณสมบัติต่างๆจาก class มาเลยครับ

การประกาศ Objectใน Dart

การประกาศ Object ใน dart เนี่ยก็สามารถทำได้ง่ายๆเลย โดยอาศัย syntax ดังนี้ครับ

ClassName objectName = ClassName();

Note :

- ClassName คือ ชื่อของ class (ตั้งชื่อแบบ PascalCase)

- objectName คือ ชื่อของ object (ตั้งชื่อแบบ camelCase)

การใช้งาน Object

เช่นเคยครับ ผมจะแปลงแผนภาพจาก ep. ที่แล้วออกมาเป็น code ในภาษา dart กันนะครับ โดยเราจะสร้าง object cat ที่สืบทอดคุณสมบัติต่างๆมาจาก class Animal กันครับ

แผนภาพของ object cat
// ตรงนี้คือส่วนที่ประกาศ class Animal
class Animal {
String? name;
String? color;
String? breed;
int? age;

void canRun() {
print('Animal can run.');
}

void canEat() {
print('Animal can eat.');
}

void canSleep() {
print('Animal can sleep.');
}

}

void main() {
// ส่วนตรงนี้คือส่วนที่ประกาศ object cat ครับ
Animal cat = Animal();
}

นี่คือการประกาศว่าเราจะมี object เปล่าๆตัวหนึ่งขึ้นมา โดย object ตัวนี้จะชื่อว่า cat และทำการสืบทอดคุณสมบัติต่างๆของ class Animal มาครับ โดยหากเราต้องการที่จะกำหนด attributes หรือ methods ให้กับ object นี้เราก็สามารถทำได้ครับดังตัวอย่างด้านล่าง

// ตรงนี้คือส่วนที่ประกาศ class Animal
class Animal {
String? name;
String? color;
String? breed;
int? age;

void canRun() {
print('Animal can run.');
}

void canEat() {
print('Animal can eat.');
}

void canSleep() {
print('Animal can sleep.');
}

}

void main() {
// ส่วนตรงนี้คือส่วนที่ประกาศ object cat
Animal cat = Animal();
// ส่วนนี้เป็นการกำหนด attributes และ methods ให้กับ object cat
cat.name = 'Tom';
cat.color = 'Orange';
cat.breed = 'Siamese cat';
cat.age = 2;
cat.canRun();
cat.canEat();
cat.canSleep();
}

Note :

- main method นี้คือส่วน entry point ของโปรแกรม โดยเราจะมาเขียนโปรแกรมกันใน method นี้

- เราอาจคุ้นเคยกับคำว่า new เมื่อเราจะสร้าง object ใหม่ใน OOP ภาษาอื่น แต่ใน dart เนี่ย มันไม่จำเป็นต้องประกาศ new ขึ้นมาก่อนนะ

มีเท่านี้แหละครับ object ใน dart ไม่ยากเลยใช่ไหมครับ ส่วนที่เหลือต่อไปมันก็จะมีแต่การประยุกต์เอาไปใช้กับ code ที่จำเป็นแล้วครับ พื้นฐานก็มีเท่านี้แหละ

ก็จบไปแล้วสำหรับ ep1. : Class and Object เดี๋ยว ep. ต่อไปเราจะมาเรียนรู้เรื่องอะไรไปพร้อมๆกัน โปรดติดตามตอนต่อไปปป กราบส์🙏

Previous Episode → ep.0 OOP คืออะไร???

Next Episode → ep.2 Constructor in Dart

--

--