Esercizio 1 — Segment server

nel codice sorgente dato, una classe SegmentClient utilizza una classe Segment locale.

La classe Segment a sua volta usa la classe Point

Untitled

Class Point

public class Point {
	double x, y;
	final double THRESHOLD = 0.0000001;

	public Point(double tx, double ty){
		x=tx; 
		y=ty;
	}

	public double getX(){
		return x;
	}

	public double getY(){
		return y;
	}

	public boolean isEqual(Point p){
		return (Math.abs(x - p.getX()) < THRESHOLD) && 
					 (Math.abs(y - p.getY()) < THRESHOLD);
	}
}

Class Segment

public class Segment {
	private Point p1=null;
	private Point p2=null;

	public Segment(){ }

	public boolean set(Point p1, Point p2) {
		if(!p1.isEqual(p2)) {
			this.p1=p1; this.p2=p2;
			return true;
		} else {
			return false;
		}
	}

	private Point midPoint(){
		double mx,my;
		mx=(p1.getX()+p2.getX())/2;
		my=(p1.getY()+p2.getY())/2;
		return(new Point(mx, my));
	}

	public Point simmetric(Point p) {
		Point m = this.midPoint();
		double simmX=2*m.getX()-p.getX();
		double simmY=2*m.getY()-p.getY();
		return new Point(simmX, simmY);
	}
}

Main

public class SegmentClient {
	public static void main(String[] args) {
		Point p1=new Point(0.0, 0.0);
		Point p2=new Point(4.0, 4.0);
		Point px=new Point(0.0, 4.0);
		Segment sgm=new Segment();
		sgm.set(p1, p2);
		Point simm = sgm.simmetric(px);
		System.out.println("Il punto simmetrico e` (" + simm.getX()+","+simm.getY()+")");
	}
}

Esercizio 1

Si vuole realizzare un server che sia in grado di accettare connessioni via socket e che implementi le seguenti richieste da parte dei clienti:

  1. Creazione di segmento
  2. Trovare il punto simmetrico, rispetto al segmento, di un punto dato.

Si implementi il server descrittro.

Si vuole che molti client possano accedere contemporaneamente al server, ma ciascuno per creare e usare un proprio segmento (diverso da quello degli altri client)

Organizzazione

Untitled

Soluzione

Esercizio 1b