วันจันทร์ที่ 29 กรกฎาคม พ.ศ. 2556

การสร้างคลาสและออปเจ็คในภาษา java

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


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

ตัวอย่างการประกาศคลาส

public class Student { ……………………. }

ส่วนประกอบของคลาส (Class member)
1) Data Fields เป็นส่วนข้อมูลของ Class
- Primitive Type Value
- Object References Type Value
2) Methods เป็นส่วนกระบวนการทำงานของ Class
- Static Method
- Non-Static Method
3) Member Classes เป็น Class ที่อยู่ภายใน Class หรือเรียกว่า Inner Class

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

โดยมีรูปแบบการประกาศดังนี้
[modifier] dataType attributeName;

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

ตัวอย่างการประกาศคุณลักษณะ
public class Student {
public String id;
public String name;
public double gpa;
}


การประกาศเมธอด
ภาษาจาวากำหนดรูปแบบของการประกาศเมธอดที่อยู่ในคลาสไว้ดังนี้
[modifier] return_type methodName ([argument]) {
           [method body]
}


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

ตัวอย่างโปรแกรม
public class Student {
      public String id;
      public String name;
      public double gpa;
      public void setID(String ID) {
                id = ID;
      }
      public void setName(String n) {
                name = n;
      }
      public void setGPA(double GPA) {
                gpa = GPA;
      }
      public void showDetails() {
               System.out.println("ID: "+id);
               System.out.println("Name: "+name);
               System.out.println("GPA: "+gpa);
      }
}


การประกาศออปเจ็ค
           ออปเจ็คทุกออปเจ็คในโปรแกรมภาษาจาวาจะต้องมีคำสั่งประกาศเพื่อระบุว่าออปเจ็คนั้นเป็นออปเจ็คของคลาสใด
โดยมีรูปแบบการประกาศ ดังนี้
[modifier] ClassName objectName;

- modifier คือคีย์เวิร์ดที่อธิบายคุณสมบัติต่างๆของออปเจ็ค
- ClassName คือชื่อของคลาสสำหรับออปเจ็คนั้น
- objectName คือชื่อของออปเจ็ค

ตัวอย่าง
Student s1;

การสร้างออปเจ็ค
คำสั่งที่ใช้ในการสร้างออปเจ็คจะมีรูปแบบ ดังนี้
objectName = new ClassName ([arguments]);

- objectName คือชื่อของออปเจ็ค
- new คือคีย์เวิร์ดของภาษาจาวาเพื่อใช้ในการสร้างออปเจ็ค
- ClassName คือชื่อของคลาส
- Arguments คือค่าที่ต้องการส่งผ่านในการเรียก Contructor

ตัวอย่าง
s1 = new Student s1;

การประกาศและการสร้างออปเจ็ค
คำสั่งที่ใช้ในการประกาศและสร้างออปเจ็ค สามารถที่จะรวมเป็นคำสั่งเดียวกัน

โดยมีรูปแบบคำสั่ง ดังนี้
[modifier] ClassName objectName = new ClassName ([arguments]);

ตัวอย่าง
Student s1 = new Student( );

การเรียกใช้สมาชิกของออปเจ็ค
การเรียกใช้คุณลักษณะของออปเจ็คมีรูปแบบ ดังนี้
objectName.attributeName;

การเรียกใช้เมธอดของออปเจ็คมีรูปแบบ ดังนี้
objectName.methodName([arguments]);

- objectName คือชื่อของออปเจ็คที่สร้างขึ้น
- methodName คือชื่อของเมธอดของออปเจ็คนั้น
- arguments คือค่าที่ต้องการส่งผ่านไปให้กับเมธอดของออปเจ็คนั้น

ตัวอย่าง
s1.setName (“Pangpond”);

