InfoQ Homepage Object Oriented Design Content on InfoQ
-
Can DDD be Adequately Implemented Without DI and AOP?
A recent thread on Domain Driven Design (DDD) user group discussed the role of Dependency Injection (DI) and Aspect Oriented Programming (AOP) in DDD implementation. InfoQ spoke with Eric Evans and Ramnivas Laddad about these design concepts and the role of Annotations and orchestrated business services in DDD.
-
TDD/BDD Leading To Incomplete Unit Tests?
Peter Ritchie raised concern about TDD and BDD keeping practitioners from writing good unit tests. He cites an over-reliance on “interaction testing", a core mantra and essence of TDD and BDD, as a driver with tendency to result in incomplete unit testing.
-
Private Methods, Test Driven Development, and Good Design
The claim has been made that test driven development (TDD) encourages good design. The claim has also been made that TDD adversely affects design. Focusing on private methods and their relationships to good design and testability will give us something concrete to discuss - an instance of this apparent conflict.
-
InfoQ Presentation: Eric Evans on DDD - Strategic Design
In this talk, Eric Evans introduces two broad principles for strategic design. 'Context mapping' addresses the fact that different groups model differently and 'Core domain' distills a shared vision of the system's core domain and provides a systematic guide to when good enough is good enough versus when to push for excellence.
-
Duck Typing and Protocols vs. Inheritance
A recent debate on the RubyTalk list asked where to use is_a? vs respond_to? This highlights situations where objects respond to the same interface, but don't share any superclasses. We look at this debate and solutions in other languages such as Smalltalk, Erlang, and Scala.
-
Surprising criticism from parting Microsoft development lead
Jay Bazuzi, once Development Lead for the C# Editor, is leaving Microsoft, and he wrote some surprisingly harsh parting words for his friends before he left; things like “OO isn’t a fad” and that “It’s OK to use someone else’s code”.
-
Qi4j introduces Composite Oriented Programming
"Classes are dead, long live interfaces" was declared by Rickard Oberg at Oredev this week where he announced Qi4j. Qi4j brings the new idea of Composite Oriented Programing, in which is no behaviour at all is put in a class, instead the class becomes a 'composite' of mixins and interfaces declared on the class via annotations.
-
Designing for flexibility and robustness: Asynchronous message model, OOP and Functional Programming
According to Pragmatic Programmers it is preferable in OOP to avoid design based on returning values. Michael Feathers argues that it may also be better to use the asynchronous message model that might be instrumental for improving adaptability and robustness. This maps well to the Erlang model though opposing some of the principles of pure functional programming.
-
Naked Objects adds Java 1.5, Injection, Hibernate
Naked Objects is an architectural pattern and a framework for developing applications where domain objects takes a central role. Naked Objects recently released version 3.0 with support for Java 1.5, injection, an alternate UI, Hibernate object store, integrated security and contributed actions. InfoQ took the opportunity to speak with Richard Pawson, inventor of the Naked Objects pattern.
-
Understanding the ActionScript Virtual Machine for Java Developers
The ActionScript Virtual Machine 2 (AVM2) executes ActionScript 3.0 (AS3) bytecode in the Flash Player 9 runtime. ActionScript 3 is an Object Oriented programming language, used by developers to build Flash based applications in Adobe Flex and AIR.
-
InfoQ Presentation: Eric Evans on Domain Driven Design - Putting the Model to Work
Why bother with models? Eric Evans explains that the most critical complexity of most software projects is understanding the business domain itself. In this talk Evans talks about the foundations of Domain-Driven Design and how to make a domain model truly pull its weight and positively transform a project.
-
Preserving flexibility while using Active Record pattern
Bob Martin believes that Active Record pattern that maps data structures to objects may be a source of confusion. Even though it appears to be an object, it actually is a data structure, vulnerable to the addition of new types. To preserve the flexibility, Bob Martin suggests separating Active Record from the application, so that the latter can be designed and structured solely around objects.
-
Book Review: Implementation Patterns
Kent Beck's new book, Implementation Patterns, is a book about writing code in Java. The patterns in this book are based on Kent's reading of existing code as well as his own programming habits. The patterns in this book are meant to be a coherent view of how to write code people can understand.
-
OOP: Thinking beyond verb/noun metaphor to yield a better design
In OOP, objects are traditionally coupled with actions that determine their behavior, implemented as objects’ methods. Reg Braithwaite argues that, in some cases, it may be relevant to dissociate the two. Traditional approach to OOP is also questioned by Buko Obele who advocates for going beyond the verb/noun metaphor that is often used to approach object oriented design.
-
Interview: Eric Evans on Domain Driven Design
Ever since Eric Evans wrote the book Domain-Driven Design in 2004 he has been a significant voice advancing domain modeling and design concepts. In this interview with Floyd Marinescu he talks about some of the recent refinements in Domain-Driven Design and how people are advancing the field today.