Como hacer Clase....

29/12/2006 - 09:21 por Ivan Goncalves Sanchez -SICO | Informe spam
Hola a todos, estoy intentando crear una clase que me de la opción de ir
pasando parámetros a los métodos y que me vayan apareciendo otros nuevos a
los que debo pasar parámetros también, pongo un ejemplo que creo que se
entenderá mejor
Supongamos que tengo clientes de 0 a 5 cada cliente tiene coche y moto y
por último cada coche y moto tiene color. Pues me gustaría crear una clase
en la que yo le vaya pasando parametros de seguido y me devuelve el valor
que quiero recuperar

clientes: Juan=0; Pedro=1
vehiculos: coche=0; moto=1
color=rojo,verde..

Dim Miclase as Clase
dim color as string
color=miclase.cliente(0).vehiculo(1).color


Ahora tengo echo lo mismo pero tengo que hacerlo por separado, es decir...

miclase.cliente(0)
miclase.vehiculo(1)
color=miclase.color

Primero le pasé el cliente, y tuve que guardar el valor cliente dentro de la
clase para luego pasarle le tipo de vehiculo sobre el que quiero consultar.
y por fin me devuelva el color

Espero haberlo explicado lo suficientemente para que me entendais y
podais ayudarme Gracias.
 

Leer las respuestas

#1 Albert Lizondo Fernández
29/12/2006 - 11:44 | Informe spam
Hola Ivan, espero que esto te sirva. Saludos.

Public Class Color
Public Enum Constantes
Negro = &H0
Verde = &HFF00
Rojo = &HFF0000
Amarillo = &H80FFFF
Fucsia = &HFFB080
Violeta = &H8020FF
End Enum

Private mActual As Constantes = Constantes.Negro

Public ReadOnly Property Negro()
Get
Return Constantes.Negro
End Get
End Property

Public ReadOnly Property Verde()
Get
Return Constantes.Verde
End Get
End Property

Public ReadOnly Property Rojo()
Get
Return Constantes.Rojo
End Get
End Property

Public ReadOnly Property Fucsia()
Get
Return Constantes.Fucsia
End Get
End Property

Public ReadOnly Property Violeta()
Get
Return Constantes.Violeta
End Get
End Property

Public Property Actual() As Constantes
Get
Return mActual
End Get
Set(ByVal value As Constantes)
mActual = value
End Set
End Property

Public Sub New(ByVal Inicial As Constantes)
mActual = Inicial
End Sub
End Class

Public Class Vehiculo
Protected mMatricula As String
Protected mColor As Color

Public Property Matricula() As String
Get
Return mMatricula
End Get
Set(ByVal value As String)
mMatricula = value
End Set
End Property

Public Property Color() As Color
Get
Return mColor
End Get
Set(ByVal value As Color)
mColor = value
End Set
End Property

Public Sub New(ByVal Matricula As String, ByVal Color As Color)
mMatricula = Matricula
mColor = Color
End Sub
End Class


Public Class Vehiculos
Inherits ArrayList

Default Public Shadows ReadOnly Property Item(ByVal Index As
Integer) As Vehiculo
Get
Return MyBase.Item(Index)
End Get
End Property

Public Overloads Sub Add(ByVal VItem As Vehiculo)
MyBase.Add(VItem)
End Sub
End Class

Public Class Cliente
Protected mNombre As String
Protected mFNacimiento As Date
Protected mNIF As String
Protected mVehiculos As New Vehiculos

Public Property Nombre() As String
Get
Return mNombre
End Get
Set(ByVal value As String)
mNombre = value
End Set
End Property

Public Property FNacimiento() As Date
Get
Return mFNacimiento
End Get
Set(ByVal value As Date)
mFNacimiento = value
End Set
End Property

Public Property NIF() As String
Get
Return mNIF
End Get
Set(ByVal value As String)
mNIF = value
End Set
End Property

Public Property Vehiculo() As Vehiculos
Get
Return mVehiculos
End Get
Set(ByVal value As Vehiculos)
mVehiculos = value
End Set
End Property
End Class

Public Class Clientes
Inherits ArrayList

