2/15/2005

What are the OBJECTS? That's the Question!

When you go to create software with OOP-oriented reusable "drop it in - plug it in" type objects, this question must be successfully answered before you begin. You don't need fancy UML diagrams. What you need to do is learn how to ask (and correctly answer) this question at every point in the development cycle.

If I am developing a VOIP application, for example, built from reusable objects of functionality, and I come to the part where i need to do audio capture and playback output (from the microphone and to the speaker), that's an object. Actually, its TWO objects. One for capture, one for playback. It shouldn't matter if I use DirectX, some Wave Audio ActiveX control with a C# wrapper, or even the WaveOut API - the functionality, the methods and the interface can all be exactly the same. What it SHOULD NOT HAVE is being tied in with RTP / SIP Packets, or IPEndpoints. Those are OTHER OBJECTS that have nothing to do with Audio capture / playback.

So the question should always be:

WHAT ARE THE OBJECTS I NEED TO CREATE? WHAT IS THIS OBJECT?