Benefits of Object-Oriented Design

Object-Orientation

Top of document

From a conceptual rather than a programming viewpoint, object-orientation is a view of a project in terms of separate objects. Thus, the considerations that pertain to the project are put into the conceptual boundaries of objects. The room where I began to write the present document contained books, cabinets, chairs, columns, signs, copiers, telephones, calendars, card files, carousels, doors, carts, outlets, posters, computers, dictionaries, highlighters, and other items. Categorizing these objects is easy and, in fact, every object has attributes that we are knowledgeable of through use. If the telephone rings, I can answer it. The card file is arranged in an orderly manner. Each of the books contains a certain type of information. None of the objects move of their own accord. All of the objects have weight. Most of the language is English or American where I am right now. The objects persist through time and they have a place where they are to be found. Also, people were involved in the design and building of the objects and people would be needed to repair them. Unlike the continuous nature of objects, a human thought is, to some extent, a state of mind. At different times we can think almost anything. However, we cannot think unceasingly and what might make a thought joyful to someone else might not particularly make it joyful to us. If our thought can be kept in boundaries, like objects, we can establish them and use them again and they should work well with the thoughts of other people, too, if their thoughts are object-oriented :)

I'm sure that the necessity of the previous thought process is not obvious, and it probably isn't necessary. However, a process that makes design more effective, beneficial, right, thorough, useful, applicable and perhaps even needed would be a tremendous help!

People know how to make their yards look nice, and it takes much time to do that. It probably also requires that moneys be spent on plants and building materials. So, it makes sense that using a knowledgeable process to combine the right materials can achieve design goals. Object-orientation is a way of evaluating projects in terms of objects (materials) that are identified, defined and equipped with the necessary attributes and capabilities through the design process.

From a programming point of view, object-orientation involves program objects, encapsulation, inheritance, and polymorphism. The conceptual objects are modeled in the program code. Encapsulation keeps an object's data and methods that use the data together as part of the object. Inheritance makes it possible to take existing object-oriented code and add capabilities to the existing code without having to change the actual existing code. Polymorphism typically applies to objects that are part of the same inheritance hierarchy; all of the objects within a hierarchy can potentially respond to requests that objects earlier in the hierarchy could respond to. For example, a window in a computer program can respond to being selected, and a button that inherits from the window type of object could also respond to being selected, though in a different way than the window itself. Such design makes it possible to use the same message with different objects where the individual objects have the capability to provide the appropriate response to the same message. Some of the benefits of the programming elements of object-orientation may not be evident to people who do not have programming experience. However, the example of the button that inherits from the window (not how we think of buttons on equipment and windows in buildings) shows that the actual products of object-oriented design are not always as understandable as simple objects and will not be conceptually meaningful and obvious to everyone.

Many Methodologies

Top of document

There are numerous object-oriented methodologies, some that are defended like personal sources of income, and the results of the different methodologies are probably not the same for given groups of people.

Shared Elements

Top of document

On the other hand, the authors of the more well-known methods typically study and incorporate features of the methods of others, for example, the emphasis on Use Cases or Scenarios and object responsibilities. In some cases, more than one author may have discovered a particular method. So in a given method, there is a possiblity of the same words, phases, models, techniques and drawings of another method being used. The Unified Modeling Language should probably be considered.

Chief Benefit

Top of document

To me, the main benefit of object-orientation in regards to regular thinking is the focus and directional help it provides when working through many phases of a project. It's probably also significant and characteristic that object-orientation is a conceptual viewpoint that is applied in, to and through thought. That implies that the many phases of a project are of themselves invisible being phases of thought. So an orderly procedure or a process that sustains mental accomplishment should be welcomed.

General Application

Top of document

Ivar Jacobson's process has applications for all phases of computer program design and maintenance. Because computer programs consist of particular instructions for a computer, they represent an ordering of human thought. Because object-orientation uses processes that are considered beneficial for programming, and because it actually benefits orderly thought, other planning, design, management, and information goals may be served through object-orientation as well.

Other Benefits

Top of document

Because object-oriented design has a programming outcome in mind, the results of the design are easier to code than general requirements. One author wrote what is understood will be reused. When object-orientation enhances understanding, it increases the option of reuse. Also, parts of projects become more meaningful in themselves and are more likely to be reused. The message-driven nature of objects makes it easier to bring the object into another project because the object has its own methods that it uses on its own data. The methods become active in response to program messages, requests, or events. Enhanced understanding also makes maintenance easier. Because the design process is emphasized and objects have a more understandable definition than groups of functions, it's easier to know the status of a project and when a project is complete. It may be easier to see where functionality should be added or to what objects functionality could be added.


JPF