471,305 Members | 1,571 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

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

Interface vs Struct

I am new to object oriented design. I am using VS 2005. I was going to
create three classes then have those classes inherited by one class but c#
does not support multiple inheritance. My three base classes would have
properties only and no methods. What would be best to use in this case an
interface or struct or something else?

When adding items to the project I did not see a template for struct or for
an interface, but there is a template for class (.cs).

Originally I had planned to have three base classes:
Owner class, Property Class and Value Class

And a PropertyHistory class that would inherit all the base classes and
PropertyHistory could be added to a collection so I could iterate through it
and sort it.

I wanted the base classes to be reused separately in other areas of the
application.

What is the best way to do this?

--
Happy In SoAz
Jun 27 '08 #1
7 1750
SoAzAppDever wrote:
I am new to object oriented design. I am using VS 2005. I was going to
create three classes then have those classes inherited by one class but c#
does not support multiple inheritance. My three base classes would have
properties only and no methods. What would be best to use in this case an
interface or struct or something else?
Neither interface or struct solves that problem.

I think you need to make the one class have a reference to the
3 "base" classes instead of inheriting.

Arne
Jun 27 '08 #2
So In the PropertyHistory class I could pass in the three base classes like so

class PropertyHistory(Owner oObj, Property oProp, Value oVal)
{
do stuff
}

?

--
Happy In SoAz
"Arne Vajhøj" wrote:
SoAzAppDever wrote:
I am new to object oriented design. I am using VS 2005. I was going to
create three classes then have those classes inherited by one class but c#
does not support multiple inheritance. My three base classes would have
properties only and no methods. What would be best to use in this case an
interface or struct or something else?

Neither interface or struct solves that problem.

I think you need to make the one class have a reference to the
3 "base" classes instead of inheriting.

Arne
Jun 27 '08 #3
"SoAzAppDever" <So**********@discussions.microsoft.comwrote in message
news:3B**********************************@microsof t.com...
So In the PropertyHistory class I could pass in the three base classes
like so

class PropertyHistory(Owner oObj, Property oProp, Value oVal)
{
do stuff
}

?

"Arne Vajhj" wrote:
>SoAzAppDever wrote:
I am new to object oriented design. I am using VS 2005. I was going
to
create three classes then have those classes inherited by one class but
c#
does not support multiple inheritance. My three base classes would
have
properties only and no methods. What would be best to use in this case
an
interface or struct or something else?

Neither interface or struct solves that problem.

I think you need to make the one class have a reference to the
3 "base" classes instead of inheriting.

Arne
Arne means that since PropertyHistory is not a Property, nor is it a Owner,
nor is it a Value, it won't inherit from any of them. An instance of
PropertyHistory will have references to an instance of Property, an instance
of Owner, and an instance of Value.

AHS
Jun 27 '08 #4
I am not sure I understand. Can you show me in code? What is have done is
the following:

public class ParcelHistory
{
//members
private Owner _owner;
private Property _property;
private Value _value;
//contructor
public PropertyHistory(Owner owner, Property property, Value value)
{
_owner = owner;
_property = property;
_value = value;
}

//properties
public Owner HistoryOwner
{
get { return _owner; }
}

public Property HistoryProperty
{
get { return _property; }
}

public Value HistoryValue
{
get { return _value; }
}

}
--
Happy In SoAz
"Arved Sandstrom" wrote:
"SoAzAppDever" <So**********@discussions.microsoft.comwrote in message
news:3B**********************************@microsof t.com...
So In the PropertyHistory class I could pass in the three base classes
like so

class PropertyHistory(Owner oObj, Property oProp, Value oVal)
{
do stuff
}

?

"Arne Vajhøj" wrote:
SoAzAppDever wrote:
I am new to object oriented design. I am using VS 2005. I was going
to
create three classes then have those classes inherited by one class but
c#
does not support multiple inheritance. My three base classes would
have
properties only and no methods. What would be best to use in this case
an
interface or struct or something else?

Neither interface or struct solves that problem.

I think you need to make the one class have a reference to the
3 "base" classes instead of inheriting.

Arne

Arne means that since PropertyHistory is not a Property, nor is it a Owner,
nor is it a Value, it won't inherit from any of them. An instance of
PropertyHistory will have references to an instance of Property, an instance
of Owner, and an instance of Value.

AHS
Jun 27 '08 #5
Arved Sandstrom wrote:
"SoAzAppDever" <So**********@discussions.microsoft.comwrote in message
news:3B**********************************@microsof t.com...
>"Arne Vajhj" wrote:
>>SoAzAppDever wrote:
I am new to object oriented design. I am using VS 2005. I was going
to
create three classes then have those classes inherited by one class but
c#
does not support multiple inheritance. My three base classes would
have
properties only and no methods. What would be best to use in this case
an
interface or struct or something else?
Neither interface or struct solves that problem.

I think you need to make the one class have a reference to the
3 "base" classes instead of inheriting.
So In the PropertyHistory class I could pass in the three base classes
like so

class PropertyHistory(Owner oObj, Property oProp, Value oVal)
{
do stuff
}

?

Arne means that since PropertyHistory is not a Property, nor is it a Owner,
nor is it a Value, it won't inherit from any of them. An instance of
PropertyHistory will have references to an instance of Property, an instance
of Owner, and an instance of Value.
Yup.

3 x "has a" instead of the invalid 3 x "is a".

Arne
Jun 27 '08 #6
As Arne suggest..

Inheritance represents an IS_A relationship from a generalization to a
specialization. Containment represents a HAS_A relationship between the
whole and a part. So a car IS_A motorized vehicle, but HAS_A radio. The
two
relationships can be expressed in code (text view) thusly:

class Radio
{
...
}
class Vehicle
{
...
}
class Car : Vehicle
{
Radio r= new Radio();
}

Regards,
Jeff

*** Sent via Developersdex http://www.developersdex.com ***
Jun 27 '08 #7
Thank you that is very helpful!
--
Happy In SoAz
"Jeff Louie" wrote:
As Arne suggest..

Inheritance represents an IS_A relationship from a generalization to a
specialization. Containment represents a HAS_A relationship between the
whole and a part. So a car IS_A motorized vehicle, but HAS_A radio. The
two
relationships can be expressed in code (text view) thusly:

class Radio
{
...
}
class Vehicle
{
...
}
class Car : Vehicle
{
Radio r= new Radio();
}

Regards,
Jeff

*** Sent via Developersdex http://www.developersdex.com ***
Jun 27 '08 #8

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

6 posts views Thread by Chris Carlen | last post: by
reply views Thread by rosydwin | last post: by

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.