From 82915d6ee31fd763e7cd2391a25c225060cf1120 Mon Sep 17 00:00:00 2001
From: Hong-Phuc Bui <hong-phuc.bui@htwsaar.de>
Date: Mon, 01 Jul 2024 15:34:08 +0200
Subject: [PATCH] Vererbung

---
 study-effort/vorlesung.csv                       |    4 
 turtle-geo-inheritance/src/turtlegeo/TtGeo.py    |   18 ++++
 study-effort/src/mystudy/main.py                 |   36 +++++---
 study-effort/tests/mystudy/lecture_test.py       |    2 
 turtle-geo-inheritance/tests/__init__.py         |    0 
 vererbung-demo/demo.py                           |   26 ++++++
 study-effort/dem-vorlesung.html                  |   28 +++++++
 study-effort/src/mystudy/lecture.py              |   41 +++++++++-
 turtle-geo-inheritance/src/turtlegeo/main.py     |   12 +++
 oop/vererbung/vererbung.py                       |   46 +++++++++++
 turtle-geo-inheritance/pyproject.toml            |   15 +++
 study-effort/src/mystudy/DataFormatError.py      |    4 +
 study-effort/pyproject.toml                      |    2 
 turtle-geo-inheritance/src/turtlegeo/__init__.py |    0 
 14 files changed, 211 insertions(+), 23 deletions(-)

diff --git a/oop/vererbung/vererbung.py b/oop/vererbung/vererbung.py
new file mode 100644
index 0000000..ce74cc7
--- /dev/null
+++ b/oop/vererbung/vererbung.py
@@ -0,0 +1,46 @@
+class Base:
+    def __init__(self, a, b):
+        self.a = a
+        self.b = b
+
+    def sum(self):
+        return self.a + self.b
+
+    def diff(self):
+        return self.a - self.b
+
+
+class Derivate(Base):
+    def product(self):
+        return self.a * self.b
+
+class Derivate2(Base):
+    def __init__(self, a, b , c):
+        super().__init__(a, b)
+        self.c = c
+
+    def quote(self):
+        return self.a / self.c
+
+
+class Common:
+    def __init__(self, a, b):
+        self.a, self.b = a,b
+    def sum(self):
+        return self.a + self.b
+
+def makeMath(x:Base):
+    s = x.sum()
+    print(s)
+
+t = Common(8,9)
+makeMath(t)
+
+x:Base = Base(1, 3)
+makeMath(x)
+
+y:Derivate = Derivate(3, 4)
+makeMath(y)
+
+z:Derivate2 = Derivate2(1, 2, 3)
+makeMath(y)
diff --git a/study-effort/dem-vorlesung.html b/study-effort/dem-vorlesung.html
new file mode 100644
index 0000000..e6454e9
--- /dev/null
+++ b/study-effort/dem-vorlesung.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Vorlesung</title>
+</head>
+<body>
+
+<table>
+    <tr>
+        <td>Mathematik</td>
+        <td>2.5</td>
+        <td>5</td>
+    </tr>
+    <tr>
+        <td>Prog 2</td>
+        <td>2.0</td>
+        <td>5</td>
+    </tr>
+    <tr>
+        <td>Informatik 2</td>
+        <td>2.0</td>
+        <td>5</td>
+    </tr>
+</table>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/study-effort/pyproject.toml b/study-effort/pyproject.toml
index 042a0be..b1f922e 100644
--- a/study-effort/pyproject.toml
+++ b/study-effort/pyproject.toml
@@ -11,5 +11,5 @@
 where = ["src"]
 
 [project.scripts]
-mystudy = "mystudy.main:main"
+mystudy = "mystudy.main:start"
 
