Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - Programmazione orientata agli aspetti
Forum - Algoritmi - Programmazione orientata agli aspetti

Avatar
tuttodiMC (Normal User)
Expert


Messaggi: 327
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 20:36
Giovedì, 16/05/2013
Salve a tutti ho trovao su wikipedia la definizione della programmazione orientata agli aspetti, di AspectJ e della sua relazione con la progammazione OOP, ma non ho ben capito a cosa serve? Qualcuno saprebbe spiegarmelo?

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 12:04
Sabato, 18/05/2013
Non ho usato la AOP in java con aspectJ, ma in C# con PostSharp.

In generale serve a incapsulare tutte quelle funzionalità trasversali a tutti gli oggetti.

Ti scrivo due esempio in C#, aspectJ userà altre sintassi probabilmente ma i concetti dovrebbero restare gli stessi.

Ad esempio la gestione degli errori, invece che scrivere in ogni metodo

Codice sorgente - presumibilmente C#

  1. public void blabla() {
  2. try {
  3.         ...
  4. } catch(Exception ex) {
  5.         Logger.LogError("Errore in blabla()", ex)
  6. }
  7. }
  8. ...



uno può crearsi un aspetto ExceptionHandlerAspect e fare

Codice sorgente - presumibilmente Algoritmi

  1. [ExceptionHandlerAspect]
  2. public void blabla() {
  3.         ...
  4. }



E il codice di ExceptionHandlerAspect, nel caso di esempio con PostSharp è qualcosa del genere

Codice sorgente - presumibilmente C#

  1. public class ExceptionHandlerAspect : OnExceptionAspect
  2. {
  3.    
  4.   public override void OnException(MethodExecutionArgs args)
  5.     {
  6.        // gestisci in generale le eccezioni accedendo alle informazioni da args
  7. }
  8. }



Le funzionalità sintetizzabili in un aspetto sono quindi tutte quelle che aprono o chiudono la chiamata ad un oggetto quindi validazione, caching, autorizzazioni, profiling e simili.

La AOP poi può essere implementata o a compile-time come fanno appunto aspectJ e postsharp, quindi il tuo codice verrà modificato al volo in compilazione aggiungendo in base agli aspetti codice prima e dopo il codice originale del tuo metodo.

Oppure si possono implementare con la dependency injection, dove aggiungi degli interceptor nel dependency container che wrappano la chiamata ai tuoi oggetti col codice dell'aspetto.

Ultima modifica effettuata da netarrow il 18/05/2013 alle 12:05
PM Quote
Avatar
tuttodiMC (Normal User)
Expert


Messaggi: 327
Iscritto: 29/10/2012

Segnala al moderatore
Postato alle 19:29
Venerdì, 24/05/2013
La sintassi con AspectJ è identica. Mi interessa molto PostSharp. Sapresti indicarmi una buona guida per impararlo?

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 23:21
Sabato, 25/05/2013
Le basi le ho imparate qui:

http://pluralsight.com/training/courses/TableOfContents?co ...

http://pluralsight.com/training/courses/TableOfContents?co ...

Il resto cercando in rete in volta in volta e nella documentazione sul sito di postsharp.

PM Quote