/**
 * classe Cercle
 *
 * Représentation d'un cercle avec centre, rayon et nom
 *
 * @author Matthias Colin
 * @version 1.1 (31/03/2010)
 */
public class Cercle {
	
	// champs
	
	private Point centre;	// centre du cercle
	private int rayon;		// rayon du cercle
	private String nom; 	// nom du cercle

	// constructeurs

	/**
	 * constructeur Cercle à partir de son nom, son centre et son rayon
	 */
	public Cercle(String nomInit, Point centreInit, 
		int rayonInit) 
	{
		this.nom = nomInit;
		this.centre = centreInit;
		this.rayon = rayonInit;
	}

	// accesseurs
	
	/**
	 * obtenir le centre du cercle
	 * @return le point au centre du cercle
	 */
	public Point getCentre() {
		return this.centre;
	}

	/**
	 * obtenir le rayon du cercle
	 * @return le rayon entier du cercle
	 */
	public int getRayon() {
		return this.rayon;
	}

	/**
	 * obtenir le nom du cercle
	 * @return le nom
	 */
	public String getNom(){
		return this.nom;
	}

	// autres méthodes
	
	/**
	 * translater la figure
	 * @param deplacementHorizontal : partie horizontale du vecteur de déplacement
	 * @param deplacementVertical : partie verticale du vecteur de déplacement
	 */
	 public void translater(
			int deplacementHorizontal,
			int deplacementVertical) 
	{
		// pour déplacer le cercle, on déplace uniquement son centre
		this.getCentre().translater(
			deplacementHorizontal, 
			deplacementVertical);
	}

	/**
	 * obtenir le périmètre de la figure
	 * @return le périmètre
	 */
	public double perimetre() {
		return (2 * Math.PI * this.getRayon());
	}

	/**
	 * obtenir la surface de la figure
	 * @return la surface
 	 */ 
	public double surface() {
		return (Math.PI * Math.pow(this.getRayon(), 2));
	}

	/**
	 * représentation de la figure en chaîne de caractères
 	 * Format : nom[centre ; r:rayon]
 	 */ 
	public String toString() {
		return this.getNom() + "["  + this.getCentre() + " ; "
			+ this.getRayon() + "]";
	}

}
