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

การประกาศ 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 อะไร ดังนี้ครับ




การประกาศ Attributes




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

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


การประกาศ Methods

ภาษาจาวากำหนดรูปแบบของการประกาศเมธอดที่อยู่ในคลาสไว้ดังนี้
 


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


การประกาศ Object

คำสั่งที่ใช้ในการสร้าง ออปเจ็คจะมีรูปแบบ  ดังนี้




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


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


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


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

 

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

 

 

การเขียนโปรแกรมเชิงวัตถุโดยใช้ Java : การเรียกใ method ของ object 

objectName .methodName[(arguments)];


-objectName คือชื่อของ object

-methodName คือชื่อ method ของ object นั้น

-arguments  คือค่าที่ต้องการส่งผ่านไปให้กับ method ของ object นั้น  โดยที่จะต้องมีชนิดข้อมูลและจำนวน argument ให้สอดคล้องกับที่ประกาศใน method ของ object นั้น

-ตัวอย่าง

    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 แบบต่าง ๆ
    แบบที่ 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




 




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

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