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

Smazaný obsah Přidaný obsah
{{Programovací paradigmata}}
m Robot: -zastaralá značka HTML
Řádek 27:
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)
Řádek 35:
toAcc.deposit(amount);
}
</syntaxhighlight>
</source>
 
 
Řádek 41:
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…");
Řádek 62:
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ů''.
Řádek 69:
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) {
Řádek 81:
// Other crosscutting code.
}
</syntaxhighlight>
</source>
 
== Join point modely (JPM) ==