Incremental Java
Object Users and Class Designers

Object Users and Class Designers

As you learn how to program in Java, you are going to have two roles. You are going to be an object user and a class designer.

Let's return back to the remote control example. Think of a remote control as some kind of object. As a user of this object, you can change the channel, the volume, the quality of the picture and so forth.

You are using an object that someone else designed. You are an object user.

Now imagine that you are an engineer designing a remote control. You have to think like a user. You have to think about what functionality you think the user wants from a remote control. You may have to find someway of designing the remote control so it works with many different brands of television. Perhaps the televisions must follow some standards for remote control so there doesn't have to be a different kind of remote control for each make of television.

As an engineer, you must worry about power consumption, and the design of the circuit boards, and the interaction of the buttons, and so forth. You have a lot more work than the object user, but you must also be aware of what you want the user to do. Here, you are a class designer. You think about what the user wants, and you make it happen.

As a programmer, you serve both roles. You design classes. These classes are used to make objects (we'll see how soon). Implementing classes may require using other existing classes to help out. Thus, as a class designer, you may use other classes, so you are a object user too!

Suppose you designed new tools for people who want to do home improvement. You are a tool designer. However, to make the tool may require other tools. Thus, you are also a tool user. You use other tools to design the new tool you're making.

This is similar to what a class designer does.