Ciao a tutta la community!!
Mi scuso per il titolo un pò generico, ma non sono riuscito a trovarne un altro.
Ritorno a rompervi le scatole con questo nuovo quesito.
Allora...ecco cosa mi viene chiesto
Una retta giacente in un piano può essere specificata in diversi modi:
• mediante un punto (x, y) e una pendenza m
• mediante due punti (x1, y1), (x2, y2)
• mediante un’equazione nella forma y = mx + b
• mediante un’equazione nella forma x = a, se la retta è verticale

Realizzate una classe Line dotata di quattro costruttori, corrispondenti ai quattro casi menzionati, e realizzate i metodi:
boolean intersects(Line other)
boolean equals(Line other)
boolean isParallel(Line other)
Ed ecco la classe da me creata
codice:
public class Line 
{
	// Constructors
	public Line (double x, double y, double m)
	{
		initPointX = x;    // coordinata x del punto iniziale
		initPointY = y;   // coordinata y del punto iniziale
		slope = m;        // slope è il coeffiente angolare
	}
	
	public Line (double x1, double y1, double x2, double y2)
	{
		initPointX = x1;              // coordinata x del punto iniziale
		initPointY = y1;             // coordinata y del punto iniziale
		double endPointX = x2;  // coordinata x del punto finale
		double endPointY = y2;  // coordinata y del punto finale
		slope = (endPointY - initPointY) / (endPointX -initPointX);
                // forumula per calcolare il coefficiente angolare
	}
	
	public Line (String equation)
	{
		String sSlope = equation.substring(2, 3);
		slope = Double.parseDouble(sSlope);/* Ricavo la sottostringa m dalla stringa
                 equation e la trasformo in double, assegnando il valore alla variabile slope*/
		String sIntercept = equation.substring(5);
		initPointX = 0;
		initPointY = Double.parseDouble(sIntercept);/* Faccio lo stesso per ricavare la
                            b; le coordinate del punto iniziale della retta sarranno (0, b)*/
	}
	
	public Line (double a)
	{
		initPointX = a;  // coordinata x del punto iniziale
		initPointY = 0;  // coordinata y del punto iniziale (la retta è verticale)
		slope = Double.MAX_VALUE; /* il coefficiente angolare di una retta verticale 
                                                       è infinito */
	}
	
	// Methods
	public boolean isParallel(Line other)
	{
		return(this.slope == other.slope); /* due rette parallele hanno lo stesso
                                                                 coefficiente angolare*/
	}
	
	public boolean isEqual(Line other)
	{
		int equal = 0;
		if (this.slope == other.slope && this.initPointX == other.initPointX && this.initPointY == other.initPointY)
			equal = 1;
		
		return (equal == 1);
         /* Due rette sono uguali se hanno lo stesso coefficiente angolare e un punto in
          comune; in questo caso il punto in comune è il punto iniziale */
	}
	
	public boolean intersects(Line other)
	{
		return (!this.isEqual(other) && !this.isParallel(other));
          // Due rette si incontrano se non sono uguali e non sono parallele
	}
	
	// Instance Fields
	private double initPointX, initPointY;
	private double slope;
		
}

Allora ho parecchie perplessità; la prima, la più grande, riguarda il terzo costruttore. Mi dice di creare un costruttore che crei una linea mediante l'inserimento di una stringa y=mx+b. Tuttavia il problema è che, dando come input una stringa, non posso ricavarmi facilmente il punto iniziale e il coefficiente angolare. Potrei ricavarmele, come ho fatto, tramite un metodo substring; tuttavia la lunghezza della stringa non sarà sempre uguale, magari può esserci uno spazio dopo ogni segno + o = o cose del genere.
Come potrei risolvere? Togliendo di mezzo la stringa e leggendo invece solo m e b come valori double, come ho poi fatto nel quarto costruttore? Penso sia molto meglio come soluzione; tuttavia volevo capire se c'era qualche altro metodo.

Altro problema è confrontare nei metodi predicativi di tipo boolean la linea costurita con una nuova linea da costruire (chiamata other).
Va bene, per esempio, mettere a confronto i coefficienti angolari delle due linee in questo modo: (this.slope == other.slope) ? O è completamente sbagliato?

Attendo pazientemente vostre news

Grazie a tutti per le risposte!!

gl