กลับไปหน้าบทความ

อ่าน 4 นาที

การเขียนโปรแกรมที่เน้นเนื้อหาเฉพาะเรื่อง

ในด้านการคำนวณการเขียนโปรแกรมเชิงอัตวิสัยเป็นกระบวนทัศน์ซอฟต์แวร์เชิงวัตถุ ซึ่งสถานะ (ฟิลด์) และพฤติกรรม (เมธอด) ของวัตถุไม่ได้ถูกมองว่าเป็นคุณสมบัติที่แท้จริงของวัตถุเอง...

การเขียนโปรแกรมที่เน้นเนื้อหาเฉพาะเรื่อง

ในด้านการคำนวณการเขียนโปรแกรมเชิงอัตวิสัยเป็นกระบวนทัศน์ซอฟต์แวร์เชิงวัตถุ ซึ่งสถานะ (ฟิลด์) และพฤติกรรม (เมธอด) ของวัตถุไม่ได้ถูกมองว่าเป็นคุณสมบัติที่แท้จริงของวัตถุเอง แต่มาจากการรับรู้เชิงอัตวิสัยต่างๆ ("อัตวิสัย") ของวัตถุ คำศัพท์และแนวคิดนี้ได้รับการตีพิมพ์ครั้งแรกในเดือนกันยายน พ.ศ. 2536 ในเอกสารการประชุม[ 1 ]ซึ่งต่อมาได้รับการยอมรับว่าเป็นหนึ่งในสามเอกสารที่มีอิทธิพลมากที่สุดที่นำเสนอในการประชุมระหว่างปี พ.ศ. 2529 ถึง พ.ศ. 2539 [ 2 ]ดังที่ได้อธิบายไว้ในเอกสารนั้น มีการเปรียบเทียบกับความแตกต่างระหว่างมุมมองทางปรัชญาของเพลโตและคานต์เกี่ยวกับลักษณะของวัตถุ "จริง" แต่นำมาประยุกต์ใช้กับซอฟต์แวร์ ตัวอย่างเช่น ในขณะที่เราทุกคนอาจรับรู้ว่าต้นไม้มีความสูง น้ำหนัก มวลใบ ฯลฯ ที่วัดได้ แต่จากมุมมองของนก ต้นไม้ก็อาจมีคุณค่าเชิงเปรียบเทียบในแง่ของอาหารหรือการทำรัง หรือจากมุมมองของเจ้าหน้าที่ประเมินภาษี ต้นไม้ก็อาจมีมูลค่าที่ต้องเสียภาษีในแต่ละปี ข้อมูลเพิ่มเติมที่นกและเจ้าหน้าที่ประเมินภาษีรับรู้ไม่จำเป็นต้องมองว่าเป็นคุณสมบัติที่แท้จริงของต้นไม้ แต่เป็นการเพิ่มเข้ามาจากมุมมองของนกและเจ้าหน้าที่ประเมินภาษี และจากการวิเคราะห์ของคานท์แล้ว สิ่งเดียวกันนี้อาจเป็นจริงแม้กระทั่งกับลักษณะที่เราคิดว่าเป็นคุณสมบัติที่แท้จริง

การเขียนโปรแกรมเชิงหัวข้อสนับสนุนการจัดระเบียบคลาสที่อธิบายวัตถุเป็น "หัวข้อ" ซึ่งอาจประกอบกันเป็นหัวข้อที่ใหญ่ขึ้นได้ ณ จุดที่เข้าถึงฟิลด์หรือเมธอดการมีส่วนร่วมของหัวข้อหลายๆ หัวข้ออาจประกอบกันได้ จุดเหล่านี้มีลักษณะเป็นจุดเชื่อมต่อ[ 3 ]ของหัวข้อ ตัวอย่างเช่น หากต้นไม้ถูกตัดลง เมธอดที่เกี่ยวข้องอาจจำเป็นต้องเชื่อมต่อพฤติกรรมในหัวข้อของนกและผู้ประเมินภาษีกับพฤติกรรมของต้นไม้เอง ดังนั้นโดยพื้นฐานแล้วจึงเป็นมุมมองเกี่ยวกับลักษณะการประกอบของการพัฒนาซอฟต์แวร์ ตรงข้ามกับลักษณะเชิงอัลกอริทึม (เชิงกระบวนการ) หรือการซ่อนการแสดงแทน (เชิงวัตถุ)

ความสัมพันธ์

ความสัมพันธ์กับการเขียนโปรแกรมเชิงแง่มุม

การนำการเขียนโปรแกรมเชิงแง่มุมมาใช้ในปี 1997 [ 4 ]ทำให้เกิดคำถามเกี่ยวกับความสัมพันธ์กับการเขียนโปรแกรมเชิงหัวข้อ และเกี่ยวกับความแตกต่างระหว่างหัวข้อและแง่มุม คำถามเหล่านี้ยังไม่ได้รับคำตอบเป็นเวลานาน แต่ได้รับการแก้ไขในสิทธิบัตรเกี่ยวกับการเขียนโปรแกรมเชิงแง่มุมที่ยื่นในปี 1999 [ 5 ]ซึ่งมีสองประเด็นที่โดดเด่นแตกต่างจากงานก่อนหน้า:

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

