วันจันทร์ที่ 10 ธันวาคม พ.ศ. 2555

OOP Concept


OOP Concept
Abstraction
คือ การมองวัตถุ(Object)เฉพาะภายนอกเท่านั้น โดยไม่สนใจว่าวัตถุนั้นเกิดขึ้นได้อย่างไร หรือมีการทำงานภายในอย่างไร
ใน OOP  Abstraction คือการแสดงถึงคุณลักษณะและพฤติกรรมของวัตถุ เท่าทีจำเป็นต้องรับรู้และใช้งาน โดยซ่อนส่วนที่เหลือเอาไว้ เพื่อลดความซับซ้อน

Encapsulation
คือการกำหนดขอบเขตการใช้ หรือขอบเขตการเข้าถึง (Accessibility) แอตทริบิวต์ (Attribute) และเมธอด (Method) เพื่อปกป้องวัตถุในระบบจากวัตถุอื่น หรือการทำงานของโปรแกรม ซึ่งอาจส่งผลให้วัตถุและส่วนประกอบของวัตถุได้รับความเสียหาย  โดยแบ่งการเข้าถึง Attribute และ Method ของวัตถุออกเป็น 3 ระดับ คือ
1. การเข้าถึงแบบสาธารณะ (Public)  จะอนุญาตให้แอตทริบิวต์และเมธอดสามารถเข้าถึง หรือเรียกใช้ได้จากทุกๆ ส่วนของโปรแกรม รวมไปถึงโปรแกรมอื่นๆ ด้วย
2. การเข้าถึงแบบป้องกัน (Protected)  จะอนุญาตให้เฉพาะคลาสหรือวัตถุที่ได้รับการถ่ายทอด (Inheritance) จากคลาสดังกล่าวเท่านั้น ที่สามารถเรียกใช้แอตทริบิวต์และเมธอดดังกล่าวได้
3. การเข้าถึงแบบภายใน (Private)  จะมีเพียงคลาสดังกล่าวเท่านั้น  ที่สามารถเรียกใช้แอตทริบิวต์และเมธอดได้
"don't tell me how you do it; just do it"
Modularity
คือ การแยกสลายสิ่งที่ซับซ้อนให้กลายเป็นส่วนย่อยเล็กๆ
ที่สามารถจัดการได้ ซึ่งช่วยในการลดความยุ่งยากและซับซ้อนของปัญหา ทำให้ง่ายต่อการจัดการ
Hierarchy
คือการจัดกลุ่มสิ่งต่างๆตามระดับของ Abstraction โดยการใช้โครงสร้างแบบต้นไม้ (Tree structure)
Hierarchy ช่วยทำให้เราเห็นถึงความเหมือนกันหรือแตกต่างกันของสิ่งต่างๆได้ง่ายขึ้น
เช่น เรากำหนดกรอบของ Objectนาฬิกาโดยใช้ ชนิดของการแสดงเวลา เราก็จะได้กลุ่มของนาฬิกาแบบอนาล็อก และกลุ่มของนาฬิกาแบบดิจิตอล แต่ถ้าเรากำหนดกรอบใหม่เป็นชนิดของพลังงานที่นาฬิกาใช้เราก็จะได้กลุ่มของนาฬิกาที่ใช้ถ่าน, นาฬิกาที่ใช้พลังงานแสงอาทิตย์, นาฬิกาที่ใช้พลังงานจากการเคลื่อนไหว เป็นต้น
Class
Class คือ กลุ่มของ Object ที่มีโครงสร้างพื้นฐานและพฤติกรรมเดียวกัน ดังนั้น Object ที่มีคุณสมบัติลักษณะเดียวกันนี้ จะรวมกลุ่มอยู่ใน Class เดียวกัน จึงสามารถสรุปได้ว่า Class คือ ต้นแบบข้อมูลหรือพิมพ์เขียว ที่มีไว้เพื่อสร้าง Object นั่นเอง Class นอกจากจะมีชื่อ Class ที่บอกคุณสมบัติของ Class นั้นแล้ว ยังมี Attribute และ Method ต่างๆ ซึ่งเป็นตัวอธิบายรายละเอียด และหน้าที่ต่างๆด้วย

Object
ทุกสิ่งทุกอย่างในโลกนี้ คือ Object ทั้งที่เป็นรูปธรรมและนามธรรม
เราจะใช้ Object แทนสิ่งต่างๆในการแก้ปัญหาหรือเขียนโปรแกรม
Object ประกอบไปด้วย Attribute และ Method






Java Syntax


Java Syntax

-การประกาศ class
โปรแกรมภาษาจาวาแต่ละโปรแกรมจะประกอบไปด้วยคลาสอย่างน้อย หนึ่งคลาส โดยมีรูปแบบการประกาศ ดังนี้


[modifier] class Classname {

}


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

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



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


[modifier] dataType attributeName;

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

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



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


[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);
}
}


- การประกาศ object
ออปเจ็คทุกออปเจ็คในโปรแกรมภาษาจาวาจะต้องมีคำสั่งประกาศเพื่อระบุว่าออปเจ็คนั้นเป็นออปเจ็คของคลาสใด

โดยมีรูปแบบการประกาศ ดังนี้


[modifier] ClassName objectName;

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

ตัวอย่าง
Student s1;



-การเรียกใช้ methods
การเรียกใช้เมธอดของออปเจ็คมีรูปแบบ ดังนี้


objectName.methodName([arguments]);

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

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



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

ตัวอย่าง
s1.id ;