473,382 Members | 1,441 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,382 software developers and data experts.

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

HAM
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...


Jul 21 '05 #1
5 1523
It will not compile. Interfaces cannot declare types.

Brian

HAM wrote:
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...


Jul 21 '05 #2
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.

--
--- 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.
--
"HAM" <hmdzxx5x@hotmaildotcom> wrote in message
news:e3*************@TK2MSFTNGP14.phx.gbl...
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...

Jul 21 '05 #3
HAM

"Nick Malik [Microsoft]" <ni*******@hotmail.nospam.com> wrote in message
news:Zu********************@comcast.com...
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


Jul 21 '05 #4
HAM
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...)

"Brian Gideon" <br*********@yahoo.com> wrote in message
news:11**********************@g14g2000cwa.googlegr oups.com...
It will not compile. Interfaces cannot declare types.

Brian

HAM wrote:
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...


Jul 21 '05 #5
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

HAM wrote:
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...)


Jul 21 '05 #6

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

5
by: HAM | last post by:
One of my friends asked if the followings have any meanings? '------------- Public Interface IRenderable Sub Render() MustInherit Class Engine MustOverride Sub TurnOn() Interface IAutomatic...
5
by: HAM | last post by:
One of my friends asked if the followings have any meanings? '------------- Public Interface IRenderable Sub Render() MustInherit Class Engine MustOverride Sub TurnOn() Interface IAutomatic...
52
by: Ben Voigt [C++ MVP] | last post by:
I get C:\Programming\LTM\devtools\UselessJunkForDissassembly\Class1.cs(360,27): error CS0535: 'UselessJunkForDissassembly.InvocableInternals' does not implement interface member...
123
by: plenty900 | last post by:
I was looking over someone's C++ code today and despite having written perfectly readable C++ code myself, the stuff I was looking at was worse than legalese. The people who are guiding the...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.