aspect-oriented_programming_aop

Aspect-Oriented Programming (AOP)

Return to Spring AOP, Spring Boot, Programming paradigms, Object-oriented programming (OOP), Reactive programming, Imperative programming, Declarative programming, Procedural programming, Functional programming, Generic programming (Generics), Aspect-oriented programming, Major programming topics, Programming topics, Programming languages, Software engineering topics, Software architecture, Software architecture topics, Awesome lists

Snippet from Wikipedia: Aspect-oriented programming

In computing, aspect-oriented programming (AOP) is a programming paradigm that aims to increase modularity by allowing the separation of cross-cutting concerns. It does so by adding behavior to existing code (an advice) without modifying the code, instead separately specifying which code is modified via a "pointcut" specification, such as "log all function calls when the function's name begins with 'set'". This allows behaviors that are not central to the business logic (such as logging) to be added to a program without cluttering the code of core functions.

AOP includes programming methods and tools that support the modularization of concerns at the level of the source code, while aspect-oriented software development refers to a whole engineering discipline.

Aspect-oriented programming entails breaking down program logic into cohesive areas of functionality (so-called concerns). Nearly all programming paradigms support some level of grouping and encapsulation of concerns into separate, independent entities by providing abstractions (e.g., functions, procedures, modules, classes, methods) that can be used for implementing, abstracting, and composing these concerns. Some concerns "cut across" multiple abstractions in a program, and defy these forms of implementation. These concerns are called cross-cutting concerns or horizontal concerns.

Logging exemplifies a cross-cutting concern because a logging strategy must affect every logged part of the system. Logging thereby crosscuts all logged classes and methods.

All AOP implementations have some cross-cutting expressions that encapsulate each concern in one place. The difference between implementations lies in the power, safety, and usability of the constructs provided. For example, interceptors that specify the methods to express a limited form of cross-cutting, without much support for type-safety or debugging. AspectJ has a number of such expressions and encapsulates them in a special class, called an aspect. For example, an aspect can alter the behavior of the base code (the non-aspect part of a program) by applying advice (additional behavior) at various join points (points in a program) specified in a quantification or query called a pointcut (that detects whether a given join point matches). An aspect can also make binary-compatible structural changes to other classes, such as adding members or parents.

External Sites

Programming Paradigms: Category Programming Paradigms, Programming Paradigms Topics

Subcategories

Category Aspect-oriented programming‎, Category Declarative programming‎, Category Distributed stream processing‎, Category Feature-oriented programming‎, Category Generic programming‎, Category Knowledge representation‎, Category Literate programming‎, Category Multi-paradigm programming languages‎, Category Object-oriented programming‎, Category Pattern matching programming languages‎, Category Prototype-based programming‎, Category Service-oriented (business computing)‎

Main Article: Programming paradigm

Comparison of programming paradigms, Aspect-oriented programming, Concurrent constraint logic programming, Concurrent programming, Data-driven programming, Declarative programming, Defensive programming, Dependently typed programming, Design by contract, Event-driven programming, Exploratory programming, Extensible programming, Flow-based programming, Functional programming, Purely functional programming (Haskell), Higher-order programming, Imperative programming, Interactive programming, List of low-code development platforms , Comparison of multi-paradigm programming languages' , Logic programming , Metaprogramming , Modular programming

, Object-based language , Concurrent object-oriented programming , Object-oriented programming , Offensive programming , Parallel programming model - See also Async programming, Concurrent programming, Multi-core programming , Pipeline (software) , Probabilistic programming , Procedural programming , Process-oriented programming , Programming by example , Prototype-based programming , Quantum programming - See Fake Quantum computing , Reactive programming , Relational model , Scientific programming language , Scripting language (Python, Bash, PowerShell, JavaScript, TypeScript, kscript) , Stack-oriented programming , Stream processing , Structured concurrency , Structured programming , Symbolic programming , Value semantics

Super Categories


© 1994 - 2024 Cloud Monk Losang Jinpa or Fair Use. Disclaimers

SYI LU SENG E MU CHYWE YE. NAN. WEI LA YE. WEI LA YE. SA WA HE.


aspect-oriented_programming_aop.txt · Last modified: 2024/04/28 03:41 by 127.0.0.1