Java - Segmentos

 
Vista:
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 11/12/2018 13:51:58
Buenas, tengo una clase ya realizada en la que tengo 3 objetos puntos creados (realmente 2, el tercero es una copia del primero), pedí ayuda por aquí y al final conseguí comprenderlo, la cosa es que ahora en otra clase me pone

"Implementar una clase Segmento, con dos atributos. El primero es el punto del extremo izquierdo y el segundo es el punto del extremo derecho. Tendrá los siguientes métodos: get y set de todos los atributos pendiente, que devuelve la pendiente del segmento → (Y2–Y1)/(X2-X1) sonConsecutivos, que devuelve true si el segmento que se le pasa como argumento empieza en el mismo punto donde acaba el original. sonIguales, que devuelve true si ambos empiezan y terminan en los mismos puntos. Nota: Será necesaria la utilización de la clase Punto del ejercicio anterior."

Mi duda realmente viene con la primera línea, no se a que se refiere con el punto extremo izquierdo y el punto extremo derecho, gracias de antemano.
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Kabuto (1381 intervenciones) el 11/12/2018 14:22:53
La primera linea se refiere a que un Segmento, tiene dos puntos en cada extremo, uno a la izquierda y otro a la derecha (suponiendo que no sea completamente vertical, entonces uno estaría arriba y el otro abajo.)

El segmento es la union entre eso dos puntos. Se podría representar así gráficamente, con un pùnto en cada extremo:

Punto A |--------------------| Punto B


Así que para codificar en programacion un segmento. Sería algo así.

public class Segmento {
private Punto A;
private Punto B;
}


Esos atributos Punto A y Punto B, cada uno tienen sus propios atributos (X e Y), mediante los cuáles se pueden realizar los cálculos que piden los metodos getPendiente(), sonConsecutivos() y sonIguales()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 11/12/2018 14:41:45
No se si recuerdas la clase en la que se basa, https://www.lawebdelprogramador.com/foros/Java/1677202-Cosas-muy-simples.html#i1677214
pero más que nada si por ejemplo tengo 2 puntos, punto1 sería por ejemplo 3,5 y punto2 4,6 ¿como hago para hayar los segmentos? son puntos totalmente random pero es más que nada para saber como se hace el proceso para hallarlos,
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: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 11/12/2018 15:14:20
Por si no se ha quedado claro, si sobre entiendo que cada punto es un segmento, lo que no se es cual es el izquierdo y cual el derecho
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Kabuto (1381 intervenciones) el 11/12/2018 15:53:19
No.
Cada punto, NO es un segmento.
Para tener un segmento, necesitas dos puntos.

Sobre como saber cual punto es el derecho, y cual el izquierdo....
Para este ejercicio, en realidad, esto es irrelevante.

Pero para que quede claro que es lo que se está intentando representar, lo vamos a ver perfectamente en la imagen de abajo.

La posicion de los puntos se calcula en base a un plano cartesiano

Un plano cartesiano son dos ejes en forma de cruz. Cada eje representa una dimension. Por eso en el otro ejercicio hablabamos de plano bidimensional: dos ejes, dos dimensiones.

El eje horizontal (dimension izquierda a derecha) representa la X.
El vertical (dimension arriba a abajo) la Y.

Cada eje tiene unos numeros de coordenadas, siendo la coordeanadas 0,0 justo el centro del plano, ahí donde los dos ejes hacen interseccion.

Desde ese punto, lo valores positivos del eje X van hacia la derecha, los valores negativos van a la izquierda
Los del eje y, los valores positivos van hacia arriba, los valores negativos van hacia abajo.

Esto significa que un Punto con atributos X = -4 , Y = -3, estará en la parte inferior izquierda del plano cartesiano.
Y un Punto con atributos X = 3 , Y = 4, estará en la parte superior derecha

El Segmento es simplemente la línea que une dichos Puntos, por eso para representar un Segmento, necesitamos dos Puntos.

