Object Oriented Languages* Bharat Jayaraman Professor and Chair Department 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
63
Embed
Research Directions in Object Oriented Languages* Bharat Jayaraman Professor and Chair Department of Computer Science & Engineering University at Buffalo,
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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)
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; }}
2. Truss as Constrained Object
Load Load
Beam Joint
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;
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.
(with R. Jotwani)
CUML: Constraint-based UML
CUML Cob
(with A. Dev and N. Menon)
`
Domain-Specific Visual Language
cse@buffalo13
resistor value
extraconstraint
changeresistorbehavior
R1 isunknown
outputconstraint
Compiled CUML Code
Compiled Circuit Diagram Code
Cob Compiler
CLP® Code
Optimizer
Optimized Code
ConstraintEngine
Answers
DiagramManager
CUML Class Diagram
Compiler
Textual Cob Code
By Chinchani, Pramanik, Dutta
Circuit Diagram
Compiler
Textual Code
Optimized Code (by partial evaluation of generated code)
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); }
Tree
Tree Tree
Tree Tree Tree Tree
1
2 3
4 5 6 7
Tree
Tree Tree
Tree Tree Tree Tree
1
2 3
4 5 6 7
insert1
insert3
2insert
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: Java Interactive Visualization Environment
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
Displayingonly the‘Call Path’
Object Diagram without Inherited Objects
Minimized Object Diagram
Final Object Diagram
Final Minimized Diagram
TimeSequenceDiagram- to capturethe historyof methodcalls betweenobjects
• JPDA is key to the implementation• Some research issues
Aesthetic drawing Efficient reverse stepping
Current and Future Work
• Reverse execution and efficient state-saving• Drawing algorithms• Visual Queries• Relationship between programs and diagrams• Applications in Security