วันพุธที่ 12 ธันวาคม พ.ศ. 2555

Object- Oriented Programming


1 Abstraction

2 Encapsulation

3 Modularity

4 Hierarchy

5 class

6 object


1.Abstraction

     การกำหนดรอบให้แก่วัตถุเพื่อกำหนดลักษณะเฉพาะที่สำคัญของวัตถุที่แตกต่างจากวัตถุชนิดอื่นๆ 
หรือเป็นกระบวนการในการให้ Concept กับ Object ต่างๆ ใน Realworld เพื่อสร้าง Class


2.Encapsulation

     คืออการนำกลุ่มข้อมูลและกลุ่มคำสั่งมาจับกลุ่มกันเป็น หนึ่ง object และเป็นการป้องกันไม่ให้objectอื่นเข้าได้โดยตรง



3.Modularity 

    คือการแยกสลาย ทำให้เราสามารถเข้าถึงส่วนต่างๆได้





4.Hierarchy 


     โครงสร้างข้อมูลแบบลำดับชั้นการกลั่นกรองข้อมูล เเบ่งเป็นชั้นๆ จากบนลงล่าง





5.Class

    ต้นแบบใช้ในการออกแบบ Object หลายๆ Object เช่น class ของบ้านเพื่อใช้เป็นแบบมาสร้างบ้านหลายๆ หลัง




6.Object 


    คือสิ่งที่ได้มาจาก Class ข้างต้น








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

1.การประกาศ class

2.การประกาศ attributes

3.การประกาศ methods

4.การประกาศ object

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

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

1.การประกาศ class

       คลาสเปรียบเสมือนแม่พิมพ์ วัตถุเป็นผลิตผลที่เกิดจากแม่พิมพ์ ดังนั้น การที่จะสร้างวัตถุได้ จึงจำเป็นต้องอาศัยแม่พิมพ์หรือคลาสนี้ สำหรับการประกาศคลาสเริ่มต้นด้วยคำหลัก class ตามด้วยชื่อของ class กำหนดขอบเขตด้วย {} และจบด้วยเครื่องหมาย เซมิโคลอน (;)

รูปแบบคำสั่ง


class ชื่อคลาส

{

// คำสั่ง

// คำสั่ง

}

2.การประกาศ attributes (คุณลักษณะ)

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

[modifier] dataType attributeName;

- Modifier คือ คีย์เวิร์ดของภาษาจาวาที่อธิบายคุณสมบัติต่างๆ ของตัวแปรหรือค่าคงที่

- dataType คือ ชนิดข้อมูลซึ่งอาจเป็นชนิดข้อมูลพื้นฐานหรือชนิดคลาส

- attributeName คือ ชื่อของคุณลักษณะ

3.การประกาศ methods

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

[modifier] return_type methodName ([argument]) {

[method body]

}


- Modifier คือ คีย์เวิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier)

- Return_type คือ ชนิดข้อมูลของค่าที่จะมีการส่งกลับ

- methodName คือ ชื่อของเมธอด

- Arguments คือ ตัวแปรที่ใช้ในการรับข้อมูลที่ออปเจ็คส่งมาให้

- Method body คือ คำสั่งต่างๆ ของภาษาจาวาที่อยู่ในเมธอด

4.การประกาศ object

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

objectName = new ClassName ([arguments]);


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

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

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

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

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

       แบบที่ 1 : เรียกใช้ Constructor และใช้พื้นที่ในหน่วยความจำ

public class hello1 {

  public static void main(String args[]) {

    TAirPlane  abc = new TAirPlane();

  }

}


       แบบที่ 2 : แยกประกาศใช้คลาสและใช้พื้นที่ในหน่วยความจำ

public class hello2 {

  public static void main(String args[]) {

    TAirPlane  abc;

    abc = new TAirPlane();

  }

}


       แบบที่ 3 : ใช้พื้นที่ในหน่วยความจำ และเป็นการเรียกใช้ constructor ซึ่ง class นี้ ต้องอยู่ใน Directory เดียวกัน

public class hello3 {

  public static void main(String args[]) {

    new TAirPlane();

  }

}


       แบบที่ 4 : เรียกใช้ method Fly() แต่จะเรียก constructor มาก่อน ถ้า class นั้นมี constructor

public class hello4 {

  public static void main(String args[]) {

    new TAirPlane().Fly();

  }

}


       แบบที่ 5 : เมื่อสร้างวัตถุขึ้นมา สามารถเรียกใช้ method อื่น โดย constructor ทำงานเฉพาะครั้งแรก

public class hello5 {

  public static void main(String args[]) {

    TAirPlane  abc = new TAirPlane();

    abc.Fly();

    abc.Land();

  }

}


       แบบที่ 6 : แสดงตัวอย่างการเรียก main และต้องส่ง Array of String เข้าไป

public class hello6 {

  public static void main(String args[]) {

    TAirPlane  abc = new TAirPlane();

    String a[] = {};   // new String[0];

    abc.main(a);

  }

}


       แบบที่ 7 : เรียกใช้ method ภายในคลาสเดียวกัน

public class hello7 {

  public static void main(String args[]) {

    minihello();

  }

  static void minihello()   {

    System.out.println("result of mini hello");

  }

}


       แบบที่ 8 : เรียกใช้ method แบบอ้างชื่อคลาส ในคลาสเดียวกัน

public 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

public 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 ด้วย

public 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 จะไม่ถูกเรียกมาทำงาน

public class hello11 extends TAirPlane {

  public static void main(String args[]) {

    Fly();

    Land();

  }

}


       แบบที่ 12 : ใช้ extends เพื่อการสืบทอด (Inheritance) แบบผ่าน constructor

:: Constructor ของ TAirPlane จะถูกเรียกมาทำงาน

public class hello12 extends TAirPlane {

  hello12() {

    Fly();

    Land();

  }

  public static void main(String args[]) {

    new hello12();

  }

}


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

       การเรียกใช้แบบที่ 1

syntax:ClassName object = new ClassName().attributeName;

example:Person bamboo = new Person().name; 


       การเรียกใช้แบบที่ 2

syntax:ClassName object = new ClassName();

object.attributeName;

example:Person bamboo = new Person();

bamboo.name = "bamboolabcode";