More Related Content
Similar to คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
Similar to คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น (20)
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
- 2. การเขียนโปรแกรมเชิงวัตถุ(OBJECT ORIENTED
PROGRAMMING: OOP)
ความหมายการโปรแกรมเชิงวัตถุ (Object Oriented
Programming)
การโปรแกรมเชิงวัตถุ (Object Oriented Programming)
หรือเรียกสั้น ๆ ว่า OOP เป็นวิธีการเขียนโปรแกรมโดยมองสิ่งต่างๆ ในระบบ เช่น
ตัวอักษร, รูปภาพ, หน้าต่าง, แบบฟอร์ม ฯลฯ เป็นวัตถุหนึ่งชิ้น
อ็อบเจ็กต์ (Object) จัดเป็นตัวแปรชนิดหนึ่ง
ของ Class ใช้ Object ในการเข้าถึงและจัดเก็บ
ข้อมูลต่างๆ ภายใน Class เช่น Class ของปุ่มคาสั่ง
ภายใน Form อาจประกอบไปด้วย Object : Add, Save,
Delete, Find และ Close เป็นต้น
- 3. หลักการสาคัญของการโปรแกรมเชิงวัตถุ
การเขียนโปรแกรมแบบ OOP จะเน้นที่ “Object & Class” นั่นก็หมายความว่า
พยายามมองทุกสิ่งทุกอย่างในมุมของการโปรแกรมให้เป็น Object ซึ่ง Object เป็นสมาชิก
ของ Class แต่นอกเหนือจากนี้ OOP ยังมีหลักการและความสามารถในเรื่องต่อไปนี้
วัตถุ (Object)
คือ การมองภาพสิ่งต่าง ๆ เป็นวัตถุ
เป้ าหมาย ภายใน Object ประกอบด้วย Properties (คุณสมบัติ
ของ Object) กับ Behavior (พฤติกรรมการตอบสนองต่อเหตุการณ์ :Event ต่าง ๆ
ของ Object)
- ตัวอย่างของ Object ในโลกแห่งความเป็นจริง เช่น
“Object : มนุษย์” ประกอบด้วยคุณสมบัติ (Properties) สีผม , สีผิว ,ความสูง, สัดส่วน เป็น
ต้น และมีพฤติกรรมการตอบสนองต่อเหตุการณ์ (Behavior) เช่น ตอบสนองต่อการถูกชก
ต่อย ตอบสนองต่อเหตุการณ์ถูกไล่ล่า เป็นต้น
- 4. “Object : จักรยาน” ประกอบด้วยคุณสมบัติ (Properties) สีรถ , ขนาด ,รุ่น, ประเภท เป็นต้น และ
มีพฤติกรรมการตอบสนองต่อเหตุการณ์ (Behavior) เช่น ตอบสนองต่อการปันจักรยาน ตอบสนองต่อ
เหตุการณ์เบรก เป็นต้น
- ตัวอย่างของ Object ในมุมมองทางด้านโปรแกรม
Object : ปุ่ม ประกอบด้วยคุณสมบัติ (Properties) ข้อความบนปุ่ม ,
ขนาดของปุ่ม ,สีของปุ่ม, Stye ของปุ่ม เป็นต้น และมีพฤติกรรมการตอบสนองต่อ
เหตุการณ์ (Behavior) เช่น ตอบสนองต่อการถูก Click เป็นต้น
- 5. คลาส (Class)
คือ เป็นต้นแบบหรือแม่พิมพ์ ที่ใช้ในการผนวกหลาย ๆ Object เข้าด้วยกัน โดยจัดกลุ่ม Object ที่มีความ
คล้ายคลึงกันอยู่ใน Class เดียวกัน
- ตัวอย่างของ Class ในโลกแห่งความเป็นจริง เช่น
“Class: มวยสากล” ประกอบด้วย
- 6. จะเห็นได้ว่าแต่ละ Object จะมี Properties และ Behavior ที่แตกต่างกัน
เช่น
“Object สมรักษ์” มีลักษณะตัวสูง พูดจาโอ้อวดนิด ๆ มีพฤติกรรมในการชกที่สามารถ
ออกหมัดได้เร็ว และแม่นยา ซึ่ง Properties และ Behavior นี้ก็จะมีลักษณะที่
แตกต่างไปจาก “Object สามารถ”
การสร้าง Class ก็เช่นเดียวกับการจัดกลุ่มข้อมูล เราจะไม่นา “Object ของมวย
ไทย” เข้ามาปะปนกับ “Object ของมวลสากล” เพราะทางานคนละลักษณะกัน
- 8. การนิยามคลาส
ในภาษาจาวาสามารถนิยามคลาสหรือประกาศคลาสขึ้นมาโดยมีรูปแบบดังนี้
[AccessSpecifier] Class Name
{
Members
}
AccessSpecifier เป นความสามารถในการเข าถึงคลาสนั้นๆ
class เป นคีย เวิร ดในภาษาจาวาเพท อใช ในการประกาศคลาส
Name เป นชื่อคลาสมี่ประกาศขึ้น
Members เป นคุณลักษณะหรือเมธอดต างๆ ของคลาสที่นิยามขึ้น
การสร างออบเจ็กต
หลังจากนิยามคลาสขึ้นมาแล ว ถ าหากโปรแกรมต องการใช งานจะต องสร างออบเจ็กต ขึ้นมา เพื่อบอกว
าออบเจ็กต เป นของคลาสใด โดยจะต องประกาศออบเจ็กต ขึ้นมาก อนซึ่งมีรูปแบบดังนี้
ClassName ObjectName;
การประกาศออบเจ็กต นี้จะทาให คอมไพเลอร รับทราบว ามีตัวแปร ObjectName แต จะยังไม มีหน
วยความจาสาหรับข อมูลของออบเจ็กต ที่ประกาศขึ้น ซึ่งจะต องสร างออบเจ็กต ขึ้นมาก อนโดยใช คาว า
new ซึ่งมีรูปแบบดังนี้
objecyName = new ClassName([arguments])
เมือมีการสร างออบเจ็กต ขึ้นมาแล ว สมาชิกของออบเจ็กต คือสมาชิกของคลาสนั้น ซึ่งได แก
คุณลักษณะหรือตัวแปรและเมธอดต างๆ ออบเจ็กต จะสามารถเข าถึงข อมูลที่เป นคุณลักษณะหรือเรียกใช เมธ
อดได ไม ขึ้นกับaccessSpecifier ที่ถูกประกาศไว ตอนนิยามคลาส โดยการเรียกใช สมาชิกจะทาโดยใช
- 9. สแตติก(static) ในจาวามีคลาสต างๆให ใช งานมากมาย การสร างคลาสขึ้นมาใหม นี้ทําให เราสามารถสร างเมธอดใหม ๆขึ้นมาใช งาน
แล วรวมกันเป นคลาสได
และที่ผ านมาในบทนี้จะเห็นว าถ าหากมีการประกาศออบเจ็กต ต องการใช งาน สร างออบเจ็กต ด วยคําสั่งnew เช น
import java.util.Scanner;
public class Cal_Max {
public static void main(String args[])
{
int num1,num2;
Scanner stdin = new Scanner(System.in);
System.out.print("Input Number 1 : ");
num1 = stdin.nextInt();
System.out.print("Input Number 2 : ");
num2 = stdin.nextInt();
int larger = TestMax.max(num1,num2);
System.out.println("Max Data is "+larger);
}
}
class TestMax
{
static int max(int num1, int num2)
{
if(num1 > num2)
return num1;
else
return num2;
}
- 10. จากโปรแกรมนี้จะเป นว าเมธอดในคลาส Scanner ที่ใช รับข อมูลจะไม เป
นแบบสแตติก ซึ่งจะต องสร างออบเจ็กต ขึ้นมา แต เมธอดชื่อmax ในคลาส
TestMax
ที่สร างขึ้นป นแบบสแตติก จึงเรียกชื่อคลาสและตามด วยเมธอดมาใช งานได
ทันทีโดยไม ต องสร างออบเจ็กต
- 11. Constructors เป นฟ งก ชันในคลาสที่จะถูกเรียกอัตโนมัติเมื่อเราสร างอ็อบเจ็คให กับคลา สนั้น ๆ ด วยคําสั่ง newซึ่งมันจะเป นฟ
งก ชัน Constructors
ได ก็ต อเมื่อชื่อของมันเหมือนชื่อคลาส ถ าภายในคลาสไม มี constructor ดังนั้นมันจะทําการเรียก constructure ของ base class(ถ ามันมี)
เช น
<?php
class Auto_Cart extends Cart
{
function Auto_Cart() {
$this->add_item("10", 1);
}
}
?>
Constructorsfunction นั้นสามารถรับค าพารามิเตอร ได เช นกันดังนี้
<?php
class Constructor_Cart extends Cart
{
function Constructor_Cart($item = "10", $num = 1)
{
$this->add_item($item,$num);
}
}
// ในกรณีที่ไม ส งค าพารามิเตอร ให กับConstructor function $default_cart = new Constructor_Cart;
// ในกรณีนี้ฟ งก ชัน Constructor ของ Constructor_Cart นั้นได กําหนดค า default ให กับพารามิเตอร อยู แล ว
// ดังนั้นเราก็ไม จําเป นต องส งค าพารามิเตอร ก็ได ไม เกิด error
// กรณีที่ส งค า parameter ไปด วย $different_cart = new Constructor_Cart("20", 17); ?>
- 12. การส งออบเจ็กต ไปยังเมธอด ในการเขียนโปรแกรมที่มีการสร างคลาสขึ้นมาหลายๆคลาสนั้นออบเจ็กต ของคลาสห
นึ่งสามารถใช เป นอาร กิวเมนต เพื่อส งผ านไปยังเมธอดของคลาสอีกคลาสหนึ่ง ได
เช นโปรแกรมStudent.Java เป นโปรแกรมคลาสสาหรับเก็บข อมูลนักเรียน ได แก ชื่อและอีเมล โดยมี
เมธอดสาหรับกาหนดและเรียกดูชื่อและอีเมล สาหรับใช งาน
public class Student3 {
private String name;
private String email;
public Student3()
{
name = "Unassigned";
email = "Unassigned";
}
public String getEmail(){
return email;
}
public String getName(){
return name;
}
public void setEmail(String address){
email = address;
} public void setName(String studentName){
name = studentName;
}
- 13. ตัวอย างการประยุกต การเขียนโปรแกรมเชิงวัตถุ
จะเป นแบบการออกแบบคลาสแล วนํามาเขียนโปรแกรมประยุกต สําหรับใช งานจริงโดยอธิบายขั้นตอนสําคัญในการท
ขั้นตอนโดยมีโปรแกรมตัวอย างการเขียนโปรแกรมสําหรับเข ารหัสข อมูลโดยส งข อมูลผ านเข าไปในเครือข ายคอม
ปลอดภัยได นําเทคโนโลยีการเข ารหัสมาใช ทําโดยการเลื่อนข อมูล แต ถ าเป นตัวอักขระตัวสุดท ายของภาษาอังกฤ
กลับมาเริ่มต นที่ตัวแรกใหม
- ถ าหากเป น2-shift ข อมูลจะแทนได ดังนี้
A แทนด วย C
B แทนด วย D
………………..
Y แทนด วย A
Z แทนด วย B
ถ าข อมูลต นฉบับเป น“DIZZY”แล วเข ารหัสแบบ2- shift ข อมูลที่เข ารหัสแล วจะเป น “FKB
อธิบายการทํางานของโปรแกรม
1.ถ าหากพิมพ คําว าTeerawut ลงไป จะทําให ตัวแปร message ชี้ไปยังออบเจ็กต สตริง“Teerawut”
2.ต อมาถ าหากกดคีย ตัวเลข5 ลงไป จะทําให ตัวแปร shift มีค าเป น 5
3.เมื่อโปรแกรมเรียกใช เมธอด encrypt จะทําให msg ซึ่งเป นพารามิเตอร ของเมธอดชี้ไปยังออบเจ็กต เดียวกับmessage และ
พารามิเตอร shiftมีค าเป น 5 เช นกัน
4.เมื่อเมธอด encrypt ทํางาน ทําให ตัวแปร encryptedMessage ชี้ไปยังหน อยความจําออบเจ็กต สตริงที่สร างขึ้นมาใหม
5.จากนั้นจะทําให ตัว แปร msg ชี้ไปยังสตริงชุดใหม ที่ผ านการเข ารหัสแล ว
6.หลังจากนั้นจะให encryptedMessage มีค าสตริงที่เข ารหัสแล ว
- 14. ตัวอย างโปรแกรม จะแสดงการสร างคลาสของการนาตัวอักขระ[]มาสร างเป นรูปสามเหลี่ยม โดย
การสร างคลาสสามารถทาได ดังต อไปนี้
1.สร างโปรเจ็กต ใหม
2.สร างคลา สใหม โดยเลือกเมนู New>Class
3.กาหนดชื่อคลาส แล วกด Next
4.โปรแกรมจะแสดงคลาสใหม ขึ้นมา
5.จากนั้นให เติมโค ด แล วรันโปรแกรม
สรุป คลาสเปรียบเสมือนพิมพ เขียวสาหรับสร างออบเจ็กต ต างๆออกมาที่มีลักษณะ คล ายกัน
มาอยู รวมกัน ในการสร างค ลาสนั้น ภายในประกอบด วยส วนที่เป นคุณลักษณะหรือตัวแปรต างๆและส
วนที่เป นเมธอดโดย ที่ตัวแปรและเมธอดนี้ผที่นิยามคลาส ูู สามารถกาหนดได ว าจะให ผู ใช
ภายนอกสามารถเข าถึงได ในระดับใด เมื่อมีการออบเจ็กต ของคลาสขึ้นมาแล วต องการให ทาเมธอดใด
ทันที ในการนิยามคลาสนั้นจะต องสร างเมธอดที่มีชื่อเดียวกับคลาสที่เรียกว า คอนสตรัคเตอร ขึ้นมา