Deutsch   English   Français   Italiano  
<86ldwoiw39.fsf@linuxsc.com>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups: comp.lang.c++
Subject: Re: What is OOP? --- The most important aspect of OOP
Date: Mon, 09 Dec 2024 09:51:06 -0800
Organization: A noiseless patient Spider
Lines: 75
Message-ID: <86ldwoiw39.fsf@linuxsc.com>
References: <d8a5a0d563f0b9b78b34711d12d4975a7941f53a.camel@gmail.com> <86frn6og85.fsf@linuxsc.com> <vj0cj5$2n835$1@dont-email.me> <90e75c71c42fcf43b89644a46a60e4fff63ecc10@i2pn2.org>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Injection-Date: Mon, 09 Dec 2024 18:51:09 +0100 (CET)
Injection-Info: dont-email.me; posting-host="892b8ce7ac5e3c5327272332675a4c02";
	logging-data="544175"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18ekihXzZ93s/c5A5tP9VpFoFQATl1W/wo="
User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.4 (gnu/linux)
Cancel-Lock: sha1:0/yTR4/IyhrSiSM7dbZ4Xc2sZ8s=
	sha1:IExZyGkEnNlmakdZ0Nb/RJTnafk=
Bytes: 4415

Richard Damon <richard@damon-family.org> writes:

> On 12/6/24 9:40 PM, olcott wrote:
>
>> On 12/1/2024 10:34 PM, Tim Rentsch wrote:
>>
>>> wij <wyniijj5@gmail.com> writes:
>>>
>>> In response to the question of the subject line...
>>>
>>> Just because a program is being written in a language that has
>>> functions doesn't mean that what is being done is functional
>>> programming.
>>>
>>> Just because a program is being written in a language that has
>>> classes and objects doesn't mean that what is being done is
>>> object-oriented programming.
>>>
>>> More than anything else object-oriented programming is a mindset
>>> or a programming methodology.  It helps if the language being
>>> used supports classes, etc, but the methodology can be used even
>>> in languages that don't have them.
>>>
>>> A quote:
>>>
>>>  My guess is that object-oriented programming will be in the
>>>  1980s what structured programming was in the 1970s.
>>>  Everyone will be in favor of it.  Every manufacturer will
>>>  promote his products as supporting it.  Every manager will
>>>  pay lip service to it.  Every programmer will practice it
>>>  (differently).  And no one will know just what it is.
>>>
>>> That paragraph is taken from a paper written more than 40 years
>>> ago.  The prediction came true with a vengeance, even more than
>>> the author expected.  Most of what has been written about object
>>> oriented programming was done by people who didn't understand it.
>>>
>>> Two more quotes, these from Alan Kay:
>>>
>>>  I invented the term "Object Oriented Programming," and C++
>>>  is not what I had in mind.
>>>
>>>  Though Smalltalk's structure allows the technique now known
>>>  as data abstraction to be easily (and more generally)
>>>  employed, the entire thrust of its design has been to
>>>  supersede the concept of data and procedures entirely;  to
>>>  replace these with the more generally useful notions of
>>>  activity, communication, and inheritance.
>>
>> The most important aspect of OOP is the ability to decompose
>> a problem into independent component parts.  This can eliminate
>> the side effects in the structured programming model that
>> result from global data.
>
> Excpet that normally OOP is fully based on the operation resulting in
> "side effects" as they mutate the state of the object the methods are
> part of.
>
> What this does is not ELIMINATE the side effects, but limits their
> scope.  A given object type will tend to keep its own state "private"
> and interact only with other object via "public" interfaces, allowing
> us to limit the scope we need to think of when looking at
> interactions.
>
> This makes it very different from the "functional" model, where we do
> not allow for side-effects.

I agree with the first paragraph, because of the word "normally".  I
think it's important to add that there is no inherent incompatibility
between object-oriented programming and functional programming.  There
are ways to work with classes and objects in a fully functional mode,
in much the same way that one can write code for data structures such
as AVL trees or B-trees that is fully functional (so there are no side
effects to existing trees when adding or deleting elements, for
example).