RSS

การเขียนโปรแกรมเชิงวัตถุ


การเขียนโปรแกรมเชิงวัตถุ (Object-oriented programming,OOP)
คือหนึ่งในรูปแบบการเขียนโปรแกรมคอมพิวเตอร์
ที่ให้ความสำคัญกับวัตถุ ซึ่งสามารถนำมาประกอบกันและนำมาทำงานรวมกันได้ โดยการแลกเปลี่ยนข่าวสารเพื่อนำมาประมวลผลและส่งข่าวสารที่ได้ไปให้ วัตถุ อื่นๆที่เกี่ยวข้องเพื่อให้ทำงานต่อไป


  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

Object-Oriented Programming (OOP)

 1.1 Abstraction

คือ กระบวนการการให้ความคิดรวบยอดกับวัตถุ  เพื่อสร้าง class เป็นการแสดงถึงคุณลักษณะและพฤติกรรมของ object เท่าที่จำเป็นต้องรับรู้และใช้งาน โดยซ่อนส่วนที่เหลือเอาไว้เพื่อไม่ให้เกิดความสับสน 1.2 Encapsulation
คือ การรวม data และ method ทั้งหลายที่เกี่ยวข้องกัน และทำงานร่วมกันเอาไว้ใน object หนึ่ง นอกจากนี้แล้วยังมีการซ่อนรายละเอียดของการทำงานของ method ต่างๆใน object เอาไว้ และไม่ให้ object อื่นๆสามารถที่จะเข้าไปแก้ไข data ได้โดยตรง

1.3 Modularity


ช่วยให้สามารถทำความเข้าใจระบบที่สลับซับซ้อนได้ ถ้ามีอะไรเสียหาย จะได้แก้ไขเฉพาะส่วนที่เสียหาย

1.4 Hierarchy

คือลำดับชั้นของการกำหนดกรอบให้แก่วัตถุ สามารถแบ่งออกได้เป็นหลายชนิด




1.5 class

คลาส คือ แม่แบบที่ใช้สร้าง Object  เช่น คลาสนักเรียน (Student)

1.6 object


  ในการที่เราจะทำความเข้าใจ เกี่ยวกับ Object ให้เรามองทุกๆ อย่างรอบตัวเราเป็น Object เช่น สุนัข
Object ประกอบไปด้วย
- Attribute ถ้าเรามอง สุนัขเป็น Object สิ่งที่เป็น attribute ของ Object สุนัข ก็คือ ชื่อของสุนัข , เพศของสุนัข และ พันธ์ของสุนัข - Method แปลเป็นไทยก็ ส่วนของพฤติกรรม ของ Object อย่างเช่น Object สุนัข จะมี method เป็น เห่า , วิ่ง หรือ กินข้าว



  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

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


1.การประกาศ class (คลาส)
โปรแกรมภาษาจาวาแต่ละโปรแกรมจะประกอบไปด้วยคลาสอย่างน้อย หนึ่งคลาส โดยมีรูปแบบการประกาศ ดังนี้
[modifier] class Classname {
     [class member]
}

- Modifier คือคีย์เวิร์ด ของภาษาจาวาที่ใช้ในการอธิบายระดับการเข้าถึง (Access modifier)
- class คือคีย์เวิร์ด ของภาษาจาวา เพื่อระบุว่าเป็นการประกาศคลาส
- Classname คือชื่อคลาส
- Class member คือเมธอดหรือคุณลักษณะ




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 และใช้พื้นที่ในหน่วยความจำ
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();
  }
}

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";

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

แนวคิดโครงสร้าง Control Structure

 Control Struture"การควบคุมทิศทางการทำงานของอัลกอริทึม"
















  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

ไวยากรณ์จาวาของ Control Structure

"ไวยากรณ์ภาษาจาวาของ Control Structure และตัวอย่างโปรแกรม"










  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS