bombero_7 Posted October 2, 2013 Author Report Share Posted October 2, 2013 (edited) esto tengo hasta el momento, el programa me funciona, solo quiero saber si esta bien como lo hice, o debio ser de otra forma La Clase Public Class Libro Private _titulo As String Private _autor As String Private _editorial As String Public Property titulo As String Get Return _titulo End Get Set(ByVal value As String) If value <> "" Then _titulo = value End If End Set End Property Public Property autor As String Get Return _autor End Get Set(ByVal value As String) If value <> "" Then _autor = value End If End Set End Property Public Property editorial As String Get Return _editorial End Get Set(ByVal value As String) If value <> "" Then _editorial = value End If End Set End Property Public Sub New(ByVal xtitulo, ByVal xeditorial, ByVal xautor) _titulo = xtitulo _editorial = xeditorial _autor = xautor End Sub End Class aqui el formulario Public Class Form1 Dim objarreglo As New ArrayList Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_cargar.Click Dim objlibro As New Libro(txttitulo.Text, txteditorial.Text, txtautor.Text) cargar(objlibro.autor, objlibro.editorial, objlibro.editorial) limpiar() If False = MsgBox("¿desea cargar otro libro?", MsgBoxStyle.OkCancel, "prueba") Then cmd_cargar.Enabled = False End If End Sub Private Sub limpiar() txtautor.Text = "" txteditorial.Text = "" txttitulo.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click ver_arreglo() End Sub Public Sub ver_arreglo() For i = 0 To objarreglo.Count - 1 MsgBox(objarreglo.Item(i)) Next End Sub Private Sub cargar(ByVal objautor As Object, ByVal objeditorial As Object, ByVal objtitulo As Object) objarreglo.Add(objautor) objarreglo.Add(objeditorial) objarreglo.Add(objtitulo) End Sub End Class muchas gracias por su tiempo y ayuda Edited October 2, 2013 by bombero_7 Link to comment Share on other sites More sharing options...
susodicho Posted October 2, 2013 Report Share Posted October 2, 2013 :mmm: ¿No se supone que MsgBox devuelve MsgBoxResult? Además si preguntas "¿Desea cargar otro libro?", sería más lógico que hubiese botones "Sí" y "No", en vez de "Aceptar" y "Cancelar"... Lo otro es que estás usando mal el ArrayList, éste debes usarlo para guardar objetos de la clase Libro, tú lo estás usando para guardar los atributos de los objetos, o sea, si el usuario ingresó un solo libro, el ArrayList ya va a tener 3 elementos, pero sólo debería tener 1. O sea, lo correcto es: n libros ingresados, significan n elementos en el ArrayList. Otras cosas:Creo que deberías verificar que al menos un cuadro de texto tenga algo, supongo que un libro debe tener al menos título... :mmm:No estoy seguro si será buena idea mostrar todos los libros que se han ingresado mostrando un MsgBox por cada libro. Creo que sería mejor usar un ListBox Link to comment Share on other sites More sharing options...
AshWilliams Posted October 3, 2013 Report Share Posted October 3, 2013 Pasó por aquí, sólo para decir que lo que dice susodicho es correcto, te dejo este ejemplo:http://www.java2s.com/Tutorial/VB/0160__Collections/UseArrayListtostoreobjects.htm Saludos Link to comment Share on other sites More sharing options...
bombero_7 Posted October 3, 2013 Author Report Share Posted October 3, 2013 Lo otro es que estás usando mal el ArrayList, éste debes usarlo para guardar objetos de la clase Libro, tú lo estás usando para guardar los atributos de los objetos, o sea, si el usuario ingresó un solo libro, el ArrayList ya va a tener 3 elementos, pero sólo debería tener 1. O sea, lo correcto es: n libros ingresados, significan n elementos en el ArrayList. antes que todo muchisimas gracias a por ayudarme, de verdad se los agradesco mucho sobre eso de guardar los objetos de la clase no lo entiendo, puedes ayudarme a entender esa parte, como los deberia usar con el arraylist, yo pense que era como lo estaba haciendo sobre el msgbox ya lo arregle no me habia percatado de ese detalle Link to comment Share on other sites More sharing options...
susodicho Posted October 3, 2013 Report Share Posted October 3, 2013 Un ArrayList puede contener lo que sea (cualquier tipo de datos), por eso el método Add recibe como parámetro un tipo Object (en .NET, todas clases derivan de la clase Object). Aquí hay un ejemplo usando una clase Persona que tiene 3 atributos: nombre, edad y si es o no donante. Si te fijas, los 2 primeros elementos que se ingresan al ArrayList son objetos guardados en variables (habitante e individuo), mientras que el tercer elemento se agrega a través de un objeto anónimo (se crea el objeto usando el operador New sin usar alguna variable de tipo Persona). Tú eliges de qué forma prefieres agregar elementos al ArrayList... Public Class Form1 Private listado As New ArrayList Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim habitante As Persona Dim individuo As New Persona("Juan Pérez", 43, True) habitante = New Persona("Óscar Tapia", 15, False) listado.Add(individuo) listado.Add(habitante) listado.Add(New Persona("Claudia Jara", 61, True)) End Sub End Class Ahora, el ArrayList ve todos los elementos como tipo Object, así que para poder utilizarlos como el tipo original que son debes hacer una conversión explícita usando Ctype, así podrás acceder a todos los miembros (propiedades, métodos, etc.) del elemento correspondiente. Por ejemplo, para acceder al sexto elemento de un ArrayList que contiene objetos del tipo Persona tendrías que hacer algo como esto:Ctype(listado(5), Persona)Otra cosa, agrégale los tipos de datos a los parámetros del constructor de la clase Libro ;) Link to comment Share on other sites More sharing options...
bombero_7 Posted October 7, 2013 Author Report Share Posted October 7, 2013 bueno no hay caso parece que se me atrofio el cerebro, no logro hacerlo :( Link to comment Share on other sites More sharing options...
AshWilliams Posted October 7, 2013 Report Share Posted October 7, 2013 No es tan difícil man....tienes la clase objeto lista, cada vez que crees un nuevo objeto, tienes que almacenarlo en el arrayList(acá almacenas en cada posisción de la lista, un objeto como un todo y no sus atributos por separado). Checkea el ejempo que puse arriba :tonto: Option Strict On Imports System Imports System.Collections Public Class Employee Private myEmpID As Integer Public Sub New(ByVal empID As Integer) Me.myEmpID = empID End Sub 'New Public Overrides Function ToString( ) As String Return myEmpID.ToString( ) End Function 'ToString Public Property EmpID( ) As Integer Get Return myEmpID End Get Set(ByVal Value As Integer) myEmpID = Value End Set End Property End Class 'Employee Class Tester Shared Sub Main( ) Dim empArray As New ArrayList( ) Dim intArray As New ArrayList( ) Dim i As Integer For i = 0 To 4 empArray.Add(New Employee(i + 100)) intArray.Add((i * 5)) Next i For Each i In intArray Console.Write("{0} ", i.ToString( )) Next i Console.WriteLine(ControlChars.Lf) Dim e As Employee For Each e In empArray Console.Write("{0} ", e.ToString( )) Next e Console.WriteLine(ControlChars.Lf) Console.WriteLine("empArray.Capacity: {0}", empArray.Capacity) End Sub End Class Si te fijas crean un empleado con un atributo idEmpleado y los van almacenado en un arrayList. Lo tuyo debiese ser lo mismo o muy similar, dinos en que parte topas Saludos :krider: Link to comment Share on other sites More sharing options...
bombero_7 Posted October 10, 2013 Author Report Share Posted October 10, 2013 muchas gracias, logre hacerlo al fin, se lo presente al profe y dijo que estaba bien como lo hice, el tema era que en el ejercicio el profe puso usar arraylist (y yo supuse que era ocupar la clase arraylist) y nada que ver, era simplemente crear un arreglo (ejem. dim arreglo(2,2) as string) y nada mas el resto era lo que ya habia realizado en la clase y formulario les estoy muy agradecido por su tiempo y ayuda =) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now