ความหมายของโอโอพี                          โอโอพี หรื OOP เปนคํายอของ Object-Oriented Programmingหมายถึงการเขียนโปรแกรมเ...
คลาสและออบเจ็กต                  การมองทุกอยางของปญหาเปนวัตถุหรืออบเจ็กตนั้น ถาหากวัตถุใดมีลักษณะคลายกันก็จะรวมทั้ง...
การนิยามคลาส    ในภาษาจาวาสามารถนิยามคลาสหรือประกาศคลาสขึ้นมาโดยมีรูปแบบดังนี้    [AccessSpecifier] Class Name            ...
สแตติก(static)                 ในจาวามีคลาสตางๆใหใชงานมากมาย การสรางคลาสขึ้นมาใหมนี้ทําใหเราสามารถสรางเมธอดใหมๆขึ้...
Constructors เปนฟงกชันในคลาสที่จะถูกเรียกอัตโนมัติเมื่อเราสรางอ็อบเจ็คใหกับคลาสนั้น ๆ ดวยคําสั่ง newซึ่งมันจะเปนฟง...
การสงออบเจ็กตไปยังเมธอด                           ในการเขียนโปรแกรมที่มีการสรางคลาสขึ้นมาหลายๆคลาสนั้นออบเจ็กตของคลาสห...
ตัวอยางการประยุกตการเขียนโปรแกรมเชิงวัตถุ    จะเปนแบบการออกแบบคลาสแลวนํามาเขียนโปรแกรมประยุกตสําหรับใชงานจริง โดยอธิ...
ตัวอยางโปรแกรม จะแสดงการสรางคลาสของการนําตัวอักขระ[]มาสรางเปนรูปสามเหลี่ยม โดยการสรางคลาสสามารถทําไดดังตอไปนี้1.สร...
คลาสและการเขียนโปรแกรมวัตถุเบื้องตน                         จัดทําโดย            นายปตพงษ ปลีบุตร เลขที่10             ...
Upcoming SlideShare
Loading in...5
×

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น

1,189

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,189
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

