The notion of object -- Simula
- abstract data types -- software engineering
- frames -- artificial intelligence
- semantic data models -- database system development
- capability-based computing -- distributed systems
slide: The heritage of Simula
object-oriented
structurally
- - capability of representing arbitrarily structured complex objects
operationally
- - the ability to operate on complex objects through generic operators
behaviorally
- - the specification of types and operations (data abstraction)
slide: Perspectives of object orientation
Objects -- language characteristics
- object creation facility
- message-passing capability
- class capability
- inheritance features
Classification
- hybrid -- C, Lisp, Pascal, Prolog
- frame-based -- knowledge-based reasoning
- distributed, concurrent, actor -- parallel computing
- alternative object models -- prototypes, delegation
slide: A classification of languages
Object extensions
- Lisp -- LOOPS, FLAVORS, CLOS, FOOPS
- C -- Objective C, C++
- Prolog -- SPOOL, VULCAN, DLP
Commercial products -- languages
- Smalltalk, Eiffel, C++, Objective C, Object Pascal, Java
slide: Object-oriented languages
class and struct">
Object structure -- efficient mapping
C++
struct A { ... } == class A { public: ... }
class A { ... } == struct A { private: ... }
slide: The equivalence between
Java embedding
- Javascript -- Dynamic HTML
- Perl -- CGI/Web library
JPL
- Tcl/Tk -- tclets
Jacl, Tcl Blend
- Python -- Grail
JPython
slide: Script languages
<script language=Javascript> javascript
function object_display(msg) { // object method
return msg + ' (' + this.variable++ + ')';
}
function object() { // object constructor
this.variable=0;
this.display = object_display;
return this;
}
var a = new object(); // create object
document.write(a.display("a message"));
document.write(a.display("another message"));
</script>