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
Hi Patrick,
> 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
Hi Patrick,
>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
Hi, Patrick
> 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
be,
>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 ?".