Observa la imagen, el segmento es la línea roja:

plano

Así que si quieres saber cual es el punto derecho, y cual el izquierdo, basta con comparar los valores de los atributos X.
El Punto que tenga el valor X más bajo, estará a la izquierda del Punto que tenga un valor X más alto.

Como puedes ver en la imagen, ese Segmento tiene una pendiente, es decir, está inclinado..

El valor de esa pendiente se calcularía usando la fórmula que te daba el enunciado: (Y2–Y1)/(X2-X1)

Si consideramos el punto izquierdo como el Punto 1, y el otro como Punto 2, tenemos que (ojo al restar valores negativos):

(4 - (-3)) / (3 - (-4)) = 7 / 7 = 1

El valor de la pendiente es 1, en el caso del Segmento de esa imagen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 11/12/2018 16:04:57
Muchisimas gracias, estaba pensando lo de la x pero me parecia que me estaba equivocando, me salvas la vida.
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: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 11/12/2018 19:57:02
Gracias, y por ahora creo que va bien
punto1

Pero me preguntaba si se podía hacer de alguna forma, ya que veo extraño lo que he hecho, intenté hacerlo de esta forma
punto

Pero fui incapaz, osea si tengo que decir que uno de los 2 puntos es el puntoizquierda y otro el puntoderecha ya no puedo sacar sus valores fuera, a lo que voy es que en la pendiente tengo que restar Y de puntoderecha - Y de puntoizquierda / x de Puntoderecha - X de puntoizquierda | Pero al meter punto1 y punto2 en estos ya no puedo decirle que me diga la X y la Y de estos 2 objetos.

También lo he hecho de este método

punto2
Pero es lo mismo, lo que me pregunto es si lo podría poner de algún modo para poder restar Y de puntoderecha menos el Y de puntoizquierda diréctamente de ese objeto donde antes metí punto1 y punto2.
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Kabuto (1381 intervenciones) el 11/12/2018 22:17:46
Hola.

No necesitas tantos atributos para la clase Segmento. "Pendiente" no tiene porque ser un atributo, tan solo necesitamos un método que la calcule.

De hecho, solo necesitas dos atributos: el Punto izquierdo y el Punto derecho.

1
2
3
4
public final class Segmento {
 
