Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / .NET Framework / New Users / April 2005

Tip: Looking for answers? Try searching our database.

What does this mean? (nested abstracts...)

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
HAM - 15 Apr 2005 11:42 GMT
One of my friends asked if the followings have any meanings?

'-------------
Public Interface IRenderable
   Sub Render()
   MustInherit Class Engine
       MustOverride Sub TurnOn()
       Interface IAutomatic
           Sub Start()
       End Interface
   End Class
End Interface

Public Class RenderMan
   Inherits IRenderable.Engine
   Implements IRenderable, IRenderable.Engine.IAutomatic

   Public Sub Render() Implements IRenderable.Render
       'Code for implementation
   End Sub

   Public Sub Start() Implements IRenderable.Engine.IAutomatic.Start
       'Code for implementation
   End Sub

   Public Overrides Sub TurnOn()
       'Code for implementation
   End Sub
End Class
'-------------

Does this all comply with the specification of OOP? Just curious...
Brian Gideon - 15 Apr 2005 14:42 GMT
It will not compile.  Interfaces cannot declare types.

Brian

> One of my friends asked if the followings have any meanings?
>
[quoted text clipped - 28 lines]
>
> Does this all comply with the specification of OOP? Just curious...
HAM - 15 Apr 2005 17:38 GMT
IT WILL! Try it for yourself in VS 2003....
(And probably it is better to look it up in the Object Browser...you'll see
that there is no type in "IRenderable")

(PS: Intellisense went wrong when i first entered the code into the text
editor. Then,
when i complied the class , everything went ok...)

> It will not compile.  Interfaces cannot declare types.
>
[quoted text clipped - 32 lines]
>>
>> Does this all comply with the specification of OOP? Just curious...
Brian Gideon - 15 Apr 2005 19:46 GMT
You are correct.  It does compile.  I should be more careful about
assuming things about VB.NET based on my experiences with C#.
Actually, Engine is nested inside the interface.  You can verify that
with ildasm.  It is odd that it is legal in VB.NET, but not C#.  It may
have been part of an effort to avoid making C# unnecessarily complex.

Brian

> IT WILL! Try it for yourself in VS 2003....
> (And probably it is better to look it up in the Object Browser...
[quoted text clipped - 3 lines]
> text editor. Then, when i complied the class , everything went
> ok...)
Nick Malik [Microsoft] - 15 Apr 2005 15:38 GMT
Your friend is being very colorful and creative.

However, the code below is not legal.  It doesn't make much sense either.

Classes inherit interfaces.
By creating an interface that declares a class in it, what intent is the
programmer attempting to describe in the code?  Is it the intent that the
object which implement the interface must "have a" member class completely
declared within them?  Why not just define that a child class returns an
object of a particular type from a member method?  The same structural
purpose would be served.

In this case, the Interface can simply refer to another interface for a
member method.

This allows you to have composition without the byzantine declaration syntax
below.

Signature

--- Nick Malik [Microsoft]
   MCSD, CFPS, Certified Scrummaster
   http://blogs.msdn.com/nickmalik

Disclaimer: Opinions expressed in this forum are my own, and not
representative of my employer.
  I do not answer questions on behalf of my employer.  I'm just a
programmer helping programmers.
--

> One of my friends asked if the followings have any meanings?
>
[quoted text clipped - 28 lines]
>
> Does this all comply with the specification of OOP? Just curious...
HAM - 15 Apr 2005 17:37 GMT
>the code below is not legal.  It doesn't make much sense either.

Well, any illegal code (except for logical bugs) must be trapped by the
compiler I guess...

> Classes inherit interfaces.
> By creating an interface that declares a class in it, what intent is the
> programmer attempting to describe in the code?

I am not going to say that this is a good coding practice or not. However,
there is probably a way to know that If class "RenderMan" has inherited the
"Engine" Class of the IRenerable Interface through "IRenderable.Engine" , it
must also implement the IRenderable interface either. And why not declaring
the whole methods of "IRenderable" in the "Engine" class in the first place?
Probably because the "Render" method will be able to be  implemented in
classes that "Also"
 happen to have implemented from other interfaces, just one like
"IRenderable.Engine.Automatic"
...

> object which implement the interface must "have a" member class completely
> declared within them?  Why not just define that a child class returns an
> object of a particular type from a member method?  The same structural
> purpose would be served.

you're right....

> In this case, the Interface can simply refer to another interface for a
> member method.

that's a nice idea, just maybe the nested naming of Interfaces could help to
be more specific of where an interface come or sth.. I don't know!....Wow...
I'm messing up...

> This allows you to have composition without the byzantine declaration
> syntax below.

I 'll tell this to my friend.
Thanks for the help anyway

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.