Aspektově orientované programování: Porovnání verzí

m
Robot: -zastaralá značka HTML
({{Programovací paradigmata}})
m (Robot: -zastaralá značka HTML)
Například si představme bankovní aplikaci s koncepčně velmi jednoduchou metodou na převod částky z jednoho účtu na druhý:<ref>Poznámka: Pro ukázky v tomto článku je použita syntaxe jazyka [[Java (programovací jazyk)|Java]].</ref>
 
<sourcesyntaxhighlight lang="java">
void transfer(Account fromAcc, Account toAcc, int amount) throws Exception {
if (fromAcc.getBalance() < amount)
toAcc.deposit(amount);
}
</syntaxhighlight>
</source>
 
 
Zjednodušená verze s těmito novými koncerny by mohla vypadat nějak takto:
 
<sourcesyntaxhighlight lang="java">
void transfer(Account fromAcc, Account toAcc, int amount, User user, Logger logger) throws Exception {
logger.info("Transferring money…");
logger.info("Transaction successful.");
}
</syntaxhighlight>
</source>
 
Kód již není tak jednoduchý a elegantní, jelikož jsme přidali různé další koncerny k základní funkcionalitě (někdy zvané ''koncern obchodní logiky''). Transakce, zabezpečení a logování jsou příklady ''průřezových problémů''.
Takže takto se pro výše uvedený příklad provádí záznam v aspektu:
 
<sourcesyntaxhighlight lang="java">
aspect Logger {
void Bank.transfer(Account fromAcc, Account toAcc, int amount, User user, Logger logger) {
// Other crosscutting code.
}
</syntaxhighlight>
</source>
 
== Join point modely (JPM) ==
422 534

editací