From: shang@corp.mot.com (David L. Shang)
Subject: Re: Eiffel and Java
Date: 1996/11/04
Date: 1996-11-04T00:00:00+00:00 [thread overview]
Message-ID: <1996Nov4.142715.5411@schbbs.mot.com> (raw)
In-Reply-To: JSA.96Nov1182422@alexandria
In article <JSA.96Nov1182422@alexandria> jsa@alexandria (Jon S Anthony) writes:
> In article <1996Oct31.162218.8386@schbbs.mot.com> shang@corp.mot.com (David
L. Shang) writes:
>
> > No. Java supports only top-down class hierarchy construction
> > (from superclass to subclasses), but not bottom-up: from
> > subclasses to superclass.
>
> But in general it is _trivial_ to do in Ada. Note that "inheritance"
> aspects need not (and typically will not) even enter into the
> "equation" since the functionality is provided by separating the
> "module" aspect of class from the "type" aspect and allowing the
> module aspect to have separate spec. and impl.
>
Don't you think that the Ada's code is rather complicated and
involves too many concepts to describe things clearly?
Transframe's version:
use Stack, Queue;
class StackOrQueue #(MemberType: type of any)
is super Stack, Queue
{
function push(MemberType);
function pop:MemberType;
}
use StackOrQueue;
function MyTestCode()
{
x: StackOrQueue;
if (some_condition) x = Stack#(T1)(); else x:=Queue#(T2)();
y: any = GetObject();
assume (y is x#.MemberType) x.push(y); otherwise do_nothing();
....
}
Your Ada's Version:
with Stacks; -- Generic
with Queues; -- Generic
generic
type Any_Obj is tagged private;
package Stack_Or_Queue
package S is new Stacks(Any_Obj);
package Q is new Queues(Any_Obj);
type Any is access all Any_Obj'Class;
type Stack_Queue ( S : access S.Stack; Q : access Q.Queue )
is private;
procedure Push (Element : Any; Onto : Stack_Queue);
function Pop (SQ : Stack_Queue) return Any;
private
type Stack_Queue ...
end Stack_Or_Queue;
with Stack_Or_Queue;
package SQ_T1 is new Stack_Or_Queue(T1);
package ST1 renames SQ_T1.S;
package SQ_T2 is new Stack_Or_Queue(T2);
package QT2 renames SQ_T2.Q;
S : ST1;
Q : QT2;
if (some condition) then
declare
X : SQ_T1(S, null); -- X is a stack of T1s
Y : SQ_T1.Any := Get_Object;
begin
push(Y, Onto => X);
end;
else
declare
X : SQ_T2(null, Q); -- X is a queue of T2s
Y : SQ_T2.Any := Get_Object;
begin
...
end if;
And the above Ada's code is still not equivalent to Transframe's
code. There is no polymophism on the generic class StackOrQueue
in Ada's code: the variable "X" is not polymorphic, and is only
valid within a local scope. What happen if I want a function to
return the value of "X" for other people to use? For example:
use StackOrQueue;
function CreateStackOrQueue(some_condition: bool): StackOrQueue
{
x: StackOrQueue;
if (some_condition) x := Stack#(T1)(); else x:=Queue#(T2)();
y: any= GetObject();
while (y)
{
assume (y is x#.MemberType) x.push(y);
otherwise do_nothing();
y:= GetObject();
}
return x;
}
David Shang
next prev parent reply other threads:[~1996-11-04 0:00 UTC|newest]
Thread overview: 168+ messages / expand[flat|nested] mbox.gz Atom feed top
1996-10-27 0:00 Eiffel and Java Vincent WEBER
1996-10-27 0:00 ` Jean-Michel P. Decombe
1996-10-28 0:00 ` Alexandre Oliva
1996-10-28 0:00 ` David Hanley
1996-10-28 0:00 ` Matt Kennel
1996-10-28 0:00 ` Robert Dewar
1996-10-31 0:00 ` Doug Marker
1996-10-29 0:00 ` Chris Trimble
1996-10-31 0:00 ` Doug Marker
1996-10-31 0:00 ` David Bennett
1996-10-28 0:00 ` Larry Kilgallen
1996-10-30 0:00 ` Ronald Cole
1996-10-28 0:00 ` Matthew Heaney
1996-10-29 0:00 ` Vincent WEBER
1996-10-31 0:00 ` James McKim
1996-11-01 0:00 ` Matthew Heaney
1996-11-04 0:00 ` James McKim
1996-10-30 0:00 ` Don Harrison
1996-10-31 0:00 ` James McKim
1996-11-04 0:00 ` Don Harrison
1996-11-23 0:00 ` Van Snyder
1996-10-30 0:00 ` Jon S Anthony
1996-11-01 0:00 ` Eiffel and Java + Ada dispatching Jean-Marc Jezequel
1996-10-31 0:00 ` Eiffel and Java Joachim Durchholz
1996-11-01 0:00 ` Norman H. Cohen
1996-11-02 0:00 ` Jon S Anthony
1996-11-02 0:00 ` Eiffel and Java + Ada dispatching Jon S Anthony
1996-11-03 0:00 ` Eiffel and Java Joachim Durchholz
1996-11-05 0:00 ` Norman H. Cohen
1996-10-29 0:00 ` Don Harrison
1996-10-29 0:00 ` Fergus Henderson
1996-10-30 0:00 ` Don Harrison
1996-10-30 0:00 ` Fergus Henderson
1996-10-31 0:00 ` David L. Shang
1996-11-01 0:00 ` Matt Kennel
1996-11-04 0:00 ` David L. Shang
1996-11-05 0:00 ` Matt Kennel
1996-11-06 0:00 ` David L. Shang
1996-11-04 0:00 ` Robert I. Eachus
1996-11-01 0:00 ` Jon S Anthony
1996-11-02 0:00 ` Fergus Henderson
1996-11-04 0:00 ` David L. Shang [this message]
1996-11-05 0:00 ` Jon S Anthony
1996-11-02 0:00 ` Darko BUDOR
1996-11-02 0:00 ` Fergus Henderson
1996-11-03 0:00 ` Matt Kennel
1996-11-03 0:00 ` Darko BUDOR
1996-11-03 0:00 ` Matthias Ernst
1996-11-03 0:00 ` Jon S Anthony
1996-11-05 0:00 ` Jon S Anthony
1996-11-10 0:00 ` Marcos F. F. de Macedo
1996-11-11 0:00 ` David L. Shang
1996-11-12 0:00 ` Fergus Henderson
1996-11-12 0:00 ` David L. Shang
1996-11-12 0:00 ` David L. Shang
1996-11-16 0:00 ` Fergus Henderson
1996-11-18 0:00 ` David L. Shang
1996-11-18 0:00 ` Kai Quale
1996-11-18 0:00 ` David L. Shang
1996-11-25 0:00 ` Kai Quale
1996-11-15 0:00 ` Paul Johnson
1996-11-12 0:00 ` Alexander Asteroth
1996-11-11 0:00 ` Marcos F. F. de Macedo
1996-11-12 0:00 ` Benedict A. Gomes
1996-11-12 0:00 ` Matt Kennel
1996-10-29 0:00 ` Eiffel and Java + Ada dispatching Vincent WEBER
1996-10-30 0:00 ` Don Harrison
1996-10-30 0:00 ` Jon S Anthony
1996-10-30 0:00 ` Jean-Marc Jezequel
1996-11-01 0:00 ` Joachim Durchholz
1996-11-01 0:00 ` Don Harrison
1996-10-30 0:00 ` Eiffel and Java David Petrie Stoutamire
1996-10-30 0:00 ` Eiffel and Java + Ada dispatching Jon S Anthony
1996-11-04 0:00 ` Don Harrison
1996-11-04 0:00 ` C to Ada Ali Mirhosseini
1996-11-04 0:00 ` Robert Dewar
1996-11-04 0:00 ` Matthew Daniel
1996-11-05 0:00 ` Eiffel and Java + Ada dispatching Jon S Anthony
1996-11-05 0:00 ` Don Harrison
1996-11-06 0:00 ` Jon S Anthony
1996-10-30 0:00 ` Robert I. Eachus
1996-10-31 0:00 ` Joachim Durchholz
1996-10-31 0:00 ` Jon S Anthony
1996-11-01 0:00 ` Jean-Marc Jezequel
[not found] ` <E06F2B.Az7@syd.csa.com.au>
1996-11-01 0:00 ` Jon S Anthony
1996-11-04 0:00 ` Don Harrison
1996-11-05 0:00 ` Jon S Anthony
1996-11-02 0:00 ` Robert Dewar
1996-11-04 0:00 ` Norman H. Cohen
1996-11-05 0:00 ` Don Harrison
1996-11-05 0:00 ` Joachim Durchholz
1996-11-05 0:00 ` Robb Nebbe
1996-11-06 0:00 ` Jean-Marc Jezequel
1996-11-07 0:00 ` Robb Nebbe
1996-11-06 0:00 ` To overload or not to overload (was Eiffel and Java + Ada dispatching) Don Harrison
1996-11-06 0:00 ` Robb Nebbe
1996-11-07 0:00 ` Norman H. Cohen
1996-11-07 0:00 ` Don Harrison
1996-11-07 0:00 ` Jon S Anthony
1996-11-11 0:00 ` Don Harrison
1996-11-07 0:00 ` Juergen Schlegelmilch
1996-11-08 0:00 ` Don Harrison
1996-11-08 0:00 ` Don Harrison
1996-11-14 0:00 ` Jon S Anthony
1996-11-14 0:00 ` Jon S Anthony
1996-11-07 0:00 ` Jon S Anthony
1996-11-08 0:00 ` bill.williams
1996-11-11 0:00 ` Don Harrison
1996-11-08 0:00 ` Eiffel and Java + Ada dispatching Robert I. Eachus
1996-11-06 0:00 ` Robert I. Eachus
1996-11-08 0:00 ` Don Harrison
1996-11-08 0:00 ` Jon S Anthony
1996-11-08 0:00 ` Robert A Duff
1996-11-12 0:00 ` Don Harrison
1996-11-12 0:00 ` Robert A Duff
1996-11-13 0:00 ` Don Harrison
1996-11-13 0:00 ` Jon S Anthony
1996-11-15 0:00 ` Don Harrison
1996-11-19 0:00 ` Jon S Anthony
1996-11-20 0:00 ` Don Harrison
1996-11-13 0:00 ` Robert A Duff
1996-11-14 0:00 ` Don Harrison
1996-11-12 0:00 ` Joachim Durchholz
1996-11-15 0:00 ` Richard Riehle
1996-11-16 0:00 ` Interfacing contracts (Was: Eiffel and Java + Ada dispatching) Geert Bosch
1996-11-17 0:00 ` Robert A Duff
1996-11-14 0:00 ` Eiffel and Java + Ada dispatching Robert I. Eachus
1996-11-14 0:00 ` Robert A Duff
1996-11-15 0:00 ` Don Harrison
1996-11-15 0:00 ` Robert I. Eachus
1996-11-19 0:00 ` Don Harrison
1996-11-18 0:00 ` Vincent Celier
1996-11-22 0:00 ` Don Harrison
1996-11-19 0:00 ` Jon S Anthony
1996-11-15 0:00 ` portmanteau (was Re: Eiffel and Java + Ada dispatching) Robert I. Eachus
1996-11-07 0:00 ` Eiffel and Java + Ada dispatching Robb Nebbe
1996-11-07 0:00 ` Jon S Anthony
1996-11-12 0:00 ` Jon S Anthony
1996-11-01 0:00 ` Eiffel and Java Matthias Ernst
1996-11-01 0:00 ` Benedict A. Gomes
1996-11-01 0:00 ` William Clodius
1996-11-02 0:00 ` Eiffel and Java + Ada dispatching Jon S Anthony
1996-11-02 0:00 ` Jon S Anthony
1996-11-04 0:00 ` Eiffel and Java Robert I. Eachus
1996-10-30 0:00 ` Jon S Anthony
1996-11-01 0:00 ` Don Harrison
1996-11-01 0:00 ` Jon S Anthony
1996-11-07 0:00 ` Marcos F. F. de Macedo
1996-11-11 0:00 ` Ian Joyner
1996-11-12 0:00 ` Don Harrison
1996-11-13 0:00 ` Norman H. Cohen
1996-11-15 0:00 ` Don Harrison
1996-11-14 0:00 ` Jon S Anthony
1996-11-15 0:00 ` Don Harrison
1996-11-19 0:00 ` Jon S Anthony
1996-11-21 0:00 ` Don Harrison
1996-11-12 0:00 ` Jon S Anthony
1996-10-31 0:00 ` Joachim Durchholz
1996-11-01 0:00 ` Jon S Anthony
1996-11-02 0:00 ` Jon S Anthony
1996-11-03 0:00 ` Eiffel and Java + Ada dispatching Joachim Durchholz
1996-11-04 0:00 ` Eiffel and Java Richard A. O'Keefe
-- strict thread matches above, loose matches on Subject: below --
1996-10-28 0:00 cosc19z5@bayou.uh.edu
[not found] ` <01bbc7f6$b1c0b7a0$LocalHost@gaijin>
1996-11-01 0:00 ` Ranjan Bagchi
1996-11-01 0:00 ` Alan Lovejoy
1996-11-01 0:00 ` Chris
1996-11-02 0:00 Ell
1996-11-02 0:00 ` traymond
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox