ไวยากรณ์ภาษาจาวา



 การประกาศ class

           การประกาศ Class

สำหรับคนที่ยังไม่เคยเขียนโปรแกรมแบบ OOP อาจจะต้องศึกษาเพิ่มเติมกันนะครับ ถ้าให้สอนเองด้วยเดี่ยวจะยาว  ขั้นแรก เรามาดูรูปแบบการประกาศ class กันก่อนนะครับ


          ในรูปนี้เป็นเพียงการประกาศ ตัวแปร(Member variable) และเมธอด (Method) ของคลาสเท่านั้น ยังมีการประกาศ Property ที่เป็นการกำหนดคุณสมบัติให้กับตัวแปรอีก ซึ่งผมจะพูดถึงต่อไปนะครับ
ใน Objective-C นั้นเราสามารถประกาศตัวแปรได้ทั้ง 2 แบบ คือแบบ Strong type และแบบ Weak type สำหรับการประกาศแบบ Strong type ก็ประกาศแบบปกติครับ โดยขึ้นต้นด้วยชื่อ class และตามด้วย * (หมายถึงการเป็น pointer) และตามด้วยชื่อของ object ที่เราจะตั้ง แต่การประกาศแบบ Weak type นั้นจะใช้คำว่า id นำหน้าโดย “ไม่ต้องมี *” เพราะการประกาศ id นั้นจะเป็นการประกาศตัวแปรที่เป็น pointer ไปโดยอัตโนมัติ ซึ่งจะใช้บ่อยอยู่พอสมควรในกรณีที่เราไม่รู้ว่า object นั้นเป็น type อะไร ดังนี้ครับ
MyClass *myObject1;  // Strong typing
id       myObject2;  // Weak typing

 การประกาศ attributes


      คุณลักษณะของออปเจ็ค คือตัวแปรหรือค่าคงที่ซึ่งประกาศภายในออปเจ็ค โดยมีตัวอย่างการประกาศคือ


                                      [modifier] dataType attributeName;


- Modifier คือ คีย์เวิร์ดของภาษาจาวาที่อธิบายคุณสมบัติต่างๆ ของตัวแปรหรือค่าคงที่
- dataType คือ ชนิดข้อมูลซึ่งอาจเป็นชนิดข้อมูลพื้นฐานหรือชนิดคลาส
- attributeName คือ ชื่อของคุณลักษณะ


 การประกาศ methods


[modifier] return_type methodName ([argument]) {
[method body]
}

Modifier คือ คีย์เวิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier)
Return_type คือ ชนิดข้อมูลของค่าที่จะมีการส่งกลับ
methodName คือ ชื่อของเมธอด
Arguments คือ ตัวแปรที่ใช้ในการรับข้อมูลที่ออปเจ็คส่งมาให้
Method body คือ คำสั่งต่างๆ ของภาษาจาวาที่อยู่ในเมธอด



 การประกาศ object


objectName = new ClassName 

([arguments]);


objectName  คือชื่อของออปเจ็ค

- new             คือคีย์เวิร์ดของภาษาจาวาเพื่อใช้ในการสร้าง


                      ออปเจ็ค

ClassName   คือชื่อของคลาส

Arguments   คือค่าที่ต้องการส่งผ่านในการเรียก 

                       Contructor


 การเรียกใช้ methods


                      objectName .methodName[(arguments)];
qobjectName คือชื่อของ object
qmethodName คือชื่อ method ของ object นั้น
qarguments  คือค่าที่ต้องการส่งผ่านไปให้กับ method ของ object นั้น  โดยที่จะต้องมีชนิดข้อมูลและจำนวน argument ให้สอดคล้องกับที่ประกาศใน method ของ object นั้น
qตัวอย่าง   s1.setName(“Thana”);

ข้อมูลเริ่มต้นจาก thaidev.com



จากเว็บไซต์ thaidev.com (expired) อธิบายเรื่อง OOP ให้เข้าใจได้ง่าย ๆ ผมจึง copy ส่วนหนึ่งของ Code มาให้ดู เพราะแสดงให้เห็นว่าสร้าง Object อย่างไร กำหนดคุณสมบัติ และสั่งให้ทำงานได้อย่างไร ปัจจุบันมีเว็บบอร์ดที่ยอดเยี่ยมมาก [webboard]

ตัวอย่างคลาส ที่เตรียมให้ถูกเรียกใช้
class TAirPlane {
   int color;  // สี เป็น คุณสมบัติอีกแบบ
   static void Fly() { };  // บิน เป็น พฤติกรรม หรือ กริยา ที่ object ทำได้
   static void Land() { };  // ลงจอด เป็น อีกพฤติกรรมหนึ่ง
   TAirPlane() {
     System.out.println("result of constructor");
   }
}

