From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: was Ada 83 in fact object oriented ? Date: Fri, 25 Sep 2015 17:27:30 +0200 Organization: cbb software GmbH Message-ID: <13jhsj0z4v8x6.9ht8sobkxy9a$.dlg@40tude.net> References: <1m1z02fnyec2o.wyt86jotmw92.dlg@40tude.net> <16p0dlo8tlxq7.v4bq6iqoe9qb$.dlg@40tude.net> Reply-To: mailbox@dmitry-kazakov.de NNTP-Posting-Host: dZFZMi8Yw0yXeelTniGFpQ.user.speranza.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: 40tude_Dialog/2.0.15.1 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:27829 Date: 2015-09-25T17:27:30+02:00 List-Id: On Fri, 25 Sep 2015 14:44:24 +0200, J-P. Rosen wrote: > Le 25/09/2015 14:17, Dmitry A. Kazakov a écrit : >> I'd say classification is a way of creating reusable and safer code. >> Reusability and safety comes from compiler-assisted code adjustments and >> sematic checks, which are not 100%, but still 100% more than with >> traditional cut'n'paste approach. Generics too, are all about classes and >> serve same purpose of reuse. Though generic classes are inferior because >> may have no objects. >> >> Classes are better engineering because they encourage the programmer to do >> up-front design of types, semantics of their operations and the properties >> shared by all instances, which eliminates a lot of ad hocery, at least in >> theory. > I see nothing in what you say that implies classification (although I > agree it relates to object orientation). Classification is implied because sets of types are involved. Class is a set of types, or a category in mathematics. >> Without classes reuse is limited to subprograms operating single type. You >> can reuse "+" for different Integer values, but not for other additive >> objects. >> > Definitely not. You reuse all your components a lot! "+" is a component? How could you reuse it without breaking types? The point is that it is a different level of reuse. A subprogram defined on the type T can be reused for the set of values of T. A primitive operation of T can be reused for all values of all types from T'Class. > This view comes > from the idea that to develop new software, you modify existing > components. Inheritance makes it easy to develop new modules where you > change only the parts that are different from the original ones. Yes. > With composition, you have ready-to-use software components. You make a > new objects by assembling them in a different way. Are components here packages? subprograms? You cannot reuse them for something different they were designed. Composition changes or adds nothing. > To make a comparison: imagine you need a 105KOhms resistor. With > inheritance, you take an existing 100KOhms resistor, and make a little > scratch in it to adjust the resistance. With composition, you take a > 100Kohms resistor, a 5Kohms resistor, put them serial. Both approaches > are different kinds of reuse. But composition does not work this way. If you put two integers into a record you don't get another numeric type. For making resistors working the way you described you need a class Resistor, instances of, an operation that connects two resistors and produces a new resistor. Composition is exclusively about creating built-in container types. I see no user code reuse at all. The compiler reuses its code, that's clear. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de