Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore การเขียนโปรแกรมเชิงวัตถุ

การเขียนโปรแกรมเชิงวัตถุ

Published by ปิดคอม อื่นๆ, 2021-10-20 08:52:19

Description: การเขียนโปรแกรมเชิงวัตถุ

Search

Read the Text Version

การเขียนโปรแกรมเชิงวตั ถุ

แนวคิดโปรแกรมเชงิ วตั ถุ โอโอพี (OOP) หรอื ออบเจก็ ต์โอเรยี นเท็ดโปรแกรมมง่ิ (OBJECT ORIENTED PROGRAMMING) เปน็ แนวคดิ ในการเขยี นโปรแกรมแบบหนง่ึ ท่ผี ู้รู้หลายๆ ทา่ นไดส้ รปุ หรอื ได้ให้คานยิ ามไวว้ ่า เป็นการเขียนโปรแกรมเชิง วัตถุ บางทา่ นกส็ รปุ วา่ เปน็ การเขยี นโปรแกรมแบบอา้ งอิงวัตถุ ซึ่งก็เปน็ การใหค้ วามหมายทตี่ รงมากเลยทเี ดยี ว OOP เป็นวิธกี ารเขียนโปรแกรม โดยอาศยั แนวคดิ ของวตั ถชุ ิ้นหนงึ่ มีความสามารถในการปกป้องขอ้ มลู และการ สืบทอดคุณสมบตั ิ ซึ่งทาให้แนวโนม้ ของ OOP ไดร้ ับการยอมรบั และพัฒนามาใชใ้ นระบบต่างๆ มากมาย เช่น ระบบปฏิบตั กิ าร วินโดวส์ เปน็ ต้น ในบทนจ้ี ะศกึ ษาถงึ ความเปน็ มา และความหมายของแนวคดิ การเขยี นโปรแกรมเชงิ วัตถุ ข้อควรรู้เก่ียวกบั หลักการเขียนโปรแกรมเชิงวตั ถุ ตลอดจนความสาคัญของการเขยี นและออกแบบระบบงานกอ่ นเขยี นโปรแกรม รวมถึงประโยชนข์ องการเขยี นโปรแกรมเชิงวตั ถซุ ่งึ จะทาใหผ้ เู้ รียนไดเ้ ขา้ ใจถงึ หลักการเบอ้ื งต้นของแนวความคิด เชิงวัตถนุ ้ีได้

ความเปน็ มาของแนวคิดแบบ OOP แนวความคดิ ดัง้ เดมิ ของการเขยี นโปรแกรม ก็คอื การแก้ปัญหาโดยใช้คอมพิวเตอร์เปน็ เคร่อื งมอื แนวคดิ น้ี คลา้ ยกับการใช้เครอื่ งคดิ เลขในการแกป้ ญั หาทางคณติ ศาสตร์ ดงั นน้ั การพฒั นาตวั ล่ามแปลภาษาไมว่ ่าจะเปน็ ภาษาเคร่อื ง ภาษาแอสเซมบลี ภาษาซี และภาษาอน่ื ๆ กม็ ีแนวการเขยี นโปรแกรมแบบเดยี วกนั เพยี งแต่เปลย่ี น รูปแบบและกฎเกณฑ์ของภาษาเทา่ นนั้ ด้วยเหตนุ เ้ี อง เมื่อมกี ารเสนอแนวคดิ ใหมใ่ นการเขยี นโปรแกรมทเี รยี กว่า การเขียนโปรแกรมเชิงวตั ถุ นักเขียนโปรแกรมรนุ่ เกา่ ๆ ก็ทาความเข้าใจได้ยาก แนวความคิดแบบใหมท่ ใ่ี ช้ในการเขยี นโปรแกรม กค็ ือ การเน้นถึงปญั หาและองคป์ ระกอบของปญั หา (เพ่ือ แกป้ ัญหา) การเน้นทป่ี ญั หาและองคป์ ระกอบของการแกป้ ญั หา (PROBLEM SPACE) จะคล้ายกับการแกไ้ ขปญั หา และชีวิตความเป็นอยู่ของมนษุ ย์ทจี่ ะตอ้ งมี คน สัตว์ สิ่งของ เพ่ือแกป้ ัญหา (มีหนา้ ทแ่ี กป้ ัญหา) มากกว่าจะมองที่ วธิ กี ารแก้ปัญหานน้ั ๆ หรอื ขนั้ ตอนในการแกป้ ญั หา (SOLUTION SPACE) ซง่ึ เป็นวิธีการเขยี นโปรแกรมแบบเกา่

