משתמש:צל חולף/תכנות מוכוון היבטים
תכנות מוכוון-היבטים (באנגלית: Aspect-oriented programming, בראשי תיבות: AOP) היא פרדיגמת תכנות שמטרתה לפתור בעיות חוזרות ונשנות (cross-cutting concerns) ברוב המודולים של תוכנה, כמו ניהול לוגים, טרנזקציות או אבטחה.
ברוב יישומי התכנות מונחה-עצמים (OOP), קוד האחראי על ניהול לוגים, למשל, חוזר על עצמו במקומות שונים ביישום. בעוד שתכנות מונחה-עצמים מאפשר לארגן תכונות אלו בעזרת מחלקות, הן אינן יכולות להיפרס ולשמש באופן יעיל במיקומים שונים בקוד. בעיה זו של קוד חוזר ונשנה באזורים שונים של היישום נקראת בעיית ה-cross-cutting concerns.
AOP פותר את הבעיה על ידי הגדרת "היבטים" (Aspects), שהם מודולים המכילים התנהגות שניתן להפעיל אותה בנקודות שונות בתוכנית (Join Points) מבלי לשנות את הקוד הקיים. לדוגמה, נוכל להגדיר היבט של ניהול לוגים שייכנס לפעולה אוטומטית בכל פעם שמתבצעת קריאה לפונקציה מסוימת. בצורה זו, ניתן לכתוב את קוד ניהול הלוגים במקום אחד בלבד, ולשבץ אותו באופן אוטומטי במקומות הדרושים.
---
- מושגי מפתח
כדי להבין את תכנות מוכוון-היבטים, יש להכיר את המושגים הבאים:
- היבט (Aspect): מודול המרכז את הטיפול ב-cross-cutting concern.
- נקודת חיבור (Join Point): נקודה בביצוע התוכנית בה ניתן להפעיל היבט. לדוגמה: קריאה למתודה, יצירת אובייקט חדש או זריקת חריגה.
- עצה (Advice): הקוד עצמו בתוך ההיבט, המופעל בנקודת החיבור.
- נקודת חתך (Pointcut): הגדרה המאפשרת למפתחים לבחור אילו נקודות חיבור יש להפעיל את העצה. נקודת חתך היא ביטוי סלקטורי שבוחר נקודות חיבור מסוימות מתוך כלל נקודות החיבור האפשריות.
- מבוא (Introduction): היכולת להוסיף מתודות או שדות חדשים למחלקות קיימות, מבלי לשנות את הקוד שלהן.
---
- השוואה לתכנות מונחה עצמים (OOP)
בעוד ש-תכנות מוכוון עצמים מתמקד בחלוקת התוכנית לאובייקטים המייצגים ישויות מהעולם האמיתי, תכנות מוכוון-היבטים מתמקד בהפרדת הלוגיקה העסקית מהתכונות התומכות החוזרות על עצמן.
במקום להטמיע את כל הפונקציונליות בתוך המחלקות (כמו במודל ה-OOP הקלאסי), AOP מאפשר להגדיר אותה באופן נפרד ב"היבטים". כך, אם נרצה לשנות את אופן הרישום ללוגים, למשל, נצטרך לשנות רק את ההיבט המתאים, ולא לעבור על כל המחלקות שמשתמשות בו.
---
- יישומים וטכנולוגיות
AOP הוא רעיון תאורטי, אשר מיושם בפועל באמצעות ספריות וכלים שונים. בשפות תכנות מונחות-עצמים, ובמיוחד ב-Java, קיימות טכנולוגיות פופולריות ליישום AOP:
- AspectJ: פרויקט עצמאי המהווה הרחבה ל-Java, ומאפשר יישום AOP בצורה מקיפה ויעילה.
- Spring AOP: חלק מספריית התוכנה Spring Framework ל-Java. פועל על בסיס פרוקסי (Proxy) ואינו דורש הרחבת השפה.
- PostSharp: הרחבה לשפות C# ו-VB.NET בסביבת NET Framework..
---
- קישורים חיצוניים
- What is Spring AOP? - הסבר מקיף על AOP ויישומו ב-Spring.
- A Guide to AspectJ - מדריך ליישום AOP באמצעות AspectJ.