	private Punto puntoIzq;
	private Punto puntoDer;

Sobre el constructor.
Para asignar los Puntos no es necesario que hagas hagas un new Punto con sus datos X e Y.
En principio, podría bastarnos con una simple asignacion:
1
2
3
4
5
6
7
8
9
10
11
12
13
public Segmento(Punto p1, Punto p2)
{
    if (p1.getX() < p2.getX()) //p1 sera el punto izquierdo
    {
        puntoIzq = p1;
        puntoDer = p2;
    }
    else //p2 sera el punto izquierdo
    {
        puntoIzq = p2;
        puntoDer = p1;
    }
}

Ahora bien, voy a explicar una cosa sin extenderme mucho (lo intentaré), que podría justificar el hecho de EVITAR una simple asignacion.
Espero no liarte más con esto que explico ahora...
En Java los objetos se pasan por REFERENCIA.
Esto significa que si al constructor de Segmento le paso un Punto y lo recojo con una simple asignacion, en realidad el atributo Punto de este Segmento no tiene una COPIA del Punto recibido, sino una REFERENCIA.. algo así como un enlace, un link...

Significa que si durante el programa yo modifico ese Punto, por algun motivo, también estaré modificando el atributo del Segmento sin darme cuenta. Y posiblemente yo no quiero que esto suceda.

Mira este pequeño código de ejemplo:
1
2
3
4
5
6
Punto punto = new Punto(-3, -4);
Segmento segmento = new Segmento(punto, new Punto(6, 7));
System.out.println("\n\n" + segmento.toString());
System.out.println("\nModificando el Punto....");
punto.desplazarX(45);
System.out.println("\n\n" + segmento.toString());

Primero creo un Punto.
Luego creo un Segmento, usando este Punto como primer parametro, y un Nuevo Punto como segundo parametro.
Luego muestro en pantalla los datos del Segmento, estos son, los valores X e Y de cada uno de sus Puntos.

Luego, modifico el Punto. Atención, yo no modifico el Segmento, modifico el Punto
Y tras esta modificacion, vuelvo a mostrar otra vez los datos del Segmento que, repito, NO LO HE MODIFICADO.

Mira que salida obtengo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Coordenadas del Punto Izquierdo:
	Posicion X = -3 Posicion Y = -4
Coordenadas del Punto Derecho:
	Posicion X = 6 Posicion Y = 7
Pendiente calculada: 1,00
 
Modificando el Punto....
 
 
Coordenadas del Punto Izquierdo:
	Posicion X = 42 Posicion Y = -4
Coordenadas del Punto Derecho:
	Posicion X = 6 Posicion Y = 7
Pendiente calculada: 0,00

Oh shit!!!
El Segmento también se ha visto modificado. Yo no lo he tocado, yo toqué el Punto.
Pero como el atributo del Segmento tiene una REFERENCIA a este Punto, todo lo que le ocurra a este Punto, se verá reflejado en el atributo del Segmento.

Lo normal es que yo no desee que esto ocurra. De hecho, se ha producido una inconsistencia. Al modificar el Punto y verse afectado el Segmento, ahora el Punto IZquierdo del Segmento tiene un valor X que en realidad le situaría en la Derecha y no en la Izquierda.

Total, que ha ocurrido un desastre. Y se debe a que en el constructor de Segmento, hemos usado una simple asignacion para recoger los parametros.

Para evitar este desastre, se puede justificar hacer lo que TU habías hecho. Crear nuevos Puntos a partir de los parametros recibidos, de este modo, ya no tenemos "peligrosas" REFERENCIAS, sino auténticas COPIAS de los valores recibidos.

Sin embargo, acuerdate de que la clase Punto ya le escribimos un metodo para crear copias de sí mismo (probablemente ya preveyendo este problema que he relatado aquí).
Así que tu constructor, siendo correcto, se puede simplificar de este modo.
1
2
3
4
5
6
7
8
9
10
11
12
13
public Segmento(Punto p1, Punto p2)
{
    if (p1.getX() < p2.getX()) //p1 sera el punto izquierdo
    {
        puntoIzq = p1.copia();
        puntoDer = p2.copia();
    }
    else //p2 sera el punto izquierdo
    {
        puntoIzq = p2.copia();
        puntoDer = p1.copia();
    }
}

Ahora ya no asignamos REFERENCIAS a los objetos recibidos por parametros.
Ahora lo que asignamos son COPIAS.

¿Volverá a ocurrir de nuevo el problema de que al modificar el Punto original se ve afectado también el Segmento?
Vamos a comprobarlo.
Si ejecutamos el mismo codigo de antes, ahora ya con el nuevo constructor para Segmento:
1
2
3
4
5
6
Punto punto = new Punto(-3, -4);
Segmento segmento = new Segmento(punto, new Punto(6, 7));
System.out.println("\n\n" + segmento.toString());
System.out.println("\nModificando el Punto....");
punto.desplazarX(45);
System.out.println("\n\n" + segmento.toString());

Obtenemos esta salida:
1
2
3
4
5
6
7
8
9
10
11
12
13
Coordenadas del Punto Izquierdo:
	Posicion X = -3 Posicion Y = -4
Coordenadas del Punto Derecho:
	Posicion X = 6 Posicion Y = 7
Pendiente calculada: 1,00
 
Modificando el Punto....
 
Coordenadas del Punto Izquierdo:
	Posicion X = -3 Posicion Y = -4
Coordenadas del Punto Derecho:
	Posicion X = 6 Posicion Y = 7
Pendiente calculada: 1,00

¡¡Aja!! Ahora sí está bien. Modificar el Punto ya no afecta para nada al Segmento.


Y bueno, aclarado este tema para el constructor, vamos a pasar a los metodos.

El de calcular la pendiente.
Como dije antes, no necesitamos que este valor sea un atributo.
Solo necesitamos un metodo que lo calcule.

Y este metodo no tiene que recibir "otros Puntos" por parametros. Ha de calcular la pendiente usando los Puntos que tenemos como atributos.

1
2
3
4
public double getPendiente() {
 
	return (puntoIzq.getY()-puntoDer.getY()) / (puntoIzq.getX()-puntoDer.getX());
}

Ya está, es tan sencillo como esto. Yo he preferido que calcule el valor y lo retorne como un double.
Otra opcion puede ser que lo muestre en pantalla directamente con System.out.
Sin embargo, en teoría, es posible que un matemático quiera hacer calculos con el valor de la pendiente, así que necesitará recibir el valor numérico, y no un simple texto en pantalla.

Aún quedan dos metodos más por desarrollar.


El método sonConsecutivos.
Este método sí ha de recibir "otro Segmento" por parametro.
Y ha de comprobar si le punto Izquierdo del "otro Segmento", coincide con el punto Derecho de ESTE segmento.
Si coinciden, es que son consecutivos, porque donde acaba este, comienza el otro.

Pero para hacer esta comparacion se nos plantea un pequeño problema. ¿Cómo podemos ver los Puntos de "otro Segmento"?
Estos atributos son privados (private), es decir, un objeto Segmento puede ver sus propios Puntos, pero no puede ver los Puntos de otro objeto Segmento distinto.
Para que si puedan verse, tenemos que añadirle a la clase Segmento un par de getters que nos devuelvan los Puntos, para que así poder superar esta "privacidad" y que los objetos Segmento puedan mostrar sus Puntos a otros objetos y así poder compararlos.

Asi que , añadimos getters:
1
2
3
4
5
6
7
public Punto getPuntoIzquierdo() {
	return puntoIzq;
}
 
public Punto getPuntoDerecho() {
	return puntoDer;
}

Y ahora sí, podemos comprobar si un segmento recibido por parametro, es consecutivo de ESTE segmento.
Que por cierto, para hacerlo, nos ayudamos el metodo sonIguales() que escribimos anteriormente para la clase Punto.
Si el punto Derecho de ESTE segmento, es igual al punto IZquierdo del OTRO Segmento, es que son CONSECUTIVOS.

1
2
3
public boolean sonConsecutivos(Segmento otroSegmento) {
	return puntoDer.sonIguales(otroSegmento.getPuntoIzquierdo());
}


El otro metodo nos pide comprobar si dos segmentos son iguales.
Es parecido a lo que acabamos de hacer.
Recibimos OTRO Segmento, comprobamos si sus puntos izquierdo y derecho son iguales a los de ESTE segmento.
En caso afirmativo, es que los Segmentos son IGUALES:
1
2
3
public boolean sonIguales(Segmento otroSegmento) {
	return (puntoIzq.sonIguales(otroSegmento.getPuntoIzquierdo()) && puntoDer.sonIguales(otroSegmento.getPuntoDerecho()));
}

Por último, también nos puede venir bien crear un metodo toString() para la clase Segmento. Para facilitarnos mostrar su informacion luegoi por pantalla.
Nos ayudaremos del metodo toString() que escribimos para la clase Punto, para informar de los valores X e Y de cada atributo Punto.
Y además, ya puestos, podemos añadir que informe también de la Pendiente:

1
2
3
4
5
6
7
8
@Override
public String toString() {
	StringBuilder cadena = new StringBuilder();
	cadena.append("Coordenadas del Punto Izquierdo:\n\t" + puntoIzq.toString());
	cadena.append("\nCoordenadas del Punto Derecho:\n\t" + puntoDer.toString());
	cadena.append(String.format("\nPendiente calculada: %.2f", getPendiente()));
	return cadena.toString();
}

Con esto ya tenemos una clase Segmento completada.

Ahora podemos ponerla a prueba en una clase Test.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public final class TestSegmento {
 
	public static void main(String[] args) {
 
		Segmento segmento1 = new Segmento(new Punto(-4, -3), new Punto(3, 4));
		Segmento segmento2 = new Segmento(new Punto(12, -3), new Punto(-8, 45));
 
 
		System.out.println("\tDatos Segmento 1\n" + segmento1.toString());
		System.out.println("\n\n\tDatos Segmento 2\n" + segmento2.toString());
		System.out.println("\n");
		System.out.println(segmento1.sonConsecutivos(segmento2)?"Los segmentos SI son consecutivos":
			"Los segmentos NO son consecutivos");
 
		System.out.println(segmento1.sonIguales(segmento2)?"Los segmentos SI son iguales":
			"Los segmentos NO son iguales");
 
	}
 
}


Y por ultimo te dejo la clase Segmento al completo
Cualquier duda, cosa rara que no haya entendido, lo que sea... pregúntalo por aquí y lo aclaramos.
Saludos.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
public final class Segmento {
 
