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

Tutorial DART

L01 DART INTRO L02 DART HOWTO L02 DART HOW TO L03 DART GETTING START L04 DART SYNTAX L05 DART VARIABLE 01 L06 DART FUNCTION L06 DART VARIABLE 02 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 อยู่หรือเปล่า 



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

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

หรือติดต่อ

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

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

Python

L16 PYTHON SIMPLE ARITHMETIC
L40 PYTHON TUTORIAL INTRO
L41 PYTHON GETTING STARTED
L42 PYTHON SYNTAX
L43 PYTHON COMMENTS
L44 PYTHON VARIABLES
L45 PYTHON DATATYPE
L46 PYTHON NUMBERS
L47 PYTHON CASING
L48 PYTHON STRINGS
L49 PYTHON BOOLEANS
L50 PYTHON OPARETORS
L51 PYTHON LISTS
L52 PYTHON TUPELS
L53 PYTHON SETS
L54 PYTHON DICTIONARY
L55 PYTHON IF ELSE
L56 PYTHON WHILE LOOP
L57 PYTHON FOR LOOP
L58 PYTHON FUNCTION
L59 PYTHON LAMBDA
L60 PYTHON ARRAYS
L61 PYTHON CLASSSES OBJECTS
L62 PYTHON INHERITANCE
L63 PYTHON ITERATORS
L63 PYTHON SCOPE
L64 PYTHON MODULES
L65 PYTHON DATETIME
L66 PYTHON JSON
L67 PYTHON REGEX
L68 PYTHON PIP
L69 PYTHON TRY EXCAPE
L70 PYTHON USER INPUT
L71 PYTHON FILE OPEN
L73 PYTHON STRING FORMATTING
L74 PYTHON READ FILE
L75 PYTHON WRILE CREATE FILE
L76 PYTHON DELETE FILE
L90 PYTHON POISSON DISTRIBUTION
L90 PYTHON RANDOM INTRODUCTION
L91 PYTHON CHI SQUARE DISTRIBUTION
L91 PYTHON EXPONENTIAL DISTRIBUTION
L92 PYTHON RAYLEIGH DISTRIBUTION
L93 PYTHON PARETO DISTRIBUTION
L94 PYTHON ZIPF DISTRIBUTION
L96 PYTHON RANDOM PERMUTATIONS
L97 PYTHON SEABORN
L98 PYTHON NORMAL DISTRIBUTION
L99 PYTHON DISTRIBUTION
L99 PYTHON LOGISTIC DISTRIBUTION
L99 PYTHON MULTINOMIAL DISTRIBUTION
L99 PYTHON NUMPY SPLITTING ARRAY
L99 PYTHON NUMPY UFUNCS
L99 PYTHON UNIFORM DISTRIBUTION
LM60PYTHON BUILT IN FUNCTIONS
LM61PYTHON STRING METHODS
LM62PYTHON LIST ARRAY METHODS
LM63PYTHON DICTIONARY METHODS
LM64PYTHON TUPLE METHODS
LM65PYTHON SET METHODS
LM66PYTHON FILE METHODS
LM67PYTHON KEYWORD
LM68PYTHON BUILT IN EXCAPTION
LM69PYTHON RANDOM MODULE
LM70PYTHON MATH MODULE
LM70PYTHON REQUSTS MODULE
LM72PYTHON CMATH MODULE
LM73PYTHON HOWTO REMOVE DUPLICATES FROM A PYTHON LIST
LM74PYTHON HOW TO REVERSE A STRING IN PYTHON
LM75PYTHON HOW TO ADD TWO NUMBERS IN PYTHON
LM95PYTHON RANDOM DATA DISTRIBUTION


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

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
แผนที่ ที่ตั้งของอาคารของเรา