คลาสและการเขียนโปรแกรมเชิงวัตถุเบื้องต้น

  1. 1. ความหมายของโอโอพี โอโอพี หรื OOP เปนคํายอของ Object-Oriented Programmingหมายถึงการเขียนโปรแกรมเชิงวัตถุ หรือเขียนโปรแกรมแบบออบเจ็กต การเขียนโปแกรมในลักษณะนี้จะแตกตางจากกา เขียน รโปรแกรมที่ประมวลผลเชิงคําสั่งที่มีการทํางานทีละตําสั่งดังที่เคยศึกษามา แตจะเปนการสรางขอมูลเปนวัตถุหรือออบเจ็กต แลวเขียนโปแกรมประมวลกับออบเจ็กตนั้นๆ ใหทํางานตามตองการ นอกจากนั้นยังเขียนโปรแกรมประมวลผลกับออบเจ็กตได ซึ่งออบเจ็กตจะมีลักษณะ 3 ประการดังตอไปนี้ state เปนคุณลักษณะของออบเจ็กตนั้นๆ ที่บอกวาออบเจ็กตนั้นเปนอะไรบาง หรือเรียกอีกอยางหนึ่งวาเปนคุณลักษณะประจํา โดยคุณสมบัติขึ้นกับมุมมองของแตละคน ในการเขียนโปรแกรมเชิงวัตถุ คุณลักษณะประจํานี้มักจะเปนขอมูล หรือตัวแปรตางๆ ของออบเจ็กตนั้น Behavior หมายถึง พฤติกรรมของออบเจ็กตI dentity เปนคุณลักษณะที่ทําใหออบเจ็กตแตละออบเจ็กตตางกัน ในการเขียนโปรแกรมนั้นออบเจ็กตมีไดหลายตัว โดยออบเจ็กตแตละตัวจะเปนอิสระ ไมขึ้นตอกันแตละออบเจ็กตสามารถที่จะสื่อสารหรือโตตอบกันไดโดยวิธีสงเมสเสจ ถึงกัน
  2. 2. คลาสและออบเจ็กต การมองทุกอยางของปญหาเปนวัตถุหรืออบเจ็กตนั้น ถาหากวัตถุใดมีลักษณะคลายกันก็จะรวมทั้งหมดใหเปนคลาส ถาหากมีตัวแปรหรือสรางขอมูลขึ้นมา ขอมูลนั้นก็จะถูกใชในออบเจ็กตนั้นๆ การกระทํากับออบเจ็กตจะกระทําผานเมธอดของคลาสนั้นๆ สวนสําคัญสองสวนของออบเจ็กตคือ คุณลักษณะซึ่งเปนขอมูลประจําตัวของออบเจ็กตและพฤติกรรมหรือเมธอด ซึ่งบอกวาออบเจ็กตกําลังทําสิ่งใดอยูถาหากมีการสรางออบเจ็กตขึ้นมาและโปรแกรมตองการจัดการกับขอมูลทีเ่ ปนคุณลักษณะของออบเจ็กตก็จะกระทําผานเมธอด สําหรับคลาสจะเปนที่รวบรวมของออบเจ็กตหลายๆ ออบเจ็กตที่มีลักษณะเดียวกัน แตอาจมีขอมูลประจําตัวหรือคุณลักษณะตางๆ ดังนั้นในการเขียนโปรแกรมเชิงวัตถุนั้นจะตองรูจักการนิยาม คลาส จากทีกลาวมาแลวจะพบวาคลาสเปนการจัดกลุมของ ่ออบเจ็กตที่มีคุณลักษณะและพฤติกรรมอยางเหมือนกัน เปรียบเสมือนเปนพิมพเขียวของออบเจ็กต หรือเปนแมแบบสําหรับออบเจ็กต ในการเขียนโปรแกรมเชิงวัตถุนั้นจะไมมีการใชงานคลาสตรงๆ แตจะใชคลาสเปนพิมพเขียวเพื่อสรางออบเจ็กตตางๆขึ้นมาออบเจ็กตทถูกสรางจากคลาสจะเรียนกวา อินสแตนซ ของคลาสนั้นโดยที่คลาสใดคลาสหนึ่งสามารถสรางออบเจ็กตออกมาไดหลายตัวแตละ ี่ตัวจะมีชื่อแตกตางกันไป สําหรับการเขียนโปรแกรมเชิงวัตถุดวยภาษตางๆนั้น จะมีคลาสมาตรฐานใหผูเขียนโปรแกรมใชงาน และผูเขียนโปรแกรมก็ตองเขาใจวิธีการสรางคลาสขึ้นมาเองดวย ดังนั้นในการเขียนโปรแกรมเชิงวัตถุจะตองพยายามจําแนกวาวัตถุที่เราสนใจนั้นตองมีตัวแปรใดทีสามารถแยกแยะวัตถุแตละตัวได และวัตถุดังกลาวมีพฤติกรรมอยางไร จากนั้นนํามารวมเปนคลาส และสรางคลาสนั้นขึ้นมา
  3. 3. การนิยามคลาส ในภาษาจาวาสามารถนิยามคลาสหรือประกาศคลาสขึ้นมาโดยมีรูปแบบดังนี้ [AccessSpecifier] Class Name { Members }AccessSpecifier เปนความสามารถในการเขาถึงคลาสนั้นๆclass เปนคียเวิรดในภาษาจาวาเพทอใชในการประกาศคลาสName เปนชื่อคลาสมี่ประกาศขึ้นMembers เปนคุณลักษณะหรือเมธอดตางๆ ของคลาสที่นิยามขึ้น การสรางออบเจ็กต หลังจากนิยามคลาสขึ้นมาแลว ถาหากโปรแกรมตองการใชงานจะตองสรางออบเจ็กตขึ้นมา เพื่อบอกวาออบเจ็กตเปนของคลาสใด โดยจะตองประกาศออบเจ็กตขึ้นมากอนซึ่งมีรูปแบบดังนี้ ClassName ObjectName; การประกาศออบเจ็กตนี้จะทําใหคอมไพเลอรรับทราบวามีตัวแปร ObjectName แตจะยังไมมีหนวยความจําสําหรับขอมูลของออบเจ็กตที่ประกาศขึ้น ซึ่งจะตองสรางออบเจ็กตขึ้นมากอนโดยใชคําวา new ซึ่งมีรูปแบบดังนี้objecyName = new ClassName([arguments]) เมือมีการสรางออบเจ็กตขึ้นมาแลว สมาชิกของออบเจ็กตคือสมาชิกของคลาสนั้น ซึ่งไดแกคุณลักษณะหรือตัวแปรและเมธอดตางๆ ออบเจ็กตจะสามารถเขาถึงขอมูลที่เปนคุณลักษณะหรือเรียกใชเมธอดไดไมขึ้นกับaccessSpecifier ที่ถูกประกาศไวตอนนิยามคลาส โดยการเรียกใชสมาชิกจะทําโดยใชเครื่องหมายจุด แลวตามดวยสมาชิกที่ตองการเรียกใช
  4. 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. 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. 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. 7. ตัวอยางการประยุกตการเขียนโปรแกรมเชิงวัตถุ จะเปนแบบการออกแบบคลาสแลวนํามาเขียนโปรแกรมประยุกตสําหรับใชงานจริง โดยอธิบายขั้นตอนสําคัญในการทํางานแตละขั้นตอนโดยมีโปรแกรมตัวอยางการเขียนโปรแกรมสําหรับเขารหัสขอมูลโดยสงขอมูลผานเขาไปในเครือขายคอมพิวเตอรเพื่อความปลอดภัยไดนําเทคโนโลยีการเขารหัสมาใช ทําโดยการเลื่อนขอมูล แตถาเปนตัวอักขระตัวสุดทายของภาษาอังกฤษการเลื่อนขอมูลจะกลับมาเริ่มตนที่ตวแรกใหม ั- ถาหากเปน 2-shift ขอมูลจะแทนไดดังนี้A แทนดวย CB แทนดวย D………………..Y แทนดวย AZ แทนดวย B ถาขอมูลตนฉบับเปน “DIZZY” แลวเขารหัสแบบ 2- shift ขอมูลที่เขารหัสแลวจะเปน “FKBBA”อธิบายการทํางานของโปรแกรม1.ถาหากพิมพคําวา Teerawut ลงไป จะทําใหตัวแปร message ชี้ไปยังออบเจ็กตสตริง “Teerawut”2.ตอมาถาหากกดคียตัวเลข 5 ลงไป จะทําใหตัวแปร shift มีคาเปน 53.เมื่อโปรแกรมเรียกใชเมธอด encrypt จะทําให msg ซึ่งเปนพารามิเตอรของเมธอดชี้ไปยังออบเจ็กตเดียวกับ message และพารามิเตอร shift มีคาเปน 5 เชนกัน4.เมื่อเมธอด encrypt ทํางาน ทําใหตัวแปร encryptedMessage ชี้ไปยังหนอยความจําออบเจ็กตสตริงที่สรางขึ้นมาใหม5.จากนั้นจะทําใหตัวแปร msg ชี้ไปยังสตริงชุดใหมที่ผานการเขารหัสแลว6.หลังจากนั้นจะให encryptedMessage มีคาสตริงที่เขารหัสแลว
  8. 8. ตัวอยางโปรแกรม จะแสดงการสรางคลาสของการนําตัวอักขระ[]มาสรางเปนรูปสามเหลี่ยม โดยการสรางคลาสสามารถทําไดดังตอไปนี้1.สรางโปรเจ็กตใหม2.สรางคลาสใหม โดยเลือกเมนู New>Class3.กําหนดชื่อคลาส แลวกด Next4.โปรแกรมจะแสดงคลาสใหมขึ้นมา5.จากนั้นใหเติมโคด แลวรันโปรแกรมสรุป คลาสเปรียบเสมือนพิมพเขียวสําหรับสรางออบเจ็กตตางๆออกมาที่มีลักษณะคลายกันมาอยูรวมกัน ในการสรางค ลาสนั้น ภายในประกอบดวยสวนที่เปนคุณลักษณะหรือตัวแปรตางๆและสวนที่เปนเมธอดโดยที่ตัวแปรและเมธอดนี้ผที่นิยามคลาส ูสามารถกําหนดไดวาจะใหผูใชภายนอกสามารถเขาถึงไดในระดับใด เมื่อมีการออบเจ็กตของคลาสขึ้นมาแลวตองการใหทําเมธอดใดทันที ในการนิยามคลาสนั้นจะตองสรางเมธอดที่มีชื่อเดียวกับคลาสที่เรียกวา คอนสตรัคเตอร ขึ้นมา
  9. 9. คลาสและการเขียนโปรแกรมวัตถุเบื้องตน จัดทําโดย นายปตพงษ ปลีบุตร เลขที่10 ิ นางสาว รุงทิวา ผดุงพัฒนดิษฐ เลขที20 ่ นางสาวจณิสตา ลิ้มทอง เลขที่30 นางสาวจันทรา แสงสุริยาอุทัย เลขที31 ่ นางสาวนิศาชล ไทยพุทรา เลขที่33 นางสาวอาริษา งามขํา เลขที่37 นักเรียนชั้น ม.6/1โรงเรียนเฉลิมพระเกียรติสมเด็จพระศรีนครินทร กาญจนบุรี วิชาการเขียนโปรแกรมประยุกต (ง30213) เสนอ ครูทรงศักดิ์ โพธิ์เอี่ยม
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×