file: Main.java
includes all classes
joinpointtype UpdateSignalling {
// change of state that affects display of objects
}
abstract class Shape exhibits UpdateSignalling {
pointcut UpdateSignalling :
execution(void moveBy(int, int));
public abstract void moveBy(int dx, int dy);
}
class Point extends Shape exhibits UpdateSignalling {
int x, y;
pointcut UpdateSignalling :
super || execution(void set*(int));
public Point() {} // needed for test
public Point(int x, int y) {this.x = x; this.y = y;} // needed for test
public int getX() { return x; }
public int getY() { return y; }
public void setX(int x) { this.x = x; }
public void setY(int y) { this.y = y; }
public void moveBy(int dx, int dy) {x+=dx; y+=dy;}
}
class Line extends Shape exhibits UpdateSignalling {
private Point p1, p2;
pointcut UpdateSignalling : super;
public Point getP1() { return p1; }
public Point getP2() { return p2; }
public void setP1(Point p) {p1 = p;} // needed for test
public void setP2(Point p) {p2 = p;} // needed for test
public void moveBy(int dx, int dy) {
p1.x += dx; p1.y += dy;
p2.x += dx; p2.y += dy;
}
}
aspect Display advises UpdateSignalling {
after (UpdateSignalling us) {
System.out.println("\t[called]\t"+thisJoinPoint.getSignature());
update();
}
static void update() {System.out.println("\t**\tDISPLAY IS UPDATET");}
}
Back to main page