สมัครเรียนโทร. 085-350-7540 , 084-88-00-255 , ntprintf@gmail.com

Tutorial DART

L01 DART INTRO L02 DART HOWTO L03 DART GETTING START L04 DART SYNTAX L05 DART VARIABLE 01 L06 DART VARIABLE 02 L07 DART FUNCTION L08 DART OPTIONAL NAMED POSITONAL L09 DART LIST L10 DART CLASS L11 DART INHERITANCE MIXIN L12 DART EXCEPTION L13 DART GENERATOR AND ITERATOR L14 DART OPERATION

การสร้าง class

เรียนเขียนโปรแกรมง่ายๆ กับ Expert Programming Tutor ในบท  การสร้าง class
ก็เหมือนกับการสร้าง class กับการที่เราสร้างclass ในพวก java อะไรพวกนี้ เเต่มันจะมีฟีเจอร์บางอย่างที่มันเพิ่มเข้ามาในภาษา dart เรามาเรียนรู้กัน เรื่องเเรกเรามาพูดถึงการสร้าง class แบบง่ายๆก่อน

void main() {
class PersonV1 {
  String fname;
  String lname;
  void display() {
    print("Fname: $fname, Lname: $lname");
  }

เราสร้าง class ขึ้นมาเเล้ว ต่อไปเราจะมาสร้าง object  พอเราสร้างขึ้นมา มันก็จะไปเรียก default constructor ซึ่งตอนนี้เราไม่มี default constructor  เราก็พิมพ์ 

void main() {
  var obj1 = PersonV1();
  obj1.display();
class PersonV1 {
  String fname;
  String lname;
void display() {

    print("Fname: $fname, Lname: $lname");
  }

ผลลัพธ์

Fname: null, Lname: null

ได้ผลลัพธ์คือ none ก็เป็นไปตามค่า เราก็สามารถใส่ค่าให้มันได้ แต่ตัวอย่างนี้ยังไม่มีการเรียกใช้ default constructor กรณีนี้ถ้าเขาไม่ใส่ค่าเข้ามามันก็จะปริ้นค่า none เราก็ควรมี default constructor มาดูตัวอย่าง

void main() {
  // class
  var obj1 = PersonV1();
  obj1.fname = "Expert";
  obj1.lname = "Programming";
  obj1.display();
var obj2 = PersonV2();
  obj2.display();]
class PersonV1 {
String fname;
String lname;
void display() {
print("Fname: $fname, Lname: $lname");
}

เราก็จะกำหนดค่า default constructor เเละสร้าง object
ตัวอย่าง
การทำ default constructor  ในกรณีที่เราไม่ใส่ค่าเข้ามา 

void main() {
  // class
  var obj1 = PersonV1();
//  obj1.fname = "Expert";
//  obj1.lname = "Programming";
  obj1.display();
  var obj2 = PersonV2();
  obj2.display();
class PersonV1 {
  String fname;
  String lname;
void display() {

    print("Fname: $fname, Lname: $lname");
  }
}
class PersonV2 {
  String fname;
  String lname;
  PersonV2() {

    this.fname = "none";
    this.lname = "none";
  }

ก็จะได้ผลลัพธ์ none ออกมา 

Fname: null, Lname: null
Fname: none, Lname: none

เราก็ต้องมีค่าเริ่มต้นเเละเปลี่ยนแปลงค่าได้ และสร้าง object ตัวที่ 3 คือ Constructor Overriding จะทำการใส่พารามิเตอร์เข้ามา 

void main() {
  // class
  var obj1 = PersonV1();
//  obj1.fname = "Expert";
//  obj1.lname = "Programming";
  obj1.display();
  var obj2 = PersonV2();
  obj2.display();
  //constructor named
  var obj3 = PersonV2("CAT", "MEOW");

  obj3.display()

PersonV2(String fname, String lname) {
    this.fname = fname;
    this.lname = lname;
  }
  void display() {
    print("Fname: $fname, Lname: $lname");
 }

      มันฟ้อง error เมื่อเราสร้างทั้ง 2 ตัวซ้ำกัน คือ   default constructor  และ Constructor overlodeing และทำไม 2 ตัวนี่ถึงอยู่คู่กันไม่ได้ล่ะ ก็เพราะว่าในภาษา dart เนี่ย ถ้าเราจะสร้าง  Constructor Overriding เราต้องตั้งชื่อให้มันด้วย มันถึงจะรันผ่าน
ตัวอย่าง

PersonV2.tutor_name(String fname, String lname) {
    this.fname = fname;
    this.lname = lname;
  }
var obj3 = PersonV2.tutor_name("CAT", "MEOW");
  obj3.display();

ต่อมาการเป็นสร้างclass อีกแบบ คือ setter,getter โจทย์ของเรา คือ ตอนที่เรามี fname และ lname มันก็ต้องมีเพศชายกับหญิง เเต่เราไม่อยาก พิมพ์ Mrs. Mr. เราเลยต้องการเรียกใช้ set เพื่อเติมให้เราเอง
ตัวอย่าง
เราก็จะประกาศ set ขึ้นมา 

class PersonV3 {
  String fname;
  String lname;
  PersonV3() {
   this.fname = "none";
    this.lname = "none";
  }
    PersonV3.tutor_name(String fname, String lname) {
    this.fname = fname;
    this.lname = lname;
  }
    void set nameMele(String fname) {
    this.fname = "Mr. ${fname}";
  }
   void set namefeMele(String lname) {
   this.fname = "Mrs. ${lname}";
  }
   String get vipMember {
   return "[VIP] $fname $lname";
  }
   void display() {
   print("Fname: $fname, Lname: $lname");
  }
}

นี่คือการสร้าง set ขึ้นมา 

  void set nameMele(String fname) {
    this.fname = "Mr. ${fname}";
  }
  void set namefeMele(String lname) {

    this.fname = "Mrs. ${lname}";
  }

เดี๋ยวลองมาเรียกใช้ให้มันโยนเข้ามาให้มันset ข้อความ ออกมา 

  String get vipMember {
    return "[VIP] $fname $lname";
  }
  void display() {
    print("Fname: $fname, Lname: $lname");
  }
}

ต่อมาเรื่อง getter ในเคสนี้ก็คือ เราต้องการ print ชื่อกับนามสกุล และมีคำว่า vip ตามหลัง เราก็ไม่ต้องมานั่งเขียนเองเราก็ใช้ get เลย
ตัวอย่าง

class PersonV4 {
  String fname;
  String lname;
  PersonV4() {
    this.fname = "none";
    this.lname = "none";
  }
   PersonV4.tutor_name(String fname, String lname) {
   this.fname = fname;
   this.lname = lname;
  }
   void set nameMele(String fname) {
   this.fname = "Mr. ${fname}";
  }
   void set namefeMele(String lname) {
   this.fname = "Mrs. ${lname}";
  }
  String get vipMember {
    return "[VIP] $fname $lname";
  }
    void display() {
    print("fname: $fname, Lname: $lname");
  }

กลับมาที่บรรทัดนี้ obj4 
ตัวอย่าง
ต้องการให้มันprint ค่า none 

void main() {
  // class
  var obj1 = PersonV1();
//  obj1.fname = "Expert";
//  obj1.lname = "Programming";
  obj1.display();
  var obj2 = PersonV2();
  obj2.display();
  //constructor named
  var obj3 = PersonV2.tutor_name("CAT", "MEOW");
  obj3.display();
    //getter , setter
  var obj4 = PersonV3.tutor_name("CAT", "MEOW");
  obj4.nameMele = "Expert";
  obj4.display();
  print(obj4.vipMember);

ผลลัพธ์

Fname: null, Lname: null
Fname: none, Lname: none
Fname:CAT, Lname: MEOW
Fname: Mr . Expert, Lname: MEOW
[VIP] Mr . Expert MEOW
none

และเราอยาก set ค่า ให้เขาเป็นผู้ชาย
ตัวอย่าง

Fname: null, Lname: null
Fname: none, Lname: none
Fname:CAT, Lname: MEOW
Fname: Mr . Expert, Lname: MEOW
[VIP] Mr . Expert MEOW

และนี่ก็คือ setter getter นั่นเอง การนำตัวแปรเเละให้มันโยนค่าเข้าไปได้เลย ให้มัน set ค่านั่นเอง สุดท้ายคือการเรียกใช้ฟังก์ชัน callable เราจะสร้าง object ตัวนึงเป็น obj5 และไปนิวกับ V4 ถ้าเราอยากจะเอา  obj5 ให้มันทำอะไรสักอย่างนึง เราสามารถทำได้ โดยการใช้ call()
ตัวอย่าง 
ประกาศฟังก์ชัน 

  // callable
  var obj5 = PersonV4();
  obj5.namefeMele = "CAT";
  print(obj5());
}
  String call() {
    return fname;
  }
}

ผลลัพธ์

Fname: null, Lname: null
Fname: none, Lname: none
Fname:CAT, Lname: MEOW
Fname: Mr . Expert, Lname: MEOW
[VIP] Mr . Expert MEOW
none

นี่คือการเรียกใช้ตัว object แต่ในเคสนี้คือ object แบบ callable เราสามารถที่จะปริ้นอะไรสักอย่างนึงแบบนี้ไวยากรณ์มันก็จะสั้นลง เพื่อให้เห็นภาพชัดเจน เราจะ set ชื่อให้มัน
ตัวอย่าง

  // callable
  var obj5 = PersonV4();
  obj5.namefeMele = "CAT";
  print(obj5());
}

ผลลัพธ์ 

Fname: null, Lname: null
Fname: none, Lname: none
Fname:CAT, Lname: MEOW
Fname: Mr . Expert, Lname: MEOW
[VIP] Mr . Expert MEOW
Mrs. CAT

เราสามารถ print ได้เลย เเละไวยากรณ์มันจะสั้นลง เราจะ return ให้มันคืนค่ากลับมา บางคนก็อาจจะงง ว่าตรงนี้มันคืออะไร เราก็ต้องไปไล่ดูว่ามีfunction callable อยู่หรือเปล่า 



บทความนี้อาจจะมีที่ผิด กรุณาตรวจสอบก่อนใช้

หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor

ไม่อยากอ่าน Tutorial อยากมาเรียนเลยทำอย่างไร?

สมัครเรียน ONLINE ได้ทันทีที่ https://elearn.expert-programming-tutor.com

หรือติดต่อ

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM

แผนที่ ที่ตั้งของอาคารของเรา

C Article


C++ Article


Java Article


C#.NET Article


VB.NET Article


Python Article


Golang Article


JavaScript Article


Perl Article


Lua Article


Rust Article


Article


Python


Python Numpy


Python Machine Learning



แผนผังการเรียนเขียนโปรแกรม

Link อื่นๆ

Allow sites to save and read cookie data.
Cookies are small pieces of data created by sites you visit. They make your online experience easier by saving browsing information. We use cookies to improve your experience on our website. By browsing this website, you agree to our use of cookies.

Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com

ติดต่อเราได้ที่

085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
แผนที่ ที่ตั้งของอาคารของเรา