ความเปน็ มาของแนวคดิ แบบ OOP (ตอ่ ) อาลนั เคย์ (ALAN KAY) เปน็ ผู้บกุ เบกิ แนวความคดิ การเขยี นโปรแกรมเชิงวตั ถคุ นหนงึ่ และเปน็ ผู้ทม่ี สี ว่ นในการ พฒั นาตวั แปลภาษา SMALL TALK ทีเ่ ปน็ ตน้ แบบของการเขยี นโปรแกรมเชิงวตั ถไุ ด้เสนอกฎ 5 ข้อ ที่เปน็ แนวทางของภาษาคอมพวิ เตอร์เชิงวตั ถุ หรอื ท่เี รยี กวา่ OBJECT-ORIENTED PROGRAMMING (OOP) ไว้ ดังน้ี 1.ทุกๆ ส่งิ เปน็ วัตถุ (EVERYTHING IS AN OBJECT) 2.โปรแกรม ก็คอื กลมุ่ ของวัตถทุ ี่ส่งข่าวสารบอกกันและกันให้ทางาน (A PROGRAM IS A BUNCH OF OBJECT TELLING EACH OTHER WHAT TO DO BY SENDING MESSAGES) 3.ในวัตถุแตล่ ะวตั ถจุ ะต้องมีหน่วยความจาและประกอบไปดว้ ยวตั ถุอื่นๆ (EACH OBJECT HAS ITS OWN MEMORY MADE UP OF OTHER OBJECTS) 4.วัตถทุ กุ ชนดิ จะตอ้ งจดั อยใู่ นประเภทใดประเภทหนง่ึ (EVERY OBJECT HAS A TYPE) 5.วัตถุทีจ่ ัดอยู่ในประเภทเดียวกันยอ่ มได้รบั ขา่ วสารเหมือนกนั (ALL OBJECTS OF A PARTICULAR TYPE CAN RECEIVE THE SAME MESSAGES)

แนวคดิ แบบ OOP ถ้าเราไม่มองในแง่มมุ ของการเขยี นโปรแกรมเพียงอยา่ งเดยี ว ใหม้ องไปในภาพรวม มองไปในสงิ่ รอบๆ ตวั เราสามารถ บอกได้วา่ แนวคิดของ OOP ก็คอื “ธรรมชาติของวตั ถุ” หมายความว่า OOP จะมองส่งิ แตล่ ะสง่ิ ถือเปน็ “วตั ถชุ นิ้ หนง่ึ ” (OBJECT) มนั จะมสี แี ดงหรือสีเขียวยาวหรอื สน้ั มนั กค็ ือวัตถุชน้ิ หน่งึ หมอื นกัน และเราสามารถกาหนดประเภทหรือคลาส ให้กับวตั ถเุ หล่านน้ั ได้ เช่น วัตถสุ ีแดงก็มารวมอยู่ในกลมุ่ เดยี วกัน หรอื วตั ถุท่มี ขี นาดยาวก็มารวมอยใู่ นกลุม่ เดยี วกนั เป็นตน้ นอกจากนี้ เมอ่ื OOP มองทุกสงิ่ ถอื เป็นวัตถชุ ิ้นหน่งึ แลว้ ยงั สามารถคดิ ตอ่ ไปอกี วา่ “วตั ถแุ ต่ละอย่งนัน้ ต่างกม็ ลี ักษณะและวิธีการใชง้ านเปน็ ของตัวเอง” ประโยคนี้มีความหมายวา่ วัตถแุ ตล่ ะชนดิ หรอื แต่ละช้ินตา่ งกม็ รี ูปร่าง ลักษณะ และการใช้งาน (การกระทา) ท่แี ตกตา่ งกนั ออกไป เราจะเรยี นคณุ ลักษณะของวัตถุว่า แอตทริบิวต์ (ATTRIBUTE) และจะเรยี กวิธกี ารใชง้ านวตั ถุวา่ เมธทอด (METHOD) ยกตัวอยา่ งเชน่ “ดินสอเป็นวัตถุทม่ี ลี ักษณะยาวเรยี ว ภายในเปน็ ไสถ้ ่านใชส้ าหรับเขยี น การใชด้ ินสอทาไดโ้ ดย ใช้มอื จับและเขยี นลงบนวัสดรุ องรบั ” จากประโยคในขา้ งตน้ เราสามารถจับใจความได้ว่า คณุ ลักษณะของวตั ถุ (ATTRIBUTE) ก็คือ “ยาวเรียว ภายในเปน็ ไส้ถ่าน” ส่วนการใชง้ าน (METHOD) กค็ ือ “ใชม้ อื จับและเขียนลงบนวัสดุ รองรับ”

