The more you use OO programming you notice that you type certain parts of your code every time for different objects. Not only that but when you work in a specific field you notice that the design pattern of many of your objects are the same. For example if you are working on server software you would have many Client Classes, Client Manager, Thread Managers etc. If you were working on GUI or design you would have many Classes (Objects) contacting code pertaining to the position, size and colors of the object. Event when moving between different fields you still have a lot of shared code. Also there is some coding overhead when using heavily OO code. For every property you need a name, type, array identifies, get method, set method (in most languages). For every method you need a deceleration and an implementation (again in most languages). Members are relatively simple but still, life could be easier.
I too, like most programmers appreciate typing, and I know that no other technique can be as fast and flexible. Still I sometimes get annoyed writing all this OO code that is no different from the code I wrote yesterday just to wrap my new ideas in an object.
Another reason for DesignObjects is that although I can type fast enough, sometimes I type too fast. It is hard to design objects from an outside view while inside your favorite coding-IDE. I know that there are many tools out there that are supposed to help me, but for more about that please refer to “Why not use ?????? instead of DesignObjects?”
DesignObjects is a program designed to help with all the problems mentioned above. The idea is to develop an easy-to-use, easy-to-understand interface for designing Objects for use in your next project. It provides you with an interface in which you click/drag/drop parts of your objects around and create/design your new object. This also helps avoid some of the typing, also provides you with a visual representation of your object and also is fun!
After you finish “playing around” and you want to save your object DesignObjects produces a XML file that you can easily be converted to any programming language. The program DesignObjects is Free (as in beer, not as in thought) meaning you can freely download it and use it but it is still MINE! You cannot modify it, redistribute it, sell it or do any other sort of illegal actions with the application. On the other hand the XML format is Open-Source (hey that can be copyrighted too) under the Mozilla Public License 1.1. You may ask yourselves what is the big idea. Leading the development of an Open-Source specification to be used by a Closed-Source project. The idea being that as a die-hard capitalist I can’t work on a program for many, many hours and then just give it away. I don’t believe in Open-Source for everything. On the other hand this program is supposed to ease the development of OO code anywhere. Since I haven’t formally studied OO but only used it in several languages (mainly Delphi) I admit to having gaps in my knowledge. I will try and tailor the application to fit the specification.
There is also another idea behind this: The processors!
As you read (in What is DesignObjects) the DesignObjects application renders XML. This is all nice and good but till now there aren’t any programming languages based on XML (thank god for that! – for more about my views on XML read Why XML?). So Processors need to be written to parse this XML in to source-code. The beauty of having an Open-Source specification is to ease and encourage the development of many Processors. Anything goes from XSL base Processors to Assembly. Also these Processors can turn the code in to any language you see fit (C++, Java, JS, VB, VBS, Delphi, PERL or any other OO language). This also enables you to use the same objects in many different environments (a huge advantage in my opinion). I will try and help in the development of these Processors and I have started a SourceForge project to host any code and provide a community for developing these Processors. Let’s see if this catches on (types hopingly).
Disgust, Dread, Icky – if any of these feelings come to mind when you think of XML, don’t worry your not alone. I hate XML too. But you must come to realize why you hate XML. I personally hate XML because it was pushed so hard upon us. Because project-managers stuff it down our throats, because it is big and bloated and because they make such a big deal about something that isn’t much fancier then a mix of INI files and HTML.
On the other hand I have come to terms with the fact that XML is very useful for saving files locally in an easy self-describing manner. It is easy to develop applications that use them because of the recent development of parsers (in any language and any shape). I’m too lazy to develop myself multiple applications (or one really BIG one) that convert the XML usefully into all the different languages I Use/Will Use/Want to Play With hence I’m riding upon the main idea behind socialism – Spread the Pain! Hopefully enough people will be curious about this project and help design the Spec and build the parsers.
Ahh the dreaded headline. Why not use Product X instead of DesignObjects. Why not use UML or some other comfortable well known or less well known format/application. The answer is – I tried to find something that fitted my needs and since I found nothing good enough I went and wrote a program.