ในรอบห้าสิบปีที่มีคอมพิวเตอร์ใช้ การพัฒนาซอฟต์แวร์ได้เปลี่ยนแปลงตามสภาพการพัฒนา เริ่มจากการคิดค้นหาภาษาคอมพิวเตอร์เพื่อช่วยในการสั่งการ การพัฒนาซอฟต์แวร์ที่ใช้งานจึงขึ้นอยู่กับการเขียนโปรแกรมโปรแกรมจึงเป็นลำดับการทำงานของคอมพิวเตอร์
ในยุคต้น ภาษาที่ใช้สั่งการเป็นภาษาเชิงลำดับ งานประยุกต์จึงใช้ภาษาเชิงลำดับสั่งงาน เช่น วานพัฒนาซอฟต์แวร์ด้วยภาษาฟอร์แทรน เบสิก โคบอล ต่อมาเมื่อพบว่างานที่สั่งให้คอมพิวเตอร์ทำมีความซับซ้อนมากขึ้น การสั่งงานทำให้วิธีการเขียนโปรแกรมขึ้นอยู่กับตัวบุคคล เพราะลำดับความคิดที่ถ่ายออกมาเป็นรูปโปรแกรมนั้นยากที่จะทำความเข้าใจได้ โปรแกรมที่พัฒนาจึงขึ้นกับตัวบุคคล ไม่สามารถให้อีกบุคคลหนึ่งดำเนินการตรวจสอบหรือทำความเข้าใจเกี่ยวกับโปรแกรมได้ง่าย
ความคิดนี้จึงต้องทำซอฟต์แวร์ให้เป็นโครงสร้าง มีการนิยามภาษาคอมพิวเตอร์แบบกระบวนความ (procedure) เน้นการพัฒนาซอฟต์แวร์แบบโครงสร้าง จึงมีการใช้โปรแกรมแบบโครงสร้าง การพัฒนาภาษาคอมพิวเตอร์หรือเครื่องมือที่ใช้ในการพัฒนาซอฟต์แวร์จึงเน้นแบบโครงสร้าง ใช้ภาษาปาสคาล ซี หรือภาษาต่าง ๆ ที่พัฒนามาในรูปแบบกระบวนความ เพื่อให้มีการพัฒนาซอฟต์แวร์แบบท้อปดาวน์มากขึ้น
อย่างไรก็ตาม การพัฒนาซอฟต์แวร์แบบกระบวนความที่เป็นโครงสร้างก็ยังเป็นแนวทางของการพัฒนาซอฟต์แวร์แบบนามธรรม ใช้จินตนาการ ดังนั้นการสร้างจินตนาการในงานที่ซับซ้อนยังเป็นเรื่องยาก ซอฟต์แวร์ตามแนวจินตนาการของบุคคลหนึ่งจึงยากที่จะนำมาใช้กับอีกบุคคลหนึ่ง ซอฟต์แวร์ที่พัฒนาแล้วยังยากที่จะนำมาใช้งานใหม่ ทั่วโลกจึงมีซอฟต์แวร์ที่เขียนกันขึ้นมามากมาย ยากที่จะนำกลับมาใช้ใหม่ได้
แนวคิดแบบปรับกระบวนทัศน์
ความคิดในเรื่องการปรับกระบวนทัศน์(paradigm) มีมาหลายครั้งแล้ว ในช่วงปี ค.ศ. 1980-1990 ประเทศญี่ปุ่น โดยกระทรวงการค้าและอุตสาหกรรมได้ร่วมกับบริษัทชั้นนำของญี่ปุ่นในเรื่องการผลิตคอมพิวเตอร์และมหาวิทยาลัยเพื่อทำการศึกษาคอมพิวเตอร์ในยุคที่ห้า โดยเน้นรูปแบบของคอมพิวเตอร์แนวใหม่ ทั้งทางด้านฮาร์ดแวร์และซอฟต์แวร์ เพื่อให้ได้คอมพิวเตอร์ยุดใหม่ที่นำมาใช้ในงานปัญญาประดิษฐ์ต่าง ๆ อย่างไรก็ดี โครงการคอมพิวเตอร์รุ่นที่ห้าของญี่ปุ่นประสบความสำเร็จระดับหนึ่ง แต่ก็ยังยากที่จะพัฒนาต่อเนื่อง ทั้งนี้เพราะพัฒนาการทางด้านไมโครโปรเซสเซอร์ของอเมริกัน โดยเฉพาะอินเทลและบริษัทคู่แข่งของอินเทล สามารถสร้างชิปได้ในราคาถูก และมีผู้นำมาประยุกต์ใช้ได้มากมาย มีพัฒนาการที่เร็ว ดังนั้นความคิดที่จะสร้างคอมพิวเตอร์แนวใหม่ของญี่ปุ่นจึงไม่มีใครขานรับ ทำให้ผลงานวิจัยเหล่านั้นพบกับอุปสรรคในเรื่องการดำเนินต่อในขั้นอุตสาหกรรมและการนำไปใช้
ความคิดของประเทศญี่ปุ่น ก็ทำให้เกิดการตื่นตัวในการพัฒนาคอมพิวเตอร์ทั้งในสหรัฐอเมริกาและยุโรป ความคิดเหล่านี้ได้รับการปรับปรุงและยังมีแนวทางของการแข่งขันกัน โดยเฉพาะการพัฒนางานทางด้านปัญญาประดิษฐ์ต่าง ๆ
การปรับกระบวนทัศน์ในเรื่องความคิดของการพัฒนาซอฟต์แวร์ที่เด่นชัดครั้งหนึ่ง คือการเขียนโปรแกรมแบบภาษาพรรณา หรือที่เรียกว่า declarative language ภาษาโปรล็อก หรือภาษาลิสน์
แนวคิดเชิงวัตถุ
แนวคิดเชิงวัตถุเป็นแนวคิดที่มีมาอย่างต่อเนื่อง ตั้งแต่การใช้งานทางด้านปัญญาประดิษฐ์การเขียนโปรแกรมเชิงพรรณาที่ใช้หลักการของการบรรยายเชิงวัตถุ รูปแบบของภาษาที่ใช้จึงเน้นรูปธรรมที่ต้องการการบรรยาย
ความคิดเชิงวัตถุ เป็นความคิดที่ใช้ในการสร้างโมเดลของสิ่งที่มีความซับซ้อน โดยมีจำนวน เหตุการณ์ที่เกิดขึ้นจำนวนมากที่เกี่ยวกับเชตของวัตถุ ความสัมพันธ์ของเหตุการณ์ที่เกิดขึ้นเกี่ยวพันและเชื่อมโยงกับวัตถุ การใช้วิธีการเชิงวัตถุจึงเป็นวิธีการทางเทคนิคที่ทำให้เกิดรูปธรรม
ลองดูรูปธรรมเชิงวัตถุที่ใช้ในการอธิบายสิ่งบางอย่างที่เป็นความรู้ และขอบเขตของความรู้ที่กว้างขวาง ดังนั้นถ้าเราจะหาทางแทนความรู้ สิ่งที่เป็นโมเดลที่ดีและใช้งานได้อย่างหนึ่งคือ รูปแบบออบเจ็กต์ หรือเชิงวัตถุดังตัวอย่างรูปที่ 1
ความสัมพันธ์เชิงวัตถุเป็นสิ่งที่เข้าใจง่าย และสามารถสร้างตามความเข้าใจ เห็นภาพชัดเจน ดังนั้นการสร้างโมเดลเชิงวัตถุจึงเป็นสิ่งที่ใช้ประโยชน์ในทางธุรกิจทุกองค์กรมีฟังก์ชันการทำงานที่สามารถเขียนเป็นโมเดลเชิงวัตถุได้ โดยประกอบด้วยเหตุการณ์(event) และตัวที่ทำให้เกิดเหตุการณ์นั้น (occurrence) ตัวที่ทำให้เกิดเหตุการณ์อาจเป็นได้ทั้งที่เป็นวัตถุหรือไม่ใช่วัตถุก็ได้ เช่น บริษัทอาจผลิตสินค้าหรือบริการ ซึ่งทั้งสินค้าหรือบริการนี้เป็นตัวที่ทำให้เกิดเหตุการณ์ โดยทำให้มีราคาหรือมีการขายที่ทำให้ลูกค้าพอใจ ดังนั้นทั้งสินค้าและบริการอาจดูแล้วมีความแตกต่างกัน สินค้าสามารถจับต้องได้ แต่การบริการอาจจับต้องโดยตรงไม่ได้ แต่มีราคาได้
ไม่เพียงแต่ตัวที่ทำให้เกิดเหตุการณ์เท่านั้นที่จะเป็นออบเจ็กต์ (วัตถุ) ตัวที่แสดงความสัมพันธ์ระหว่างวัตถุก็เป็นสิ่งที่ต้องนำมาคิด ทั้งนี้เพราะในสภาพของสิ่งที่เป็นจริงคือทุกสิ่งที่อยู่ในธรรมชาติมีโครงสร้างเป็นแบบสเตติก ซึ่งมีความสัมพันธ์ระหว่างกันและเชื่อมโยงเป็นโมเดลเชิงวัตถุ และใช้ในการสร้างโมเดล
ทั้งนี้เพราะในโลกแห่งความเป็นจริง การแทนโมเดลไม่สามารถที่จะสื่อความหมายทุกสิ่งทุกอย่างได้หมด แต่ขอบเขตของการสร้างโมเดลเพื่ออธิบายความหมายในเชิงสร้างซอฟต์แวร์มีบางสิ่งบางอย่างที่อาจแตกต่างออกไปบ้างโดยเน้นให้สิ่งต่าง ๆ ที่เป็นวัตถุและตัวที่ทำให้เกิดเหตุการณ์ได้ เป็นออบเจ็กต์ในความหมายของสิ่งที่จะใช้ทางซอฟต์แวร์ โดยให้ออบเจ็กต์นั้นมีข้อมูลข่าวสารอยู่ภายใน และยังให้คุณลักษณะของออบเจ็กต์ไปยังออบเจ็กต์อื่น ๆ ได้ ออบเจ็กต์จะอยู่ในกลุ่มที่เรียกว่า คลาส และให้คุณสมบัติสำหรับคลาสสามารถถ่ายทอดกันได้
ออบเจ็กต์คืออะไร
ลองนึกดูว่าภายในองค์กรหรือบริษัทมีกิจกรรมต่าง ๆ เกิดขึ้นมากมาย การดำเนินการของบริษัทประกอบด้วยกิจกรรมต่าง ๆ มีกิจกรรมการขาย การผลิต การซื้อ การดำเนินการของคน กิจกรรมที่เกี่ยวข้องกับเงิน บัญชี
ตัวที่ทำให้เกิดเหตุการณ์ขึ้นเรียกว่า ออบเจ็กต์ ซึ่งมีมากมายในองค์กร และคำว่าออบเจ็กต์จึงได้รับการใช้ในสถานะต่าง ๆ กัน และอาจมีความหมายที่คลาดเคลื่อนกันบ้าง อย่างไรก็ดี เรากำหนดความหมายของคำว่า "ออบเจ็กต์" ไว้ว่า เป็นตัวที่ทำให้เกิดเหตุการณ์ที่มีข่าวสารและให้คุณลักษณะบางอย่าง
พิจารณาจากตัวอย่าง
• บัญชีธนาคาร เป็นออบเจ็กต์ในธนาคาร สำนักงานก็เป็นออบเจ็กต์ในธนาคาร และเช่นเดียวกันลูกค้าก็เป็นออบเจ็กต์
• นโยบายการประกันภัย ก็เป็นออบเจ็กต์ที่อยู่ในบริษัทประกันภัย และเช่นเดียวกันธนาคาร ตัวสำนักงาน และลูกค้าก็มีอยู่ด้วยและเป็นออบเจ็กต์ด้วย
• รถยนต์ ก็เป็นออบเจ็กต์ที่อยู่ในหน่วยทะเบียนรถยนต์กลาง รถยนต์ก็ยังเป็นออบเจ็กต์ของระบบการผลิตในโรงงานรถยนต์
จากตัวอย่างที่ยกมาให้ดูนี้เห็นได้ชัดว่า ในการประยุกต์ใช้งานหรือในสิ่งแวดล้อมหนึ่งอาจมีหลาย ๆ ออบเจ็กต์ และในอีกสถานการณ์หนึ่งก็มีออบเจ็กต์ที่มีลักษณะคล้ายกัน
ลูกค้าของธนาคารกับลูกค้าของบริษัทประกันภัยก็คือออบเจ็กต์ แต่ออบเจ็กต์ลูกค้าในบริษัทประกันภัยหรือไม่ ทำนองเดียวกันจะเห็นว่ารถยนต์เป็นออบเจ็กต์ของหน่วยขึ้นทะเบียนกลาง หรือกรมการขนส่งทางบก และก็เป็นออบเจ็กต์ของบริษัทผลิตรถยนต์ด้วย ออบเจ็กต์ของรถยนต์ในสองสถานการณ์นี้เหมือนกันหรือไม่
คำตอบที่เด่นชัดคือไม่เหมือนกัน ในโดเมนของสิ่งแวดล้อมต่างกัน การมองที่ออบเจ็กต์จะต่างกัน ลูกค้าทั้งของธนาคารและบริษัทประกันภัยอาจมีชื่อ นามสกุลที่อยู่ที่ติดต่อเหมือนกัน แต่อาจจะมีบางส่วนที่ความต้องการของธนาคารแตกต่างจากบริษัทประกันภัย ลองพิจารณาที่รถยนต์จะเห็นเด่นชัด คือรถยนต์ที่เป็นออบเจ็กต์อยู่ในส่วนของโรงงานผลิตรถยนต์ บริษัทผู้ผลิตสนใจว่ารถยนต์นั้นจะขาวนให้ผู้ใด ใครคือผู้ซื้อ วันที่ผลิต สีรถ สิ่งที่ลูกค้าสั่งให้เพิ่มเติม เฉพาะในรถยนต์ตามความต้องการของลูกค้า ส่วนหน่วยทะเบียนของกรมการขนส่งทางบกมองออบเจ็กต์รถยนต์ว่า ใครเป็นเจ้าของ วันที่ซื้อขาย เสียภาษีรถยนต์แล้วหรือยัง ตลอดจนข้อมูลที่เกี่ยวกับการจดทะเบียนรถยนต์
สิ่งที่ประกอบอยู่ขึ้นมากับออบเจ็กต์ และเป็นข่าวสารที่จะบอกว่าออบเจ็กต์นั้นมีคุณสมบัติอย่างไร เราเรียกว่าแอตทริบิวต์ โดยส่วนของแอตทริบิวต์จะมีค่าหรือตัวข้อมูลอยู่ สมมติว่าสมบัติแจ้งกิจเป็นลูกค้าธนาคาร การพิจารณาเช่นนี้เห็นว่าตัวออบเจ็กต์เป็นตัวแทนลูกค้าทุกคน รวมทั้งสมบัติด้วย โดยคุณลักษณะที่อยู่ในออบเจ็กต์ลูกค้าคือ ชื่อ ลูกค้า ที่อยู่ ซึ่งเป็นแอตทริบิวต์
การทำงานในระบบมีลักษณะเรียกใช้งานระหว่างออบเจ็กต์ ออบเจ็กต์หนึ่งจะเรียกใช้อีกออบเจ็กต์หนึ่งได้อย่างไร การสร้างโมเดลการเรียกใช้ระหว่างกันจึงอยู่ที่ออบเจ็กต์หนึ่งส่งข้อความ (message)ไปยังอีกออบเจ็กต์หนึ่ง ซึ่งจุดนี้เป็นสิ่งที่แตกต่างจากวิธีคิดเดิมที่เราสร้างโปกรแกรมเป็นกระบวนความโดยส่งพารามิเตอร์ไปและกลับระหว่างกระบวนความ
จากการสร้างโมเดลของออบเจ็กต์แนวใหม่นี้ใช้"ข้อความ" ส่งระหว่างกัน ความจริงแล้วการใช้คำว่า"ข้อความ" อาจทำให้สับสนได้ เพราะที่แท้จริงคือออบเจ็กต์หนึ่ง เมื่อออบเจ็กต์ที่ได้รับสัญญาณตัวกระตุ้นนี้ก็จะดูว่าสัญญาณตัวกระตุ้นนี้คืออะไรและจะกระทำตามดังนั้นแต่ละออบเจ็กต์จึงมีตัวกระตุ้นเข้ามา การทำงานของออบเจ็กต์อาจเกี่ยวข้องกับการทำงานที่จำเป็นต้องเปลี่ยนค่าในแอตทริบิวต์ต่าง ๆ ปรับปรุงค่าหรือกระทำตามเงื่อนไข หรืออาจต้องการส่งตัวกระตุ้นนี้ไปยังออบเจ็กต์อื่นอีกต่อไป
สิ่งเด่นชัดที่น่าสนใจคือ แอตทริบิวต์ ของออบเจ็กต์จะประกอบยู่ภายในออบเจ็กต์ของมันเองเท่านั้น ดังนั้นด้วยวิธีการนี้จึงเป็นคุณสมบัติที่สำคัญของออบเจ็กต์ที่นำข้อมูลหรือค่าในแอตทริบิวต์เก็บไว้ในตัวมันเอง คุณสมบัติในลักษณะนี้เราเรียกว่า encapsulation การที่จะเข้าถึงข่าวสารภายในจะต้องกระทำภายในออบเจ็กต์เอง ข้อมูลที่เป็นค่าอยู่ในออบเจ็กต์จะได้รับการเก็บไว้ในสิ่งแวดล้อมภายในของออบเจ็กต์นั้น
ไม่เพียงแต่แอตทริบิวต์ของออบเจ็กต์จะได้รับการซ่อนไว้ภายในสิ่งแวดล้อมของออบเจ็กต์เท่านั้น รายละเอียดโครงสร้างการทำงานเสมือนเป็นโปรแกรมที่สั่งงานในแบบเก่าก็ยังซ่อนอยู่ภายในออบเจ็กต์ด้วย แต่สิ่งที่มีให้เห็นต่อสิ่งแวดล้อมคือ ชนิดของการทำงานที่จะได้รับการกระตุ้นให้ทำงาน ชื่อของชนิดของข้อมูลข่าวสารที่ประกอบการทำงานนี้เรียกว่า "Signature" การติดต่อกับออบเจ็กต์จึงมีการรับรู้แบบการสื่อสารระหว่างกันที่เรียกว่า โปรโตคอล
ออบเจ็กต์ที่ต้องการติดต่อโดยการส่งสัญญาณตัวกระตุ้นออกไปเรียกว่า ออบเจ็กต์ไคลเอ็นต์ ออบเจ็กต์ที่รับสัญญาณกระตุ้นมาเรียกว่า ออบเจ็กต์เซิร์ฟเวอร์
เมื่อพิจารณาที่ออบเจ็กต์จึงเห็นได้ว่า ส่วนของออบเจ็กต์ที่มีรูปแบบที่พอจะแสดงให้เข้าใจได้ โดยแบ่งเป็น 2 ส่วน คือส่วนหนึ่งที่จะใช้ในการรับการติดต่อระหว่างออบเจ็กต์เพื่อให้ทำงานโดยเฉพาะที่ติดต่อตามโปรโตคอล ส่วนนี้จะป็นส่วนข้อกำหนดของออบเจ็กต์ กับอีกส่วนหนึ่งคือ ส่วนที่มีแอตทริบิวต์และการทำงานภายในที่มีส่วนเกี่ยวข้องกับค่าที่เก็บในแอตทริบิวต์
พิจารณาตัวอย่างออบเจ็กต์หนึ่งสมมติเป็นบัญชีเงินเดือนของพนักงาน ซึ่งมีโครงสร้างแอตทริบิวต์ภายในที่บอกรายละเอียดว่า บัญชีเงินเดือนอะไรบ้าง ซึ่งโครงสร้างแอตทริบิวต์จะให้รายละเอียดต่างๆ เหล่านี้ แต่ส่วนที่อยู่ในสิ่งแวดล้อมที่จะได้รับการเรียกจากภายนอกหรือกระตุ้นเป็นสิ่งเร้า และรับการติดต่อด้านโปรโตคอลก็เป็นอีกตัวหนึ่งแต่ทั้งสองส่วนนี้อยู่ภายในออบเจ็กต์
หากจินตนาการออบเจ็กต์ให้เป็นสิ่งที่มีรูปธรรม อาจเขียนได้เป็นโมเดล เช่น บัญชีเงินเดือน มีแอตทริบิวต์ที่กำหนดว่ามีข้อมูลอะไรประกอบอยู่ และเมื่อมีการคำนวณหรือกระทำใด ๆ จะกระทำในออบเจ็กต์โดยที่เมื่อมีตัวกระตุ้นจะกระทำในออบเจ็กต์โดยที่เมื่อมีตัวกระตุ้นจะกระทำและรับส่งข้องมูลระหว่างกันดังนั้นจึงพอสรุปความของออบเจ็กต์ได้เป็น
• ออบเจ็กต์ต้องมีแอตทริบิวต์ และการดำเนินงานภายในออบเจ็กต์
• สิ่งแวดล้อมที่อยู่รอบ ๆ ออบเจ็กต์สามารถส่งสัญญาณมาให้ออบเจ็กต์ทำงาน แต่ไม่สามารถก้าวเข้ามาสู่ภายในออบเจ็กต์ หรือเรียกดูข้อมูลในแอตทริบิวต์ที่มีอยู่ในออบเจ็กต์
• ออบเจ็กต์ทุกออบเจ็กต์จะบรรจุแอตทริบิวต์และการดำเนินงานภายในเราเรียกว่า encapsulate
• การติดต่อกันในใช้ข้อความส่งกระตุ้นเราเรียกว่า โปรโตคอล
• การดำเนินการภายในออบเจ็กต์ใด ๆ จะไม่มีผลต่อสิ่งแวดล้อมภายนอก
ออบเจ็กต์มีการเชื่อมโยงระหว่างกัน
กิจการธนาคารมีลูกค้า ลูกค้าก็เป็นออบเจ็กต์หนึ่งที่มึความชัดเจนคือ มีแอตทริบิวต์ภายใน ลูกค้ามีลักษณะเฉพาะ มีชื่อ ที่อยู่ ที่ติดต่อ การดำเนินการในออบเจ็กต์ลูกค้าอาจเกี่ยวข้องกับการสอบถาม การปรับปรุงข้อมูล การทำรายงานที่เกี่ยวกับข้อมูลลูกค้า ที่ธนาคารเองมีออบเจ็กต์บัญชี ซึ่งมีแอตทริบิวต์และการกระทำภายใน
การเชื่อมโยงระหว่างออบเจ็กต์มีลักษณะความเกี่ยวโยงหรือมีความเชื่อมโยงถึงกัน เป็นความเชื่อมโยงสัมพันธ์ระหว่างกัน
ลองดูจากตัวอย่างการให้สินเชื่อกับลูกค้าของธนาคารแห่งหนึ่ง กรรมวิธีการให้สินเชื่อเริ่มจากเมื่อลูกค้าซึ่งเป็นบุคคลได้เข้ามาติดต่อและยื่นแบบฟอร์มของสินเชื่อจากพนักงานธนาคาร พนักงานผู้ดูแลรับแบบฟอร์ม และนำไปตรวจสอบกับฐานข้อมูลของธนาคารเพื่อดูว่า ผู้ที่ต้องการกู้นี้เป็นลูกค้าของธนาคารอยู่หรือไม่ หากผู้ขอกู้นี้ไม่เคยเป็นลูกค้าของธนาคารพนักงานก็จะดำเนินการกรอกข้อมูลประวัติของผู้กู้นี้เข้าไปในฐานข้อมูลของธนาคาร
พนักงานธนาคารได้ดำเนินการตรวจสอบต่อไปอีกหลายขั้นตอน โดยเฉพาะเกี่ยวกับข้อมูลของตัวผู้ขอกู้พนักงานธนาคารตรวจสอบดูว่าผู้ขอกู้มีเครดิตคุ้มค่ากับการขอกู้หรือไม่ มีหลักทรัพย์พอเพียงหรือไม่ เป็นผู้ล้มละลายไม่มีความสามารถในการใช้คืน เมื่อตรวจสอบข้อมูลต่าง ๆ และเห็นว่าผู้ขอกู้ไม่มีปัญหา พนักงานก็จะดำเนินการตรวจสอบคำนวณดูว่าผู้ขอกู้จะมีความสามารถในการใช้คืนดอกเบี้ยและเงินต้นได้หรือไม่ โดยตรวจดูจากข้อมูลที่ยื่นมาให้ดู ซึ่งได้แก่ ข้อมูลเงินเดือน การออมรวมทั้งสินทรัยพ์และหนี้สินของผู้ขอกู้ พนักงานธนาคารจะคำนวณดูว่าสภาพของฐานะการเงินของผู้ขอกู้จะผ่านขั้นต่ำที่ทางธนาคารกำหนดไว้หรือไม่
เมื่อทุกสิ่งทุกอย่างอยู่ในเงื่อนไขที่ธนาคารกำหนดพนักงานธนาคารก็จะติดต่อไปยังผู้ขอกู้ และจัดเตรียมการประชุมร่วมกัน
ในการประชุมผู้ขอกู้จะได้รับการแจ้งบอกเงื่อนไขที่ธนาคารจะให้ เช่น เงินกู้ อัตราดอกเบี้ย การผ่อนชำระการนำหลักทรัพย์ค้ำประกัน เมื่อเงื่อนไขและกระบวนต่าง ๆ เป็นที่ยอมรับแล้ว พนักงานธนาคารก็จัดเตรียมสัญญาที่จะให้ลูกค้าเซ็นและรับเงิน ขณะเดียวกันเมื่อทุกอย่างดำเนินการไป พนักงานธนาคารก็จะทำการปรับปรุงฐานข้อมูลลูกค้าบัญชีการกู้เงิน ด้วยการใส่ตัวเลขปริมาณเงินกู้ อัตราดอกเบี้ยการผ่อนชำระคืน และการค้ำประกัน พนักงานธนาคารจะให้คู่สัญญากับลูกค้าและเก็บตัวจริงไว้กับธนาคาร จากขบวนการและการวิเคราะห์ขั้นตอนของธุรกิจจะไดัรูปแบบที่เรียกว่า การไหลเวียนทางธุรกิจ (business workflow) ซึ่งสิ่งที่เป็นการไหลเวียนของงานนี้สามารถพิจารณาและมองขั้นตอนให้เป็นการเขียนแบบเชิงวัตถุได้จากขั้นตอนที่กล่าวแล้วเขียนในรูปโมเดลของขบวนการกู้เงินที่เป็นเชิงวัตถุได้เป็น
จากตัวอย่างนี้ยังอาจไม่สมบูรณ์ เพราะยังไม่มีการอธิบายว่ากระบวนการของแต่ละออบเจ็กต์และการเชื่อมโยงเกิดขึ้นได้อย่างไร จากตัวอย่างนี้ลูกค้าเป็นผู้ยื่นแบบฟอร์มขอกู้เงิน ข้อมูลลูกค้าเป็นออบเจ็กต์ที่เป็นข้อมูลเก็บอยู่ในธนาคาร
เมื่อผู้ดูแลการกู้เงินซึ่งเป็นพนักงานธนาคารได้รับแบบฟอร์มการขอกู้เงิน ผู้ดูแลการกู้เงินก็จะนำเอาข้อมูลจากแบบฟอร์มเข้าตรวจสอบกับฐานข้อมูลลูกค้า ซึ่งมีอยู่แล้วในธนาคาร ถ้าข้อมูลนี้ยังไม่มีอยู่ ก็จะบันทึกในฐานข้อมูล ผู้ดูแลการกู้เงินยังคงทำงานอีกหลายขั้นตอนในการตรวจสอบความต้องการของลูกค้า ผู้ดูแลการกู้เงินตรวจสอบเครดิตของลูกค้าจากข้อมูลเงื่อนไขที่เก็บที่ธนาคาร เมื่อตรวจสอบแล้วเห็นว่าเงื่อนไขของการขอกู้เงินไม่มีปัญหาใด ก็จะตรวจดูสภาพการจ่ายดอกเบี้ยและเงินต้นที่เป็นไปได้ โดยดูจากข้อมูลในขอกู้ ซึ่งอาจประกอบด้วยข้อมูลเงินเดือน การออม รวมถึงค่าใช้จ่ายรายเดือนของผู้กู้ ผู้ดูแลการกู้จะคำนวณและหาเงื่อนไขที่เหมาะสมที่จะให้เงินกู้และการจ่ายคืน ซึ่งข้อมูลบางอย่างจะนำมาจากกฎเกณฑ์การให้สินเชื่อของธนาคาร
หากทุกอย่างเรียบร้อยผู้ดูแลการกู้ก็จะติดต่อกับลูกค้า เพื่อนัดแนะดังได้กล่าวมาแล้ว
ออบเจ็กต์นำมารวมกันได้
ออบเจ็กต์ที่แสดงออกอาจประกอบด้วยออบเจ็กต์เพียงออบเจ็กต์เดียว หรือออบเจ็กต์ที่รวมกันหลายออบเจ็กต์ ลองพิจารณาออบเจ็กต์สินค้าคงคลังที่แสดงในรูปที่ 6 ซึ่งประกอบด้วยออบเจ็กต์ย่อย ๆ ประกอบรวมกัน
ลักษณะของการรวมของออบเจ็กต์จึงประกอบด้วยออบเจ็กต์ย่อย ๆ รวมกัน เช่น ออบเจ็กต์คอมพิวเตอร์ก็จะประกอบด้วย จอภาพ คีย์บอร์ด ซีพียู ออบเจ็กต์สินค้าคงคลังประกอบด้วยสินค้าต่าง ๆ หลายอย่างรวมกัน
คลาสของออบเจ็กต์
ออบเจ็กต์ทุก ๆ ออบเจ็กต์จะต้องอยู่ในคลาส หรือกล่าวได้ว่า ออบเจ็กต์หลาย ๆ ออบเจ็กต์อาจมีลักษณะเหมือนกัน เช่น ธนาคารมีลูกค้าหลาย ๆ คน ลูกค้าแต่ละคนก็เป็นออบเจ็กต์ ดังนั้นออบเจ็กต์ของลูกค้าแต่ละคนมีลักษณะชนิดเดียวกัน เพื่อที่จะอธิบายออบเจ็กต์ได้ถูกต้อง เราจึงมีการกำหนดเป็นคลาส ซึ่งจะเห็นได้ว่าถ้าออบเจ็กต์มีลักษณะสมบัติเหมือนกันคือ มีแอตทริบิวต์และพฤติกรรมต่าง ๆ เหมือนกัน และเราจะกำหนดเป็นคลาส เช่น สมศักดิ์ สมชาย สมหญิง เป็นลูกค้าธนาคารทั้งสามคนนี้จึงเป็นออบเจ็กต์ที่มีลักษณะเหมือนกัน เราจึงหาวิธีการกำหนดให้อยู่ในกลุ่มเดียวกัน เราเรียกว่า คลาส หรือในกรณีนี้เรียกว่า คลาส "ลูกค้า"
นั่นคือ ออบเจ็กต์ทุก ๆ ออบเจ็กต์ต้องมีคลาส คลาสเป็นตัวอย่างออบเจ็กต์นั้นจะใช้สำหรับอะไร ซึ่งก็เกี่ยวข้องกับแอตทริบิวต์ และการกระทำในออบเจ็กต์ ดังนั้นแต่ละออบเจ็กต์จึงต้องมีข้อมูลที่เกี่ยวกับชื่อธนาคารและในแต่ละแอตทริบิวต์ของแต่ละออบเจ็กต์จะมีค่าที่เก็บไว้แตกต่างกัน ซึ่งค่าที่อยู่ในแอตทริบิวต์นั้นจะนำมาใช้ในการดำเนินการภายในออบเจ็กต์ และการทำงานในแต่ละออบเจ็กต์ที่อยู่ในออบเจ็กต์ก็จะมีลักษณะการทำงานเหมือนกันถ้าอยู่ในคลาสเดียวกัน
การถ่ายทอดลักษณะจากคลาสหนึ่งไปยังคลาสอื่นๆ
การถ่ายทอดคุณลักษณะหรือที่เรียกว่า inherit โดยปกติคลาสหนึ่งอาจมีความสัมพันธ์กับอีกคลาสในลักษณะที่ถ่ายทอดคุณลักษณะถึงกันได้ การถ่ายทอดคุณลักษณะจึงหมายถึงการรับในเรื่องของแอตทริบิวต์ และการทำงานของอีกคลาสหนึ่งมา ซึ่งจะต้องได้รับการอธิบายในทั้งตัวถ่ายทอดและตัวรับการถ่ายทอด
ลักษณะการถ่ายทอดลักษณะของคลาส เช่น การตรวจสอบฐานะเครดิตแบบอัตโนมัติ ซึ่งสามารถถ่ายทอดไปยังออบเจ็กต์ การตรวจสอบเครดิตซึ่งแสดงดังในรูปที่ 7
ทำนองเดียวกันคลาสหนึ่งอาจถ่ายทอดไปยังคลาสอื่น ๆ ได้อีกหลาย ๆ คลาส เช่น ลูกค้าธนาคารอาจเป็นลูกค้าที่เป็นบุคคลภายนอก หรือลูกค้าที่เป็นพนักงานของบริษัทเอง การสร้างออบเจ็กต์จึงสร้างออบเจ็กต์รวมเป็น EmployedCustomer ซึ่งถ่ายทอดคุณสมบัติไปยังออบเจ็กต์ Customer และ Employee แยกจากกัน
โอโอเป็นรูปแบบสำหรับอนาคต
จากการพิจารณาให้ลึกซึ้งในเรื่องของการไหลของงานทำให้การใช้รูปแบบออบเจ็กต์แสดงสภาพการทำงานได้ดีกว่า และการพัฒนาซอฟต์แวร์แนวใหม่จึงหันมาใช้ซอฟต์แวร์ที่สนับสนุนการพัฒนาการประยุกต์แบบออบเจ็กต์และเป็นหนทางที่น่าสนใจยิ่งในอนาคตอันใกล้นี้ เพราะจะเป็นระบบการพัฒนาซอฟต์แวร์แนวใหม่ที่สามารถสร้างขึ้นมาตามแนวคิดของธุรกิจ และทำให้การพัฒนาทำได้ง่ายขึ้น และยังใช้งานตลอดจนการปรับปรุงปรับเปลี่ยนในภายหลังได้ง่าย ในบทความนี้ได้เน้นเฉพาะแนวคิดพื้นฐานเกี่ยวกับออบเจ็กต์เท่านั้น
|