From 9a165d59d0017b5274eb0cba4f61cd8a1335df0e Mon Sep 17 00:00:00 2001
From: Pierre-Antoine Rouby <pierre-antoine.rouby@inrae.fr>
Date: Thu, 30 Mar 2023 15:29:41 +0200
Subject: [PATCH] geometry: Factorize profile.

---
 src/Model/Geometry/Profile.py    | 45 ++++++++++++++++++++++++++
 src/Model/Geometry/ProfileXYZ.py | 54 ++++++--------------------------
 2 files changed, 54 insertions(+), 45 deletions(-)
 create mode 100644 src/Model/Geometry/Profile.py

diff --git a/src/Model/Geometry/Profile.py b/src/Model/Geometry/Profile.py
new file mode 100644
index 00000000..8243fa48
--- /dev/null
+++ b/src/Model/Geometry/Profile.py
@@ -0,0 +1,45 @@
+# -*- coding: utf-8 -*-
+
+class Profile(object):
+    def __init__(self, kp:float = 0.0, name:str = ""):
+        super(Profile, self).__init__()
+
+        self._num = int(num)
+        self._kp = float(kp)
+        self._name = str(name)
+
+    @property
+    def num(self):
+        """
+        Returns:
+            Number of profile.
+        """
+        return self._num
+
+    @num.setter
+    def num(self, value: int):
+        self._num = int(value)
+
+    @property
+    def kp(self):
+        """
+        Returns:
+            Kilometer point.
+        """
+        return self._kp
+
+    @kp.setter
+    def kp(self, value: float):
+        self._kp = float(value)
+
+    @property
+    def name(self):
+        """
+        Returns:
+            Profile name.
+        """
+        return self._name
+
+    @name.setter
+    def name(self, other: str):
+        self._name = other
diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py
index f3fc6883..26a26426 100644
--- a/src/Model/Geometry/ProfileXYZ.py
+++ b/src/Model/Geometry/ProfileXYZ.py
@@ -4,11 +4,11 @@ import numpy as np
 import pandas as pd
 from typing import List
 
-from Model.Geometry.PointXYZ import PointXYZ
+from Model.Geometry.Profile import Profile
 
-class ProfileXYZ:
+class ProfileXYZ(Profile):
     def __init__(self, num: int = 0, code1: int = 0, code2: int = 0,
-                 nb_points: int = 0, kp: float = 0., name: str = ""):
+                 kp: float = 0., name: str = ""):
         """ProfileXYZ constructor
 
         Args:
@@ -22,12 +22,15 @@ class ProfileXYZ:
         Returns:
             Nothing.
         """
-        self._num = int(num)
+        super(ProfileXYZ, self).__init__(
+            num = num,
+            name = name
+            kp = kp,
+        )
+
         self._code1 = int(code1)
         self._code2 = int(code2)
         self._nb_points = int(nb_points)
-        self._kp = float(kp)
-        self._name = str(name)
         self._list_points: List[PointXYZ] = []
 
     def __repr__(self):
@@ -35,17 +38,6 @@ class ProfileXYZ:
                           data=[[p.x, p.y, p.z, p.name] for p in self._list_points])
         return f"\n{self.header}\n{df}"
 
-    @property
-    def num(self):
-        """
-        Returns:
-            Number of profile.
-        """
-        return self._num
-
-    @num.setter
-    def num(self, value: int):
-        self._num = int(value)
 
     @property
     def code1(self):
@@ -75,34 +67,6 @@ class ProfileXYZ:
     def nb_points(self):
         return self._nb_points
 
-    # @nb_points.setter
-    # def nb_points(self, nb: int):
-    #     self._nb_points = int(nb)
-
-    @property
-    def kp(self):
-        """
-        Returns:
-            Kilometer point.
-        """
-        return self._kp
-
-    @kp.setter
-    def kp(self, value: float):
-        self._kp = float(value)
-
-    @property
-    def name(self):
-        """
-        Returns:
-            Profile name.
-        """
-        return self._name
-
-    @name.setter
-    def name(self, other: str):
-        self._name = other
-
     @property
     def header(self):
         """
-- 
GitLab