ในมุมมองที่เน้นเรื่องเป็นหลัก การตัดขวางอาจถูกวางแยกจากแง่มุม (เรื่อง) และพฤติกรรมจะไม่ถูกบังคับโดยแง่มุม แต่ถูกควบคุมโดยกฎของการประกอบ การมองย้อนหลัง[ 6 ]ยังทำให้สามารถแยกแยะการเขียนโปรแกรมเชิงแง่มุมได้ด้วยการแนะนำและการใช้ประโยชน์จากแนวคิดของจุดตัด คล้ายแบบสอบถาม เพื่อกำหนดจุดเชื่อมต่อที่ใช้โดยแง่มุมในลักษณะทั่วไปจากภายนอก

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

ความสัมพันธ์กับการพัฒนาซอฟต์แวร์เชิงแง่มุม

เมื่อเข้าสู่สหัสวรรษใหม่ เป็นที่ชัดเจนว่ากลุ่มวิจัยจำนวนหนึ่งกำลังศึกษาเทคโนโลยีต่างๆ ที่ใช้การประกอบหรือการเชื่อมต่อสถานะและฟังก์ชันที่บรรจุแยกกันเพื่อสร้างวัตถุ[ 8 ]เพื่อแยกแยะขอบเขตความสนใจร่วมกันจากการเขียนโปรแกรมเชิงแง่มุม (Aspect-Oriented Programming) ด้วยคำจำกัดความสิทธิบัตรเฉพาะ และเพื่อเน้นย้ำว่าเทคโนโลยีการประกอบนั้นเกี่ยวข้องมากกว่าแค่ขั้นตอนการเขียนโค้ดในการพัฒนาซอฟต์แวร์ เทคโนโลยีเหล่านี้จึงถูกจัดกลุ่มเข้าด้วยกันภายใต้คำว่าการพัฒนาซอฟต์แวร์เชิงแง่มุม (Aspect-Oriented Software Development ) [ 9 ]และได้มีการจัดการประชุมนานาชาติหลายชุดขึ้นในหัวข้อนี้ เช่นเดียวกับการเขียนโปรแกรมเชิงแง่มุม การเขียนโปรแกรมเชิงหัวข้อ (Subject-Oriented Programming) ตัวกรองการประกอบ (Composition Filters) การเขียนโปรแกรมเชิงคุณลักษณะ (Feature-Oriented Programming)และวิธีการปรับตัว (Adaptive Methods) ถือเป็นแนวทางการพัฒนาซอฟต์แวร์เชิงแง่มุมเช่นกัน

มิติ

การแยกความกังวลแบบหลายมิติ, Hyper/J และสภาพแวดล้อมการจัดการความกังวล

การกำหนดรูปแบบดั้งเดิมของการเขียนโปรแกรมเชิงหัวข้อนั้นตั้งใจให้เป็นเทคโนโลยีการบรรจุหีบห่อ ซึ่งช่วยให้สามารถขยายพื้นที่ของฟังก์ชันและประเภทข้อมูลได้ทั้งสองมิติ การใช้งานครั้งแรกนั้นมีไว้สำหรับ C++ [ 10 ]และ Smalltalk [ 11 ]การใช้งานเหล่านี้ใช้ประโยชน์จากแนวคิดของป้ายกำกับซอฟต์แวร์และกฎการประกอบเพื่ออธิบายการรวมหัวข้อ

เพื่อแก้ไขข้อกังวลที่ว่าควรมีการวางรากฐานที่ดีกว่าสำหรับการวิเคราะห์และองค์ประกอบของซอฟต์แวร์ ไม่ใช่แค่ในแง่ของบรรจุภัณฑ์ แต่ในแง่ของข้อกังวลต่างๆ ที่บรรจุภัณฑ์เหล่านี้กล่าวถึง จึงได้มีการพัฒนาการจัดระเบียบเนื้อหาอย่างชัดเจนในรูปของ "เมทริกซ์" หลายมิติ ซึ่งข้อกังวลต่างๆ จะสัมพันธ์กับหน่วยซอฟต์แวร์ที่นำไปใช้ การจัดระเบียบนี้เรียกว่าการแยกข้อกังวลแบบหลายมิติและเอกสารที่อธิบายเรื่องนี้[ 12 ]ได้รับการยอมรับว่าเป็นเอกสารที่มีอิทธิพลมากที่สุดในการประชุม ICSE ปี 1999 [ 13 ]

แนวคิดใหม่นี้ถูกนำมาใช้สำหรับการเขียน ซอฟต์แวร์ Javaโดยใช้ชื่อHyper/Jสำหรับเครื่องมือ[ 14 ]

