Ayuda con la herencia

09/07/2007 - 15:06 por Francesc | Informe spam
Holas, tengo un problemilla con la organización de la herencia..

Vasmos a ver, tengo una clase PROVEEDOR,otra SEDE,otra DOCUMENTOS y otra
CONTACTOS.

SEDE, DOCUMENTOS y CONTACTOS heredan de proveedor,pero claro, el
planteamiento es que SEDE,DOCUMENTOS y CONTACTOS pertencen a cada instancia
del PROVEEDOR.

Es decir, un PROVEEDOR, tiene dentro varias SEDES, varios DOCUMNETOS y
varios CONACTOS. Como puedo hacer para que cuando llene un objeto de
proveeodr, pueda llenar a la vez todos los datos solicitados en
sedes,documentos y contactos????

Seguro que es una tonteria, o no..no se, no se como hacerlo ya que no es una
herencia de vehiculo - coche o vehiculo - camino,si no que seria vehiculo
-coche,camion,moto...

Mi unica ocurrencia:

1. Dentro de la clase principal creo un objeto de cada subclase que
pertenece a la principal,por lo que no heredeo.

class proveedor
{

public Sede a = new Sede();
public Contacto b = new Sede();

class sede
{
}

class contacto
{
}

}

y cuando instancie en el "main"

proveedor c = new proveedor();
c.b.loquesea...
c.a.loquesea...

milista.Add(c);

por lo que dentro de c tendria toda la estructura

No se ya me decis.

Millones de gracias!

Francesc Jaumot

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
09/07/2007 - 16:03 | Informe spam
Lo que quieres no es "herencia" sino "agregación", que son conceptos
distintos. Tus clases SEDE, DOCUMENTOS y CONTACTOS no heredan de PROVEEDOR,
sino que están agregadas dentro de PROVEEDOR.

La forma de implementarlo que indicas es razonablemente correcta, es decir,
dentro del proveedor declaras variables de los tipos Sede, Documentos, etc.
Estas clases se inicializan donde sea oportuno, que según tu código es el
constructor, pero podría haber otras formas de hacerlo según como deba
comportarse el programa. Por ejemplo, si no todos los proveedores tienen que
tener documento, puedes dar acceso al documento exclusivamente a través de
una propiedad y que sea la propiedad la que lo inicialice (si no está ya
inicializado) en el momento de usarla, y si no la usas nunca, no se crea el
documento. De esta misma forma se pueden hacer múltiples variantes,
dependiendo de los casos de uso que requiera tu diseño de aplicación.


"Francesc" wrote in message
news:
Holas, tengo un problemilla con la organización de la herencia..

Vasmos a ver, tengo una clase PROVEEDOR,otra SEDE,otra DOCUMENTOS y otra
CONTACTOS.

SEDE, DOCUMENTOS y CONTACTOS heredan de proveedor,pero claro, el
planteamiento es que SEDE,DOCUMENTOS y CONTACTOS pertencen a cada
instancia
del PROVEEDOR.

Es decir, un PROVEEDOR, tiene dentro varias SEDES, varios DOCUMNETOS y
varios CONACTOS. Como puedo hacer para que cuando llene un objeto de
proveeodr, pueda llenar a la vez todos los datos solicitados en
sedes,documentos y contactos????

Seguro que es una tonteria, o no..no se, no se como hacerlo ya que no es
una
herencia de vehiculo - coche o vehiculo - camino,si no que seria vehiculo
-coche,camion,moto...

Mi unica ocurrencia:

1. Dentro de la clase principal creo un objeto de cada subclase que
pertenece a la principal,por lo que no heredeo.

class proveedor
{

public Sede a = new Sede();
public Contacto b = new Sede();

class sede
{
}

class contacto
{
}

}

y cuando instancie en el "main"

proveedor c = new proveedor();
c.b.loquesea...
c.a.loquesea...

milista.Add(c);

por lo que dentro de c tendria toda la estructura

No se ya me decis.