TAirPlane AirPlane1; // สร้าง object ชื่อ AirPlane1 จาก class ชื่อ TAirPlane AirPlane1 = new AirPlane1(); // จองพื้นที่ในหน่วยความจำ จึงจะเริ่มเรียกใช้ได้ AirPlane1.Fly(); // สั่งให้ object AirPlane1 ทำกริยา บิน AirPlane1.color = RED; // เปลี่ยน สี (คุณสมบัติ) ของเครื่องบิน ให้เป็นสีแดง

วิธีเรียกใช้ method แบบต่าง ๆ
    วิธีเรียกใช้ method แบบต่าง ๆ
      แบบที่ 1 : เรียกใช้ Constructor และใช้พื้นที่ในหน่วยความจำ
      
        class hello1 { public static void main(String args[]) { TAirPlane abc = new TAirPlane(); } }
      แบบที่ 2 : แยกประกาศใช้คลาสและใช้พื้นที่ในหน่วยความจำ
        class hello2 { public static void main(String args[]) { TAirPlane abc; abc = new TAirPlane(); } }
      แบบที่ 3 : ใช้พื้นที่ในหน่วยความจำ และเป็นการเรียกใช้ constructor ซึ่ง class นี้ ต้องอยู่ใน Directory เดียวกัน
        class hello3 { public static void main(String args[]) { new TAirPlane(); } }
      แบบที่ 4 : เรียกใช้ method Fly() แต่จะเรียก constructor มาก่อน ถ้า class นั้นมี constructor
        class hello4 { public static void main(String args[]) { new TAirPlane().Fly(); } }
      แบบที่ 5 : เมื่อสร้างวัตถุขึ้นมา สามารถเรียกใช้ method อื่น โดย constructor ทำงานเฉพาะครั้งแรก
        class hello5 { public static void main(String args[]) { TAirPlane abc = new TAirPlane(); abc.Fly(); abc.Land(); } }
      แบบที่ 6 : แสดงตัวอย่างการเรียก main และต้องส่ง Array of String เข้าไป
        class hello6 { public static void main(String args[]) { TAirPlane abc = new TAirPlane(); String a[] = {}; // new String[0]; abc.main(a); } }
      แบบที่ 7 : เรียกใช้ method ภายในคลาสเดียวกัน
        class hello7 { public static void main(String args[]) { minihello(); } static void minihello() { System.out.println("result of mini hello"); } }
      แบบที่ 8 : เรียกใช้ method แบบอ้างชื่อคลาส ในคลาสเดียวกัน
        class hello8 { public static void main(String args[]) { hello8 x = new hello8(); x.minihello(); } static void minihello() { System.out.println("result of mini hello"); } }
      แบบที่ 9 : เรียกใช้ method แบบไม่กำหนด method เป็น Static พร้อมรับ และคืนค่า
      :: ผลลัพธ์คือ 8
        class hello9 { public static void main(String args[]) { hello9 xx = new hello9(); System.out.println(xx.oho(4)); } int oho(int x) { return (x * 2); } }
      แบบที่ 10 : เรียกใช้ method ภายในคลาสเดียวกัน โดย method สามารถรับ และส่งค่าได้
      :: เรียก method ใน static ตัว method ที่ถูกเรียกต้องเป็น static ด้วย
        class hello10 { public static void main(String args[]) { System.out.println(oho(5)); } static int oho(int x) { x = x * 2; return x; } }
      แบบที่ 11 : ใช้ extends เพื่อการสืบทอด (Inheritance)
      :: Constructor ของ TAirPlane จะไม่ถูกเรียกมาทำงาน
        class hello11 extends TAirPlane { public static void main(String args[]) { Fly(); Land(); } }
      แบบที่ 12 : ใช้ extends เพื่อการสืบทอด (Inheritance) แบบผ่าน constructor
      :: Constructor ของ TAirPlane จะถูกเรียกมาทำงาน
        class hello12 extends TAirPlane { hello12() { Fly(); Land(); } public static void main(String args[]) { new hello12(); } }

     การเรียกใช้ attributes

    การเรียกใช้ Class Attribute

    ในการใช้งาน Class เมื่อเราต้องการที่จะอ้างอิง Attribute ที่อยู่ภายใน Class สามารถทำได้ โดยใช้ Pointer พิเศษที่ชื่อว่า $this ชี้ไปที่ชื่อของ Attribute ที่เราต้องการ
    รูปแบบ
    การเรียกใช้ Class Operation
    qการเรียกใช้งาน Class Operation จะทำได้ก็ต่อมีการเรียกใช้งานผ่าน instance ที่เราสร้างขึ้นมาจาก Class
    Example: Class Attribute & Operation

    ไม่มีความคิดเห็น:

    แสดงความคิดเห็น