Object Oriented design
[1/7] from: pat665::ifrance::com at: 6-Jan-2002 19:35
Hi all, I don't know how to program anymore (did I before ?) because I'm very confused about Object Oriented design. When I started with computer, my reference book was "Algorithms + Data structures = Programs" by Niklaus Wirth. I was satisfied with this equation at the time, I am not anymore. Is it a virus ? Have I read already too much about C++ or UML ? May be. But I would like to know it by myself. I have the feeling that object orientation could be the way to produce more elegant program, even with Rebol. After reading a couple of books, I feel very frustrated. The subliminal message is OOP can do that, OOP is elegant, you save time with OOP, etc. Yeah ... but what is it, how can one do ? Wirth book was very practical: you want to sort? do that or that, you want to build a compiler? see this little one. I was just finishing Grady Booch's book "Object Solutions" this evening when I spoke to myself: - who can I ask for advice? - where to find good programmers? As often in life, solutions were just in front of me : the rebol-listers ! So I'm coming to you for a good book about "Object Oriented design". Patrick ps: how do I program today ? I think a lot, write some notes, looking for generic solution. When I am confident with the solution, I start programming. During programming, I almost everytime find my generic solution is not so generic. I finish the program anyway and sometimes it works. At this time, I have a new solution but I would have to restart from scratch.
[2/7] from: sunandadh:aol at: 6-Jan-2002 18:13
> I don't know how to program anymore (did I before ?) because I'm very > confused about Object Oriented design. When I started with computer, my > reference book was "Algorithms + Data structures = Programs" by Niklaus > Wirth. I was satisfied with this equation at the time, I am not anymore. <snip>
It's not clear if you want object oriented DESIGN or PROGRAMMING. But designwise. I found "Object-Oriented Modeling and Design" (James Rumbaugh and others, Prentice Hall, 1991) a good high-level overview programmingwise, you couldn't do much better than having a go at learning Eiffel (www.Eiffel.com, I think. And there used to be a free compiler). The book I used was "Eiffel. An Introduction" (Robert Switzer, Prentice Hall, 1993). Rebol isn't particularly object-oriented. In many ways it doesn't have to be, so it probably isn't the best language for first trying out OO stuff. (my 0.02 euro) Sunanda.
[3/7] from: rgaither:triad:rr at: 6-Jan-2002 18:19
>Yeah ... but what is it, how can one do ? Wirth book was very practical: you >want to sort? do that or that, you want to build a compiler? see this little >one.
Good, practical OO design books are hard to find. I have several books on C++, Delphi, and Java all of which I find lacking when it comes to "Design" instruction and would really not be much help when applying OOD to REBOL.
>I was just finishing Grady Booch's book "Object Solutions" this evening when
I haven't ever liked Booch's books personally. They seem even less practical than most and hard to follow in my opinion.
>As often in life, solutions were just in front of me : the rebol-listers ! > >So I'm coming to you for a good book about "Object Oriented design".
Here are the OO design books I would recommend - Object-Oriented Software Construction (2nd edition) by Bertrand Meyer ISBN 0-13-629155-4 Design Patterns, Elements of Reusable Object-Oriented Software by Gamma, Helm, Johnson, Vlissides ISBN 0-201-63361-2 FWIW, Rod. Rod Gaither Oak Ridge, NC - USA [rgaither--triad--rr--com]
[4/7] from: rotenca:telvia:it at: 7-Jan-2002 0:44
> I was just finishing Grady Booch's book "Object Solutions" this evening when > I spoke to myself: > - who can I ask for advice? > - where to find good programmers? > > As often in life, solutions were just in front of me : the rebol-listers ! > > So I'm coming to you for a good book about "Object Oriented design".
You could try: E. Gamma, R. Helm, R. Johnson, J. Vlissides Design patterns Elements of reusable OO software Addison Wesley 1995 (foreword by Grady Book) I find it very very interesting.
> ps: how do I program today ? I think a lot, write some notes, looking for > generic solution. When I am confident with the solution, I start > programming. During programming, I almost everytime find my generic solution > is not so generic. I finish the program anyway and sometimes it works. At > this time, I have a new solution but I would have to restart from scratch.
UML could be the solution? --- Ciao Romano
[5/7] from: jason:cunliffe:verizon at: 6-Jan-2002 19:17
OOPS Sunanda wrote:
>Rebol isn't particularly object-oriented. In many ways it doesn't have to
>so it probably isn't the best language for first trying out OO stuff.
Yes. Carl Sassenrth has something to say in various interviews. For example: http://www.rediff.com/computer/1999/sep/29carl.htm <quote> I became an OO maniac because at that time I believed that OOL was going to save the software world. It took me more than eight years to discover otherwise and realise that people were not becoming more productive even with the best OO languages. Then it all became clear. The solution is not objects... there are too many tedious interfaces that must be understood to even write a single line of code. I thought about what alternatives there were and human language stood out to me as a good example of getting leverage... So, I took some of the concepts from human language and put them to work in computing. <quote> Python is a great language for leaning about objects. I t plays nicely with REBOL so you head wont be a terible mess. Skills gained in each will nuture the other.. http://www.python.org BOOKS Patrick asked:
> > So I'm coming to you for a good book about "Object Oriented design".
Design patterns litterature tends to address the design aspects more than specific langauge minutiae - that't the whole point. Like having a graet fromalized back-ofnakin stratgey session in a book. A couple of execllent books I recommend: Pattern Languages of Program Design 4 (Software Patterns Series) by Neil Harrison (Editor), Brian Foote (Editor), Hans Rohnert (Editor) Addison-Wesley Pub Co; ISBN: 0201433044 http://hillside.net//patterns/books/#PLOP4 and a great little book, litterate and closer I feel to the spirit of applying Christopher Alexander's approach to software A UML Pattern Language (Macmillan Technology Series) by Paul Evitts check out the reviews on amazon http://www.amazon.com/exec/obidos/ASIN/157870118X/002-0028530-2280071 [used copy: $16.00 ] also there's a big fat list at http://hillside.net//patterns/books/#Vlissides I find anythg by Martin Fowler stimulating http://www.martinfowler.com/ Anyone interested in design should have a copy of Alxander's opus in their library: A Pattern Language : Towns, Buildings, Construction by Christopher Alexander, Sara Ishikawa, Murray Silverstein http://www.amazon.com/exec/obidos/ASIN/0195019199/qid=1010361850/sr=2-1/refsr_2_27_1/002-0028530-2280071 enjoy! ./Jason
[6/7] from: greggirwin:mindspring at: 7-Jan-2002 12:52
Hi Patrick, << I have the feeling that object orientation could be the way to produce more elegant program, even with Rebol. After reading a couple of books, I feel very frustrated. The subliminal message is OOP can do that, OOP is elegant, you save time with OOP, etc. >> Yes and no (IMHO). OOP isn't magic, and is not a silver bullet. It can be misused and abused just like anything else. I've written a reasonable amount of OO code but there is only one criteria, of the big three, which I find indispensible. I can live without inheritance and polymorphism, but encapsulation is terrifically important I think. My favorite OO book is 'Object Oriented Software Construction' by Bertrand Meyer. I'm a big believer in Design by Contract (assertions) because it makes you *think* about what's valid, what isn't, and what you are going to do when the rules are broken. I've only been working with REBOL for about 6 months but my style, and thinking, are totally different than if I were working in VB (my previous choice of language). In VB, I know I can produce moderately sized systems reliably, and I spent a lot of time building up a "toolbox" that makes me very productive. I'm a tool builder (by nature I suppose). I enjoy writing tools that make my life easier, and VB is great for that. I don't like huge, monolithic, systems. Most projects I've architected rely on a small number of core libraries and are composed of small applications that work together to form a complete system. I can see using REBOL in the same way, but I also need to find my "REBOL voice" (i.e. style and work habit), and re-build my toolbox. I like to think I'm very pragmatic. I usually target a simple, low tech, approach whenever possible. I use OO design and construction when I feel it's appropriate. The key is to use 'as much process as necessary'. If you're working on a multi-million line project with hundreds of developers, a very formal methodology may be suitable. If someone says "I need this file conversion utility by tomorrow" you can probably design and construct it in a relatively informal manner.
>From the function level, to the module/library level, to the application
level, I like to build small pieces that I can define, construct, and test independently. If they have well defined interfaces and behave as expected, it is my experience that integration is greatly facilitated. Those interfaces may be COM calls, messages sent via sockets, command lines, or any number of things. This approach provides me with the encapsulation that I find so helpful and I can do it without using OOP, technically. IME, OO may help you manage complexity but it also adds complexity. The goal of using inheritance and polymorphism to reduce and reuse code often leads to writing more code to support those goals and, again, adds more complexity. Just some thoughts. Hope they're helpful. --Gregg
[7/7] from: rebol665:ifrance at: 8-Jan-2002 21:30
Hi Gregg Thanks for your answer, I have just ordered the 'Object Oriented Software Construction' book today.
> IME, OO may help you manage complexity but it also adds complexity.
I had this feeling too, may be mostly because I have tried C++ a little bit and I found it complicated. I am confident that it is possible to use Rebol in an object oriented designed program.However beeing an amateur with rebol, it might take some time. I'll let you know Patrick ps : I want to thank also Romano, Sunanda and Joel Neely for their answer. It gave me the idea of starting a thread with "Is Rebol suited for Object Oriented programming ?".