AOP לעומת OOP
AOP (תכנות מונחה-היבט) ו-OOP (תכנות מונחה-אובייקט) הן שתי פרדיגמות תכנות. פרדיגמת תכנות היא סגנון בסיסי של תכנות מחשב. פרדיגמות תכנות שונות באופן ייצוג כל מרכיב בתוכניות וכיצד מוגדר כל שלב לפתרון בעיות. כפי שהשם מרמז, OOP מתמקדת בייצוג בעיות בשימוש באובייקטים מהעולם האמיתי ובהתנהגותם, בעוד AOP עוסקת בפירוק התוכניות להפרדה בין חששות רוחביים.
מה זה AOP?
AOP היא פרדיגמת תכנות, העוסקת בפירוק תוכנית לתחומי פונקציונליות מלוכדים (הנקראים דאגות) החוצות מספר תחומים, על מנת להגביר את המודולריות.תמיכה בהפשטות (כגון שיעורים, שיטות וכו') לקבץ ולכליל חששות בישויות ייחודיות ניתנת בפרדיגמות תכנות רבות אחרות. אבל דאגות (כגון "רישום") הן דוגמאות לחששות צולבים, מכיוון שכל חלק שנרשם במערכת מושפע מהאסטרטגיה המשמשת לרישום. המיקוד העיקרי של כל יישומי AOP הוא לקבל ביטויים צולבים מתאימים כדי ללכוד את כל החששות במיקום אחד.
מה זה OOP?
ב-OOP, ההתמקדות היא בחשיבה על הבעיה שיש לפתור במונחים של אלמנטים בעולם האמיתי, ובייצוג הבעיה במונחים של אובייקטים והתנהגותם. השיעורים מתארים את הייצוגים המופשטים של אובייקטים בעולם האמיתי. שיעורים הם כמו שרטוטים או תבניות, אשר אוספים פריטים דומים או דברים שניתן לקבץ יחד. למחלקות יש מאפיינים הנקראים תכונות. תכונות מיושמות כמשתנים גלובליים ומשתנים מופע. שיטות במחלקות מייצגות או מגדירות את ההתנהגות של מחלקות אלו.שיטות ותכונות של מחלקות נקראות חברי הכיתה. מופע של מחלקה נקרא אובייקט. לכן, אובייקט הוא מבנה נתונים הדומה מאוד לאובייקט כלשהו בעולם האמיתי.
יש כמה מושגי OOP חשובים כמו הפשטת נתונים, Encapsulation, Polymorphism, Messaging, Modularity ו-Heritance. בדרך כלל, אנקפסולציה מושגת על ידי הפיכת התכונות לפרטיות, תוך יצירת שיטות ציבוריות שניתן להשתמש בהן כדי לגשת לתכונות הללו. ירושה מאפשרת למשתמש להרחיב מחלקות (הנקראות תת מחלקות) ממחלקות אחרות (הנקראות מחלקות על). פולימורפיזם מאפשר למתכנת להחליף אובייקט של מחלקה במקום אובייקט ממחלקת העל שלו. בדרך כלל, שמות העצם שנמצאים בהגדרת הבעיה הופכים ישירות לשיעורים בתוכנית. ובאופן דומה, פעלים הופכים לשיטות. כמה משפות OOP הפופולריות ביותר הן Java ו-C.
מה ההבדל בין AOP ל-OOP?
ההבדל העיקרי בין OOP ל-AOP הוא שהמיקוד של OOP הוא לפרק את משימת התכנות לאובייקטים, שמקיפים נתונים ושיטות, בעוד שהמיקוד של AOP הוא לפרק את התוכנית לדאגות צולבות.למעשה, AOP אינו מתחרה עבור OOP, כי הוא יצא מתוך פרדיגמת OOP. AOP מרחיב את OOP על ידי טיפול במעט מהבעיות שלו. AOP מציג דרכים מסודרות ליישם חששות רוחביים (שעשויים היו מפוזרים על פני מספר מקומות ביישום OOP המקביל) במקום אחד. לכן, AOP הופך את התוכנית לנקייה יותר ולצמודה רופפת יותר.