Default Public Shadows ReadOnly Property Item(ByVal Index As
Integer) As Cliente
Get
Return MyBase.Item(Index)
End Get
End Property

Public Shadows Sub Add(ByVal VItem As Cliente)
MyBase.Add(VItem)
End Sub
End Class

Public Class AppData
Protected mClientes As New Clientes

Public Property Clientes() As Clientes
Get
Return mClientes
End Get
Set(ByVal value As Clientes)
mClientes = value
End Set
End Property
End Class

Public Module AplicacionDemo
Public Sub Aplicacion()
Dim Datos As New AppData
Dim tmpCliente As Cliente

'--
tmpCliente = New Cliente
tmpCliente.FNacimiento = Now
tmpCliente.NIF = "0123456789A"
tmpCliente.Nombre = "Pruebas 1"
tmpCliente.Vehiculo.Add(New Vehiculo("M1234CF", New
Color(Color.Constantes.Amarillo)))
tmpCliente.Vehiculo.Add(New Vehiculo("B2345DG", New
Color(Color.Constantes.Verde)))
Datos.Clientes.Add(tmpCliente)
'--
tmpCliente = New Cliente
tmpCliente.FNacimiento = Now.AddDays(90)
tmpCliente.NIF = "123456789B"
tmpCliente.Nombre = "Pruebas 2"
tmpCliente.Vehiculo.Add(New Vehiculo("9876DCB", New
Color(Color.Constantes.Violeta)))
Datos.Clientes.Add(tmpCliente)
'--
For Ix As Integer = 0 To Datos.Clientes.Count - 1
Debug.Print(DirectCast("Cliente " + (Ix + 1).ToString,
String).PadRight(80, "-"))
Debug.Print("Nombre".PadRight(10, ".") + ": " +
Datos.Clientes(Ix).Nombre)
Debug.Print("NIF".PadRight(10, ".") + ":" +
Datos.Clientes(Ix).NIF)
Debug.Print("Nacido".PadRight(10, ".") + ":" +
Datos.Clientes(Ix).FNacimiento.ToLongDateString)
Debug.Print("Vehiculos".PadRight(10, ".") + ":" +
Datos.Clientes(Ix).Vehiculo.Count.ToString)
For Iy As Integer = 0 To Datos.Clientes(Ix).Vehiculo.Count - 1
Debug.Print(vbTab + "Matricula: " +
Datos.Clientes(Ix).Vehiculo(Iy).Matricula + vbTab + _
", Color: " +
System.Enum.GetName(GetType(Color.Constantes), _

Datos.Clientes(Ix).Vehiculo(Iy).Color.Actual))
If Datos.Clientes(Ix).Vehiculo(Iy).Color.Actual =
Color.Constantes.Verde Then
Debug.Print(vbTab + vbTab + "El verde es color
esperanza.")
End If
Next
Debug.Print("")
Next
End Sub



Ivan Goncalves Sanchez -SICO escribió:
Hola a todos, estoy intentando crear una clase que me de la opción de ir
pasando parámetros a los métodos y que me vayan apareciendo otros nuevos a
los que debo pasar parámetros también, pongo un ejemplo que creo que se
entenderá mejor
Supongamos que tengo clientes de 0 a 5 cada cliente tiene coche y moto y
por último cada coche y moto tiene color. Pues me gustaría crear una clase
en la que yo le vaya pasando parametros de seguido y me devuelve el valor
que quiero recuperar

clientes: Juan=0; Pedro=1
vehiculos: coche=0; moto=1
color=rojo,verde..

Dim Miclase as Clase
dim color as string
color=miclase.cliente(0).vehiculo(1).color


Ahora tengo echo lo mismo pero tengo que hacerlo por separado, es decir...

miclase.cliente(0)
miclase.vehiculo(1)
color=miclase.color

Primero le pasé el cliente, y tuve que guardar el valor cliente dentro de la
clase para luego pasarle le tipo de vehiculo sobre el que quiero consultar.
y por fin me devuelva el color

Espero haberlo explicado lo suficientemente para que me entendais y
podais ayudarme Gracias.


Preguntas similares