From: topmind on
>> I am sick and tired of device drivers, animals, and shapes. I gotta force
>> OO out of its comfort zone
>> in order to expose it for what it is.

> First, you have to understand it...

Yes, first *you* have to understand the scientific process and
how to present objective evidence rather than only vague
salesy brochure-talk.

-T-

From: Christer Ericson on
In article <m2ekbas0l2.fsf(a)gigamonkeys.com>, peter(a)gigamonkeys.com
says...
> [...]
> <http://www.gigamonkeys.com/book/object-reorientation-generic-functions.html>

In it you say, "The fundamental idea of object orientation is that a
powerful way to organize a program is to define data types and then
associate operations with those data types."

What you give here is the definition of an _abstract data type_
(ADT), nothing more, nothing less. Functional languages in the ML
category, for example, all support ADTs as a way to "define data
types and then associate operations with those data types" but we
hardly call them object-oriented.

The commonly accepted view is that _only_ when we add the feature
of enclosing _data_ in the ADT does it become an object. That is,
the fundamental idea of object orientation is to combine within
an entity (which we call the object) data and operations on that
data.


--
Christer Ericson
http://realtimecollisiondetection.net/
From: Robert C. Martin on
On 9 Jun 2005 21:22:18 -0700, "topmind" <topmind(a)technologist.com>
wrote:

>
>What about something like an airline reservation
>system, a student grade tracking system,
>and inventory system, a finance estimating system,
>etc. Maybe they are not glamorous or fun, but THAT
>is the kind of thing that most developers work on.

Agreed, and you'll find plenty of examples of systems like that in my
articles and books.

>I gotta force OO out of its comfort zone
>in order to expose it for what it is.

You will expose it as a useful technique for managing dependencies.


-----
Robert C. Martin (Uncle Bob) | email: unclebob(a)objectmentor.com
Object Mentor Inc. | blog: www.butunclebob.com
The Agile Transition Experts | web: www.objectmentor.com
800-338-6716


"The aim of science is not to open the door to infinite wisdom,
but to set a limit to infinite error."
-- Bertolt Brecht, Life of Galileo
From: Robert C. Martin on
On 10 Jun 2005 08:28:44 -0700, "topmind" <topmind(a)technologist.com>
wrote:

>Yes, first *you* have to understand the scientific process and
>how to present objective evidence rather than only vague
>salesy brochure-talk.

that's a troll response. Prepare to be ignored.



-----
Robert C. Martin (Uncle Bob) | email: unclebob(a)objectmentor.com
Object Mentor Inc. | blog: www.butunclebob.com
The Agile Transition Experts | web: www.objectmentor.com
800-338-6716


"The aim of science is not to open the door to infinite wisdom,
but to set a limit to infinite error."
-- Bertolt Brecht, Life of Galileo
From: Robert C. Martin on
On 9 Jun 2005 21:46:53 -0700, "topmind" <topmind(a)technologist.com>
wrote:

>> You may investigate this by looking at the source code of this
>> particular program. You can download it at www.fitnesse.org.
>
>I see things like socket examples.

Yes, there are some of those too. There are LOTS and LOTS of
examples. Some are technical, some are business. OO is useful for
*all* kinds of software.

>Regarding your wiki example, I actually wrote my own wiki about 5
>months ago. At first I decided to use files instead of a RDBMS for the
>hell of it. But, I wanted to keep open the possibility of later
>switching to a RDBMS.

Interesting. We *didn't* think about keeping and RDBMS as an option.
And yet we managed anyhow simply by isolating the storage mechanism
behind polymorphic interfaces.

>Thus, I considered the idea of a generic wrapper
>around the "persistence mechanism" (cough).

We needed that wrapper (which amounts to an interface, not a lot of
code) just to keep the tests running fast.

>But then I realized I had
>to make it rather low level to deal with a lot of crud that RDMBS take
>care of for me.

Interesting, we didn't have to do that. We kept the interface above
the level of and RDBM API, and refused to pollute the higher level
code with such details.

>I gave up the generic idea, tossed the wrappers, and
>the code was smaller can cleaner.

And bound to the RDBMS. If we had done that, our tests would be too
slow, and we would have to ship the system to our users with some kind
of RDBMS attached.

>Things like *concurrency*, searching, and cross-referencing were made
>pretty simple by the RDBMS.

Granted. RDBMSs are very powerful. Sequestering that power behind
interfaces is what allows a system to be portable and deployable in
many different user environment. Such sequestering means that
designers have to get creative about how to access the power of the
RDBMS from the other side of the interface.

>A generic interface that can handle 3 of
>files, RDBMS, and RAM is going to be bloated and end up reinventing a
>database more or less anyhow.

I invite you to look at the code. That's not what happened. The
interface is quite clean, and does not reinvent an RDB.

>You essentientally wrapped away from
>RDBMS by almost building a DBMS of your own. Not very good "reuse" if
>you ask me.

You might want to check your facts before you report them Mr. Isikoff.
However, the point is not without some merit. For our purposes it was
easy to create a simple file system storage mechanism. However, there
are other systems where such segregation would not be worth doing.
The fact that OO techniques help you to sequester certain subsystems
does not mean that such sequestering is always a good idea.

>RDBMS are more than just a "persistence mechanism". They are "attribute
>managers", and if you know how to use them properly, they handle a lot
>of grunt-work for you.

Agreed. On the other hand, it would be a shame to use one when you
don't need it.
>
>A RDBMS *is* an interface, by the way. Think about that long and hard.

I have, and I shall again. An RDBMS is indeed an interface. ODBC and
JDBC are *polymorphic* interfaces that bind your application to any
particular RDBMS you are interested in. So if you are using ODBC or
JDBC, you are using OO techniques to talk to your database.

If you use COM or ActiveX, you are using OO techniques to talk to your
components.




-----
Robert C. Martin (Uncle Bob) | email: unclebob(a)objectmentor.com
Object Mentor Inc. | blog: www.butunclebob.com
The Agile Transition Experts | web: www.objectmentor.com
800-338-6716


"The aim of science is not to open the door to infinite wisdom,
but to set a limit to infinite error."
-- Bertolt Brecht, Life of Galileo
First  |  Prev  |  Next  |  Last
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
Next: Use Case Point Estimation