Millones de gracias!

Francesc Jaumot
Respuesta Responder a este mensaje
#2 Francesc
09/07/2007 - 16:16 | Informe spam
Holas!

Si ya me veia yo que no debía usar herencia... así que utilizare la pensada
que he planteado antes.

Mil gracias por la ayuda! ;)

Francesc Jaumot


"Alberto Poblacion" wrote:

Lo que quieres no es "herencia" sino "agregación", que son conceptos
distintos. Tus clases SEDE, DOCUMENTOS y CONTACTOS no heredan de PROVEEDOR,
sino que están agregadas dentro de PROVEEDOR.

La forma de implementarlo que indicas es razonablemente correcta, es decir,
dentro del proveedor declaras variables de los tipos Sede, Documentos, etc.
Estas clases se inicializan donde sea oportuno, que según tu código es el
constructor, pero podría haber otras formas de hacerlo según como deba
comportarse el programa. Por ejemplo, si no todos los proveedores tienen que
tener documento, puedes dar acceso al documento exclusivamente a través de
una propiedad y que sea la propiedad la que lo inicialice (si no está ya
inicializado) en el momento de usarla, y si no la usas nunca, no se crea el
documento. De esta misma forma se pueden hacer múltiples variantes,
dependiendo de los casos de uso que requiera tu diseño de aplicación.


"Francesc" wrote in message
news:
> Holas, tengo un problemilla con la organización de la herencia..
>
> Vasmos a ver, tengo una clase PROVEEDOR,otra SEDE,otra DOCUMENTOS y otra
> CONTACTOS.
>
> SEDE, DOCUMENTOS y CONTACTOS heredan de proveedor,pero claro, el
> planteamiento es que SEDE,DOCUMENTOS y CONTACTOS pertencen a cada
> instancia
> del PROVEEDOR.
>
> Es decir, un PROVEEDOR, tiene dentro varias SEDES, varios DOCUMNETOS y
> varios CONACTOS. Como puedo hacer para que cuando llene un objeto de
> proveeodr, pueda llenar a la vez todos los datos solicitados en
> sedes,documentos y contactos????
>
> Seguro que es una tonteria, o no..no se, no se como hacerlo ya que no es
> una
> herencia de vehiculo - coche o vehiculo - camino,si no que seria vehiculo
> -coche,camion,moto...
>
> Mi unica ocurrencia:
>
> 1. Dentro de la clase principal creo un objeto de cada subclase que
> pertenece a la principal,por lo que no heredeo.
>
> class proveedor
> {
>
> public Sede a = new Sede();
> public Contacto b = new Sede();
>
> class sede
> {
> }
>
> class contacto
> {
> }
>
> }
>
> y cuando instancie en el "main"
>
> proveedor c = new proveedor();
> c.b.loquesea...
> c.a.loquesea...
>
> milista.Add(c);
>
> por lo que dentro de c tendria toda la estructura
>
> No se ya me decis.
>
> Millones de gracias!
>
> Francesc Jaumot


Respuesta Responder a este mensaje
#3 Rodrigo Juarez
10/07/2007 - 17:19 | Informe spam
Algun framework ORM te permitira realizar ese tipo de tratamiento OO en
forma bastante automatica, una vez que logres configurar todo y hacerlo
andar ;)

Te recomiendo que mires Active Record (en ingles) en
http://www.castleproject.org/active...index.html
Utilizando Active Writer (http://altinoren.com/activewriter/) se
facilita muchisimo el uso de Active Record.

No se cuantos conocimientos tenes de programación. En principio puede
ser complicado, pero a larga, considero que el uso de un ORM existente
agiliza mucho el desarrollo de aplicaciones.

Saludos

Francesc wrote:
Holas!

Si ya me veia yo que no debía usar herencia... así que utilizare la pensada
que he planteado antes.

Mil gracias por la ayuda! ;)





Rodrigo Juarez

www.rodrigojuarez.com.ar
Argentina - Mendoza
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida