By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,467 Members | 1,448 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,467 IT Pros & Developers. It's quick & easy.

Interface vs Struct

P: n/a
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
Share this Question
Share on Google+
7 Replies


P: n/a
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

P: n/a
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

P: n/a
"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

P: n/a
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

P: n/a
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

P: n/a
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

P: n/a
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.