การพัฒนาซอฟต์แวร์แนวใหม่ ซอฟต์แวร์เชิงวัตถุ
การพัฒนาซอฟต์แวร์แนวใหม่ ซอฟต์แวร์เชิงวัตถุ
ในรอบห้าสิบปีที่มีคอมพิวเตอร์ใช้ การพัฒนาซอฟต์แวร์ได้เปลี่ยนแปลงตามสภาพการพัฒนา เริ่มจากการคิดค้นหาภาษาคอมพิวเตอร์เพื่อช่วยในการสั่งการ การพัฒนาซอฟต์แวร์ที่ใช้งานจึงขึ้นอยู่กับการเขียนโปรแกรมโปรแกรมจึงเป็น ลำดับการทำงานของคอมพิวเตอร์
ในยุคต้น ภาษาที่ใช้สั่งการเป็นภาษาเชิงลำดับ งานประยุกต์จึงใช้ภาษาเชิงลำดับสั่งงาน เช่น วานพัฒนาซอฟต์แวร์ด้วยภาษาฟอร์แทรน เบสิก โคบอล ต่อมาเมื่อพบว่างานที่สั่งให้คอมพิวเตอร์ทำมีความซับซ้อนมากขึ้น การสั่งงานทำให้วิธีการเขียนโปรแกรมขึ้นอยู่กับตัวบุคคล เพราะลำดับความคิดที่ถ่ายออกมาเป็นรูปโปรแกรมนั้นยากที่จะทำความเข้าใจได้ โปรแกรมที่พัฒนาจึงขึ้นกับตัวบุคคล ไม่สามารถให้อีกบุคคลหนึ่งดำเนินการตรวจสอบหรือทำความเข้าใจเกี่ยวกับ โปรแกรมได้ง่าย
ความคิดนี้จึงต้องทำซอฟต์แวร์ให้เป็นโครงสร้าง มีการนิยามภาษาคอมพิวเตอร์แบบกระบวนความ (procedure) เน้นการพัฒนาซอฟต์แวร์แบบโครงสร้าง จึงมีการใช้โปรแกรมแบบโครงสร้าง การพัฒนาภาษาคอมพิวเตอร์หรือเครื่องมือที่ใช้ในการพัฒนาซอฟต์แวร์จึงเน้นแบบ โครงสร้าง ใช้ภาษาปาสคาล ซี หรือภาษาต่าง ๆ ที่พัฒนามาในรูปแบบกระบวนความ เพื่อให้มีการพัฒนาซอฟต์แวร์แบบท้อปดาวน์มากขึ้น
อย่างไรก็ตาม การพัฒนาซอฟต์แวร์แบบกระบวนความที่เป็นโครงสร้างก็ยังเป็นแนวทางของการพัฒนา ซอฟต์แวร์แบบนามธรรม ใช้จินตนาการ ดังนั้นการสร้างจินตนาการในงานที่ซับซ้อนยังเป็นเรื่องยาก ซอฟต์แวร์ตามแนวจินตนาการของบุคคลหนึ่งจึงยากที่จะนำมาใช้กับอีกบุคคลหนึ่ง ซอฟต์แวร์ที่พัฒนาแล้วยังยากที่จะนำมาใช้งานใหม่ ทั่วโลกจึงมีซอฟต์แวร์ที่เขียนกันขึ้นมามากมาย ยากที่จะนำกลับมาใช้ใหม่ได้
ความคิดในเรื่องการปรับกระบวนทัศน์(paradigm) มีมาหลายครั้งแล้ว ในช่วงปี ค.ศ. 1980-1990 ประเทศญี่ปุ่น โดยกระทรวงการค้าและอุตสาหกรรมได้ร่วมกับบริษัทชั้นนำของญี่ปุ่นในเรื่องการ ผลิตคอมพิวเตอร์และมหาวิทยาลัยเพื่อทำการศึกษาคอมพิวเตอร์ในยุคที่ห้า โดยเน้นรูปแบบของคอมพิวเตอร์แนวใหม่ ทั้งทางด้านฮาร์ดแวร์และซอฟต์แวร์ เพื่อให้ได้คอมพิวเตอร์ยุดใหม่ที่นำมาใช้ในงานปัญญาประดิษฐ์ต่าง ๆ อย่างไรก็ดี โครงการคอมพิวเตอร์รุ่นที่ห้าของญี่ปุ่นประสบความสำเร็จระดับหนึ่ง แต่ก็ยังยากที่จะพัฒนาต่อเนื่อง ทั้งนี้เพราะพัฒนาการทางด้านไมโครโปรเซสเซอร์ของอเมริกัน โดยเฉพาะอินเทลและบริษัทคู่แข่งของอินเทล สามารถสร้างชิปได้ในราคาถูก และมีผู้นำมาประยุกต์ใช้ได้มากมาย มีพัฒนาการที่เร็ว ดังนั้นความคิดที่จะสร้างคอมพิวเตอร์แนวใหม่ของญี่ปุ่นจึงไม่มีใครขานรับ ทำให้ผลงานวิจัยเหล่านั้นพบกับอุปสรรคในเรื่องการดำเนินต่อในขั้นอุตสาหกรรม และการนำไปใช้
ความคิดของประเทศญี่ปุ่น ก็ทำให้เกิดการตื่นตัวในการพัฒนาคอมพิวเตอร์ทั้งในสหรัฐอเมริกาและยุโรป ความคิดเหล่านี้ได้รับการปรับปรุงและยังมีแนวทางของการแข่งขันกัน โดยเฉพาะการพัฒนางานทางด้านปัญญาประดิษฐ์ต่าง ๆ
การปรับกระบวนทัศน์ในเรื่องความคิดของการพัฒนาซอฟต์แวร์ที่เด่นชัดครั้ง หนึ่ง คือการเขียนโปรแกรมแบบภาษาพรรณา หรือที่เรียกว่า declarative language ภาษาโปรล็อก หรือภาษาลิสน์
แนวคิดเชิงวัตถุ
แนวคิดเชิงวัตถุเป็นแนวคิดที่มีมาอย่างต่อเนื่อง ตั้งแต่การใช้งานทางด้านปัญญาประดิษฐ์การเขียนโปรแกรมเชิงพรรณาที่ใช้หลัก การของการบรรยายเชิงวัตถุ รูปแบบของภาษาที่ใช้จึงเน้นรูปธรรมที่ต้องการการบรรยาย
ความคิดเชิงวัตถุ เป็นความคิดที่ใช้ในการสร้างโมเดลของสิ่งที่มีความซับซ้อน โดยมีจำนวน เหตุการณ์ที่เกิดขึ้นจำนวนมากที่เกี่ยวกับเชตของวัตถุ ความสัมพันธ์ของเหตุการณ์ที่เกิดขึ้นเกี่ยวพันและเชื่อมโยงกับวัตถุ การใช้วิธีการเชิงวัตถุจึงเป็นวิธีการทางเทคนิคที่ทำให้เกิดรูปธรรม
ลองดูรูปธรรมเชิงวัตถุที่ใช้ในการอธิบายสิ่งบางอย่างที่เป็นความรู้ และขอบเขตของความรู้ที่กว้างขวาง ดังนั้นถ้าเราจะหาทางแทนความรู้ สิ่งที่เป็นโมเดลที่ดีและใช้งานได้อย่างหนึ่งคือ รูปแบบออบเจ็กต์ หรือเชิงวัตถุดังตัวอย่างรูปที่ 1
ที่มา : http://www.school.net.th/library/snet1/network/soft.htm
ความสัมพันธ์เชิงวัตถุเป็นสิ่งที่เข้าใจง่าย และสามารถสร้างตามความเข้าใจ เห็นภาพชัดเจน ดังนั้นการสร้างโมเดลเชิงวัตถุจึงเป็นสิ่งที่ใช้ประโยชน์ในทางธุรกิจทุกองค์กรมีฟังก์ชันการทำงานที่สามารถเขียนเป็นโมเดลเชิงวัตถุได้ โดยประกอบด้วยเหตุการณ์(event) และตัวที่ทำให้เกิดเหตุการณ์นั้น (occurrence) ตัวที่ทำให้เกิดเหตุการณ์อาจเป็นได้ทั้งที่เป็นวัตถุหรือไม่ใช่วัตถุก็ได้ เช่น บริษัทอาจผลิตสินค้าหรือบริการ ซึ่งทั้งสินค้าหรือบริการนี้เป็นตัวที่ทำให้เกิดเหตุการณ์ โดยทำให้มีราคาหรือมีการขายที่ทำให้ลูกค้าพอใจ ดังนั้นทั้งสินค้าและบริการอาจดูแล้วมีความแตกต่างกัน สินค้าสามารถจับต้องได้ แต่การบริการอาจจับต้องโดยตรงไม่ได้ แต่มีราคาได้
ไม่เพียงแต่ตัวที่ทำให้เกิดเหตุการณ์เท่านั้นที่จะเป็นออบเจ็กต์ (วัตถุ) ตัวที่แสดงความสัมพันธ์ระหว่างวัตถุก็เป็นสิ่งที่ต้องนำมาคิด ทั้งนี้เพราะในสภาพของสิ่งที่เป็นจริงคือทุกสิ่งที่อยู่ในธรรมชาติมีโครงสร้างเป็นแบบสเตติก ซึ่งมีความสัมพันธ์ระหว่างกันและเชื่อมโยงเป็นโมเดลเชิงวัตถุ และใช้ในการสร้างโมเดล
ทั้งนี้เพราะในโลกแห่งความเป็นจริง การแทนโมเดลไม่สามารถที่จะสื่อความหมายทุกสิ่งทุกอย่างได้หมด แต่ขอบเขตของการสร้างโมเดลเพื่ออธิบายความหมายในเชิงสร้างซอฟต์แวร์มีบางสิ่งบางอย่างที่อาจแตกต่างออกไปบ้างโดยเน้นให้สิ่งต่าง ๆ ที่เป็นวัตถุและตัวที่ทำให้เกิดเหตุการณ์ได้ เป็นออบเจ็กต์ในความหมายของสิ่งที่จะใช้ทางซอฟต์แวร์ โดยให้ออบเจ็กต์นั้นมีข้อมูลข่าวสารอยู่ภายใน และยังให้คุณลักษณะของออบเจ็กต์ไปยังออบเจ็กต์อื่น ๆ ได้ ออบเจ็กต์จะอยู่ในกลุ่มที่เรียกว่า คลาส และให้คุณสมบัติสำหรับคลาสสามารถถ่ายทอดกันได้
ออบเจ็กต์คืออะไร
ลองนึกดูว่าภายในองค์กรหรือบริษัทมีกิจกรรมต่าง ๆ เกิดขึ้นมากมาย การดำเนินการของบริษัทประกอบด้วยกิจกรรมต่าง ๆ มีกิจกรรมการขาย การผลิต การซื้อ การดำเนินการของคน กิจกรรมที่เกี่ยวข้องกับเงิน บัญชี
ตัวที่ทำให้เกิดเหตุการณ์ขึ้นเรียกว่า ออบเจ็กต์ ซึ่งมีมากมายในองค์กร และคำว่าออบเจ็กต์จึงได้รับการใช้ในสถานะต่าง ๆ กัน และอาจมีความหมายที่คลาดเคลื่อนกันบ้าง อย่างไรก็ดี เรากำหนดความหมายของคำว่า "ออบเจ็กต์" ไว้ว่า เป็นตัวที่ทำให้เกิดเหตุการณ์ที่มีข่าวสารและให้คุณลักษณะบางอย่าง
พิจารณาจากตัวอย่าง
- บัญชีธนาคาร เป็นออบเจ็กต์ในธนาคาร สำนักงานก็เป็นออบเจ็กต์ในธนาคาร และเช่นเดียวกันลูกค้าก็เป็นออบเจ็กต์
- นโยบายการประกันภัย ก็เป็นออบเจ็กต์ที่อยู่ในบริษัทประกันภัย และเช่นเดียวกันธนาคาร ตัวสำนักงาน และลูกค้าก็มีอยู่ด้วยและเป็นออบเจ็กต์ด้วย
- รถยนต์ ก็เป็นออบเจ็กต์ที่อยู่ในหน่วยทะเบียนรถยนต์กลาง รถยนต์ก็ยังเป็นออบเจ็กต์ของระบบการผลิตในโรงงานรถยนต์
จากตัวอย่างที่ยกมาให้ดูนี้เห็นได้ชัดว่า ในการประยุกต์ใช้งานหรือในสิ่งแวดล้อมหนึ่งอาจมีหลาย ๆ ออบเจ็กต์ และในอีกสถานการณ์หนึ่งก็มีออบเจ็กต์ที่มีลักษณะคล้ายกัน
ลูกค้าของธนาคารกับลูกค้าของบริษัทประกันภัยก็คือออบเจ็กต์ แต่ออบเจ็กต์ลูกค้าในบริษัทประกันภัยหรือไม่ ทำนองเดียวกันจะเห็นว่ารถยนต์เป็นออบเจ็กต์ของหน่วยขึ้นทะเบียนกลาง หรือกรมการขนส่งทางบก และก็เป็นออบเจ็กต์ของบริษัทผลิตรถยนต์ด้วย ออบเจ็กต์ของรถยนต์ในสองสถานการณ์นี้เหมือนกันหรือไม่
คำตอบที่เด่นชัดคือไม่เหมือนกัน ในโดเมนของสิ่งแวดล้อมต่างกัน การมองที่ออบเจ็กต์จะต่างกัน ลูกค้าทั้งของธนาคารและบริษัทประกันภัยอาจมีชื่อ นามสกุลที่อยู่ที่ติดต่อเหมือนกัน แต่อาจจะมีบางส่วนที่ความต้องการของธนาคารแตกต่างจากบริษัทประกันภัย ลองพิจารณาที่รถยนต์จะเห็นเด่นชัด คือรถยนต์ที่เป็นออบเจ็กต์อยู่ในส่วนของโรงงานผลิตรถยนต์ บริษัทผู้ผลิตสนใจว่ารถยนต์นั้นจะขาวนให้ผู้ใด ใครคือผู้ซื้อ วันที่ผลิต สีรถ สิ่งที่ลูกค้าสั่งให้เพิ่มเติม เฉพาะในรถยนต์ตามความต้องการของลูกค้า ส่วนหน่วยทะเบียนของกรมการขนส่งทางบกมองออบเจ็กต์รถยนต์ว่า ใครเป็นเจ้าของ วันที่ซื้อขาย เสียภาษีรถยนต์แล้วหรือยัง ตลอดจนข้อมูลที่เกี่ยวกับการจดทะเบียนรถยนต์
ที่มา : http://www.school.net.th/library/snet1/network/soft.htm
สิ่งที่ประกอบอยู่ขึ้นมากับออบเจ็กต์ และเป็นข่าวสารที่จะบอกว่าออบเจ็กต์นั้นมีคุณสมบัติอย่างไร เราเรียกว่าแอตทริบิวต์ โดยส่วนของแอตทริบิวต์จะมีค่าหรือตัวข้อมูลอยู่ สมมติว่าสมบัติแจ้งกิจเป็นลูกค้าธนาคาร การพิจารณาเช่นนี้เห็นว่าตัวออบเจ็กต์เป็นตัวแทนลูกค้าทุกคน รวมทั้งสมบัติด้วย โดยคุณลักษณะที่อยู่ในออบเจ็กต์ลูกค้าคือ ชื่อ ลูกค้า ที่อยู่ ซึ่งเป็นแอตทริบิวต์
การทำงานในระบบมีลักษณะเรียกใช้งานระหว่างออบเจ็กต์ ออบเจ็กต์หนึ่งจะเรียกใช้อีกออบเจ็กต์หนึ่งได้อย่างไร การสร้างโมเดลการเรียกใช้ระหว่างกันจึงอยู่ที่ออบเจ็กต์หนึ่งส่งข้อความ (message)ไปยังอีกออบเจ็กต์หนึ่ง ซึ่งจุดนี้เป็นสิ่งที่แตกต่างจากวิธีคิดเดิมที่เราสร้างโปกรแกรมเป็นกระบวนความโดยส่งพารามิเตอร์ไปและกลับระหว่างกระบวนความ
จากการสร้างโมเดลของออบเจ็กต์แนวใหม่นี้ใช้"ข้อความ" ส่งระหว่างกัน ความจริงแล้วการใช้คำว่า"ข้อความ" อาจทำให้สับสนได้ เพราะที่แท้จริงคือออบเจ็กต์หนึ่ง เมื่อออบเจ็กต์ที่ได้รับสัญญาณตัวกระตุ้นนี้ก็จะดูว่าสัญญาณตัวกระตุ้นนี้คืออะไรและจะกระทำตามดังนั้นแต่ละออบเจ็กต์จึงมีตัวกระตุ้นเข้ามา การทำงานของออบเจ็กต์อาจเกี่ยวข้องกับการทำงานที่จำเป็นต้องเปลี่ยนค่าในแอตทริบิวต์ต่าง ๆ ปรับปรุงค่าหรือกระทำตามเงื่อนไข หรืออาจต้องการส่งตัวกระตุ้นนี้ไปยังออบเจ็กต์อื่นอีกต่อไป
เนื้อหาดีมากครับ
เอาไปเลย10
เป็นความรู้ใหม่เลยทีเดียวครับ
เอาไปเลย 10 คะแนนครับ^^
ดีดี
มีสาระดี
เริ่ดๆ
ให้ 10 จร้า
ทำดีเราชอบ
เอาไป10 เลย
เนื้อหาดีๆๆๆ
ให้ 10 คะแนน
10 เต็มคับ
ปล. น้องจูนฝากมาให้อีก 5 คะเเนน
เป็น 15 คะเเนนเลยนะอาจารย์
ดีจัง เนื้อหาดี
เยี่ยมเลย
เก่งกานจาง
เอาไปเลย10
วิชาการกันสุดๆ
สาระกันเห็นๆ
สิบๆๆๆๆ*
เอาไปเลยจร้า >_<"
ได้รู้ข้อมูลเพิ่มเยอะเลยย
10คะแนนเลยนะ
เนื้อหาดีมากคับ
เหมาะกับยุคปัจจุบันมากคับ
ผมชอบ
เอา10ไป
โก้เก้...
เนื้อหาดีน้า^^
เอาไป 10เลยจ้าแฮะๆ
เนื้อหาแปลกใหม่ดีครับ ผมชอบ งั้นเอาไป 10 คะแนน ครับ