Weitere ähnliche Inhalte
Ähnlich wie คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
Ähnlich wie คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น (20)
คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น
- 1. ความหมายของโอโอพี โอโอพี หรื OOP เปนคํายอของ Object-Oriented Programming
หมายถึงการเขียนโปรแกรมเชิงวัตถุ หรือเขียนโปรแกรมแบบออบเจ็กต การเขียนโปแกรมในลักษณะนี้จะแตกตางจากกา เขียน ร
โปรแกรมที่ประมวลผลเชิงคําสั่งที่มีการทํางานทีละตําสั่งดังที่เคยศึกษามา แตจะเปนการสรางขอมูลเปนวัตถุหรือออบเจ็กต แลว
เขียนโปแกรมประมวลกับออบเจ็กตนั้นๆ ใหทํางานตามตองการ นอกจากนั้นยังเขียนโปรแกรมประมวลผลกับออบเจ็กตได ซึ่ง
ออบเจ็กตจะมีลักษณะ 3 ประการดังตอไปนี้
state เปนคุณลักษณะของออบเจ็กตนั้นๆ ที่บอกวาออบเจ็กตนั้นเปนอะไรบาง หรือเรียกอีกอยางหนึ่งวาเปน
คุณลักษณะประจํา โดยคุณสมบัติขึ้นกับมุมมองของแตละคน ในการเขียนโปรแกรมเชิงวัตถุ คุณลักษณะประจํานี้มักจะเปน
ขอมูล หรือตัวแปรตางๆ ของออบเจ็กตนั้น
Behavior หมายถึง พฤติกรรมของออบเจ็กต
I dentity เปนคุณลักษณะที่ทําใหออบเจ็กตแตละออบเจ็กตตางกัน
ในการเขียนโปรแกรมนั้นออบเจ็กตมีไดหลายตัว โดยออบเจ็กตแตละตัวจะเปนอิสระ ไมขึ้นตอกันแตละออบเจ็กต
สามารถที่จะสื่อสารหรือโตตอบกันไดโดยวิธีสงเมสเสจ ถึงกัน
- 2. คลาสและออบเจ็กต การมองทุกอยางของปญหาเปนวัตถุหรืออบเจ็กตนั้น ถาหากวัตถุใดมีลักษณะคลายกันก็จะรวมทั้งหมดให
เปนคลาส ถาหากมีตัวแปรหรือสรางขอมูลขึ้นมา ขอมูลนั้นก็จะถูกใชในออบเจ็กตนั้นๆ การกระทํากับออบเจ็กตจะกระทําผานเมธอดของคลาส
นั้นๆ
สวนสําคัญสองสวนของออบเจ็กตคือ คุณลักษณะซึ่งเปนขอมูลประจําตัวของออบเจ็กตและพฤติกรรมหรือเมธอด ซึ่งบอกวา
ออบเจ็กตกําลังทําสิ่งใดอยูถาหากมีการสรางออบเจ็กตขึ้นมาและโปรแกรมตองการจัดการกับขอมูลทีเ่ ปนคุณลักษณะของออบเจ็กตก็จะกระทํา
ผานเมธอด
สําหรับคลาสจะเปนที่รวบรวมของออบเจ็กตหลายๆ ออบเจ็กตที่มีลักษณะเดียวกัน แตอาจมีขอมูลประจําตัวหรือคุณลักษณะ
ตางๆ
ดังนั้นในการเขียนโปรแกรมเชิงวัตถุนั้นจะตองรูจักการนิยาม คลาส จากทีกลาวมาแลวจะพบวาคลาสเปนการจัดกลุมของ
่
ออบเจ็กตที่มีคุณลักษณะและพฤติกรรมอยางเหมือนกัน เปรียบเสมือนเปนพิมพเขียวของออบเจ็กต หรือเปนแมแบบสําหรับออบเจ็กต
ในการเขียนโปรแกรมเชิงวัตถุนั้นจะไมมีการใชงานคลาสตรงๆ แตจะใชคลาสเปนพิมพเขียวเพื่อสรางออบเจ็กตตางๆขึ้นมา
ออบเจ็กตทถูกสรางจากคลาสจะเรียนกวา อินสแตนซ ของคลาสนั้นโดยที่คลาสใดคลาสหนึ่งสามารถสรางออบเจ็กตออกมาไดหลายตัวแตละ
ี่
ตัวจะมีชื่อแตกตางกันไป
สําหรับการเขียนโปรแกรมเชิงวัตถุดวยภาษตางๆนั้น จะมีคลาสมาตรฐานใหผูเขียนโปรแกรมใชงาน และผูเขียนโปรแกรมก็ตอง
เขาใจวิธีการสรางคลาสขึ้นมาเองดวย ดังนั้นในการเขียนโปรแกรมเชิงวัตถุจะตองพยายามจําแนกวาวัตถุที่เราสนใจนั้นตองมีตัวแปรใดที
สามารถแยกแยะวัตถุแตละตัวได และวัตถุดังกลาวมีพฤติกรรมอยางไร จากนั้นนํามารวมเปนคลาส และสรางคลาสนั้นขึ้นมา
- 3. การนิยามคลาส
ในภาษาจาวาสามารถนิยามคลาสหรือประกาศคลาสขึ้นมาโดยมีรูปแบบดังนี้
[AccessSpecifier] Class Name
{
Members
}
AccessSpecifier เปนความสามารถในการเขาถึงคลาสนั้นๆ
class เปนคียเวิรดในภาษาจาวาเพทอใชในการประกาศคลาส
Name เปนชื่อคลาสมี่ประกาศขึ้น
Members เปนคุณลักษณะหรือเมธอดตางๆ ของคลาสที่นิยามขึ้น
การสรางออบเจ็กต
หลังจากนิยามคลาสขึ้นมาแลว ถาหากโปรแกรมตองการใชงานจะตองสรางออบเจ็กตขึ้นมา เพื่อบอกวาออบเจ็กตเปนของคลาสใด โดยจะตองประกาศออบเจ็กตขึ้นมากอนซึ่งมี
รูปแบบดังนี้
ClassName ObjectName;
การประกาศออบเจ็กตนี้จะทําใหคอมไพเลอรรับทราบวามีตัวแปร ObjectName แตจะยังไมมีหนวยความจําสําหรับขอมูลของออบเจ็กตที่ประกาศขึ้น ซึ่ง
จะตองสรางออบเจ็กตขึ้นมากอนโดยใชคําวา new ซึ่งมีรูปแบบดังนี้
objecyName = new ClassName([arguments])
เมือมีการสรางออบเจ็กตขึ้นมาแลว สมาชิกของออบเจ็กตคือสมาชิกของคลาสนั้น ซึ่งไดแกคุณลักษณะหรือตัวแปรและเมธอดตางๆ ออบเจ็กตจะ
สามารถเขาถึงขอมูลที่เปนคุณลักษณะหรือเรียกใชเมธอดไดไมขึ้นกับaccessSpecifier ที่ถูกประกาศไวตอนนิยามคลาส โดยการเรียกใชสมาชิกจะทําโดยใชเครื่องหมายจุด แลว
ตามดวยสมาชิกที่ตองการเรียกใช
- 4. สแตติก(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;
}
}
จากโปรแกรมนี้จะเปนวาเมธอดในคลาส Scanner ที่ใชรับขอมูลจะไมเปนแบบสแตติก ซึ่งจะตองสรางออบเจ็กตขึ้นมา แต
เมธอดชื่อmax ในคลาส TestMax ที่สรางขึ้นปนแบบสแตติก จึงเรียกชื่อคลาสและตามดวยเมธอดมาใชงานไดทันทีโดยไมตองสราง
ออบเจ็กต
- 5. Constructors เปนฟงกชันในคลาสที่จะถูกเรียกอัตโนมัติเมื่อเราสรางอ็อบเจ็คใหกับคลาสนั้น ๆ ดวยคําสั่ง new
ซึ่งมันจะเปนฟงกชัน Constructors ไดก็ตอเมื่อชื่อของมันเหมือนชื่อคลาส ถาภายในคลาสไมมี constructor ดังนั้นมันจะทํา
การเรียก constructure ของ base class (ถามันมี) เชน
<?php
class Auto_Cart extends Cart
{
function Auto_Cart() {
$this->add_item("10", 1);
}
}
?>
Constructors function นั้นสามารถรับคาพารามิเตอรไดเชนกัน ดังนี้
<?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); ?>
- 6. การสงออบเจ็กตไปยังเมธอด ในการเขียนโปรแกรมที่มีการสรางคลาสขึ้นมาหลายๆคลาสนั้น
ออบเจ็กตของคลาสหนึ่งสามารถใชเปนอารกิวเมนตเพื่อสงผานไปยังเมธอดของคลาสอีกคลาสหนึ่งได
เชนโปรแกรม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;
}
}
- 7. ตัวอยางการประยุกตการเขียนโปรแกรมเชิงวัตถุ
จะเปนแบบการออกแบบคลาสแลวนํามาเขียนโปรแกรมประยุกตสําหรับใชงานจริง โดยอธิบายขั้นตอนสําคัญในการทํางานแตละขั้นตอน
โดยมีโปรแกรมตัวอยางการเขียนโปรแกรมสําหรับเขารหัสขอมูลโดยสงขอมูลผานเขาไปในเครือขายคอมพิวเตอรเพื่อความปลอดภัยไดนํา
เทคโนโลยีการเขารหัสมาใช ทําโดยการเลื่อนขอมูล แตถาเปนตัวอักขระตัวสุดทายของภาษาอังกฤษการเลื่อนขอมูลจะกลับมาเริ่มตนที่ตวแรกใหม
ั
- ถาหากเปน 2-shift ขอมูลจะแทนไดดังนี้
A แทนดวย C
B แทนดวย D
………………..
Y แทนดวย A
Z แทนดวย B
ถาขอมูลตนฉบับเปน “DIZZY” แลวเขารหัสแบบ 2- shift ขอมูลที่เขารหัสแลวจะเปน “FKBBA”
อธิบายการทํางานของโปรแกรม
1.ถาหากพิมพคําวา Teerawut ลงไป จะทําใหตัวแปร message ชี้ไปยังออบเจ็กตสตริง “Teerawut”
2.ตอมาถาหากกดคียตัวเลข 5 ลงไป จะทําใหตัวแปร shift มีคาเปน 5
3.เมื่อโปรแกรมเรียกใชเมธอด encrypt จะทําให msg ซึ่งเปนพารามิเตอรของเมธอดชี้ไปยังออบเจ็กตเดียวกับ message และ
พารามิเตอร shift มีคาเปน 5 เชนกัน
4.เมื่อเมธอด encrypt ทํางาน ทําใหตัวแปร encryptedMessage ชี้ไปยังหนอยความจําออบเจ็กตสตริงที่สรางขึ้นมาใหม
5.จากนั้นจะทําใหตัวแปร msg ชี้ไปยังสตริงชุดใหมที่ผานการเขารหัสแลว
6.หลังจากนั้นจะให encryptedMessage มีคาสตริงที่เขารหัสแลว
- 9. คลาสและการเขียนโปรแกรมวัตถุเบื้องตน
จัดทําโดย
นายปตพงษ ปลีบุตร เลขที่10
ิ
นางสาว รุงทิวา ผดุงพัฒนดิษฐ เลขที20
่
นางสาวจณิสตา ลิ้มทอง เลขที่30
นางสาวจันทรา แสงสุริยาอุทัย เลขที31 ่
นางสาวนิศาชล ไทยพุทรา เลขที่33
นางสาวอาริษา งามขํา เลขที่37
นักเรียนชั้น ม.6/1
โรงเรียนเฉลิมพระเกียรติสมเด็จพระศรีนครินทร กาญจนบุรี
วิชาการเขียนโปรแกรมประยุกต (ง30213)
เสนอ
ครูทรงศักดิ์ โพธิ์เอี่ยม