แนวคดิ แบบ OOP (ตอ่ ) จากการยกตวั อยา่ งข้างตน้ สามารถสรปุ ได้แล้ววา่ ถา้ เกิดวตั ถุใดมีลักษณะยาวเรียว มไี ส้ เปน็ ถ่าน เม่อื จะใชง้ านจะตอ้ งใชม้ ือจบั และเขียนลงบนวัสดุรองรับ เราสามารถบอกไดเ้ ลยวา่ ส่ิงนนั้ ก็คือ “ดินสอ” น่ันเอง จะเห็นได้วา่ แนวคิดของ OOP นนั้ จะมลี ักษณะทค่ี ล้ายกบั ธรรมชาติของสงิ่ หนง่ึ ซงึ่ สามารถ แบง่ แยกสิ่งต่างๆ ออกเป็นแต่ละประเภทได้ ถ้านาเอาแนวคิดของ OOP มาใช้ในการเขียน โปรแกรมและการจดั การข้อมูล จะพบวา่ โปรแกรมหรอื ฟงั กช์ นั จะมคี วามเปน็ อสิ ระแก่กนั อยา่ ง เหน็ ได้ชดั อธิบายงา่ ยๆ ก็คือ โปรแกรมหรอื ฟงั ก์ชนั แตล่ ะตวั ถึงแมจ้ ะมาจากท่เี ดียวกนั แต่ สามารถทางานในคนละหนา้ ท่ี เกบ็ ขอ้ มลู คนละคา่ ได้ โดยจะไมย่ ุ่งเกี่ยวกันแตอ่ ย่างใด

การเชือ่ มต่อ (INTERFACE) อินเตอรเ์ ฟส (INTERFACE) หมายถงึ การเช่อื มตอ่ ถ้าเป็นการเช่ือมต่อ ระหว่างผ้ใู ชก้ ับคอมพิวเตอร์ จะเรยี กการเชอ่ื มตอ่ นนั้ ว่า ยสู เซอร์อินเตอรเ์ ฟส (USER INTERFACE) ซึง่ โดยปกติจะหมายถงึ ส่วนของหน้าจอทผี่ ้ใู ชส้ ง่ (ติดต่อ) ให้คอมพิวเตอรท์ างาน แตใ่ นการเขยี นโปรแกรมเชงิ วัตถุ การเชื่อมตอ่ ยงั รวมไปถงึ วตั ถุ (OBJECT) เพราะในวตั ถุจะต้องมอี นิ เตอร์เฟส อนั เป็นสว่ นที่ วตั ถุน้ันๆ จะใหบ้ ริการหรือเปน็ ส่วนทบ่ี อกวา่ วัตถุนนั้ ๆ สามารถทาอะไรได้บา้ ง ซึ่ง บางครงั้ เรียกว่า เมธทอด (METHOD)

