xxxAnnaxxx
Grünschnabel
Hallo,
ich arbeite mich gerade in das Thema Aspektorientierung ein. Die Theorie ist soweit klar, aber mein Projekt will einfach nicht laufen, weil ich den Pointcut nicht richtig implementiert bekomme.
Mein Projekt besteht aus einer Klasse Mitarbeiter, einer ausführenden Klasse Mitarbeiterverwaltung und dem Aspekt. Der Aspekt soll jede Änderung die an einem Objekt Mitarbeiter vorgenommen wird Loggen.
Vielleicht kann mir ja hier jemand helfen.
Code:
Mitarbeiter
package de.eufh.wi09;
public class Mitarbeiter {
private String name;
private String vorname;
private int gehalt;
private String abteilung;
public Mitarbeiter(String n, String v, int g, String a) {
this.name = n;
this.vorname = v;
this.gehalt = g;
this.abteilung = a;
}
public void MitarbeiterGehaltErhoehen(int Erhoehung) {
this.gehalt = gehalt + Erhoehung;
}
public void MitarbeiterAbteilungWechseln(String NeueAbteilung)
{
this.abteilung = NeueAbteilung;
}
}
Mitarbeiterverwaltung
package de.eufh.wi09;
public class Mitarbeiterverwaltung {
public static void main (String [] args)
{
// Instanziierung eines Objektes
Mitarbeiter aKowollik = new Mitarbeiter ("Kowollik","Anna",200000,"CEO");
// Anwendung der Methode GehaltErhoehen
aKowollik.GehaltErhoehen(50000);
// Anwendung der Methode AbteilungWechseln
aKowollik.AbteilungWechseln("Process Management");
}
}
package de.eufh.wi09;
public aspect Logging {
pointcut Log () : call (void GehaltErhoehen(..))
&& call (void AbteilungWechseln(..));
before (): Log ()
{
System.out.println("Erstelle/ Bearbeite Text:");
}
after (): Log ()
{
System.out.println("Text wurde erstellt/ bearbeitet.");
}
}
Der Aspekt spricht weder die richtigen Methoden an, noch Loggt er die Änderungen.
Wie muss ich das implementieren?
Viele Grüße,
Anna
ich arbeite mich gerade in das Thema Aspektorientierung ein. Die Theorie ist soweit klar, aber mein Projekt will einfach nicht laufen, weil ich den Pointcut nicht richtig implementiert bekomme.
Mein Projekt besteht aus einer Klasse Mitarbeiter, einer ausführenden Klasse Mitarbeiterverwaltung und dem Aspekt. Der Aspekt soll jede Änderung die an einem Objekt Mitarbeiter vorgenommen wird Loggen.
Vielleicht kann mir ja hier jemand helfen.
Code:
Mitarbeiter
package de.eufh.wi09;
public class Mitarbeiter {
private String name;
private String vorname;
private int gehalt;
private String abteilung;
public Mitarbeiter(String n, String v, int g, String a) {
this.name = n;
this.vorname = v;
this.gehalt = g;
this.abteilung = a;
}
public void MitarbeiterGehaltErhoehen(int Erhoehung) {
this.gehalt = gehalt + Erhoehung;
}
public void MitarbeiterAbteilungWechseln(String NeueAbteilung)
{
this.abteilung = NeueAbteilung;
}
}
Mitarbeiterverwaltung
package de.eufh.wi09;
public class Mitarbeiterverwaltung {
public static void main (String [] args)
{
// Instanziierung eines Objektes
Mitarbeiter aKowollik = new Mitarbeiter ("Kowollik","Anna",200000,"CEO");
// Anwendung der Methode GehaltErhoehen
aKowollik.GehaltErhoehen(50000);
// Anwendung der Methode AbteilungWechseln
aKowollik.AbteilungWechseln("Process Management");
}
}
package de.eufh.wi09;
public aspect Logging {
pointcut Log () : call (void GehaltErhoehen(..))
&& call (void AbteilungWechseln(..));
before (): Log ()
{
System.out.println("Erstelle/ Bearbeite Text:");
}
after (): Log ()
{
System.out.println("Text wurde erstellt/ bearbeitet.");
}
}
Der Aspekt spricht weder die richtigen Methoden an, noch Loggt er die Änderungen.
Wie muss ich das implementieren?
Viele Grüße,
Anna