ตัวอย่างโปรแกรม แบ่งออกเป็น 2 คลาส คือ TestCircle และ Circle
public class TestCircle {
        public static void main(String[] args) {
               Circle MyCircle = new Circle();
               System.out.println("Area is " + MyCircle.findArea());
        }
}// class TestCircle

class Circle {
        double radius = 2.0;

        double findArea() {
        return radius * radius * 3.14159;
}
}// class Circle


Overloading Methods
            ในบางกรณีอาจมีเมธอดใดๆ ที่สามารถรับค่าที่เป็นตัวแปรได้หลากหลายชนิดได้ ถ้ากำหนดไว้เป็นเมธอดเดียว อาจทำให้ผลลัพธ์ที่ได้เกิดความผิดพลาดได้ ดังนั้นถ้าชนิดตัวแปรเป็นคนละชนิดกัน ให้สร้างเมธอดขึ้นมาใหม่ โดยใช้ชื่อเมธอดเดียวกัน แต่สร้างให้เมธอด มีชนิดของตัวแปรใน parameter list ต่างกัน โดยจะสร้างเมธอดใหม่ ขึ้นมาเป็นจำนวนเท่ากับชนิดของตัวแปรที่เป็นไปได้ เมื่อมีการใช้เมธอด ชื่อนี้โปรแกรมจะเรียกเมธอดที่มีชนิดของตัวแปร ตรงกับที่ต้องการโดยอัตโนมัติ เรียกวิธีการนี้ว่า “Overloading” และเรียกเมธอดที่ใช้วิธีการนี้ว่า “Overloading Methods”

ตัวอย่างโปรแกรม
public class TestOverloading {
       public static void main(String[] args) {
                System.out.println("The maximum between is " + max(3,5));
                System.out.println("The maximum between is " + max(4.5,6.8));
       }

       static double max(double num1,double num2) {
                if(num1>num2)
                return num1;
                else
                return num2;
        }

        static int max(int num1,int num2) {
                if(num1>num2)
                return num1;
                else
                return num2;
        }
} //class TestOverloading

Constructor Methods
            เมื่อ Object ใดๆ ถูกสร้างขึ้นมาจะต้องไปเรียกใช้ Method ที่ระบุนี้ขึ้นมาใช้งานทันที การกําหนดการทํางาน ลักษณะเช่นนี้เรียกว่า “Constructor” ดังนั้น Constructor ก็ คือ Method ทั่วๆ ไป ของจาวา แต่มีข้อจํากัดดังนี้
1) ชื่อของ Constructor จะต้องเป็นชื่อเดียวกันกับชื่อ Class ที่ใช้สร้าง Object
2) Header ของ Constructor จะต้องไม่มีค่า Return_data_type
ดังนั้น ถ้าชื่อ Method ใดๆ ใน Class เป็นชื่อเดียวกันกับ Class ด้วย แสดงว่า Method นั้นเป็น “Constructor” Method

            ตัวอย่างของการสร้าง Constructor เช่น ในโปรแกรมสําหรับเกมส์บางอย่างจํา เป็นต็องเรียกใช้ตัวเลขสุ่มทุกครั้งที่ เริ่มต้นเกมส์ใหม่
แต่ทั้งนี้ไม่จําเป็นที่ทุกโปรแกรมจะต้องมีการกําหนด Constructor ไว้ด้วย แต่เพื่อให้มีมาตรฐานเดียวกัน จึงนิยมเขียน Constructor เอาไว้ในโปรแกรมเสมอ ถึงแม้จะไม่มีการทํางานใดๆ ใน Constructor ก็ตาม โดยจะกําหนดเป็นบรรทัด ว่างไว้
เช่น สมมติชื่อของ Class คือ “HelloApp” ดังนั้นจะสร้าง Method ชื่อ “HelloApp” เอาไว้ด้วย โดยกําหนดเครื่องหมายปากกาเปิดและปิดเอาไว้ เท่านั้น (ไม่มีการทํางานใดๆ)
public HelloApp ( )
{
………………
}


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

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