Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Alex Rodríguez

Páginas: 1 [2] 3 4 5 6 7 ... 93
21
Hola, el concepto de interface puede ser un poco difícil de captar al principio. Básicamente lo que hace una interface es definir cómo va a ser una clase en cuanto a cosas que debe cumplir, pero sin especificar el código concreto con el que va a cumplirse eso. Luego puede haber varias clases que cumplan (implementen) la interfaz de distintas maneras en cuanto al código concreto, pero los nombres y parámetros de los métodos definidos por la interfaz tendrán que incluirlos en todo caso. De todas formas este concepto de interface se estudia con más detalle más adelante en el curso, casi al final, por lo que ahora es suficiente con quedarse con la idea.

Respecto al ejercicio el código lo veo bastante bien planteado. Comentar algunas cosas:

- Set se traduce como conjunto y es una interface Java, mientras que List es otra interface Java distinta. Por eso no es lo más adecuado usar nombres para sets de tipo lista1 porque puede confundir. Por ejemplo en lugar de HashSet<String> lista1; sería mejor HashSet<String> conjunto1; ó HashSet<String> miSet1; para no confundir sets con lists.

- En la parte de recorridos con iteradores, creas un iterador para el ArrayList de Set y lo invocas, pero realmente no llegas a usarlo. Es un código "que está pero no se usa", por lo que no es útil. En concreto si comento varias líneas del código, el resultado que obtengo es el mismo porque realmente los iteradores que usas son sólo los del HashSet y los del TreeSet. Aquí el fragmento de código con las líneas comentadas:

Código: [Seleccionar]
        //Iterator<Set> listaIterada = miLista.iterator();    //creando iterador para miLista ArrayList<set>
        Iterator<String> lista1Iterada = lista1.iterator(); //creando iterador para lista1 HashSet<String>
        Iterator<Integer> lista2Iterada = lista2.iterator();//creando iterador para lista2 TreeSet<Integer>
     
        //recorro con un iterador mi HashSet y mi Set ,contenidos en un Arraylist ,recorrido a su vez a traves de un iterador
        //while(listaIterada.hasNext()){
            while(lista1Iterada.hasNext()){
                System.out.print(lista1Iterada.next() + "," );
            }
            while(lista2Iterada.hasNext()){
                System.out.print(lista2Iterada.next());
                if (lista2Iterada.hasNext())
                {
                    System.out.print(",");
                   
                }
            }
            //listaIterada.next();
        //}


Podría hacerse uso del iterador del ArrayList así:

Código: [Seleccionar]
        Iterator<Set> listaIterada = miLista.iterator();    //creando iterador para miLista ArrayList<set>
        Iterator<String> lista1Iterada = lista1.iterator(); //creando iterador para lista1 HashSet<String>
        Iterator<Integer> lista2Iterada = lista2.iterator();//creando iterador para lista2 TreeSet<Integer>
     
        //recorro con un iterador mi HashSet y mi Set ,contenidos en un Arraylist ,recorrido a su vez a traves de un iterador
        while(listaIterada.hasNext()){
            System.out.println("Elemento del ArrayList de Set: "+listaIterada.next());
        }
            while(lista1Iterada.hasNext()){
                System.out.print(lista1Iterada.next() + "," );
            }
            while(lista2Iterada.hasNext()){
                System.out.print(lista2Iterada.next());
                if (lista2Iterada.hasNext())
                {
                    System.out.print(",");
                   
                }
            }


En cualquier caso creo que puede darse el ejercicio por bueno.

Si se quiere ver una solución donde se recorren los elementos del ArrayList, y para cada uno se recorren sus elementos, puede encontrarse en https://aprenderaprogramar.com/foros/index.php?topic=2384.0 donde el bucle se plantea básicamente así:

Código: [Seleccionar]
        while (it1.hasNext()) {
            Set tmp = it1.next();
            Iterator it2=tmp.iterator();
            int i = 0;                               
            while(it2.hasNext()){
                System.out.println("i: " + (i++) + " - " + it2.next());
            }
        }

Correspondiendo el it1 al ArrayList de Set y por cada elemento extraído se crea un iterador it2 dentro del bucle. it1 nos devuelve objetos Set mientras que it2 nos puede devolver bien String bien Integer. Por eso para it2 si no declaramos el tipo, se maneja lo que devuelve como si elementos del supertipo Object.

Saludos

22
Hola, he revisado el ejercicio y aunque el código "funciona" hay varias cosas que habría que corregir.

- En la clase CantanteFamoso hay un comentario que es << * esta clase contiene a los objetos Cantantefamoso >>
Sería más correcto decir << * esta clase define a los objetos Cantantefamoso >> o bien << * esta clase representa a los objetos Cantantefamoso >> ya que la clase no contiene objetos, los define.

- Lo mismo ocurre en la clase ListaCantantesFamosos

- En la clase CantanteFamoso los métodos set no se ajustan a la convención que siguen los miles de programadores Java. Un método set se usa para establecer un atributo a partir de un parámetro o varios parámetros recibidos. Pero aquí los métodos set no reciben parámetros, sino que piden al usuario que introduzca datos por teclado. Esto no está bien planteado desde el punto de vista de la programación orientada a objetos, porque no es responsabilidad de un método set interactuar con el usuario.

- En la clase ListaCantantesFamosos se añaden dos cantantes en el constructor. Esto no debe hacerse, excepto si el ejercicio lo pide explícitamente. En este ejercicio no se pide, luego no es correcto. Esto implicaría que todas las listas se inicializarían con las mismas dos canciones iniciales.

En el hilo https://aprenderaprogramar.com/foros/index.php?topic=2889.0 puede verse una solución correcta con una buena distribución de responsabilidades y ordenación del código. Recomiendo revisarlo. Si te quedan dudas consulta. Saludos.

23
Hola, en este ejercicio faltan las etiquetas de php: inicio de script con <?php y cierre de script con ?>

En este otro hilo se presenta una solución al ejercicio y se comenta el problema de la codificación y cómo resolverlo usando el meta charset: https://aprenderaprogramar.com/foros/index.php?topic=4514.0

Saludos

24
Hola, el ejercicio 2 está bien resuelto. Falta el ejercicio 1. Quien quiera ver una solución completa (tanto ejercicio 1 como ejercicio 2) puede consultar el hilo https://aprenderaprogramar.com/foros/index.php?topic=4511.0

Saludos

25
Hola, el ejercicio está bien resuelto. Pueden verse algunos comentarios interesantes sobre este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=3269.0
Saludos.

26
Hola, para quien revise este ejercicio, está bien resuelto tanto respuestas a las preguntas como el código conforme a lo que pedía el ejercicio. Saludos.

27
Hola, ejercicio bien resuelto, cumpliendo con lo que se pedía. Saludos.

28
Hola, el ejercicio está bien resuelto. Como hay dos líneas que aplican la misma regla CSS (color:green;) se podrían unificar en una si se quiere, como se hace en https://aprenderaprogramar.com/foros/index.php?topic=3699.0

Saludos

29
Hola, el ejercicio está bien resuelto, cumple con lo que se pedía. Saludos.

30
Hola, lo veo todo correcto aunque en el apartado e) yo respondería "Verdadero, teniendo en cuenta lo que se indica en el curso: lo que envuelve a un elemento flotante es el texto de los elementos que vengan a continuación de él (no envuelven las cajas ni imágenes ni otro tipo de elementos, sólo texto) ¿Cuándo envuelve el texto de un elemento posterior a un elemento flotante? Cuando existe ancho (width) suficiente para que el siguiente elemento alcance el borde del elemento flotante y cuando el texto tiene longitud suficiente como para poder apreciar el efecto."

Saludos.

31
Hola, en este ejercicio al hablar de título principal de la página simplemente se refiere a que lo más destacado debe ser la etiqueta h1, y que no debe haber nada de mayor tamaño que lo que se indica para esta etiqueta. El ejercicio está bien resuelto conforme a lo que pedía el enunciado. Saludos.

32
Hola, en el código propuesto falta la etiqueta de declaración <!DOCTYPE html> así como las etiquetas <html> y <head>

De resto está bien resuelto.

Puede verse una solución para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=3045.0

Sobre la cuestión consultada, no es necesario crear dos etiquetas form, en un mismo formulario puede ir el texto y el archivo.

Saludos

33
Hola, observaciones:

1) Se define dentro de la interface Edificio el método public int getNumeroDeOficinas(); Esto puede ser una opción, pero no se ajusta bien si pensamos que hay edificios que quizás no tengan oficinas, por ejemplo un edificio de viviendas.

2) Se propone una clase Construccion, pero esto no se atiene bien al enunciado del ejercicio, donde se hablaba de Polideportivos.

Puede verse una solución correcta a este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=2965.0

Saludos

34
Hola, ejercicio bien resuelto. En realidad la cámara en que trabaja estaba previsto que no se estableciera, sino que fuera <<Congreso>> para los diuputados y <<Senado>> para los senadores, pero eso no tiene mayor importancia. Quien quiera ver otra solución puede consultar https://aprenderaprogramar.com/foros/index.php?topic=2961.0
Saludos

35
Hola, el ejercicio está bien orientado pero con numerosas cuestiones que habría que comentar:

1) Las clases deben nombrarse en singular. Producto en lugar de Productos, porque vamos a crear objetos de tipo Producto, no de tipo Productos.

2) Hay que mantener coherencia a la hora de nombrar clases en el mismo nivel. Se indica por un lado CongeladosPorAire y por otro CongeladoPorAgua. Aquí el usar plural en un sitio y singular en otro parece que no tiene importancia, pero sí puede tenerla.

En este hilo se dan consejos sobre cómo nombrar clases y métodos en Java: https://aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698

3) Hay cuestiones de diseño que no parecen del todo correctas. Por ejemplo en la clase Productos aparece como atributo private GestionarEntrada anio, mes, dia, textoIngresado;
El nombre GestionarEntrada tampoco es del todo correcto. Si es un objeto para gestionar entradas sería preferible GestorDeEntradas en lugar de GestionarEntrada. Este nombre es más propio de un método que de una clase.
El hecho de que la clase Productos tenga como atributos objetos de tipo GestionarEntrada no es un diseño del todo correcto. Cada clase define un tipo que permite crear objetos, y cada objeto debe tener unas responsabilidades bien delimitadas. En este ejercicio no parece tener lógica que dentro de la clase Productos existan atributos GestionarEntrada porque no se ve razón para que esto sea así.

4) Más cuestiones de diseño: en la clase Productos aparecen peticiones de datos por consola al usuario. Esto tampoco es muy razonable: un producto contiene información y permite su modificación, pero no pide nada al usuario. Pedir algo al usuario tendrá que ser responsabilidad de otros objetos de tipo Gestor, o bien del main, pero no de un producto.

5) Más cosas de diseño: en la clase ProductosFrescos no se define nada, cuando podría haberse aprovechado para definir aspectos o métodos comunes a las subclases, favoreciendo la reutilización de código. Lo mismo ocurre con ProductosCongelados. Ver por ejemplo esta solución: https://aprenderaprogramar.com/foros/index.php?topic=5590.0

6) Se nombra una clase como ProductosPreservados. Este nombre no aparece en el enunciado del ejercicio.

Puede verse una solución correcta para este ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=2342.0

Saludos

36
Hola, el ejercicio está bien orientado. Observar que:

1) Las clases deben nombrarse en singular. Producto en lugar de Productos, porque vamos a crear objetos de tipo Producto, no de tipo Productos.

2) Hay que mantener coherencia a la hora de nombrar clases en el mismo nivel. Se indica por un lado CongeladosPorAire y por otro CongeladoPorAgua. Aquí el usar plural en un sitio y singular en otro parece que no tiene importancia, pero sí puede tenerla.

En este hilo se dan consejos sobre cómo nombrar clases y métodos en Java: https://aprenderaprogramar.com/foros/index.php?topic=3035.msg13698#msg13698

En este otro hilo hay algunos comentarios interesantes sobre este ejercicio: https://aprenderaprogramar.com/foros/index.php?topic=2360.0

Saludos

37
Hola, el ejercicio está bien resuelto. En el hilo https://aprenderaprogramar.com/foros/index.php?topic=2354.0 puede verse otra solución y algunos comentarios interesantes. Saludos.

38
Hola, este ejercicio está correcto. En el hilo https://aprenderaprogramar.com/foros/index.php?topic=3140.0 pueden verse algunos comentarios interesantes. Saludos.

39
Hola, este ejercicio tiene cierta complicación debido a que es necesario hacer casting entre tipos de datos para evitar warnings del compilador.

El mensaje class java.lang.String cannot be cast to class java.util.Set haría referencia a que no se puede asignar a un String el contenido de un Set porque un String es una cadena de caracteres y un Set un conjunto de objetos, por tanto no existe correspondencia directa entre uno y otro tipo.

La solución planteada no está mal del todo pero tampoco está correcta, ya que el ejercicio pedía "usar iteradores" y en la solución propuesta, además de iteradores se usa un for extendido.

Puede verse una solución correcta para el ejercicio en https://aprenderaprogramar.com/foros/index.php?topic=2384.0

Saludos

40
Hola, el ejercicio está bien resuelto si bien hay dos líneas que se pueden eliminar. Estas líneas son, en el último for, las siguientes:

int i = 0;
i += 1;

Al ser un for each no necesita de este contador.

Saludos

Páginas: 1 [2] 3 4 5 6 7 ... 93

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".