การเขียนโปรแกรม java Objects

12/19/2556 0 Comments

Objects


ทุกสิ่งในภาษา Java จะอยู่ใน Classes และ Objects

class Point {
    int x;
    int y;
}

ใน class point มีการประกาศตัวแปร x , y เราสร้าง object ชื่อ p โดยต้องใช้คำสั่ง new


Point p = new Point();

ในกรณีนี้เราประกาศโดยใช้ default constructor คือไม่มีการให้ค่าเริ่มต้น หรือเราสามารถ constructor เองได้ โดย

class Point {
    int x;
    int y;
    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

ตอนนี้เราสามารถกำหนดค่าเริ่มต้นให้กับ Object ได้แล้วเช่น new Point(4, 1).


เราสามารถสร้างได้มากกว่า 1 constuctor ดังนั้น Point  สามารถสร้างได้หลายแบบ ลองสร้างอีกครั้ง

class Point {
    int x;
    int y;
    Point() {
        this(0, 0);
    }
    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

ข้อสังเกตในการใช้  this นี้ เราสามารถใช้มันใน constuctor ในการเรียก constuctor อื่น ใน class ของเราเอง

หลังจากเราประกาศ p แล้วสามารถเข้าถึงตัวแปรภายใน Object ได้เลย


p.x = 3;
p.y = 6;

Methods

เราสามารถประกาศ method ของ point ได้แล้ว

class Point {
    ... // code ของเราก่อนหน้านี้
    void printPoint() {
        System.out.println("(" + x + "," + y + ")");
    }
    Point center(Point other) {
        // เราคืนค่าจุดศูนย์กลางของจุดนี้และจุดอื่น
        return new Point((x + other.x) / 2, (y + other.y) / 2);
    }


Public and Private

เมื่อเราใช้  private  ก่อนตัวแปรหรือ method ในคลาสนั้น นั่นหมายถึงคลาสอื่นจะไม่สามารถใช้ตัวแปรนี้ได้ และเมื่อเราใช้  public หมายถึงคลาสไหนก็มาใช้ได้ ปกติเราจะเห็น Constuctor ใช้  public 

แบบฝึกหัด

สร้าง method ใหม่ชื่อ scale, จะสร้างจุดที่ใกล้จุด (0,0) ที่สุด โดยลดค่าที่ละครึ่งเช่น (8 , 4) หลังจากนั้นจะเป็น (4 , 2) , (1, 1)

class Point 
    private double x;
    private double y;
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
    public void print() {
        System.out.println("(" + x + "," + y + ")");
    }
    // สร้างตรงนี้
}

public class Main {
    public static void main(String[] args) {
        Point p = new Point(32, 32);
        for (int i = 0; i < 5; i++) {
            p.scale();
            p.print();
        }
    }
}

class Point {
    private double x;
    private double y;
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
    public void print() {
        System.out.println("(" + x + "," + y + ")");
    }
    public void scale(){
    x = x/2;
    y = y/2;
    }
}

public class Main {
    public static void main(String[] args) {
        Point p = new Point(32, 32);
        for (int i = 0; i < 5; i++) {
            p.scale();
            p.print();
        }
    }