การเช่อื มตอ่ (INTERFACE) ตอ่ ขอ้ ดีของการมีอนิ เตอร์เฟส ก็คือ การเปล่ยี นแปลงท่ีเกิดข้ึนภายในวัตถุจะไม่กระทบต่ออินเตอร์เฟส ดงั นนั้ ภายในวัตถุผเู้ ขียนคาส่งั สามารถดัดแปลง แก้ไข หรอื เพิ่มเติมไดต้ ลอดเวลา นอกจากน้ี ภายใน วตั ถุยังสามารถเก็บค่าตา่ งๆ ได้อีกด้วย แนวความคดิ นีเ้ องท่ีเปน็ จดุ เด่นของการเขยี นโปรแกรมเชงิ วัตถุ เน่อื งจากผู้ใช้สามารถเรียกใช้วตั ถุตา่ งๆ โดยไมจ่ าเปน็ ตอ้ งทราบกลไกการทางานภายใน เมอื่ ใช้กเ็ พยี งแต่ เรียกส่วนของอินเตอร์เฟส (หรอื ที่เรยี กว่า METHOD) น้ีโดยการสง่ ข่าวสาร (MESSAGE) ไปยงั วตั ถุ ท่ตี อ้ งการ ยกตัวอยา่ งเช่น การทางานระหวา่ งโทรทัศนก์ ับรโี มท ซ่ึงการใช้งานของโทรทัศนม์ ีดงั ต่อไปน้ี คอื เปิด ปิด เปล่ยี นชอ่ ง เมอื่ ผู้ใชต้ ้องการเปดิ สญั ญาณ โดยกดปุ่มสัญลักษณเ์ ปดิ ส่งไปยงั ตวั รบั ท่ี โทรทศั น์ หลังจากนัน้ โทรทัศน์กจ็ ะทางานในกลไกของการเปิด ซ่ึงเราไม่ต้องรับรู้ถึงวงจรท่อี ยภู่ ายในเลย โดย เปิด ปดิ และเปลีย่ นช่อง กค็ อื METHOD ของโทรทัศน์ เป็นต้น

การซอ่ นรายละเอียด (ENCAPSULATION) สว่ นประกอบของวตั ถตุ ามแนวความคดิ การเขียนโปรแกรมเชงิ วตั ถุ จะตอ้ งประกอบดว้ ยสองสว่ นเปน็ อยา่ งน้อย คอื สว่ นของคณุ สมบัติใช้เกบ็ ขอ้ มูลรายละเอยี ด สถานะ โดยใช้ตวั แปรเกบ็ คา่ ตา่ งๆ ไว้ และส่วนของเมธ ทอดทเี่ ป็นตวั เชอ่ื มการทางานของวัตถุนนั้ ๆ โดยผใู้ ช้จะไมส่ ามารถติดต่อใช้ งานตวั แปรทอ่ี ยู่ข้างในได้ ในภาษา C++ จะใช้คา PUBLIC,PRIVATE และ PROTECTED เข้ามาช่วยกาหนดขอบเขตการใช้

การนาวัตถมุ าใชใ้ หม่ (REUSE THE OBJECT) จดุ ประสงคใ์ หญ่ของการเขยี นโปรแกรมเชิงวตั ถุ ก็คือ การนาส่วนตา่ งๆ ของวัตถุทีส่ รา้ งข้ึนกลับมาใชใ้ หม่หรอื ท่เี รยี กในภาษาองั กฤษว่า “REUSE” เมอ่ื ผเู้ ขียนโปรแกรมสร้างวัตถุมจี านวนมากพอกส็ ามารถนาวัตถทุ ่ีสร้างขน้ึ มา ประกอบเปน็ วัตถุใหม่ หรือท่เี รียกวา่ คอมโพสิตชัน่ “COMPOSITION” ดงั ตัวอย่างการสร้างรถยนต์ ผูใ้ ช้ไมจ่ าเป็นจะต้องสร้างรถโดยเริ่มจาก สว่ นประกอบตา่ งๆ ทีท่ าใหม่ทกุ ครง้ั แต่ผ้ใู ชส้ ามารถสร้างจากสว่ นประกอบท่ี มีอยแู่ ลว้ ได้

