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


 


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  Contar objetos creados de una clase
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contar objetos creados de una clase  (Leído 6,606 veces)
alexis33de

Desconectado Desconectado

Mensajes: 50


Ver Perfil
Contar objetos creados de una clase
« en: 16 Agosto 2010, 18:01 »

Pues bien veran recien estoy aprendiendo este lenguaje java por mi propia cuenta , entonces cn la ayuda de un libro, y bueno estoy en el tema de clases en java  ;D Y la verdad me entro una duda , veran ahi uso objetos y otros q defino por teclado ,ahora mi duda esta en como hago para contar los objetos , es decir si creo varios objetos por teclado como hago para q los cuente(sorry recien empiezo y no se muchas cosas) . Bueno si alguien me puede dar una idea de como realizarlo. OJO: no es tarea, ni trabajo por lo tanto no es urgente su respuesta SALUDOS
Código
  1. class Pelota
  2. {
  3.    //Datos miembro
  4.    double peso;
  5.    String color;
  6.    String marca;
  7.  
  8.    // Constructores
  9.  
  10.    public Pelota(){
  11.  
  12.    peso = 0.0;
  13.    color = "no definido";
  14.    marca = "no definido";
  15.    }
  16.  
  17.  
  18.    //Este constructor permite recibir datos deste teclado
  19.  
  20.    public Pelota(double elPeso, String elColor, String laMarca){
  21.  
  22.    peso = elPeso;
  23.    color = elColor;
  24.    marca = laMarca;
  25.  
  26.    }
  27.  
  28.    // Metodos set - modifican los datos miembro
  29.  
  30.    public void setPeso(double elPeso)
  31.    { peso = elPeso;
  32.    }
  33.  
  34.    public void setColor(String elColor)
  35.    { color = elColor;
  36.    }
  37.  
  38.    public void setMarca(String laMarca)
  39.    { marca = laMarca;
  40.    }
  41.  
  42.    // Metodos get - muestran la informacion de los datos miembro
  43.  
  44.    public double getPeso()
  45.    { return peso ;
  46.    }
  47.  
  48.    public String getColor()
  49.    {  return color;
  50.    }
  51.  
  52.    public String getMarca()
  53.    { return marca;
  54.    }
  55.  
  56. }
Código
  1. import java.util.Scanner;
  2.  
  3. class CreandoPelotasMain
  4. {
  5.    public static void main(String [] args)
  6.     {
  7.         double elPeso;
  8.         String elColor,  laMarca;
  9.  
  10.  
  11.         //Creacion de objeto Pelota con Constructor por defecto
  12.         Pelota miPelota = new Pelota();
  13.  
  14.         // Mostramos los datos del objeto pelota inicial
  15.  
  16.        System.out.println("peso : " + miPelota.getPeso() ) ;
  17.         System.out.println("color: " + miPelota.getColor() ) ;
  18.         System.out.println("marca: " + miPelota.getMarca() ) ;
  19.  
  20.         // Ponemos valores a los datos del objeto con los metodos set
  21.  
  22.         miPelota.setPeso(1.0);
  23.         miPelota.setColor("Rojo");
  24.         miPelota.setMarca("Adidas");
  25.  
  26.         // Mostramos los datos del objeto luego de llamar a los metodos set
  27.         System.out.println("\n") ;
  28.        System.out.println("peso : " + miPelota.getPeso() ) ;
  29.         System.out.println("color: " + miPelota.getColor() ) ;
  30.         System.out.println("marca: " + miPelota.getMarca() ) ;
  31.  
  32.         //Ingresamos datos por teclado
  33.  
  34.         System.out.println("\n") ;
  35.         Scanner scan = new Scanner(System.in);
  36.        System.out.print("Ingrese el Peso: ");
  37.         elPeso = scan.nextDouble();
  38.         System.out.print("Ingrese el Color: ");
  39.         elColor = scan.next();
  40.         System.out.print("Ingrese la Marca: ");
  41.         laMarca = scan.next();
  42.  
  43.         //Creamos un nuevo objeto y
  44.         //Le pasamos los valores de elPeso, elColor y la laMarca al constructor
  45.  
  46.         Pelota otraPelota = new Pelota(elPeso, elColor, laMarca);
  47.  
  48.         //mostramos el contenido del objeto
  49.  
  50.         System.out.println("\n") ;
  51.        System.out.println("peso : " + otraPelota.getPeso() ) ;
  52.         System.out.println("color: " + otraPelota.getColor() ) ;
  53.         System.out.println("marca: " + otraPelota.getMarca() ) ;
  54.  
  55.  
  56.         }
  57.  
  58. }


En línea

