Explicit cubic spline interpolation formulas
Graphics gems
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Java power tools: model software for teaching object-oriented design
Proceedings of the thirty-second SIGCSE technical symposium on Computer Science Education
Extreme Programming Perspectives
Extreme Programming Perspectives
Test Driven Development: By Example
Test Driven Development: By Example
Simple problem solving in Java: a problem set framework
Journal of Computing Sciences in Colleges
The early history of Smalltalk
History of programming languages---II
Controlling the Complexity of Software Designs
Proceedings of the 26th International Conference on Software Engineering
Treemap visualizations for CS2
Proceedings of the 9th annual SIGCSE conference on Innovation and technology in computer science education
Hi-index | 0.01 |
Traditional approaches to object-oriented style emphasize classes with a basic set of constructors and a minimal set of methods that when combined permit the full potential of the instance objects to be realized. This object-oriented style is probably modeled on the style used in mathematics and logic to develop a system based on a minimal set of axioms and operations. The consequences of this style both in practice and in pedagogy are that objects enter into existence in an embryonic state and must be nurtured to maturity by a sequence of method calls that tweak behavior and/or add data. Although this minimalist approach is useful in the first stages of teaching objects and in exploratory design, we suggest that most designs should evolve towards building classes with a rich set of constructors and methods so that the instance objects may be born mature, that is, ready to use in the program without further tweaking. In particular, we believe that if students are taught to design in this manner, then they will be more effective both as students and as computing professionals.The ideas in this article have developed from our experience in designing the Java Power Tools (JPT) and in applying these tools to build many labs and demo programs. We found that using the traditional minimalist design approach hindered our ability to rapidly develop interesting applications. Gradually, we evolved both the tools and the examples to be far richer and have found that our development time has been dramatically reduced. We believe that those who teach objects may be interested in these principles even if they choose to work with entirely different tools and examples.