29 Jan2016
La classe Cercle
Objectif :
- Définir les propriétés et méthodes d’une classe
- Définir des constructeurs
- Créer une instance de classe
- Accéder par les accesseurs aux propriétés en lecture et écriture d’un objet
- Appliquer des méthodes
Travail à faire:
Un cercle est défini par :
- Un point qui représente son centre
- Son rayon r
On peut créer un cercle en précisant son centre et son rayon.
Dans ce problème, nous allons commencer tout d’abord par définir la classe Point définie par :
- Les attributs: x et y de type réel
- Un constructeur qui permet de définir les valeurs de x et de y.
- Une méthode Afficher () qui affiche une chaîne de caractères POINT(x,y).
Les opérations que l’on souhaite exécuter sur un cercle sont :
- getPerimetre(): retourne le périmètre du cercle.
- getSurface(): retourne la surface du cercle.
- appartient (Point p): retourne si le point p appartient ou non au cercle.
- Afficher (): Affiche une chaîne de caractères de type CERCLE(x,y,R)
Exemple d’exécution :
Donner l'abscisse du centre: 1
Donner l'ordonné du centre: 2
Donner le rayon: 3
CERCLE(1,2,3)
Le périmétre est : 18,85
La surface est : 28,27
Donner un point:
X:2
Y:3
POINT(2,3)
Le point appartient au cercle
La classe Point:
//Auteur: CHAOULID //Copyright : Exelib.net class Point { private double x; private double y; public double X { get { return x; } set { x = value; } } public double Y { get { return y; } set { y = value; } } public Point(double x, double y) { this.x = x; this.y = y; } public void Afficher() { Console.Out.WriteLine("POINT(" + x + "," + y+")"); } }
La classe Cercle:
//Auteur : CHAOULID //Copyright : Exelib.net class Cercle { private Point centre; // Attribut de type Point private double rayon; public Point Centre { get { return centre; } set { centre = value; } } public double Rayon { get { return rayon; } set { rayon = value; } } public Cercle(Point p, double r) { centre = p; rayon = r; } public double getPerimetre() { return Math.Round(2 * Math.PI * rayon,2); //Arrondir le résultat à 2 chiffres aprés la virgule. } public double getSurface() { return Math.Round(Math.PI * rayon * rayon,2); } public bool Appartient(Point p) { double dis; dis = Math.Sqrt(Math.Pow(centre.X - p.X, 2) + Math.Pow(centre.Y - p.Y, 2));
//La distance entre le centre du cercle courant et le point passé en paramètre. if (dis <= rayon) return true; else return false; } public void Afficher() { Console.Out.WriteLine("CERCLE(" + centre.X + "," + centre.Y + "," + rayon + ")"); } }
Le programme de test:
//Auteur : CHAOULID //Copyright : Exelib.net class Program { static void Main(string[] args) { double x, y, r; Console.Out.Write("Donner l'abscisse du centre: "); x = double.Parse(Console.In.ReadLine()); Console.Out.Write("Donner l'ordonné du centre: "); y = double.Parse(Console.In.ReadLine()); Console.Out.Write("Donner le rayon: "); r = double.Parse(Console.In.ReadLine()); Point centre = new Point(x, y); Cercle C = new Cercle(centre, r); //ou Cercle C = new Cercle(new Point(x, y), r); Console.Out.WriteLine("\n\n"); C.Afficher(); Console.Out.WriteLine("Le périmétre est : "+C.getPerimetre()); Console.Out.WriteLine("La surface est : " + C.getSurface()); Console.Out.WriteLine("\nDonner un point: "); Console.Out.Write("X:"); x = double.Parse(Console.In.ReadLine()); Console.Out.Write("Y:"); y = double.Parse(Console.In.ReadLine()); Point p = new Point(x, y); p.Afficher(); if (C.Appartient(p)) Console.Out.WriteLine("\nLe point appartient au cercle"); else Console.Out.WriteLine("Le point n'appartient pas au cercle"); Console.ReadKey(); } }