Smalltalk-80: bits of history, words of advice
Smalltalk-80: bits of history, words of advice
Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
SMALLTALK-80: the interactive programming environment
SMALLTALK-80: the interactive programming environment
The C++ programming language
Actors: a model of concurrent computation in distributed systems
Actors: a model of concurrent computation in distributed systems
Object oriented programming: an evolutionary approach
Object oriented programming: an evolutionary approach
Object-oriented programming for the Macintosh
Object-oriented programming for the Macintosh
Object-oriented programming with flavors
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
An introduction to Trellis/Owl
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
CommonLoops: merging Lisp and object-oriented programming
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Oaklisp: an object-oriented scheme with first class types
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Encapsulation and inheritance in object-oriented programming languages
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Object structure in the Emerald system
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Using prototypical objects to implement shared behavior in object-oriented systems
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
An experience with a Prolog-based object-oriented language
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
A simple technique for handling multiple polymorphism
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Using types and inheritance in object-oriented languages
European conference on object-oriented programming on ECOOP '87
What is “object-oriented programming”?
European conference on object-oriented programming on ECOOP '87
Inheritance and subtyping in a parallel object-oriented language
European conference on object-oriented programming on ECOOP '87
The Trellis programming environment
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Metaclasses are first class: The ObjVlisp Model
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Dimensions of object-based language design
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Workshop on object-oriented programming ECOOP 1987, Paris, June 18, 1987
ACM SIGPLAN Notices
Classes versus prototypes in object-oriented languages
ACM '86 Proceedings of 1986 ACM Fall joint computer conference
The Programming Language Aspects of ThingLab, a Constraint-Oriented Simulation Laboratory
ACM Transactions on Programming Languages and Systems (TOPLAS)
An actor-based programming system
Proceedings of the SIGOA conference on Office information systems
Surveying current research in object-oriented design
Communications of the ACM
Introduction to the literature on object-oriented design, programming, and languages
ACM SIGPLAN OOPS Messenger
Prototype-based languages: from a new taxonomy to constructive proposals and their validation
OOPSLA '92 conference proceedings on Object-oriented programming systems, languages, and applications
The Larch/Smalltalk interface specification language
ACM Transactions on Software Engineering and Methodology (TOSEM)
The Effects of Layering and Encapsulation on Software Development Cost and Quality
IEEE Transactions on Software Engineering
On the semantic diversity of delegation-based programming languages
Proceedings of the tenth annual conference on Object-oriented programming systems, languages, and applications
Delegation versus concatenation or cloning is inheritance too
ACM SIGPLAN OOPS Messenger
Split objects: a disciplined use of delegation within objects
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
ACM Computing Surveys (CSUR)
Design and Query Strategies to Hypermedia Applications
Multimedia Tools and Applications
Design and Specification of Iterators Using the Swapping Paradigm
IEEE Transactions on Software Engineering
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM-SE 33 Proceedings of the 33rd annual on Southeast regional conference
Formal concept analysis-based class hierarchy design in object-oriented software development
Formal Concept Analysis
Hi-index | 0.02 |
Designing data types in isolation is fundamentally different from designing them for integration into communities of data types, especially when inheritance is a fundamental issue. Moreover, we can distinguish between the design of families—integrated types that are variations of each other—and more general communities where totally different but cohesive collections of types support specific applications (e.g., a compiler). We are concerned with the design of integrated families of data types as opposed to individual data types; that is, on the issues that arise when the focus is intermediate between the design of individual data types and more general communities of data types. We argue that design at this level is not adequately served by systems providing only class-based inheritance hierarchies and that systems which additionally provide a coupled subtype specification hierarchy are still not adequate. We propose a system that provides an unlimited number of uncoupled specification hierarchies and illustrate it with three: a subtype hierarchy, a specialization/generalization hierarchy, and a like hierarchy. We also resurrect a relatively unknown Smalltalk design methodology that we call programming-by-exemplars and argue that it is an important addition to a designer's grab bag of techniques. The methodology is used to show that the subtype hierarchy must be decoupled from the inheritance hierarchy, something that other researchers have also suggested. However, we do so in the context of exemplar-based systems to additionally show that they can already support the extensions required without modification and that they lead to a better separation between users and implementers, since classes and exemplars can be related in more flexible ways. We also suggest that class-based systems need the notion of private types if they are to surmount their current limitations. Our points are made in the guise of designing a family of List data types. Among these is a new variety of lists that havenever been previously published: prefix-sharing lists. We also argue that there is a need for familial classes to serve as an intermediary between users and the members of a family.