elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Duda sobre cómo estructurar un programa con el paradigma POO en java? (Solución)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre cómo estructurar un programa con el paradigma POO en java? (Solución)  (Leído 6,003 veces)
ralymontes

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Duda sobre cómo estructurar un programa con el paradigma POO en java? (Solución)
« en: 28 Agosto 2013, 23:29 pm »

Hola!

Comencé)a hacer un programa, sencillo, para comrpender  POO con Java, ya me quedaron claras algunas cosas.  pero tengo una duda:

Mi programa requiere que haga un arreglo de objetos y luego sobre el arreglo hacer operaciones (son pasajeros de un vuelo con 3 datos destino, origen y nombre), en donde tengo mi clase pasajero tengo los metodos get/set y el constructor.
Hice otra clase (el main), donde según yo desde ahi invoco a los metodos que trabajaran sobre los objetos.
 
Pero mi duda es donde vy creando los objetos que agrego al arreglo? En el main o en la clase pasajero?

Aqui el programa:

Código:
import java.io.*;
import java.util.*;
public class Control
{
    public static void main(String[] args)
    

    {
        
        pasajero array[] =new pasajero [10];
      
        int it='1';
        Scanner entradaEstandar= new Scanner(System.in);
        int op=0;
        String nombre, destino, origen,hora_llegada;
        System.out.println("Programa de de control de Vuelo");
        do
      {
        //pasajero aux=new pasajero();
        System.out.println("Seleccione una opcion o presione '0' para salir");
        System.out.println("\n\n (1) Agregar Pasajero");
        System.out.println("\n (2) Eliminar Pasajero");
        System.out.println("\n (3) Ver lista de los pasajeros");
        op=entradaEstandar.nextInt();
        switch(op)
                {
                case 1:  
                    
                    agregar();
                    break;
                case 2:  
                  //  eliminar.(nombre);
                    break;
                case 3:  
                    //mostrar_todo();
                    break;
                }
        
      }while(it=='0');
    }

public static void agregar(){
       String nom, des, or, hora;
       Scanner entradaEstandar= new Scanner(System.in);
       System.out.println("Escriba el nombre del pasajero:\n");
       nom=entradaEstandar.nextLine();
       System.out.println("Escriba el origen:\n");
       or=entradaEstandar.nextLine();
       System.out.println("Escriba el destino:\n");
       des=entradaEstandar.nextLine();
       System.out.println("Ingresa la hora de arribo:\n");
       hora=entradaEstandar.nextLine();
       pasajero aux=new pasajero();
       aux = new pasajero();
      
    }
  
}

Clase pasajero:

Código:
import java.io.*;
import java.util.*;
public class pasajero
{
    // instance variables - replace the example below with your own
    private String nombre;
    private String hora_llegada;
    private String destino;
    private String origen;

    /**
     * Constructor for objects of class pasajero
     */
    public pasajero()
    {
        // initialise instance variables
        nombre="";
        hora_llegada="";
        destino="";
        origen="";
    }

    public String getNombre()
    {
        return nombre;
    }
    public void setNombre(String nom)
    {
        nombre=nom;
    }
    
     public String getHora_llegada()
    {
        return hora_llegada;
    }
    public void setHora_llegada(String hora)
    {
        hora_llegada=hora;
    }
      public String getDestino()
    {
        return destino;
    }
    public void setDestino(String dest)
    {
        destino=dest;
    }
      public String getOrigen()
    {
        return origen;
    }
    public void setOrigen(String or)
    {
        origen=or;
    }
  
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("\nNombre: ");
        sb.append(nombre);
        sb.append("\nHora Llegada: ");
        sb.append(hora_llegada);
        sb.append("\nDestino: ");
        sb.append(destino);
        sb.append("\nOrigen: ");
        sb.append(origen);    
        return sb.toString();
    }    
}


« Última modificación: 29 Agosto 2013, 17:18 pm por ralymontes » En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #1 en: 28 Agosto 2013, 23:40 pm »

Bueno no se si te e entendido correctamente pero intentare contestarte.

Bién, cuando tu declaras lo siguiente:

Código
  1. pasajero array[] =new pasajero [10];

Has declarado que tendras una array de 10 posiciones, pero aún así, queda todavía inicializar cada una de esas posiciones, por tanto en tu caso a continuación de la declaración deberías hacer lo siguiente:

Código
  1. array[0] = new pasajero();

