`
OOP: Better OOP part 1 2003-04-12 -- Dan Pressnell Newsgroups: comp.lang.clarion,topspeed.topic.oop March 5, 2006: Note that the code is now available at: http://www.icetips.com/downloadfile.php?FileID=59 These days there is a self perpetuating cycle with computer software, especially database programs. Business and government gets more complex and demanding, requiring more data and different ways of presenting and analyzing data. As programming programming tools and computers become more powerful and prevalent, businesses and governments become more demanding because of their perception that their demands are easily met. When the demands increase, the software becomes more powerful again. An so on. It is a challenge to keep up. One solution is to keep hammering out the code. By brute force you can simply keep writing those reports as they become necessary. But at some point you start to realize that there has to be a better way to do this, because you notice that you are coding the same logic, in a different format, over and over. Once you have three reports that present the same data in different ways, you have a bad situation developing. If there is an enhancement to be made to your database, now you may have three report procedures to change. Miss something, and you've got some reports working, and some broken. To do it right, you have to modify each report procedure to accommodate the new data structure. So again you are working on three different sections of code. That is the old way of doing things. But there is a better way, with object oriented programming. Clarion is rich with OOP opportunities, but unfortunately the extent of a typical Clarion programmers OOP experience is selecting "ABC" rather than "Clarion" when starting a new application. OOP is mysterious, and it requires the dreaded "hand coding" that many Clarion programmers try to avoid. But let's face it. If you are a programmer, you are going to have to write some code when it is called for. Otherwise, you are just a template user. I remember when Clarion4 appeared. It was difficult for me to understand what all this OOP stuff was about. But when I did understand it, it was like a light coming on, and I begain writing my own custom classes that had nothing to do with ABC, but made the job of programming and keeping up to date with customer demands easier. In fact, my first significant OOP coding was for a Clarion "legacy" application that didn't use ABC. OOP is so prevalent today that Clarion programmers are in danger of being left behind. Not because Clarion cannot handle OOP, but because Clarion programmers don't use OOP in productive ways. Some advantages of OOP are: 1. Code is more modular. Little pieces of code work together in big ways, but in ways that reduce the risk of one section of code intererring with another section. 2. Code is reusable. And I'm not talking about cut and paste, or even templates. I'm talking about code that is written once, and called from multiple places, under different circumstances. When carefully designed, OOP can allow you to expand functionality easily by making the enhancement in one place, without having to go through all your program changing things. This also implies that if you have a bug, that bug appears everywhere--but when you fix the bug, the fix appears everywhere. 3. Data is reusable. Or to put it another way, objects can contain data, and when the object is used by other parts of your program, the data is immediately made available to the other parts, without further effort. 4. Team programming is made easier. Objects allow a programmer to do his one task, without interfering with other team members' work. Objects also make the one team member's work available to other team members in a safe way, without the other team members having to know the internals of the object. 5. Individual programming is made easier. The individual programmer at times does act like a team. You get so deep into one task that you forget what you have done in other places. OOP let's you concentrate on the task at hand, with much less worry about whether you are going to break something else in another part of your program. 6. After a while you don't know how your program works any more. "Umm, Dan, that's a GOOD thing?" Yes, it's a good thing. You write little pieces of code. Then you use them together in a way that creates medium size functionality. Then you use those medium size things to create bigger functionality. Soon you are no longer thinking about the nuts and bolts. You are thinking of the big picture. (Note that this sequences is not often the correct one--usually you should start with the big picture and work your way down to the little pieces, but the result is the same. I think the way I described it better illustrates the finished product, and is easier to understand.) When your program is broken, you can fix the little piece. But when using the little pieces together, you don't have the mental strain of having to consider everything else at the same time. For example, if you have an object that retrieves a list of customers, when you use that object elsewhere, you don't have to worry again about how the customer data is retrieved. 7. You begin to think in a different way. While every object has to have procedural code to work, your thoughts are about objects, not code. For example, in wirting a report to print an employee list, you might think of an employee dataset object. If you already have one of those, you can use the object in your report procedure, rather than repeating the process of writing code to query the employee table yet again. And when that kind of thinking gets to be routine, it occurs to you that you can also use that employee dataset object to generate a spreadsheet file, a word processing merge document, a web page, etc. Now you are really cooking! Many discussions of OOP concern horses, ducks, cars, and airplanes. I promise I won't do that. We don't program horses or cars. We write database programs. Describing animals or machinery has never helped me understand how to write OOP, and I suspect many others feel the same way. Dan Printed November 23, 2024, 8:11 pm This article has been viewed/printed 35402 times. Google search has resulted in 51 hits on this article since January 25, 2004. |