องค์ประกอบและแนวคิดของหัวข้อสามารถนำไปใช้กับสิ่งประดิษฐ์ซอฟต์แวร์ที่ไม่มีความหมายที่สามารถดำเนินการได้ เช่น ข้อกำหนดความต้องการหรือเอกสาร เครื่องมือวิจัยสำหรับEclipseที่เรียกว่าConcern Manipulation Environment (CME) ได้รับการอธิบายไว้[ 15 ]ซึ่งเครื่องมือสำหรับการสอบถาม การวิเคราะห์ การสร้างแบบจำลอง[ 16 ]และองค์ประกอบจะถูกนำไปใช้กับสิ่งประดิษฐ์ในภาษาหรือการแสดงใด ๆ ผ่านการใช้อะแดปเตอร์ปลั๊กอินที่เหมาะสมเพื่อจัดการการแสดง

เอ็นจิ้นการจัดองค์ประกอบ Hyper/J [ 17 ]ได้รับการพัฒนาต่อยอดเป็นส่วนหนึ่งของ CME ซึ่งใช้แนวทางทั่วไปสำหรับองค์ประกอบต่างๆ ของเอ็นจิ้นการจัดองค์ประกอบ:

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

ทั้ง Hyper/J และ CME มีให้บริการจาก alphaWorks [ 18 ]หรือ sourceforge [ 19 ]ตามลำดับ แต่ไม่มีการสนับสนุนอย่างจริงจัง

การเขียนโปรแกรมเชิงเนื้อหาในฐานะ "มิติที่สาม"

การเรียกใช้เมธอดในการเขียนโปรแกรมเชิงวัตถุสามารถคิดได้ว่าเป็น "สองมิติ" ในแง่ที่ว่าโค้ดที่ดำเนินการขึ้นอยู่กับทั้งชื่อเมธอดและวัตถุที่เกี่ยวข้อง ซึ่งสามารถเปรียบเทียบได้[ 20 ]กับการเขียนโปรแกรมเชิงขั้นตอน ซึ่งชื่อขั้นตอนจะแก้ไขโดยตรงหรือในมิติเดียวไปยังรูทีนย่อย และยังเปรียบเทียบกับการเขียนโปรแกรมเชิงหัวข้อ ซึ่งผู้ส่งหรือหัวข้อก็มีความเกี่ยวข้องกับการเรียกใช้เมธอดเช่นกัน ซึ่งประกอบเป็นมิติที่สาม

ดูเพิ่มเติม

  • ลักษณะการกระจายตัวของการเขียนโปรแกรมเชิงเนื้อหา: การประเมินด้วยกระบวนทัศน์เชิงกระบวนการและเชิงวัตถุ
  • alphaWorks: HyperJ
  • โครงการเทคโนโลยีที่เก็บถาวรของ Eclipse
  • Amethyst: ไลบรารี JavaScript สำหรับการเขียนโปรแกรมเชิงหัวข้อ (Subject-Oriented Programming)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Subject-oriented_programming&oldid=1332134833 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ การเขียนโปรแกรมที่เน้นเนื้อหาเฉพาะเรื่อง

ในด้านการคำนวณการเขียนโปรแกรมเชิงอัตวิสัยเป็นกระบวนทัศน์ซอฟต์แวร์เชิงวัตถุ ซึ่งสถานะ (ฟิลด์) และพฤติกรรม (เมธอด) ของวัตถุไม่ได้ถูกมองว่าเป็นคุณสมบัติที่แท้จริงของวัตถุเอง...

ความสัมพันธ์กับการเขียนโปรแกรมเชิงแง่มุม

การนำการเขียน โปรแกรมเชิงแง่มุมมาใช้ ในปี 1997 [ 4 ] ทำให้เกิดคำถามเกี่ยวกับความสัมพันธ์กับการเขียนโปรแกรมเชิงหัวข้อ และเกี่ยวกับความแตกต่างระหว่างหัวข้อและแง่มุม คำถามเหล่านี้ยังไม่ได้รับคำตอบเป็นเวลานาน...

ความสัมพันธ์กับการพัฒนาซอฟต์แวร์เชิงแง่มุม

เมื่อเข้าสู่สหัสวรรษใหม่ เป็นที่ชัดเจนว่ากลุ่มวิจัยจำนวนหนึ่งกำลังศึกษาเทคโนโลยีต่างๆ ที่ใช้การประกอบหรือการเชื่อมต่อสถานะและฟังก์ชันที่บรรจุแยกกันเพื่อสร้างวัตถุ [ 8 ] เพื่อแยกแยะขอบเขตความสนใจร่วมกันจากการเขียนโปรแกรมเชิงแง่มุม (Aspect-Oriented Programming)...

การแยกความกังวลแบบหลายมิติ, Hyper/J และสภาพแวดล้อมการจัดการความกังวล

การกำหนดรูปแบบดั้งเดิมของการเขียนโปรแกรมเชิงหัวข้อนั้นตั้งใจให้เป็นเทคโนโลยีการบรรจุหีบห่อ ซึ่งช่วยให้สามารถขยายพื้นที่ของฟังก์ชันและประเภทข้อมูลได้ทั้งสองมิติ การใช้งานครั้งแรกนั้นมีไว้สำหรับ C++ [ 10 ] และ Smalltalk [ 11 ]...