diff --git a/study-effort/src/mystudy/DataFormatError.py b/study-effort/src/mystudy/DataFormatError.py
new file mode 100644
index 0000000..259a4b3
--- /dev/null
+++ b/study-effort/src/mystudy/DataFormatError.py
@@ -0,0 +1,4 @@
+class DataFormatError(Exception):
+    def __init__(self):
+        super().__init__()
+    pass
\ No newline at end of file
diff --git a/study-effort/src/mystudy/lecture.py b/study-effort/src/mystudy/lecture.py
index b6861de..64de7ca 100644
--- a/study-effort/src/mystudy/lecture.py
+++ b/study-effort/src/mystudy/lecture.py
@@ -1,5 +1,7 @@
 from typing import Final
 
+from mystudy.DataFormatError import DataFormatError
+
 lecture_time: Final[int] = 15
 ects_effort: Final[int] = 30
 
@@ -27,8 +29,17 @@
         effort_per_week = effort_in_time / duration
         return effort_per_week - (self._frequency * 1.5)
 
+    def name(self):
+        return self._name
+
+    def ects(self):
+        return self._ects
+
+    def frequency(self):
+        return self._frequency
+
     def __repr__(self):
-        return f"Vorlesungsname {self._name} ECTS: {self._ects}"
+        return f"Vorlesungsname {self._name} ECTS: {self._ects} Zeit/Woche {self.cal_effort()}"
 
     # def __str__(self):
     #    return self.__repr__()
@@ -41,11 +52,31 @@
     count = float(words[1])
     ects = int(words[2])
     return Lecture(name, ects, count)
+
     pass
 
 
+class Lecture2HTMLConverter:
+    def __init__(self):
+        self.__head = """<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Vorlesung</title>
+</head>
+<body>"""
+        self.__foot = """
+        </body>
+</html>
+        """
 
-
-
-
-
+    def to_html(self, lectures: list[Lecture]) -> str:
+        html = ""
+        for l in lectures:
+            html += f"""<tr>
+            <td>{l.name()}<td>
+            <td>{l.ects()}</td>
+            <td>{l.frequency()}</td>
+            <td>{l.cal_effort()}</td>
+            </tr>"""
+        return f"{self.__head}<table>{html}</table>{self.__foot}"
diff --git a/study-effort/src/mystudy/main.py b/study-effort/src/mystudy/main.py
index f90d7d9..2110e83 100644
--- a/study-effort/src/mystudy/main.py
+++ b/study-effort/src/mystudy/main.py
@@ -1,21 +1,29 @@
-from mystudy.lecture import Lecture, parse_lecture_line
+from mystudy.lecture import Lecture, parse_lecture_line, Lecture2HTMLConverter
 from sys import argv
 
 
 def read_file_to_lecture(filename: str) -> list[Lecture]:
     lectures = []
-    with open(filename, 'r') as file:
-        while line := file.readline():
-            if len(line.strip()) > 0:
-                l = parse_lecture_line(line)
-                lectures.append(l)
-    return lectures
+    count_line = 0
+    try:
+        with open(filename, 'r') as file:
+            while line := file.readline():
+                count_line += 1
+                if len(line.strip()) > 0:
+                    l = parse_lecture_line(line)
+                    lectures.append(l)
+        return lectures
+    except (IndexError, ValueError):
+        print(f"[{count_line}] Dateiformat fehlerbehaftet")
 
 
-def main():
-    filename = argv[1]
-    print(filename)
-    lectures = read_file_to_lecture(filename)
-    for l in lectures:
-        print(l)
-
+def start():
+    try:
+        filename = argv[1]
+        lectures = read_file_to_lecture(filename)
+        if lectures is not  None:
+            converter = Lecture2HTMLConverter()
+            html_code = converter.to_html(lectures)
+            print(html_code)
+    except FileNotFoundError:
+        print(f"Datei '{filename}' nicht gefunden")
diff --git a/study-effort/tests/mystudy/lecture_test.py b/study-effort/tests/mystudy/lecture_test.py
index cc6f0f8..2e91970 100644
--- a/study-effort/tests/mystudy/lecture_test.py
+++ b/study-effort/tests/mystudy/lecture_test.py
@@ -33,7 +33,7 @@
         self.assertTrue(diff < EPSILON)
 
     def test_parse_lecture_line(self):
