AOP กับ OOP
AOP (การเขียนโปรแกรมเชิงมุมมอง) และ OOP (การเขียนโปรแกรมเชิงวัตถุ) เป็นกระบวนทัศน์การเขียนโปรแกรมสองรูปแบบ กระบวนทัศน์การเขียนโปรแกรมเป็นรูปแบบพื้นฐานของการเขียนโปรแกรมคอมพิวเตอร์ กระบวนทัศน์การเขียนโปรแกรมแตกต่างกันไปในแต่ละองค์ประกอบของโปรแกรมและวิธีการกำหนดแต่ละขั้นตอนสำหรับการแก้ปัญหา ตามชื่อที่แนะนำ OOP มุ่งเน้นไปที่การแสดงปัญหาโดยใช้วัตถุในโลกแห่งความเป็นจริงและพฤติกรรมของพวกมัน ในขณะที่ AOP เกี่ยวข้องกับการแยกโปรแกรมออกเป็นข้อกังวลที่แยกจากกัน
AOP คืออะไร
AOP เป็นกระบวนทัศน์การเขียนโปรแกรมซึ่งเกี่ยวข้องกับการแยกโปรแกรมออกเป็นส่วนๆ ของการทำงาน (เรียกว่าข้อกังวล) ที่ตัดผ่านหลายส่วน เพื่อเพิ่มโมดูลาร์การสนับสนุน abstractions (เช่น คลาส เมธอด ฯลฯ) เพื่อจัดกลุ่มและสรุปข้อกังวลในเอนทิตีที่ไม่ซ้ำกันมีให้ในกระบวนทัศน์การเขียนโปรแกรมอื่นๆ มากมาย แต่ข้อกังวล (เช่น "การบันทึก") เป็นตัวอย่างของข้อกังวลแบบตัดขวาง เนื่องจากทุกส่วนของระบบที่บันทึกจะได้รับผลกระทบจากกลยุทธ์ที่ใช้สำหรับการบันทึก จุดสนใจหลักของการใช้งาน AOP ทั้งหมดคือการมีการแสดงออกข้ามที่เหมาะสมเพื่อรวบรวมข้อกังวลทั้งหมดในที่เดียว
OOP คืออะไร
ใน OOP มุ่งเน้นไปที่การคิดถึงปัญหาที่จะแก้ไขในแง่ขององค์ประกอบในโลกแห่งความเป็นจริง และเป็นตัวแทนของปัญหาในแง่ของวัตถุและพฤติกรรมของพวกมัน ชั้นเรียนแสดงภาพนามธรรมของวัตถุในโลกแห่งความเป็นจริง ชั้นเรียนเป็นเหมือนพิมพ์เขียวหรือเทมเพลตที่รวบรวมสิ่งของหรือสิ่งของที่คล้ายกันที่สามารถจัดกลุ่มเข้าด้วยกันได้ คลาสมีคุณสมบัติที่เรียกว่าแอตทริบิวต์ แอตทริบิวต์ถูกนำมาใช้เป็นตัวแปรส่วนกลางและอินสแตนซ์ เมธอดในคลาสแสดงหรือกำหนดพฤติกรรมของคลาสเหล่านี้เมธอดและแอตทริบิวต์ของคลาสเรียกว่าสมาชิกของคลาส อินสแตนซ์ของคลาสเรียกว่าอ็อบเจ็กต์ ดังนั้น อ็อบเจ็กต์จึงเป็นโครงสร้างข้อมูลที่คล้ายกับวัตถุในโลกแห่งความเป็นจริงอย่างใกล้ชิด
มีแนวคิด OOP ที่สำคัญหลายประการ เช่น Data abstraction, Encapsulation, Polymorphism, Messaging, Modularity และ Inheritance โดยทั่วไป การห่อหุ้มทำได้โดยทำให้แอตทริบิวต์เป็นส่วนตัว ในขณะที่สร้างวิธีการสาธารณะที่สามารถใช้เพื่อเข้าถึงแอตทริบิวต์เหล่านั้น การสืบทอดอนุญาตให้ผู้ใช้ขยายคลาส (เรียกว่าคลาสย่อย) จากคลาสอื่น (เรียกว่าคลาสซุปเปอร์) Polymorphism ช่วยให้โปรแกรมเมอร์สามารถแทนที่อ็อบเจ็กต์ของคลาสแทนที่อ็อบเจ็กต์ของคลาสระดับสูง โดยทั่วไป คำนามที่พบในคำจำกัดความของปัญหาจะกลายเป็นคลาสในโปรแกรมโดยตรง และในทำนองเดียวกัน กริยาจะกลายเป็นวิธีการ ภาษา OOP ยอดนิยมบางภาษา ได้แก่ Java และ C
AOP กับ OOP ต่างกันอย่างไร
ความแตกต่างที่สำคัญระหว่าง OOP และ AOP คือจุดเน้นของ OOP คือการแบ่งงานการเขียนโปรแกรมออกเป็นวัตถุ ซึ่งสรุปข้อมูลและวิธีการ ในขณะที่จุดเน้นของ AOP คือการแยกโปรแกรมออกเป็นข้อกังวลข้าม.อันที่จริง AOP ไม่ใช่คู่แข่งของ OOP เพราะมันเกิดขึ้นจากกระบวนทัศน์ OOP AOP ขยาย OOP โดยระบุปัญหาบางประการ AOP นำเสนอวิธีการที่เป็นระเบียบเรียบร้อยในการดำเนินการข้อกังวลไขว้ (ซึ่งอาจกระจัดกระจายไปหลายที่ในการใช้งาน OOP ที่สอดคล้องกัน) ในที่เดียว ดังนั้น AOP ทำให้โปรแกรมสะอาดขึ้นและเชื่อมโยงกันอย่างหลวมๆ