	private Punto puntoIzq;
	private Punto puntoDer;
 
	public Segmento(Punto p1, Punto p2)
	{
		if (p1.getX() < p2.getX()) //p1 sera el punto izquierdo
		{
			puntoIzq = p1.copia();
			puntoDer = p2.copia();
		}
		else //p2 sera el punto izquierdo
		{
			puntoIzq = p2.copia();
			puntoDer = p1.copia();
		}
	}
 
	/**
	 * Devuelve el Punto izquierdo de ESTE segmento
	 * @return Punto izquierdo
	 */
	public Punto getPuntoIzquierdo() {
		return puntoIzq;
	}
 
	/**
	 * Devuelve el Punto derecho de ESTE segmento
	 * @return Punto derecho
	 */
	public Punto getPuntoDerecho() {
		return puntoDer;
	}
 
	/**
	 * Devuelve el valor de la pendiente de ESTE segmento.
	 * @return double valor de la pendiente.
	 */
	public double getPendiente() {
 
		return (puntoIzq.getY()-puntoDer.getY()) / (puntoIzq.getX()-puntoDer.getX());
	}
 
	/**
	 * Comprueba si el Segmento recibido por parametro es 
	 * consecutivo de ESTE segmento. Consideramos que son consecutivos
	 * si el otro Segmento comienza (Punto Izquierdo) en el mismo punto donde
	 * acaba ESTE Segmento(Punto Derecho).
	 * @param otroSegmento Segmento a comprobar si es consecutivo
	 * @return true si son consecutivos, false si no lo son
	 */
	public boolean sonConsecutivos(Segmento otroSegmento) {
		return puntoDer.sonIguales(otroSegmento.getPuntoIzquierdo());
	}
 
