From 5ba7e88c10c7b254a2cdb59c09ebc102b4e68dfa Mon Sep 17 00:00:00 2001 From: mkersten Date: Tue, 11 Nov 2003 06:36:33 +0000 Subject: Adding old demo scripts. --- docs/teaching/demos/oopsla2001-script.html | 310 +++++++++++++ docs/teaching/demos/oopsla2002-script.html | 671 +++++++++++++++++++++++++++++ 2 files changed, 981 insertions(+) create mode 100644 docs/teaching/demos/oopsla2001-script.html create mode 100644 docs/teaching/demos/oopsla2002-script.html (limited to 'docs') diff --git a/docs/teaching/demos/oopsla2001-script.html b/docs/teaching/demos/oopsla2001-script.html new file mode 100644 index 000000000..1c506956c --- /dev/null +++ b/docs/teaching/demos/oopsla2001-script.html @@ -0,0 +1,310 @@ + + + + + + + +AspectJ Installation Note + + + + + +

AspectJ Demo

+ +

1. Installing the Demo

+ + +

2. Initial Setup

+ +

3. Running the Demo

+ +

 

+ + + + + diff --git a/docs/teaching/demos/oopsla2002-script.html b/docs/teaching/demos/oopsla2002-script.html new file mode 100644 index 000000000..310505196 --- /dev/null +++ b/docs/teaching/demos/oopsla2002-script.html @@ -0,0 +1,671 @@ + + + + + + + + +demo: OO IDE + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

demo: object-oriented IDE

+
+
    +
  • good at showing hierarchical + OO structure…
  • +
+
+

demo: modularize concern

+
+

·         + Show FigureEd running

+

·         + Inspect Point.java

+

·         + Use joinpoint probe to find

+
+

call(void figures.Canvas.updateHistory()) + && within(*)

+
+

·         + Describe places that it’s called

+

·         + create aspect (defines a special class that can crosscut other + classes)

+

·         + aspect HistoryUpdating

+

·         + write pointcut (has name and parameters)

+
+

pointcut moves():

+

    call(void + Line.setP1(Point)) ||

+

    call(void + Line.setP2(Point));

+
+

·         + write after advice (runs “on the way back out”)

+
+

after() returning: move() {
+    <runs after each move> }

+
+

·         + extend advice to Point setters (multi-class)

+
+

call(void FigureElement+.set*(..))

+
+

·         + capture context & use interface

+
+

move(FigureElement fe): target(fe) &&..

+
+

·         + Show structure, note that SlothfulPoint is now included

+

·         + Run & show effect

+
+

 

+
+

·         + Show Point.moveBy history violoation

+

·         + Want to make sure that sets of private fields of classes implementing + FigureElement only happen from within the set methods

+
+

declare warning:

+

    + set(private * FigureElement+.*)

+

    + && !(withincode(* FigureElement+.set*(..)) ||                  withincode(FigureElement+.new(..))):

+

    + "should only assign to fields from set methods";

+
+

·         + Write before advice that does precondition checking on Points.

+
+

before(int + newValue):
+     set(int Point.*) && + args(newValue) {
+     if (newValue < 0) {
+         throw new IAE("too + small");
+     }
+ }

+
+

demo: pluggable aspects

+
+

·         + World’s first fully interactive video game, now 41 years old..

+

·         + Explain spacewar

+

·         + Launch with Ship.java and "Release.lst" selected and compiled. 

+
+
    +
  • Run
  • +
  • Show debug configuration in + config designer
  • +
  • Select + "Debug.lst", compile, and run again
  • +
  • Show debug window, menu, and + method tracing
  • +
+
+

demo: crosscutting structure

+
+

         Explain + annotations over program structure

+

         Explain + links and associations, inheritance links

+

         Explain + model genericity, different views

+

         Show + inline annotations

+

         Show + history navigation

+
+

         Show + global views (multiple views of your code)

+

         Show + refactoring by changing helmCommandsCut

+

         Show view + synchronization, task-oriented views

+

         Discuss + how it is harder in AJ (implicit invocation)

+

           Show + fluid documents (ISTL project)

+
+ +
+ +

 

+ +
+ + + + -- cgit v1.2.3