Debci
Moderador
***
Desconectado Desconectado

Mensajes: 2.019


Actualizate o muere!


Ver Perfil WWW
Re: Contar objetos creados de una clase
« Respuesta #1 en: 16 Agosto 2010, 18:26 »

De que objeto quieres saber la length? porque existe o bien la funcion getSize() o getLenght() de los objetos y length a secas que entrega un valor int en el caso de las variables.

Saludos


En línea

alexis33de

Desconectado Desconectado

Mensajes: 50


Ver Perfil
Re: Contar objetos creados de una clase
« Respuesta #2 en: 16 Agosto 2010, 18:39 »

en realidad no el tamaño de caracteres , si a eso te refieres con los get  :P, si no cuantos objetos en total fueron creados osea un valor int  :rolleyes: (x ejm si ingreso por teclado peso que me diga q ya tengo un objeto creado, y si vuelvo a poner otro peso que me diga q tengo 2 y asi sucesivamente)
En línea

Debci
Moderador
***
Desconectado Desconectado

Mensajes: 2.019


Actualizate o muere!


Ver Perfil WWW
Re: Contar objetos creados de una clase
« Respuesta #3 en: 16 Agosto 2010, 18:44 »

en realidad no el tamaño de caracteres , si a eso te refieres con los get  :P, si no cuantos objetos en total fueron creados osea un valor int  :rolleyes: (x ejm si ingreso por teclado peso que me diga q ya tengo un objeto creado, y si vuelvo a poner otro peso que me diga q tengo 2 y asi sucesivamente)
O bien agrupandolos en arrays y luego obteniendo el lenght de estos o viene n un bucle iterativo que valla contando los loops por cada uno que añades...
Ademas lenght no es para el tamaño de los caracteres, si no para el numero de objetos en una estructura de memoria.

Saludos
En línea

DonVidela


Desconectado Desconectado

Mensajes: 1.964



Ver Perfil WWW
Re: Contar objetos creados de una clase
« Respuesta #4 en: 16 Agosto 2010, 18:46 »

en realidad no el tamaño de caracteres , si a eso te refieres con los get  :P, si no cuantos objetos en total fueron creados osea un valor int  :rolleyes: (x ejm si ingreso por teclado peso que me diga q ya tengo un objeto creado, y si vuelvo a poner otro peso que me diga q tengo 2 y asi sucesivamente)
Usa colecciones, arreglos para almacenar los objetos.
En línea

Aprendiendo: Java , C# , pl/sql, mysql , sql server, PHP , Access, JSF, Facelets, JSP, CakePHP, JQuery, Perl, Android

http://pablovidela.wordpress.com
alexis33de

Desconectado Desconectado

Mensajes: 50


Ver Perfil
Re: Contar objetos creados de una clase
« Respuesta #5 en: 16 Agosto 2010, 19:11 »

Pues no tengo mucha experiencia en java  ;D , pero he usado un for para que haga el loop , aun no funciona correctamente pero entendi algo como esto
Código
  1. import java.util.Scanner;
  2.  
  3. class CreandoPelotasMain
  4. {
  5.    public static void main(String [] args)
  6.     {
  7.         double elPeso;
  8.         String elColor,  laMarca;
  9.         int numero[]=new int [11] ;
  10.         int resultado;
  11.         int i;
  12.  
  13.         //Creacion de objeto Pelota con Constructor por defecto
  14.         Pelota miPelota = new Pelota();
  15.  
  16.         // Mostramos los datos del objeto pelota inicial
  17.  
  18.        System.out.println("peso : " + miPelota.getPeso() ) ;
  19.         System.out.println("color: " + miPelota.getColor() ) ;
  20.         System.out.println("marca: " + miPelota.getMarca() ) ;
  21.  
  22.         // Ponemos valores a los datos del objeto con los metodos set
  23.  
  24.         miPelota.setPeso(1.0);
  25.         miPelota.setColor("Rojo");
  26.         miPelota.setMarca("Adidas");
  27.  
  28.         // Mostramos los datos del objeto luego de llamar a los metodos set
  29.         System.out.println("\n") ;
  30.        System.out.println("peso : " + miPelota.getPeso() ) ;
  31.         System.out.println("color: " + miPelota.getColor() ) ;
  32.         System.out.println("marca: " + miPelota.getMarca() ) ;
  33.  
  34.         //Ingresamos datos por teclado
  35.          for (i=1;i<10;i++)
  36.         System.out.println("\n") ;
  37.         Scanner scan = new Scanner(System.in);
  38.  
  39.         System.out.print("Ingrese el Peso: ");
  40.         elPeso = scan.nextDouble();
  41.         System.out.print("Ingrese el Color: ");
  42.         elColor = scan.next();
  43.         System.out.print("Ingrese la Marca: ");
  44.         laMarca = scan.next();
  45.         resultado=numero[i++];
  46.         //Creamos un nuevo objeto y
  47.         //Le pasamos los valores de elPeso, elColor y la laMarca al constructor
  48.  
  49.         Pelota otraPelota = new Pelota(elPeso, elColor, laMarca);
  50.  
  51.         //mostramos el contenido del objeto
  52.  
  53.         System.out.println("\n") ;
  54.        System.out.println("peso : " + otraPelota.getPeso() ) ;
  55.         System.out.println("color: " + otraPelota.getColor() ) ;
  56.         System.out.println("marca: " + otraPelota.getMarca() ) ;
  57.         System.out.println("El numero de objetos es"+resultado);
  58.  
  59.         }
  60.  
  61. }
En línea

Leyer
Moderador
***
Desconectado Desconectado

Mensajes: 782


leyer@elhacker.net


Ver Perfil WWW
Re: Contar objetos creados de una clase
« Respuesta #6 en: 16 Agosto 2010, 19:20 »

Código
  1. int numero[]=new int [11] ;
y eso a que ha venido XD,

Estas usando mal el for en ese caso, se emplean { } para denotar sus sentencias internas

Example:
Código
  1. for(int index=0;index<10;index++){
  2. //sentencias
  3. }

Si no le agregas los {} entonces solo tomara la primera sentencia.

Por lo demás has lo siguiente:
Crea un arreglo de objetos como te lo han dicho, pero al parecer no sabes como hacerlo bueno se hace asi.

Código
  1. Pelota []pelotas=new Pelota[10];
  2.  

y luego utilizas correctamente el for
Código
  1. Scanner scan = new Scanner(System.in);
  2. for(int index=0;
  3.     index<pelotas.length;
  4.         index++){
  5.                     System.out.println("\n") ;
  6.                 System.out.print("Ingrese el Peso: ");
  7.                 elPeso = scan.nextDouble();
  8.                 System.out.print("Ingrese el Color: ");
  9.                 elColor = scan.next();
  10.                 System.out.print("Ingrese la Marca: ");
  11.                 laMarca = scan.next();
  12.                 pelotas[index]=new Pelota(elPeso, elColor, laMarca);
  13.                 System.out.println(":"+(index+1)+" -> Obj creado.");
  14.             }

y ya solo te quedaría recorrer el arreglo de objetos y mostrar los datos de cada uno.

Un saludo.
« Última modificación: 16 Agosto 2010, 19:22 por LEYER » En línea

alexis33de

Desconectado Desconectado

Mensajes: 50


Ver Perfil
Re: Contar objetos creados de una clase
« Respuesta #7 en: 16 Agosto 2010, 19:32 »

HEHE pues recien estoy empezando cn este lenguaje y algunas cosas no se como van en java pero gracias de todas formas  ;D
En línea

Debci
Moderador
***
Desconectado Desconectado

Mensajes: 2.019


Actualizate o muere!


Ver Perfil WWW
Re: Contar objetos creados de una clase
« Respuesta #8 en: 16 Agosto 2010, 21:07 »

HEHE pues recien estoy empezando cn este lenguaje y algunas cosas no se como van en java pero gracias de todas formas  ;D
Hombre de todas formas no que creo que las respuestas han sido buenas no?
Sobretodo LEYER que siempre mete codigos en sus respuestas :)
;D

Saludos
En línea

Didacso

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: Contar objetos creados de una clase
« Respuesta #9 en: 17 Agosto 2010, 14:55 »

Hay ay ay ay ,  veo que estamos todos muy verdes en esto de java , si quieres saber el número de objetos creados de cierta clase lo que has de hacer es  crear una variable estática en la clase , que el constructor le sume uno a dicha variable , eje.

Código
  1. class Persona{
  2. private static int numPersonas;
  3.  
  4. public Persona(){
  5. numPersonas++;
  6. }
  7. public static int getNumeroPersonas(){
  8. return numPersonas;
  9. }
  10. }
  11.  
  12. class PruebaContador{
  13. public static void main(String []arg){
  14. Persona per1 = new Persona();
  15. Persona per2 = new Persona();
  16. Persona per3 = new Persona();
  17. Persona per4 = new Persona();
  18.  
  19. System.out.println("El número de objetos persona es = "+ Persona.getNumeroPersonas());
  20. }
  21. }
  22.  
  23. }
  24.  

otra cosa ,  el código repetido lo podrías poner en funciones para utilizarlo donde quieras ,  si te fijas , en tu código , repites los System.out para imprimir la información de las Pelotas , por que no haces

Código
  1. public void printInfoPelota(Pelota pelota){
  2. System.out.println("peso : " + pelota.getPeso() ) ;
  3.         System.out.println("color: " + pelota.getColor() ) ;
  4.         System.out.println("marca: " + pelota.getMarca() ) ;
  5. }
  6.  
y luego solamente llamarías a la función
Código
  1. printInfoPelota(miPelota);
  2. printInfoPelota(otraPelota);
  3.  

también te recomiendo que te leas la java code conventions

http://www.oracle.com/technetwork/java/codeconv-138413.html


espero que te haya servido.
« Última modificación: 17 Agosto 2010, 15:11 por Didacso » En línea

Nadie alcanza la meta con un solo intento, ni perfecciona la vida con una sola rectificación, ni alcanza altura con un solo vuelo.
ovichan

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: Contar objetos creados de una clase
« Respuesta #10 en: 30 Marzo 2011, 18:24 »

No se si esta el tema ya medio cerrado pero mi duda, surge a si yo quiero contar todas las instancias creadas de todas las clases de mi proyecto. Supongo que deberia utilizar de igual modo una variable para almacenar sus incrementos y que debiera ser una variable de clase no, la que en todos los constructores se almacene, no es asi?

Saludos

EDITO: El crear una variable de clase no serviria, puest que lo he pensado friamente y no serviria de nada. Tendria que crear metodos get en cada clase y luego recolectarlos en otro metodo....
« Última modificación: 30 Marzo 2011, 18:48 por ovichan » En línea

zepheon

Desconectado Desconectado

Mensajes: 30



Ver Perfil
Re: Contar objetos creados de una clase
« Respuesta #11 en: 11 Abril 2011, 13:52 »

No se si esta el tema ya medio cerrado pero mi duda, surge a si yo quiero contar todas las instancias creadas de todas las clases de mi proyecto. Supongo que deberia utilizar de igual modo una variable para almacenar sus incrementos y que debiera ser una variable de clase no, la que en todos los constructores se almacene, no es asi?

Saludos

EDITO: El crear una variable de clase no serviria, puest que lo he pensado friamente y no serviria de nada. Tendria que crear metodos get en cada clase y luego recolectarlos en otro metodo....

Si quieres contar todas las instancias de las clases de tu proyecto puedes usar un atributo static en cada una y acceder a él con un getNombreAtributo() como bien dijo Didacso, o puedes definir las variables dentro del mismo proyecto, y cada vez que creas un objeto (en algún sitio se crearán tus objetos) le sumas uno a la variable correspondiente. Saludos.
En línea

Do or do not, there is no try.

Que la masa por la derivada de la velocidad respecto al tiempo te acompañe.
rccs09

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: Contar objetos creados de una clase
« Respuesta #12 en: 30 Abril 2013, 18:15 »

Si lo que quieres es saber cuantos objetos creaste de una clase en tu aplicacion, lo mas facil, unicamente si la clase la creaste tu mismo (es decir si le puedes agreagr un atributo a la misma), es lo siguiente:

1.- Agrega un "Atributo de Clase" que te sirva como un contador.
   *Que es un atributo de clase??? es un atributo general (o comun) para todos los objetos que se   generen de esta clase.

2.- El contador lo aumentaras cuando se instnacie un nuevo objeto de la clase es decri en su constructor.

EJM:
public class MiClase{
  public static Integer numObjetos;
   public MiClase(){
     numObjetos = numObjetos==null? 1: (numObjetos+1);
   }
}

NOTA: Te servira para saber cuantos objetos de la clase se han creado, NO para saber cuantos exiten (no son null o no entraron en el garbageCollector) en un momento dado.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Polimorfismo y Objetos creados dinámicamente C++ « 1 2 »
Programación C/C++
D4RIO 21 10,285 Último mensaje 10 Enero 2008, 21:02
por darkraider
[SOLUCIONADO] C++: una clase como campo private de otra clase « 1 2 3 »
Programación C/C++
^Winder^ 38 6,674 Último mensaje 6 Octubre 2009, 14:55
por Anibal784
Problema declarando objetos dentro de objetos, ligados entre sí
Programación C/C++
jscupc 9 2,977 Último mensaje 22 Marzo 2010, 02:20
por Littlehorse
Clase interna, acceder a objetos
Java
ltbl 1 2,752 Último mensaje 6 Marzo 2011, 00:03
por sapito169
Problemas con clase,objetos y propiedades
.NET
DanielC# 3 392 Último mensaje 3 Agosto 2013, 20:42
por Novlucker
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines