TEAM-ADA Archives

Team Ada: Ada Programming Language Advocacy


Options: Use Forum View

Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
David Botton <[log in to unmask]>
Reply To:
Mon, 16 Nov 1998 08:59:48 -0800
text/plain (122 lines)
There is an articly presenting a syntax that is "class" like at:

I tend to like the idea that the syntax of the language is loose and
allows me to use the form that works best for the individual class /

(more below)

David Botton

---Nasser Abbasi <[log in to unmask]> wrote:
> At Sun, 15 Nov 1998 17:36:29 +0100
> >
> it is more than just "synatx".

Only if you are sloppy about your coding policy.

> The C++/Java syntax (refered to as above, above) for a class is more
> natural to me becuase it allows one to write
> Obj.message(  message_parameters );

Ada lets your write:

result := getMax ( From => Sensor );


putMinimum ( InTo => Sensor );

Seems a lot more natural to me.

> instead of the Ada way, where one writes
> message( some_parameters, the_object_is_hidden_here ,
> some_other_message_parameters);
> You see, in the Ada way, the object whose the message is being send to
> is hidden among the message parameters being send to it!

Again, only if you are sloppy.

> Using a function/procedure call to send a message to an object, and
> having the object the message being send to sit among the parameters
> the message is not a natural way to express what I think of when I
> of objects and messages being send between them. .
> Not only that, it is visually harder in Ada to find the stuff that
> what is contained in a "class", since there is no one enclosing
> construct the contains the data+methods in one place.

That is what the package does for you.

> There is nothing
> to stop anyone of having methods (functions, procedures) that do not
> belong to the "class"  from being spread all over the package and in
> between the primitive methods of other tagged records.

That is the best part. I can define supporting non-OO procedures and
methods in the same place as the class. Even more importantly,
restraints (subtypes) and types that will give me compile and run time

> It is harder becuase you have to look at the profile of each
function or
> procedure to determine that that method belongs to what tagged record,
> by visually inspecting the arguments to find if one of them is of
> record type, or even what the return type of the function is.

Unless you are sloppy, you lay things out to please the reader. Of
course when you need to, you can deviate, unlike other languages.

> this loose organization is what bothers me about how Ada handles OO. I
> like to see all the stuff that belongs to one class encapulated in a
> clear construct, something like
>  class class_name
>  {
>    // everything here belongs to this class.
>  }
> now I am happy, I dont have to scan the code visually to decide what
> belongs and what does not belong to the class 'class_name'.

I just wish the Ada95 team had made "class" a synonym for package so
the Ada world would not have to spend time on "Where is the class

> Offcourse, everyone is free to prefer different styles, I just find
> OO style of Java and C++ more natural, even though I like all the
> Ada language stuff more, except for its OO.
> Nasser

It is the semantics that are important not the syntax, and a
preprocessor could make your syntax problems go away.

(like #define class package)

Get your free address at