Equal rights for functional objects or, the more things change, the more they are the same
ACM SIGPLAN OOPS Messenger
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
A behavioral notion of subtyping
ACM Transactions on Programming Languages and Systems (TOPLAS)
Effective Java programming language guide
Effective Java programming language guide
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Program Development in Java: Abstraction, Specification, and Object-Oriented Design
Implementing object equivalence in Java using the template method design pattern
SIGCSE '03 Proceedings of the 34th SIGCSE technical symposium on Computer science education
Using SCL to Specify and Check Design Intent in Source Code
IEEE Transactions on Software Engineering
SCL: Static Enforcement and Exploration of Developer Intent in Source Code
ICSE COMPANION '07 Companion to the proceedings of the 29th International Conference on Software Engineering
Declarative object identity using relation types
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
CASCON '09 Proceedings of the 2009 Conference of the Center for Advanced Studies on Collaborative Research
Understanding the impact of collection contracts on design
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
Hi-index | 0.00 |
Applications built on top of an existing design and implementation are in general expected to collaborate well with that design and respect all of its intent. Failure in achieving this may result in buggy, fragile, and less maintainable code in the applications. When the dependence on an existing design becomes more wide-spread, this requirement on proper extension obviously becomes even more critical. As an instance of this general problem, the design for object equality in Java as well as its extensions is examined in detail and empirically. By examining how object equality is extended in a large amount of Java code, a set of typical problems are detected and their root causes analyzed. A set of design guidelines for object equality is proposed, which, if followed, will help programers systematically design and evolve rather than hack on a solution. Examples are drawn from a case study of multiple industrial and open source projects to illustrate the identified problems and how the proposed guidelines can help solve these problems.