-        data = "English; 3; 2"
+        data = "English; 3 ; 2"
         english = parse_lecture_line(data)
         text = "Vorlesungsname English ECTS: 2"
         self.assertEqual(text, f"{english}")
diff --git a/study-effort/vorlesung.csv b/study-effort/vorlesung.csv
index 88eab23..a47af31 100644
--- a/study-effort/vorlesung.csv
+++ b/study-effort/vorlesung.csv
@@ -1,3 +1,3 @@
 Mathematik; 2.5; 5
-Prog-2    ; 2  ; 5
-
+Prog-2    ; 2.0; 5
+Informatik 2; 2; 5
diff --git a/turtle-geo-inheritance/pyproject.toml b/turtle-geo-inheritance/pyproject.toml
new file mode 100644
index 0000000..f07ac71
--- /dev/null
+++ b/turtle-geo-inheritance/pyproject.toml
@@ -0,0 +1,15 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "turtle-geo"
+version = "0.0.1"
+
+[tool.setuptools.packages.find]
+# All the following settings are optional:
+where = ["src"]
+
+[project.scripts]
+ttgeo = "turtlegeo.main:main"
+
diff --git a/turtle-geo-inheritance/src/turtlegeo/TtGeo.py b/turtle-geo-inheritance/src/turtlegeo/TtGeo.py
new file mode 100644
index 0000000..5a248c0
--- /dev/null
+++ b/turtle-geo-inheritance/src/turtlegeo/TtGeo.py
@@ -0,0 +1,18 @@
+from turtle import Turtle
+
+
+class TtGeo(Turtle):
+
+    def triangle(self, length, x, y):
+        self.teleport(x, y)
+        head = self.heading()
+        self.setheading(0)
+        self.forward(length)
+        self.left(120)
+        self.forward(length)
+        self.left(120)
+        self.forward(length)
+        self.setheading(head)
+        pass
+
+    pass
\ No newline at end of file
diff --git a/turtle-geo-inheritance/src/turtlegeo/__init__.py b/turtle-geo-inheritance/src/turtlegeo/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/turtle-geo-inheritance/src/turtlegeo/__init__.py
diff --git a/turtle-geo-inheritance/src/turtlegeo/main.py b/turtle-geo-inheritance/src/turtlegeo/main.py
new file mode 100644
index 0000000..31ac99f
--- /dev/null
+++ b/turtle-geo-inheritance/src/turtlegeo/main.py
@@ -0,0 +1,12 @@
+from turtle import Turtle
+from random import random
+
+from turtlegeo.TtGeo import TtGeo
+
+
+def main():
+    t = TtGeo()
+    t.triangle(50, 20, 25)
+    t.circle(50)
+    t.dot(25)
+    t.screen.mainloop()
diff --git a/turtle-geo-inheritance/tests/__init__.py b/turtle-geo-inheritance/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/turtle-geo-inheritance/tests/__init__.py
diff --git a/vererbung-demo/demo.py b/vererbung-demo/demo.py
new file mode 100644
index 0000000..0c9e807
--- /dev/null
+++ b/vererbung-demo/demo.py
@@ -0,0 +1,26 @@
+class BaseClass:
+    def __init__(self, a, b):
+        self.a = a
+        self.b = b
+
+    def sumOf(self):
+        return self.a + self.b
+
+
+class ExtendClass(BaseClass):
+    def diffOf(self):
+        return self.a - self.b
+
+
+x = BaseClass(10, 9)
+s = x.sumOf()
+print(s)
+
+y = ExtendClass(12, 4)
+sy = y.sumOf()
+dy = y.diffOf()
+print(sy, dy)
+
+
+
+

--
Gitblit v1.10.0-SNAPSHOT