Re: [PATCH] adding constant to the operations properties
From: Matthieu Sozeau <mattam netcourrier com>
To: Johann Tienhaara <tech mountaingrouse com>
Cc: Dia <dia-list gnome org>
Subject: Re: [PATCH] adding constant to the operations properties
Date: Wed, 30 Jan 2002 00:17:10 +0100
[Tue, 29 Jan 2002 13:23:10 -0800] a écrit:
> A quick question: I'm not a C++ guru, so is it ever necessary in C++ to
> indicate that a method is *both* final and polymorphic?
>
> For example (sorry about the syntax, it's been a few years...):
>
> class Foo {
> public void bar() {
> cout << "Foo";
> }
> }
>
> class Foo2 : Foo {
> public virtual void bar() const {
> cout << "Foo2";
> }
> }
>
> I think this would mean that:
>
> 1) a Foo2 that is cast as a Foo will
> still output "Foo2" every time its
> bar() method is called; and
>
> 2) no class can override the Foo2
> class's bar() method.
>
> Is this a valid scenario? I'm just wondering if maybe UML_POLYMORPHIC
> should be kept as a separate enumeration from UML_ABSTRACT /
> UML_FINAL...? What do you think?
Foo2 * foo2 = new Foo2;
((Foo *) foo2)->bar() ouput "Foo" since bar in Foo's not virtual.
Actually a class Foo3 could override Foo2 bar method, wich will be called when casted to Foo3.
and "Foo2" for (Foo2 *) and "Foo" for (Foo *).
Although I thought gcc would output an error for overriden bar() in Foo2, I encountered no problems with that.
In fact, I implemented the UMLInheritance as an enum { UML_ABSTRACT, UML_POLYMORPHIC, UML_LEAF }, so that one can select only one, which is the proper behavior (I think). Since in C++, there is no way (http://www.parashift.com/c++-faq-lite/strange-inheritance.html) to make a Class or Method "final" or a "leaf", UML_LEAF can only be used in Java or in C++ by adding a /* final */ comment, with no technical effect. Since UML_LEAF _and_ UML_ABSTRACT is a non-sense, the enum is good.
> Which direction from Paris are you? I've driven through the countryside
> to get to a po dunk little airport north of Paris (Beauvais or something
> like that), but haven't seen much else of the environs around the city.
> However if I can ever get my act together and ameliorer mon francais
> (...!) I'd much rather be living in either France or Italy than on this
> ass-backwards continent. One of these days...
>
> Cheers Matthieu. TTYL,
>
> Johann
I'm in the south, near Massy. C'est une banlieue très agréable.
--
"Only two things are infinite, the universe and human stupidity, and I'm not sure about the former. "
- Albert Einstein (1879-1955)
MaT|TaM
<mattam@netcourrier.com & mattam.selfhost.com>