







Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Ceci est le premier travail que nous avons eu à faire sur la conception des classes en Python.
Typology: Cheat Sheet
1 / 13
This page cannot be seen from the preview
Don't miss anything!








Figure 1 : Diagramme UML avant la classe qui exploite les classes des formes géométriques
from math import pi, sqrt class FormeGeometrique: def perimetre(self): pass def surface(self): pass class Rectangle(FormeGeometrique): def init(self, longueur : float, largeur : float): self.longueur = longueur self.largeur = largeur def perimetre(self): return 2 * (self.longueur + self.largeur)
Figure 2 : Diagramme UML après la classe qui exploite la classe des formes géométriques
class CalculateurFormeGeometrique: def calculer_perimetre(self, forme : FormeGeometrique): return forme.perimetre() def calculer_surface(self, forme : FormeGeometrique): return forme.surface()
from math import pi, sqrt class FormeGeometrique: def perimetre(self): pass def surface(self): pass class Rectangle(FormeGeometrique): def init(self, longueur : float, largeur : float): self.longueur = longueur self.largeur = largeur def perimetre(self): return 2 * (self.longueur + self.largeur) def surface(self): return self.longueur * self.largeur class Cercle(FormeGeometrique): def init(self, rayon : float): self.rayon = rayon def perimetre(self): return 2 * pi * self.rayon def surface(self): return pi * self.rayon** 2 class Triangle(FormeGeometrique): def init(self, cote1 : float, cote2 : float, cote3 : float): self.cote1 = cote self.cote2 = cote self.cote3 = cote def perimetre(self): return self.cote1 + self.cote2 + self.cote def surface(self): p = (self.cote1 + self.cote2 + self.cote3)/ 2 return sqrt(p * (p - self.cote1) * (p - self.cote2) * (p - self.cote3)) class Carre(Rectangle): def init(self,cote : float): super().init(cote, cote)
rectangle = Rectangle( 4 , 6 ) cercle = Cercle( 5 ) triangle = Triangle( 3 , 5 , 6 ) carre = Carre( 5 ) triangle_rectangle = TriangleRectangle( 3 , 4 ) calculateur = CalculateurFormeGeometrique() self.assertEqual(calculateur.calculer_perimetre(rectangle), 20 ) self.assertEqual(calculateur.calculer_surface(rectangle), 24 ) self.assertAlmostEqual(calculateur.calculer_perimetre(cercle), 2 * pi * 5 ) self.assertAlmostEqual(calculateur.calculer_surface(cercle), pi * 5 ** 2 ) self.assertEqual(calculateur.calculer_perimetre(triangle), 14 ) self.assertEqual(calculateur.calculer_surface(triangle), 2 * sqrt( 14 )) self.assertEqual(calculateur.calculer_perimetre(carre), 20 ) self.assertEqual(calculateur.calculer_surface(carre), 25 ) self.assertEqual(calculateur.calculer_perimetre(triangle_rectangle), 12 ) self.assertEqual(calculateur.calculer_surface(triangle_rectangle), 6 ) if name == 'main': unittest.main()
from math import pi, sqrt class FormeGeometrique: def perimetre(self): raise NotImplementedError("Méthode non implémentée") def surface(self):
self.base = base self.hauteur = hauteur def perimetre(self): return self.base + self.hauteur + (sqrt(self.base** 2 + self.hauteur** 2 )) def surface(self): return self.base * self.hauteur/ 2 class FormeComposee: def init(self): self.formes = [] def ajouter_forme(self, forme): self.formes.append(forme) def perimetre(self): perimetre_total = [] for forme in self.formes: perimetre_total.append(forme.perimetre()) return perimetre_total def surface(self): surface_totale = [] for forme in self.formes: surface_totale.append(forme.surface()) return surface_totale
import unittest from math import pi, sqrt from formes_geometriques_composition import FormeGeometrique, Rectangle, Cercle, Triangle, TriangleRectangle, Carre, FormeComposee class TestFormesGeometriquesComposition(unittest.TestCase): def test_rectangle(self): rectangle = Rectangle( 4 , 6 ) self.assertEqual(rectangle.perimetre(), 20 ) self.assertEqual(rectangle.surface(), 24 ) def test_cercle(self): cercle = Cercle( 5 ) self.assertAlmostEqual(cercle.perimetre(), 2 * pi * 5 ) self.assertAlmostEqual(cercle.surface(), pi * 5 ** 2 )
def test_triangle(self): triangle = Triangle( 3 , 5 , 6 ) self.assertEqual(triangle.perimetre(), 14 ) self.assertEqual(triangle.surface(), 2 * sqrt( 14 )) def test_carre(self): carre = Carre( 5 ) self.assertEqual(carre.perimetre(), 20 ) self.assertEqual(carre.surface(), 25 ) def test_triangle_rectangle(self): triangle_rectangle = TriangleRectangle( 3 , 4 ) self.assertEqual(triangle_rectangle.perimetre(), 12 ) self.assertEqual(triangle_rectangle.surface(), 6 ) def test_forme_composee(self): formes = FormeComposee() rectangle = Rectangle( 4 , 6 ) cercle = Cercle( 5 ) triangle = Triangle( 3 , 5 , 6 ) carre = Carre( 5 ) triangle_rectangle = TriangleRectangle( 3 , 4 ) formes.ajouter_forme(rectangle) formes.ajouter_forme(cercle) formes.ajouter_forme(triangle) formes.ajouter_forme(carre) formes.ajouter_forme(triangle_rectangle) self.assertEqual(formes.perimetre(), [ 20 , 2 * pi * 5 , 14 , 20 , 12 ]) self.assertEqual(formes.surface(), [ 24 , pi * 5 ** 2 , 2 * sqrt( 14 ), 25 , 6 ]) if name == 'main': unittest.main()