Y así sucesivamente hasta llenar cada una de las posiciones, en las que cada una de esas posiciones, representa un objeto tipo pasajero distinto, cada uno con sus propias variables.

Para acceder a los métodos y variables sería en tu caso por ejemplo:

Código
  1. array[0].metodo(); //En el caso de un método
  2. array[0].variable; //En el caso de una variable

Eso si, para acceder a estos métodos y variables deberán estar en public o creo recordar que en protected o static, corregidme si me equivoco.

Un saludo.


« Última modificación: 29 Agosto 2013, 00:20 am por Zoik » En línea

ralymontes

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #2 en: 29 Agosto 2013, 00:34 am »

Gracias por la observación del arreglo.

Pero me gustaria que resolvieran la otra duda de como (static, public, etc) y donde debo (en el pricipal o en la clase del objeto) poner los metodos.

Saludos, Raly.
En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #3 en: 29 Agosto 2013, 00:49 am »

A ver que creo que no me has entendido lo que te quería decir, el arreglo, lo creas en la main y para trabajar con el, lo haces desde la main, esto no quiere decir que en main no tengas un método agregar, un método eliminar, y un método mostrar, de echo esta correctísimo.

Lo que te quiero hacer ver es que, si quiero agregar un pasajero, trabajaré desde la main, pero accediendo a los métodos de la class pasajero, es decir:

Código
  1. public static void agregar(){
  2.       String nom, des, or, hora;
  3.       Scanner entradaEstandar= new Scanner(System.in);
  4.       System.out.println("Escriba el nombre del pasajero:\n");
  5.       pasajero[0].setNombre(entradaEstandar.nextLine());
  6.       System.out.println("Escriba el origen:\n");
  7.       pasajero[0].setOrigen(entradaEstandar.nextLine());
  8.       System.out.println("Escriba el destino:\n");
  9.       pasajero[0].setDestino(entradaEstandar.nextLine());
  10.       System.out.println("Ingresa la hora de arribo:\n");
  11.       pasajero[0].setHora_llegada(entradaEstandar.nextLine());
  12.       pasajero aux=new pasajero(); //Estas dos variables no se para que están estaría bien que lo explicases
  13.       aux = new pasajero();
  14.  
  15.    }

Si quieres saber la diferéncia entre los modificadores de las variables y los métodos te recomiendo san google patrón de programadores:
http://mundogeek.net/archivos/2009/03/30/modificadores-en-java/
« Última modificación: 29 Agosto 2013, 00:51 am por Zoik » En línea

ralymontes

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #4 en: 29 Agosto 2013, 01:57 am »

Hola:

Muchas gracias, de hecho eso lo vi en un sitio de internet (los metodos en el main) pero vi otro codigo en donde están en la clase del objeto. A mi parecer esta última opcion es la mas correcta, no? (para separar metodos y variables del resto del programa). A lo que voy con esto es que es lo mas natural hablando del POO.... o una buena costumbre, si no mal entiendo el paradigma.

¿cómo podría hacer esto?

Gracias por la ayuda, los comentarios son acertadísimos.

Saludos, Raly.
En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #5 en: 29 Agosto 2013, 10:19 am »

Bueno pues deberías hacer lo siguiente:

En la class pasajero, en cada uno de los métodos que son set, no le pasarías nada por parámetro y a la variable nombre, por ejemplo le asignarías un valor recogido por teclado, un ejemplo con tu metodo de la class pasajero:

Código
  1. public void setNombre()
  2.    {
  3. Scanner entradaEstandar= new Scanner(System.in);
  4. System.out.println("Escriba el nombre del pasajero:\n");
  5. nombre=entradaEstandar.nextLine();
  6.    }

Entonces teniendo esto así configurado, en tu class Control, para poder asignar un nombre unicamente tendrias que llamar a este metodo así:

Código
  1. array[0].setNombre();
  2. array[1].setNombre();
  3. array[2].setNombre();
  4. array[3].setNombre();

Espero lo hayas entendido, un saludo.
« Última modificación: 29 Agosto 2013, 10:26 am por Zoik » En línea

Fakedo0r

Desconectado Desconectado

Mensajes: 21


Fuera de compás, en una de las 12 dimensiones...


Ver Perfil WWW
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #6 en: 29 Agosto 2013, 12:15 pm »

Yo encuentro mas correcto, a que crees otra clase llamada "GestionPasajero" y desde ahi manejes tus arreglos y todo lo que te haga falta referente al objeto "Pasajero". Así te saldría un código bastante elegante. Imagínate si tienes 2, 3 o 10 clases diferentes, que harás ? Si metes todo en el "Main" tal como tienes ahora, seria un lío, un código muy sucio y ahí la POO perdería toda su gracia.


Saludos.
En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #7 en: 29 Agosto 2013, 13:15 pm »

Si lo haces como dice Fakedoor no tendras que crear métodos static, y si ciertamente te quedara bastante mas limpio.

en la main solo tendrías que poner la instancia de la class "GestiónPasajero".

Un saludo.
En línea

Zoik

Desconectado Desconectado

Mensajes: 91


Ver Perfil
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #8 en: 29 Agosto 2013, 16:27 pm »

Hay lo llevas, no se si estará totalmente bien, pero espero que almenos te ayude:

Código
  1. public class Main {
  2.  
  3. public static void main(String[] args) {
  4. new Control();
  5. }
  6.  
  7. }
  8.  

Código
  1. import java.util.Scanner;
  2.  
  3.  
  4. public class Control {
  5.  
  6. int arraySize = 10;
  7. pasajero array[] = new pasajero[arraySize];
  8. Scanner entradaEstandar= new Scanner(System.in);
  9.  
  10. public Control(){
  11. menu();
  12. }
  13.  
  14. public void menu(){
  15. int op=0;
  16.  
  17. System.out.println("Programa de de control de Vuelo");
  18. do
  19.      {
  20.        System.out.println("Seleccione una opcion o presione '0' para salir");
  21.        System.out.println("\n\n (1) Agregar Pasajero");
  22.        System.out.println("\n (2) Eliminar Pasajero");
  23.        System.out.println("\n (3) Ver lista de los pasajeros");
  24.        op=entradaEstandar.nextInt();
  25.        switch(op)
  26.            {
  27.            case 1:                      
  28.                agregar();
  29.                break;
  30.            case 2:  
  31.             eliminar();
  32.                break;
  33.            case 3:  
  34.                mostrarTodo();
  35.                break;
  36.            }
  37.      }while(op!=0);
  38. }
  39.  
  40. public void agregar(){
  41. int index = checkPassenger();
  42. boolean dniDoubled;
  43. array[index] = new pasajero();
  44. do {
  45. dniDoubled = false;
  46. array[index].setDni();
  47. for(int i = 0; i < arraySize; i++){
  48. if(array[i] != null)
  49. if(array[index].getDni().equals(array[i].getDni()) && i!=index){
  50. System.out.println("El DNI introducido ya existe, vuelva a intentarlo");
  51. dniDoubled = true;
  52. }
  53. }
  54. } while(dniDoubled != false);
  55. array[index].setNombre();
  56. array[index].setOrigen();
  57. array[index].setDestino();
  58. array[index].setHora_llegada();
  59. System.out.println("Pasajero agregado");
  60. }
  61.  
  62. public int checkPassenger(){
  63. int i = 0;
  64. for(i = 0; i < arraySize; i++){
  65. if(array[i]==null)
  66. return i;
  67. }
  68. if(i == arraySize){
  69. System.out.println("Array llena, no se pueden dar de alta mas pasajeros");
  70. menu();
  71. }
  72. return i;
  73. }
  74.  
  75. public void eliminar(){
  76. boolean noResultsFound = true;
  77. String dni;
  78. System.out.println("Escriba el DNI del pasajero:\n");
  79. dni = entradaEstandar.next();
  80. for(int i = 0; i < arraySize-1; i++){
  81. System.out.println(i);
  82. if(array[i] != null)
  83. if(array[i].getDni().equals(dni)){
  84. array[i] = null;
  85. noResultsFound = false;
  86. }
  87. }
  88. if(noResultsFound){
  89. System.out.println("No se encontraron coincidencias");
  90. } else if(!noResultsFound){
  91. System.out.println("Pasajero borrado");
  92. }
  93. }
  94.  
  95. public void mostrarTodo(){
  96. boolean noResultsFound = true;
  97. for(int i = 0; i < arraySize; i++){
  98. if(array[i]!=null){
  99. System.out.println("----------------------");
  100. System.out.println("-- Pasajero "+i+1+" --");
  101. System.out.println(array[i].getDni());
  102. System.out.println(array[i].getNombre());
  103. System.out.println(array[i].getOrigen());
  104. System.out.println(array[i].getDestino());
  105. System.out.println(array[i].getHora_llegada());
  106. noResultsFound = false;
  107. }
  108. }
  109. if(noResultsFound == true){
  110. System.out.println("No se han encontrado pasajeros");
  111. }
  112. }
  113.  
  114. }

Código
  1. import java.io.*;
  2. import java.util.*;
  3. public class pasajero
  4. {
  5.    // instance variables - replace the example below with your own
  6.    private String dni;
  7. private String nombre;
  8.    private String hora_llegada;
  9.    private String destino;
  10.    private String origen;
  11.    private Scanner entradaEstandar= new Scanner(System.in);
  12.  
  13.    /**
  14.      * Constructor for objects of class pasajero
  15.      */
  16.    public pasajero()
  17.    {
  18.        // initialise instance variables
  19.     dni="";
  20.        nombre="";
  21.        hora_llegada="";
  22.        destino="";
  23.        origen="";
  24.    }
  25.  
  26.    public String getDni()
  27.    {
  28.        return dni;
  29.    }
  30.    public void setDni()
  31.    {
  32.     System.out.println("Escriba el DNI del pasajero:\n");
  33.        dni = entradaEstandar.nextLine();
  34.    }
  35.  
  36.    public String getNombre()
  37.    {
  38.        return nombre;
  39.    }
  40.    public void setNombre()
  41.    {
  42.     System.out.println("Escriba el nombre del pasajero:\n");
  43.        nombre = entradaEstandar.nextLine();
  44.    }
  45.  
  46.     public String getHora_llegada()
  47.    {
  48.        return hora_llegada;
  49.    }
  50.    public void setHora_llegada()
  51.    {
  52.     System.out.println("Ingresa la hora de arribo:\n");
  53.        hora_llegada = entradaEstandar.nextLine();
  54.    }
  55.      public String getDestino()
  56.    {
  57.        return destino;
  58.    }
  59.    public void setDestino()
  60.    {
  61.     System.out.println("Escriba el destino:\n");
  62.        destino = entradaEstandar.nextLine();
  63.    }
  64.      public String getOrigen()
  65.    {
  66.        return origen;
  67.    }
  68.    public void setOrigen()
  69.    {
  70.     System.out.println("Escriba el origen:\n");
  71.        origen = entradaEstandar.nextLine();
  72.    }
  73.  
  74.    public String toString() {
  75.        StringBuilder sb = new StringBuilder();
  76.        sb.append("\nNombre: ");
  77.        sb.append(nombre);
  78.        sb.append("\nHora Llegada: ");
  79.        sb.append(hora_llegada);
  80.        sb.append("\nDestino: ");
  81.        sb.append(destino);
  82.        sb.append("\nOrigen: ");
  83.        sb.append(origen);    
  84.        return sb.toString();
  85.    }    
  86. }

Te recomiendo que siempre que trabajes con registros asignes una variable que sepas que siempre será única para cada registro como por ejemplo el DNI o un código númerico, a la hora de hacer algoritmos de busqueda sobretodo te resultara más fácil.
En línea

ralymontes

Desconectado Desconectado

Mensajes: 47



Ver Perfil
Re: Duda sobre cómo estructurar un programa con el paradigma POO en java?
« Respuesta #9 en: 29 Agosto 2013, 17:17 pm »

Hola, Gracias por echarme una mano con esto, ha sido de graaan ayuda.

Con respecto al DNI eso lo sé, pero en este caso por ser un ejemplo sencillo de 10 pasajeros (es una aereolinea con una avioneta XD) no hay problema, sólo queria aclarar mis dudas con respecto a la POO.

Gracias a Todos!

Saludos, Raly.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda sobre java « 1 2 »
Java
HadesDark 13 10,863 Último mensaje 22 Octubre 2006, 17:12 pm
por Un usuario
Duda de programa en java :( condicional simple.
Java
rub'n 9 7,979 Último mensaje 1 Octubre 2010, 01:29 am
por 1mpuls0
¿Cómo puedo estructurar mi librería de clases en sublibrerías? [SOLUCIONADO]
.NET (C#, VB.NET, ASP)
<ИΘZIЭ(ŦB> 4 5,236 Último mensaje 17 Marzo 2011, 03:43 am
por <ИΘZIЭ(ŦB>
Duda con programa java
Java
Gm3z 1 3,210 Último mensaje 4 Diciembre 2012, 14:00 pm
por Gm3z
Duda programa JAVA al leer archivo binario
Java
LoLo2207 3 3,677 Último mensaje 15 Diciembre 2012, 20:23 pm
por LoLo2207
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines