View
218
Download
3
Tags:
Embed Size (px)
Citation preview
Research Directions in Object Oriented Languages*
Bharat Jayaraman
Professor and ChairDepartment of Computer Science & Engineering
University at Buffalo, NY 14260
http://www.cse.buffalo.edu/LRG
* Joint work with recent PhD graduates Pallavi Tambay (2003) and Paul Gestwicki (2005)
and several MS students at Buffalo
Programming Languages
Imperative Declarative
Procedural Data Abstraction
C …Fortran ObjectsModules
Ada … Java …
Relational Functional
Constraints Logic ML …
CLP … Prolog …
… …
I. Modeling Complex Systems
• Motivating Domains Engineering Organizational Biological …
• Common Characteristics Assembly of components Laws of behavior Natural visual representations
Examples of Laws/Constraints
• “The load on a wall ≤ its load bearing capacity.”
• “The sum of the forces at a joint should be zero.”
• Various other constraints, such as:- ‘mate’ constraints- ‘flush’ constraints- ‘angle’ constraints
etc.
Our Principles of Modeling
• compositional specification of structure
objects• declarative specification of behavior
constraints• visual specification of assembly
diagrams
I. Constrained Objects
• An object is a container of data that is accessed via a well-defined interface of procedures. (Imperative)
• A constrained object contains data that is governed by laws, or constraints. (Declarative)
• Examples: resistor in a circuit a joint in a truss a cell in a spreadsheet
Constraints• A constraint is a declarative relation among
variables, e.g.,F = 32 + 1.8*C
• Constraints are additive, and collectively enforce the conditions among variables
D ≥ 1 D ≤ 31 D ≤ 29 ← M = 2 /\ leapyear(Y)
• Many algorithms for constraint satisfaction
1. Circuits as Constrained Objects
V1 = I1 * R1
V2 = I2 * R2
V3 = I3 * R3
V1 =V2 = V3 = V
I1 + I2 + I3 = I
1/R1 + 1/R2 + 1/R3 =1/R
V = I * R
Overview of Cob Programs
class class_id [ extends class_id ] { attributes attributes
constraints constraints
constructor constructor_clauses
}
Class inheritance
equations, inequations,conditional,quantified,aggregate
Cob Class Definitions
class component { attributes Real V, I, R; constraints V = I * R; constructor component(V1, I1, R1) { V = V1; I = I1; R = R1; }}
Ohm’s Law
class parallel extends component {attributes component [ ] C; constraints forall X in C: (X.V = V); (sum X in C: X.I) = I; (sum X in C: 1/X.R) = 1/R; constructor parallel(P) { C = P; }}
class joint { attributes bar [ ] Bars; load [ ] Loads; constraints (sum X in Bars : X.B.F * sin(X.A)) + (sum L in Loads : L.F * sin(L.A)) = 0;
(sum Y in Bars : Y.B.F * cos(Y.A)) + (sum M in Loads : M.F * cos(M.A)) = 0;
constructor joint(B1, L1) { Bars = B1; Loads = L1; }}
Law of Equilibrium of Forces
class bar {attributes beam B; real A; constraints 0 A; A 360; constructor bar (B1, A1)
{ B = B1; A = A1; }}
class load { attributes real F, A; constraints 0 A; A 360; constructor load (F1, A1)
{ F = F1; A = A1; }}
class beam { attributes real E, Sy, L, W, H, F_bn, F_bk, F_t, Sigma, I, F; constraints Pi = 3.141; I = F_bk * L* L / (Pi * Pi * E) ; I = W * H * H * H / 12; F_t = Sy * W * H; Sigma = H * I * F_bn / (8 * I); F = F_t :- F > 0; F = F_bk :- F < 0; constructor beam(E1, Sy1, L1, W1, H1,F1) { E = E1; L = L1; H=H1; W=W1; F = F1; }}
ConditionalConstraint
Overall Modeling Scenario
modeling ::= define_classes ;
build_instance ;
solve_instance ;
[ [ modify ; re_solve ] +;
query * ] +
Modeling Tools • Constrained Object Language (Cob)
Text-based language
• Constraint-Based UML (CUML) Domain-independent graphical modeling language
• Domain-Specific Visual Programming Diagrammatic notations customized for specific application
domains, e.g., circuits, trusses, etc.
Compiled CUML Code
Compiled Circuit Diagram Code
Cob Compiler
CLP® Code
Optimizer
Optimized Code
ConstraintEngine
Answers
DiagramManager
Optimized Code (by partial evaluation of generated code)
V1 = V2 = I1 * 10 = I2 * 20 V3 = V4 = I3 * 20 = I4 * 20 S.I = I1 + I2 = I3 + I41/P1.R = 1/10 + 1/ 20V3 = S.I * P2 .R1/P2.R = 1/20 + 1/2030 = S.I + S.R30 = V1 + V3S.R = P1.R + P2.R
class building { attributes level[] Ls; real Area; constraints Area = sum X in Ls: X.Area; constructor building(L) { Ls = L; }}
Class Building
Area of the building is the sum of areas of each level
Class Slabclass slab { attributes level Pl; beam[ ] Peripheralbeams; real Z; constraints forall B in Peripheralbeams: B.Z = Z; constructor slab(L,B) { Pl = L; Peripheralbeams = B; }}
The height of all beams surrounding the slab must be the same
Cob Representation for a Space space Spaces00; slab[] Slabs0; slab[] Slabs1; surface[] Surfaces00; beam[] Beams01; slab Slabs00; surface Surfaces003, Surfaces002; surface Surfaces001, Surfaces000; horizontalSurface Ceiling00; horizontalSurface Floor00; beam B014, B013,B012, B011 ; edge Edge003, Edge002; edge Edge001, Edge000; wall Wall007, Wall002; wall Wall001, Wall000; column C8,C4, C6, C2; vertex V8, V7, V6, V5; vertex V26, V30, V36, V31; level Level0;
All the elements needed to depict Spaces00 (green)
Wall007 = new wall( V7, V8, 3.0, B014 );Wall002 = new wall( V6, V7, 3.0, B013 );Wall001 = new wall( V5, V6, 3.0, B012 );Wall000 = new wall( V8, V5, 3.0, B011 );Slabs10 = new slab( Level1, Beams10 );Slabs00 = new slab( Level0, Beams00 );B012 = new beam( V5, V6, B014, _ );B011 = new beam( V8, V5, B013, _ );B014 = new beam( V7, V8, B012, _ );B013 = new beam( V6, V7, B011, _ );C4 = new column( V6, V50 );C6 = new column( V8, V51 );C2 = new column( V5, V46 );C8 = new column( V7, V55 );Edge003 = new edge( Surfaces003, V7, Edge011 );Edge002 = new edge( Surfaces002, V6, _ );Edge001 = new edge( Surfaces001, V5, _ );Edge000 = new edge( Surfaces000, V8, _ );V36 = new vertex( V55, C8, 5.0, 5.0, 3.0 );V8 = new vertex( V31, _, 5.0, 0.0, 0.0 );V31 = new vertex( V51, C6, 5.0, 0.0, 3.0 );V7 = new vertex( V36, _, 5.0, 5.0, 0.0 );V30 = new vertex( V50, C4, 0.0, 5.0, 3.0 );V6 = new vertex( V30, _, 0.0, 5.0, 0.0 );V5 = new vertex( V26, _, 0.0, 0.0, 0.0 );V26 = new vertex( V46, C2, 0.0, 0.0, 3.0 );dump([Level0 .Vol]);
Cob Representation (cont)
Observations• Constrained objects represent nicely the structure and constraints
arising in intelligent building representations.
• The model described in this presentation has been implemented and works in a predictable way.
• The current approach, even when applied to a simple two-level house with five spaces, is still tedious and error prone.
• There is a need for a higher-level specification from which Cob code can be generated Component-based Design
• Inconsistency analysis and debugging are very important
Conclusions and Further Work
• Constrained Objects ≥ Constraints + Objects• Applicable in many domains• Facilitates true visual programming
• Model Analysis and Fault Detection• Dynamic and Evolving Systems• Intelligent Visualizations
II. Interactive Visualization of OO Programs
• Conventional Execution Model: data objects and procedure activations are in
separate spaces.• Object-Oriented Execution Model: procedure activations occur inside data objects,
i.e., objects are execution environments• Several more criteria for a good visualization
system for OOPs …
Binary Search Tree in Java
class Tree {public Tree(int n) { value = n; left = null; right = null; }protected int value;protected Tree left;protected Tree right;}
public void insert(int n) { if (value == n) return; if (value < n) if (right == null) right = new Tree(n); else right.insert(n); else if (left == null) left = new Tree(n); else left.insert(n); }
Treei
value
left
right
Tree
insert
int
Tree
Tree
const
proc
insertj
n
rpdl
int
insert in Tree k n
Tree i
Visualization Criteria• Object as environments• Multiple View of Objects• Aesthetic Drawing• Forward and Reverse Execution• History of Execution• Support Run-time Queries• Use Existing Compiler and Run-time System
JIVE supports Source Code Highlighting, Break Points, andForward as well asReverse Steppingof Programs
JIVE Interaction Controls
Forward and Fast Forward Buttons
Reverse and Fast Reverse Buttons
Minimize, Maximize,Compact View
Call Path View
Concluding Remarks• Diagrams clarify Java semantics
handles advanced features• Visualization environment
pedagogic tool visual debugger
• JPDA is key to the implementation• Some research issues
Aesthetic drawing Efficient reverse stepping