การเขียนโปรแกรมและการออกแบบระบบงาน โดยปกติก่อนทผี่ ู้เขยี นโปรแกรมจะสามารถเขียนคาสั่งได้ จะตอ้ งมีการออกแบบ ระบบงานก่อนแลว้ จึงเขียนโปรแกรมเป็นภาษาตา่ งๆ ตามชนิดของงานและความ เหมาะสม การเขยี นโปรแกรมเชิงวตั ถุกเ็ ช่นเดียวกนั จะต้องมกี ารออกแบบระบบงาน ก่อน หลกั สาคัญสาหรบั การออกแบบเชิงวัตถุ กค็ ือ การหาวตั ถใุ ห้พบ เมื่อพบวตั ถุ แล้วจะต้องจาแนกวตั ถุออกเปน็ ส่วนทเี่ ปล่ียนแปลงและสว่ นท่อี ยู่คงท่ี วตั ถทุ ่ีไม่ เปลยี่ นแปลงสามารถนาไปใช้ไดเ้ ม่ีอมกี ารปรับปรงุ ระบบงานใหม่ นัน่ เป็นเหตผุ ลที่ทาให้ ต้องมกี ารออกแบบระบบงาน วตั ถทุ ี่มีการเปล่ียนแปลงบ่อย กไ็ ด้แก่ วตั ถทุ ่ีทาหน้าที่เปน็ อนิ เตอร์เฟส เป็นตน้

ประโยชน์ของการโปรแกรมแบบ OOP เทคโนโลยขี องออบเจ็กต์โอเรียนเทด็ ไดน้ าประโยชนข์ องการพฒั นา ซอฟต์แวร์มาให้ ดงั น้ี 1.ความสามารถในการเรยี กใช้ได้หลายครั้ง ออบเจ็กต์ได้ถูกออกแบบ ตามหลักการทวี่ า่ สามารถเรยี กใชง้ านได้หลายๆ ครั้ง ในหลกั การนที้ าให้ APPLICATION ของ OOP ตัวแรกอาจจะทาไดย้ าก แต่ว่าโปรแกรมแอป พลเิ คชันท่เี ขียนภายหลงั จะสรา้ งง่ายเพราะสามารถเรียกใช้ออบเจก็ ต์ทถ่ี กู สรา้ งไวต้ ั้งแต่โครงงานแรกได้

ประโยชนข์ องการโปรแกรมแบบ OOP (ต่อ) 2.ความเชอ่ื ถอื ได้ โปรแกรมแอปพลิเคชันของ OOP จะมคี วามเชือ่ ถอื ไดส้ งู เพราะจะรวม เอาสว่ นยอ่ ยท่ที ดสอบจนได้มาตรฐานแล้วมารวมเข้าไว้ด้วยกนั รหัส (CODE) ทีเ่ ขยี นข้นึ มา ใหมใ่ นแต่ละแอพพลิเคชันจะมไี มม่ ากนกั เนื่องจากรหสั สว่ นใหญ่จะถกู ดึงมาจากไลบรารที มี่ ี ความเชอื่ ถือไดส้ ูงอยแู่ ลว้ และในการโปรแกรมภาษา C++ ยงั มคี ณุ ประโยชน์อ่ืนอีก 3.ความตอ่ เนอื่ งกนั การพฒั นาซอฟต์แวรแ์ บบ OOP ใน C++ จะเปลีย่ นไปตามฝีมอื และ จานวนนักเขียนโปรแกรมภาษา C นักโปรแกรมภาษา C ท่ีชานาญสามารถเรียนรูห้ ลกั การของ OOP ได้ภายในเวลาไม่นาน และสามารถเข้าใจในเน้อื หาได้ไมย่ าก อีกท้งั สามารถแปลงโปรแกรม แอพพลิเคชัน่ ของ C เป็น C++ ได้


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook