AOP срещу OOP
AOP (Аспект-ориентирано програмиране) и OOP (Обектно-ориентирано програмиране) са две парадигми за програмиране. Парадигмата за програмиране е основен стил на компютърното програмиране. Парадигмите за програмиране се различават по начина, по който е представен всеки елемент от програмите и как е определена всяка стъпка за решаване на проблеми. Както подсказва името, OOP се фокусира върху представянето на проблеми при използване на обекти от реалния свят и тяхното поведение, докато AOP се занимава с разбиването на програмите, за да отдели загрижените проблеми.
Какво е AOP?
AOP е парадигма за програмиране, която се занимава с разбиването на програма до кохезивни области на функционалност (наречени притеснения), които прерязват множество области, за да се увеличи модулността. Поддръжка за абстракции (като класове, методи и т.н.) за групиране и капсулиране на проблеми в уникални единици се предоставя в много други парадигми за програмиране. Но притесненията (като например „Дневник на журналистиката“) са примери за проблемите с крос-подрязването, тъй като всяка регистрирана част от системата се влияе от стратегията, използвана за регистрация. Основният фокус на всички AOP внедрения е да имат подходящи изрази за пресичане, за да обхванат всички проблеми на едно място.
Какво е OOP?
В OOP фокусът е върху мисленето на проблема, който трябва да бъде решен по отношение на елементи от реалния свят, и представянето на проблема по отношение на обектите и тяхното поведение. Класовете изобразяват абстрактните изображения на обекти от реалния свят. Класовете са като чертежи или шаблони, които събират подобни елементи или неща, които могат да бъдат групирани. Класовете имат свойства, наречени атрибути. Атрибутите се реализират като глобални и променливи на инстанции. Методите в класовете представляват или дефинират поведението на тези класове. Методите и атрибутите на класовете се наричат членовете на класа. Екземпляр от клас се нарича обект. Следователно един обект е структура от данни, която много наподобява някакъв обект в реалния свят.
Има няколко важни концепции за OOP като абстракция на данни, капсулация, полиморфизъм, съобщения, модулност и наследяване. Обикновено капсулирането се постига, като атрибутите станат частни, като същевременно се създадат публични методи, които могат да се използват за достъп до тези атрибути. Наследяването позволява на потребителя да разширява класове (наречени подкласове) от други класове (наречени суперкласове). Полиморфизмът позволява на програмиста да замести обект от клас вместо обект от неговия суперклас. Обикновено съществителните, намиращи се в определението на проблема, директно стават класове в програмата. И по същия начин глаголите се превръщат в методи. Някои от най-популярните езици на OOP са Java и C #.
Каква е разликата между AOP и OOP?
Ключовата разлика между OOP и AOP е, че фокусът на OOP е да разгради задачата за програмиране в обекти, които капсулират данни и методи, докато фокусът на AOP е да разгради програмата към проблемите на крос-подрязването. Всъщност AOP не е конкурент на OOP, защото се появи извън парадигмата на OOP. AOP разширява OOP, като решава няколко от своите проблеми. AOP въвежда чисти начини за реализиране на проблемите с кръстосаното нарязване (които може би са били разпръснати на няколко места в съответното изпълнение на OOP) на едно място. Следователно AOP прави програмата по-чиста и по-свободно свързана.