	/**
	 * Comprueba si el Segmento recibido por parametro es
	 * igual que ESTE Segmento. Consideramos que son iguales si
	 * los Puntos Izquierdo y Derecho de ESTE segmento son iguales a los
	 * Puntos Izquierdo y Derecho del otro Segmento.
	 * @param otroSegmento Segmento a comprobar si es igual a ESTE
	 * @return true si los segmentos son iguales, false si no lo son
	 */
	public boolean sonIguales(Segmento otroSegmento) {
		return (puntoIzq.sonIguales(otroSegmento.getPuntoIzquierdo()) && puntoDer.sonIguales(otroSegmento.getPuntoDerecho()));
	}
 
	@Override
	public String toString() {
		StringBuilder cadena = new StringBuilder();
		cadena.append("Coordenadas del Punto Izquierdo:\n\t" + puntoIzq.toString());
		cadena.append("\nCoordenadas del Punto Derecho:\n\t" + puntoDer.toString());
		cadena.append(String.format("\nPendiente calculada: %.2f", getPendiente()));
		return cadena.toString();
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 11/12/2018 22:41:22
te agradezco tu ayuda, estaba haciendolo y más o menos había llegado a lo mismo (lo de la copia no, te agradezco muchísimo que me lo hayas explicado), aunque tengo una duda un poco tonta y estúpida pero que me está rayando la cabeza. Al principio del enunciado dice "Implementar una clase Segmento, con dos atributos. El primero es el punto del extremo izquierdo y el segundo es el punto del extremo derecho", si estoy usando un objeto Punto que pertenece a la clase punto, ¿eso cuenta válido como atributos de la clase Segmento?
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: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 11/12/2018 23:17:06
Vale ya entendí que sí, lo único que cuando haces la pendiente no entiendo porque restas Y de la pendiente izquierda menos Y de pendiente derecha, se supone que es la segunda menos la primera.
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Kabuto (1381 intervenciones) el 12/12/2018 00:31:36
Tienes razón, según la formula que da el enunciado serían las Y derecha menos la izquierda, y lo mismo para las X.


Y sí, como atributo de una clase, puedes usar otras clases, de hecho es lo habitual.

Si ahora inventásemos una clase llamada PlanoCartesiano, podría contener atributos de la clase Segmento, que a su vez contendrían atributos de la clase Punto.

La clase Punto, sus atributos son de tipo primitivo int, pero podrían haber sido de la clase Integer, que viene a ser lo mismo que un int, pero representado como un objeto de clase.

Java ha heredado de C/C++ los tipos primitivos: int, double, float, char, boolean.... que no son objetos de clase.
Suelen usarse cuando se está aprendiendo a programar o bien para cosas muy simples como contadores de bucles for o similar.

Pero cuando se avanza más en programacion, se hace más habitual y recomendable usar sus equivalentes objetos de clase: Integer, Double, Float, Char, Boolean...
Los más puristas dicen que así debe hacerse ya que estamos programando en POO (Programacion Orientada a Objetos).

Pero a parte de ese "puritanismo", usar estas clases tiene algunas ventajas y además ciertas estructuras de datos más avanzadas, no admiten tipos primitivos.

Por ejemplo, no se si has usado alguna vez la clase ArrayList (o cualquier otra List). Es parecido a un array primitivo, pero más avanzado y dinámico.
Bien, pues si queremos declarar un ArrayList de numeros enteros, no podemos hacerlo con el tipo int.
Esto daría error de compilacion:
1
ArrayList<int> enteros = new ArrayList<int>();

Obligatoriamente, hay que usar la clase Integer:
1
ArrayList<Integer> enteros = new ArrayList<Integer>();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 13/12/2018 01:38:26
Vale, me ha dado todo pero una cosa que no consigo entender es porque cuando utilizo el set con un objeto no me funciona, lo que me refiero, creo el set

apunto1

luego le introduzco los valores

apunto2

y cuando utilizo el get me da como resultado 0.0

apunto3
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: 27
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Marco (15 intervenciones) el 13/12/2018 02:14:02
Vale, acabo de encontrar el problema, no me funciona utilizar un punto que no le haya puesto valores de la otra clase, a lo que me refiero a que no puedo hacer un segmento2.setPuntoIzquierdo(new Punto(4,4)); ni nada así, tengo que crear el objeto y o ponerle los valores con el set x y el set y de la clase punto o hacer lo de desplazar el punto, a lo que voy es que no puedo darle los números directamente, aunque no se porque.
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 Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Segmentos

Publicado por Kabuto (1381 intervenciones) el 14/12/2018 01:13:06
Humm...
He probado a hacerlo con mi código y si me funciona.

¿Puedes mostrar cómo es tu constructor de la clase Punto? Quizás hay algo mal puesto y el constructor no está recogiendo los valores que le pasas entre parentesis al hacer new Punto() y por eso se quedan en valor 0 hasta que los modifiques con los setters
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