Visual Basic.NET - Clases, colecciones, interfaces

 
Vista:

Clases, colecciones, interfaces

Publicado por DreadLord (12 intervenciones) el 23/07/2004 05:14:24
Hola chicos.

Yo otra vez aqui haciendo preguntas de novato (y bueno, lo soy).

Tengo una confusion. Estoy tratando de implementar lo siguiente: Tengo 3 clases, digamos A, B y C, en donde A es un elemento que puede tener n objetos de la clase B y a su vez cada elemento de B puede tener m objetos de la clase C.

Tengo entendido que aqui no conviene usar herencia, ya que en este caso, B no es una clase especial de A, ni tampoco C no es una clase especial de B, por lo tanto al parecer podria usar interfaces.

Como podria implementar esto en vb.net? ya que quisiera tener una coleccion de objetos clase A, de los cuales puedo ocupar algunos metodos de A para usarlos en la clase B, etc.

Por ejemplo, si tengo:

Public Class A
public aa as intener
public function mi_metodo1() as integer
'codigo de de mi metodo
end function
End Class

Public Class B
public bb as intener
public function mi_metodo2() as integer
'codigo de de mi metodo 1
end function
End Class

Public Class C
public cc as intener
public function mi_metodo3() as integer
'codigo de de mi metodo
end function
End Class

Se que tengo que usar algun tipo de coleccion de system.collections pero no se me ocurre como tendria que ser el codigo para lograr esto.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Clases, colecciones, interfaces

Publicado por Edgar (1501 intervenciones) el 23/07/2004 13:32:22
Hola

Si te entendí bien, tu requieres crear 3 clases, con un método que es exáctamente igual para los tres?

Si es así, el uso de interfaces no es la mejor opción, ya que una interfaz solo te define que métodos debes implementar en una clase, más la implementación debes hacerla tu.

En cambio, si usas herencia, puedes definir una clase base donde defines ese método que es común para todos, y simplemente heredas de alli las clases A, B y C. Lo que te digo es que crees una clase D, y que A, B y C sean clases heredadas de D

Ahora bien, si haces esto, pero no quieres que la clase D pueda ser instanciada (que puedas crear una variable de tipo D y hacer new D() ), debes crear una clase abstracta, esto lo haces asi

Public MustInherit Class MiClase

End Class

En esta clase, defines el método que las tres clases van a compartir y luego, al heredarla, completas la definición de la misma.

En cuanto a la colección de objetos, puedes usar la clase ArrayList, es la más sencilla de todas, usas el método Add para agregar un elemento y el Item para obtenerlo, ten precaución, porque el item devuelve un objeto y tendrás que transformarlo al tipo correspondiente con el Ctype

Espero haberte ayudado ..

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Clases, colecciones, interfaces

Publicado por DreadLord (12 intervenciones) el 23/07/2004 15:34:43
Hola Edgar.

Antes que todo, te doy las gracias por contestar.

Ah ya veo... bueno, en realidad no es el mismo metodo para los 3, aunque de todas formas tu respuesta me sirve, ya que tu respuesta acerca de las interfaces me dejo claro que tenia un concepto algo errado sobre lo que hacian (conozco sobre programacion orientada al objeto, pero aun no domino muchos de sus conceptos). De modo que en mi caso, solo me bastaria heredar la clase D y tener el arraylist, sin usar interfaces, tal como me lo explicas.

Un saludo y gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 153
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

RE:Clases, colecciones, interfaces

Publicado por Yamil Bracho (631 intervenciones) el 26/07/2004 19:33:47
Una interface te permite realizar herencia multiple mientras que de una clase solo puedes tener una padre..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar