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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Duda al crear objeto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda al crear objeto  (Leído 3,596 veces)
Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Duda al crear objeto
« en: 10 Marzo 2015, 22:24 pm »

Muy buenas, vuelvo con otra duda :P

En el caso de crear un objeto, que le pasas al constructor un número que por ejemplo es la edad como argumento tipo así :  Objeto obj1 = new Objeto(10);

Si no quisieras que se creara el objeto si la edad es menor de 18, ¿como se haría?

Lo que he hecho ha sido esto en el constructor :

Código
  1. public Objeto(int edad){
  2. if(edad>=18){
  3. this.edad = edad;
  4. }
  5. else{
  6. System.out.println("No puedes crear este objeto con una edad menor de 18");
  7. }
  8. }

El problema es que el objeto lo crea igual, pero no le mete la edad, pero el objeto queda creado, con la edad a null (si no me equivoco).

Como se podría hacer para que directamente ni se crease el objeto ¿? Había pensado en hacerlo desde el main, pedir la nota ahí, haciendo un do-while por ejemplo que la siga pidiendo hasta que sea más de 18 y luego ya que la pase como argumento. Pero me gustaría saber si hay alguna otra forma más correcta de hacerlo.

Gracias de antemano y un saludo :)


En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Duda al crear objeto
« Respuesta #1 en: 10 Marzo 2015, 22:40 pm »

Yo lo haría con un if, primero haría las comprobaciones y si es mayor de 18 creo el objeto, total ya se que tiene mas de 18 años.
En resumen: Comprobaría si la edad es mayor a 18 antes de crear el objeto.

Código
  1. int edad = 19;
  2. if(edad >= 18) {
  3.     Objeto obj = new Objeto(edad);
  4. }
  5. else{
  6.     System.out.println("No puedes crear el objeto");
  7. }


En línea

Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Duda al crear objeto
« Respuesta #2 en: 10 Marzo 2015, 23:06 pm »

Ya, lo había pensado. Y parece una manera sencilla y muy funcional, pero me preguntaba si había otra forma o si se podía hacer desde el mismo constructor.

Pero gracias por la respuesta ¡! Con el código se ve más claro :)
En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Duda al crear objeto
« Respuesta #3 en: 11 Marzo 2015, 00:28 am »

Al llamar al constructor, éste creará el objeto, independientemente si los parámetros pasados cumplan o no una determinada condición o serie de condiciones.

Una manera alterna a lo que deseas hacer es crear una instancia a través de un método, como lo hacemos con el patrón Factory:

Código
  1. public static Objeto createObjeto(int age) {
  2.    if (age >= 18)
  3.        return new Objeto(age);
  4.    return null;
  5. }

Obviamente el constructor debe ser privado para evitar que se creen objetos de la manera tradicional.
« Última modificación: 11 Marzo 2015, 00:59 am por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Duda al crear objeto
« Respuesta #4 en: 12 Marzo 2015, 09:15 am »

Entonces ese método estaría en la clase del objeto, y lo llamarías desde el main en vez de llamar al constructor ¿no?
En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Duda al crear objeto
« Respuesta #5 en: 12 Marzo 2015, 12:34 pm »

Sí. O puede ser en una fábrica, pero si no entiendes el patrón factory hazlo así nomás.

EDITO: Un ejemplo de una factoría muy sencilla:

Código
  1. public class SomeFactory {
  2.  
  3.    public ObjectOne createObjectOne(int age) {
  4.        return (age >= 18) : new ObjectOne(age) ? null;
  5.    }
  6.  
  7.    public ObjectTwo createObjectTwo(boolean state) {
  8.        return (state) : new ObjectTwo() ? null;
  9.    }
  10.  
  11.    public ObjectThree createObjectThree(double price) {
  12.        return (price <= 50.9) : new ObjectThree(price) ? null;
  13.    }
  14. }

Y aquí uno de tus objetos:

Código
  1. public class ObjectoOne {
  2.    private int age;
  3.    // otras propiedades
  4.  
  5.    public ObjectOne() {}
  6.    public ObjectOne(int age) { this.age = age; }
  7.    // getters y setters
  8.  
  9. }

Puedes ver el patrón Abstract Factory con un ejemplo funcional en mi post sobre Patrones de diseño.

Saludos.
« Última modificación: 12 Marzo 2015, 13:36 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Duda al crear objeto
« Respuesta #6 en: 12 Marzo 2015, 13:50 pm »

Ummm entiendo... ¿Se suele utilizar mucho lo del patrón factory? Es la primera vez que lo leo :/

Y funcionaria igual con más argumentos ¿no? simplemente se harían las comprobaciones pertinentes y ya está...

Y el constructor sin parámetros tiene que ponerse siempre aunque no lo vayas a utilizar ¿?
En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Duda al crear objeto
« Respuesta #7 en: 12 Marzo 2015, 18:05 pm »

1) Los patrones de diseño se usan de acuerdo a las necesidades del proyecto.
2) Los argumentos no tienen nada que ver con el funcionamiento de la factoría. Pero sería mejor un objeto que englobe todos esos argumentos que pasarlos uno a uno a la factoría. La factoría tiene como único propósito crear objetos de X tipo para su uso final.
3) Por compatibilidad sí. Aunque si estás 100% seguro que nunca utilizarás el constructor por defecto no lo tienes que implementar.
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
Baal_30

Desconectado Desconectado

Mensajes: 248



Ver Perfil
Re: Duda al crear objeto
« Respuesta #8 en: 13 Marzo 2015, 09:30 am »

Que grande Gus, como siempre, muchas gracias por contestar :)
En línea

«La suerte es el cuidado de los detalles». -Winston Churchill
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como crear un efecto de fuego sobre un objeto
Diseño Gráfico
Velku 5 6,848 Último mensaje 29 Septiembre 2009, 15:53 pm
por Sub_Cero
Crear un objeto dentro de otro objeto
Programación Visual Basic
Tokes 7 6,828 Último mensaje 30 Agosto 2010, 05:41 am
por BlackZeroX
Como crear un objeto sin inicializarlo?
PHP
Skeletron 1 2,586 Último mensaje 5 Enero 2011, 18:14 pm
por AFelipeTrujillo
Crear Objeto Desde Código
.NET (C#, VB.NET, ASP)
Rudy21 7 5,002 Último mensaje 21 Septiembre 2011, 18:00 pm
por Keyen Night
Evitar crear código objeto con CodeBlocks
Programación C/C++
campoy94 0 1,343 Último mensaje 6 Junio 2015, 11:56 am
por campoy94
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines