Java - dudas programa con diferentes clases

 
Vista:
sin imagen de perfil
Val: 29
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

dudas programa con diferentes clases

Publicado por Nicolás (16 intervenciones) el 12/11/2017 13:14:23
Hola. Estoy recién aprendiendo a programar con Java. Necesito hacer un programa que me permita mostrar productos. Como java es programación orientada a objetos, decidí intentar creando varios objetos y estableciendo relaciones entre ellos. en mi caso tengo tres: Ingresar productos, mostrar productos y aplicación. Me propuse hacerlo así ya que si necesito agregar o modificar funciones, es más sencillo hacerlo de esta forma, disparando el programa con el objeto programación. No sé si es posible desarrollarlo de esta forma, pero no logro compilar adecuadamente algunas clases de objetos. Alguien me podría orientar?

INGRESAR PRODUCTOS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
public class IngresarProductos {
    private Scanner teclado;
    private String[] categoria;
    private String[] categoriaMarca;
    public void cargar() {
        teclado = new Scanner(System.in);
        categoria = new String[4];
        categoriaMarca = new String[4];
        System.out.println("Carga de productos");
        for(int f=0; f<categoria.length;f++) {
            System.out.print("Ingrese la categoría del producto ");
            categoria[f] = teclado.next();
            System.out.print("Ingrese la marca del producto ");
            categoriaMarca[f] = teclado.next();
        }
    }
}

MOSTRAR PRODUCTOS
1
2
3
4
5
6
7
8
public class MostrarProductos {
    public void imprimir() {
        IngresarProductos nuevo = new IngresarProductos();
        for (int f = 0; f<categoria.length;f++) {
            System.out.println(categoria[f] + " - " + categoriaMarca[f]);
        }
    }
}

APLICACION
1
2
3
4
5
6
7
8
public class Productos {
        public static void main(String[] arg) {
        IngresarProductos nuevo = new IngresarProductos();
        nuevo.cargar();
        System.out.println("Lista de productos ingresados: ");
        nuevo.imprimir();
    }
}
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
Imágen de perfil de Fernando Retuerta

dudas programa con diferentes clases

Publicado por Fernando Retuerta (8 intervenciones) el 12/11/2017 23:47:57
Hola,

Primero debes entender los conceptos de clases y objetos. Las clases no se suelen nombrar con verbos, puesto que no hacen acciones. La clase MostrarProductos e IngresarProductos no reflejan lo que son. Si tienes una clase Producto, mostrarProducto sería una acción que se realiza en un objeto de esa clase. E ingresarProducto otra. Más o menos la estructura sería algo así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Producto {
 
    // Las variables son las propiedades que tendrá tu objeto
    private String[] categoria;
    private String[] categoriaMarca;
 
  public void Producto() {
    // constructor - Aquí debes poner el código de inicialización de tus objetos
  }
 
  // Aquí debes implementar las acciones que se pueden hacer con tus objetos
  cargar() {
  }
 
  mostrar() {
  }
}

De esta manera te funcionará. Si te das cuenta, estabas creando un objeto de una clase IngresarProductos y luego querías imprimirlo, lo cual había puesto en otra clase!!!
Espero que lo hayas entendido.
Un saludo,
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: 29
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

dudas programa con diferentes clases

Publicado por Nicolás (16 intervenciones) el 13/11/2017 04:34:51
Actualicé el código según tus indicaciones. Ahora agregué una funcionalidad más. finalmente tengo tres clases: Categoria, Carro y Aplicación.
En la clase Categoria creo las categorías de productos a través de un array. En la clase carro agrego los elementos del array anterior al array del carro. Y en la clase Aplicación inicio el programa. Solamente tengo la duda de como muestro el array original en la clase Carro y como agrego los elementos de categoría en el array Carro.

CATEGORIA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.util.Scanner;
public class Categoria {
    private Scanner teclado;
    private String[] categoria;
    private String[] categoriaMarca;
    public void cargar() {
        teclado = new Scanner(System.in);
        categoria = new String[4];
        System.out.println("Carga de productos");
        for(int f=0; f<categoria.length;f++) {
      categoriaMarca = new String[4];
             System.out.print("Ingrese la categoría del producto ");
            categoria[f] = teclado.next();
            System.out.print("Ingrese la marca del producto ");
            categoriaMarca[f] = teclado.next();
        }
    }
    public String getCategoria(int indice) {
        return categoria[indice];
    }
    public String getCategoriaMarca(int indice) {
        return categoriaMarca[indice];
    }
    public void imprimir() {
        for (int f = 0; f<categoria.length; f++) {
            System.out.println(categoria[f] + " - " + categoriaMarca[f]);
        }
    }
}

CARRO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.util.Scanner;
public class Carro extends Categoría {
    private Scanner teclado;
    private String respuesta1;
    private String respuesta2;
    private int respuesta3;
    private String[] carro;
 
    public void mostrar() {
        teclado = new Scanner(System.in);
        System.out.println("deseas ver los productos? ");
        respuesta1 = teclado.next();
        if (respuesta1 == "si") {
            System.out.println(Categoria[1]);
        }
    }
    public void carro() {
        teclado = new Scanner(System.in);
        System.out.println("desea ingresar algún producto al carro? ");
        if (respuesta2.equals("si")) {
            System.out.println("ingrese el número del producto ");
            respuesta3 = teclado.nextInt();
            if (respuesta3 == 1) {
                carro[1] = categoría[1];;
            }
        }
    }
}

APLICACION
1
2
3
4
5
6
7
8
9
10
11
public class Aplicacion {
    public static void main(String[] arg) {
        categoria cta = new categoria();
        cta.cargar();
        System.out.println("Lista de productos ingresados: ");
        cta.imprimir();
        Carro cr = new Carro();
        cr.mostrar();
        cr.carro();
    }
}
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
Imágen de perfil de Fernando Retuerta

dudas programa con diferentes clases

Publicado por Fernando Retuerta (8 intervenciones) el 13/11/2017 08:37:12
Hola, yo lo haría de la siguiente manera.

Producto.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Producto {
 
    private String categoria;
    private String categoriaMarca;
 
    public void Producto(String categoria, String categoriaMarca) {
        this.categoria = categoria;
        this.categoriaMarca = categoriaMarca;
 
    }
 
    public String getCategoria() {
        return categoria;
    }
    public String getCategoriaMarca() {
        return categoriaMarca;
    }
}

Aplication.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import java.util.Scanner;
public class Aplicacion {
    public static void main(String[] arg) {
 
        Scanner s = new Scanner(System.in);
        List<Producto> carro = new ArrayList<Producto>();
        String cat, catMarca;
 
        for(int i=0; i<4; i++) {
            System.out.print("Escriba la categoría: ");
            cat = s.next();
            System.out.print("Escriba la categoría marca: ");
            catMarca = s.next();
            carro.add(new Producto(cat, catMarca);
        }
 
        Iterator<Producto> iterator = carro.iterator();
        while(iterator.hasNext()) {
            Producto temp = iterator.next();
            System.out.print(temp.getCategoria());
            System.out.print(temp.getCategoriaMarca());
        }
 
    }
}

Espero te aporte algo.
Un saludo,
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: 29
Ha aumentado 1 puesto en Java (en relación al último mes)
Gráfica de Java

dudas programa con diferentes clases

Publicado por Nicolás (16 intervenciones) el 13/11/2017 15:47:14
Muchas gracias. Yo creo que por ahí va la cosa. Corregí la clase aplicación agregándole esta instrucción: import java.util.*; para ocupar array list. Pero no logro solucionar un problema en la línea de:
1
carro.add(new Producto(cat, catMarca));
El error indica que "constructor Producto in class Producto cannot be applied to given types;
required: no arguments
found: java.lang.String, java.lang.String
reason: actual and formal argument list differ in length".
Me imagino que es por algo mal declarado, pero veo el código y no veo problemas con la declaración de las variables.
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