diff --git a/.vscode/exampleApp.py b/.vscode/exampleApp.py
deleted file mode 100644
index f703090c689b63ae91172bc73c5e64240051fa0e..0000000000000000000000000000000000000000
--- a/.vscode/exampleApp.py
+++ /dev/null
@@ -1,47 +0,0 @@
-import sqlite3
-from flask import Flask, request, jsonify
-
-def create_app(conn):
-    app = Flask(__name__)
-
-    def create_user(cursor, name, email):
-        cursor.execute('''CREATE TABLE IF NOT EXISTS users (
-                       id INTEGER PRIMARY KEY AUTOINCREMENT,
-                       name TEXT NOT NULL, 
-                       email TEXT NOT NULL)''')
-        
-        cursor.execute('''INSERT INTO users (name, email) VALUES (?, ?)''', (name, email))
-        cursor.connection.commit()
-
-    def get_user(cursor, name):
-        cursor.execute('''SELECT * FROM users WHERE name = ?''', (name,))
-        row = cursor.fetchone()
-        if row:
-            return {'id': row[0], 'name': row[1], 'email': row[2]}
-        return None
-
-    @app.route('/create_user', methods=['POST'])
-    def api_create_user():
-        data = request.get_json()
-        name = data.get('name')
-        email = data.get('email')
-        
-        # Verwende 'with' für den Cursor, um sicherzustellen, dass er ordnungsgemäß verwendet wird
-        with conn.cursor() as cursor:
-            create_user(cursor, name, email)
-        return jsonify({'message': 'User has been created successfully'}), 201
-    
-    @app.route('/get_user/<name>', methods=['GET']) 
-    def api_get_user(name):  
-        with conn.cursor() as cursor:
-            user = get_user(cursor, name)
-        if user:
-            return jsonify(user), 200
-        return jsonify({'message': 'User not found'}), 404
-    
-    return app
-
-if __name__ == '__main__':
-    conn = sqlite3.connect(':memory:')  
-    app = create_app(conn)
-    app.run(debug=True, port=8001)
diff --git a/.vscode/integrationTestExample1.py b/.vscode/integrationTestExample1.py
deleted file mode 100644
index 9f6bfd8c8539b19507f2ee56bd53da7327452bd1..0000000000000000000000000000000000000000
--- a/.vscode/integrationTestExample1.py
+++ /dev/null
@@ -1,2 +0,0 @@
-import unittest
-import sqlite3
diff --git a/.vscode/settings.json b/.vscode/settings.json
deleted file mode 100644
index 65d939f9dd562ac3e3ac485fd26ab46ed1873838..0000000000000000000000000000000000000000
--- a/.vscode/settings.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-    "python.testing.unittestArgs": [
-        "-v",
-        "-s",
-        ".",
-        "-p",
-        "*test.py"
-    ],
-    "python.testing.pytestEnabled": false,
-    "python.testing.unittestEnabled": true
-}
\ No newline at end of file
diff --git a/__pycache__/calculator.cpython-312.pyc b/__pycache__/calculator.cpython-312.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0c79c8eed669ab1f2545621177cf866fa57d22f5
Binary files /dev/null and b/__pycache__/calculator.cpython-312.pyc differ
diff --git a/calculator.py b/calculator.py
new file mode 100644
index 0000000000000000000000000000000000000000..1a0959ccc2817bea126f1ee090960c60bcfab61b
--- /dev/null
+++ b/calculator.py
@@ -0,0 +1,66 @@
+from abc import ABC, abstractmethod
+import unittest
+
+class ICalculator(ABC):
+    @abstractmethod
+    def add(self, a, b):
+        pass
+
+    @abstractmethod
+    def sub(self, a, b):
+        pass
+
+    @abstractmethod
+    def mul(self, a, b):
+        pass
+
+    @abstractmethod
+    def div(self, a, b):
+        pass
+
+class Calculator(ICalculator):
+    def add(self, a, b):
+        return a + b
+
+    def sub(self, a, b):
+        return a - b
+
+    def mul(self, a, b):
+        return a * b
+
+    def div(self, a, b):
+        if b == 0:
+            raise ValueError("Division durch die Zahl null ist nicht erlaubt")
+        return a / b
+
+class TestCalculator(unittest.TestCase):
+    def setUp(self):
+        self.calc = Calculator() 
+
+    # Test add-function
+    def test_add(self):
+        erg = self.calc.add(3, 5) 
+        self.assertEqual(erg, 8)
+
+    # Test sub-function
+    def test_sub(self):
+        erg = self.calc.sub(10, 3)
+        self.assertEqual(erg, 7)
+
+    # Test mul-function
+    def test_mul(self):
+        erg = self.calc.mul(4, 6)  
+        self.assertEqual(erg, 24)
+
+    # Test div-function
+    def test_div(self):
+        erg = self.calc.div(20, 4) 
+        self.assertEqual(erg, 5)
+
+    # Test div/0
+    def test_div_by_zero(self):
+        with self.assertRaises(ValueError):
+            self.calc.div(10, 0) 
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/converter.py b/converter.py
new file mode 100644
index 0000000000000000000000000000000000000000..1d5eff48258d339da12cee00fa9dd6dd640c6911
--- /dev/null
+++ b/converter.py
@@ -0,0 +1,182 @@
+# Bei Eingabe der Zahl 1 soll "I" ausgegeben werden
+# Bei Eingabe der Zahl 2 soll "II" ausgegeben werden
+# Bei Eingabe der Zahl 3 soll "III" ausgegeben werden
+# Bei Eingabe der Zahl 4 soll "IV" ausgegeben werden
+# Bei Eingabe der Zahl 5 soll "V" ausgegeben werden
+# Bei Eingabe der Zahl 9 soll "IX" ausgegeben werden
+# Bei Eingabe der Zahl 10 soll "X" ausgegeben werden
+# Bei Eingabe der Zahl 21 soll "XXI" ausgegeben werden
+# Bei Eingabe der Zahl 50 soll "L" ausgegeben werden
+# Bei Eingabe der Zahl 100 soll "C" ausgegeben werden
+# Bei Eingabe der Zahl 500 soll "D" ausgegeben werden
+# Bei Eingabe der Zahl 1000 soll "M" ausgegeben werden
+# Bei Eingabe der Zahl 1111 soll "MCXI" ausgegeben werden
+# Bei Eingabe der Zahl 99 soll "XCIX" ausgegeben werden
+# Bei Eingabe der Zahl 0 soll "Es gibt keine römische Null" ausgegeben werden
+# Bei Eingabe der Zahl 40 soll "XL" ausgegeben werden
+# Bei Eingabe eines Strings soll "Bitte ganze Zahlen eingeben" ausgegeben werden -> geändert aufgrund der Aufgabenstellung
+# Bei Eingabe von Float-Werten (z.B. 4,3) soll "Bitte ganze Zahlen eingeben" ausgegeben werden.
+# Bei Eingabe von negativen Werten (z.B. -5) soll "Es sind nur positive Zahlen zum konvertieren erlaubt" ausgegeben werden
+# Bei Eingabe der Zahl 2025 soll "MMXXV" ausgegeben werden
+# Bei Eingabe von Zeichen wie ! soll "Bitte ganze Zahlen eingeben" ausgegeben werden
+# Bei Eingabe mehrerer Zahlen wie 4, 3 soll "Bitte nur eine ganze Zahl eingeben" augegeben werden
+# Bei Eingabe größerer Zahlen wie z.B. 4000 soll "MMMM" ausgegeben werden
+# Bei Eingabe der Zahl 30 soll "XXX" ausgegeben werden
+# Bei Eingabe der Zahl 90 soll "90" ausgegeben werden
+# Bei Eingabe eines leeren Strings soll "Bitte ganze Zahlen eingeben" ausgegeben werden
+
+import unittest
+from abc import ABC, abstractmethod
+
+class IConverter(ABC):
+    @abstractmethod
+    def convert(self, num: int) -> str:
+        pass
+
+class Converter(IConverter):
+    def convert(self, num: int) -> str:
+
+        '''Sicherstellen, dass nur eine ganze Zahl eingegeben wurde.'''
+        if isinstance(num, str) and len(num.split(',')) > 1: 
+            return 'Bitte nur eine ganze Zahl eingeben'
+        
+        roman_numbers = [(1000, 'M'), (500, 'D'), (100, 'C'), (90, 'XC'), (50, 'L'), (40, 'XL'), (10, 'X'), (9, 'IX'), (5, 'V'), (4, 'IV'), (1, 'I')]
+        
+        roman_str = ''
+
+        '''Wenn eine 0 eingegeben wird muss eine Exception folgen'''
+        if num == 0:
+            return "Es gibt keine römische Null"
+        
+
+        '''Sicherstellen, dass keine Zeichen oder Strings eingegeben werden'''
+        if isinstance(num, int):
+
+            '''Sicherstellen, dass keine negativen Zahlen eingegeben werden'''
+            if num < 0:
+                return "Es sind nur positive Zahlen zum konvertieren erlaubt"
+            
+            for value, numeral in roman_numbers:
+
+                while num >= value:
+                    roman_str += numeral
+                    num -= value
+
+            return roman_str
+        else: 
+            return "Bitte ganze Zahlen eingeben"
+
+
+class TestConverter(unittest.TestCase):
+    def setUp(self):
+        self.c = Converter()
+
+    def test_convertOne(self):
+        res = self.c.convert(1)
+        self.assertEqual(res, 'I')
+    
+    def test_convertTwo(self):
+        res = self.c.convert(2)
+        self.assertEqual(res, 'II')
+    
+    def test_convertThree(self):
+        res = self.c.convert(3)
+        self.assertEqual(res, 'III')
+
+    def test_convertFour(self):
+        res = self.c.convert(4)
+        self.assertEqual(res, 'IV')
+
+    def test_convertFive(self):
+        res = self.c.convert(5)
+        self.assertEqual(res, 'V')
+
+    def test_convertNine(self):
+        res = self.c.convert(9)
+        self.assertEqual(res, 'IX')
+
+    def test_convertTen(self):
+        res = self.c.convert(10)
+        self.assertEqual(res, 'X')
+
+    def test_convertTwentyTwo(self):
+        res = self.c.convert(21)
+        self.assertEqual(res, 'XXI')
+
+    def test_convertFifty(self):
+        res = self.c.convert(50)
+        self.assertEqual(res, 'L')
+
+    def test_convertHundred(self):
+        res = self.c.convert(100)
+        self.assertEqual(res, 'C')
+
+    def test_convertFiveHundred(self):
+        res = self.c.convert(500)
+        self.assertEqual(res, 'D')
+
+    def test_convertThousand(self):
+        res = self.c.convert(1000)
+        self.assertEqual(res, 'M')
+    
+    def test_convertFourDigit(self):
+        res = self.c.convert(1111)
+        self.assertEqual(res, 'MCXI')
+
+    def test_convertNintyNine(self):
+        res = self.c.convert(99)
+        self.assertEqual(res, 'XCIX')
+
+    def test_convertZero(self):
+        res = self.c.convert(0)
+        self.assertEqual(res, 'Es gibt keine römische Null')
+
+    def test_convertFourty(self):
+        res = self.c.convert(40)
+        self.assertEqual(res, 'XL')
+
+    def test_convertString(self):
+        res = self.c.convert('HUIHIN')
+        self.assertEqual(res, "Bitte ganze Zahlen eingeben")
+
+    def test_convertFloat(self):
+        res = self.c.convert(4.3)
+        self.assertEqual(res, "Bitte ganze Zahlen eingeben")
+
+    def test_convertNegative(self):
+        res = self.c.convert(-4)
+        self.assertEqual(res, "Es sind nur positive Zahlen zum konvertieren erlaubt")
+
+    def test_convertYear(self):
+        res = self.c.convert(2025)
+        self.assertEqual(res, "MMXXV")
+
+    def test_convertSign(self):
+        res = self.c.convert('!')
+        self.assertEqual(res, "Bitte ganze Zahlen eingeben")
+
+    def test_convertMultipleNum(self):
+        res = self.c.convert('4, 3')
+        self.assertEqual(res, "Bitte nur eine ganze Zahl eingeben")
+
+    def test_convertHighNum(self):
+        res = self.c.convert(4000)
+        self.assertEqual(res, "MMMM")
+
+    def test_convertThirty(self):
+        res = self.c.convert(30)
+        self.assertEqual(res, "XXX")
+
+    def test_convertNinety(self):
+        res = self.c.convert(90)
+        self.assertEqual(res, "XC")
+
+    def test_convertEmpty(self):
+        res = self.c.convert('')
+        self.assertEqual(res, "Bitte ganze Zahlen eingeben")
+
+    
+
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/counter.py b/counter.py
new file mode 100644
index 0000000000000000000000000000000000000000..2126ece1eae74cb5a00151852049b093f1e037e4
--- /dev/null
+++ b/counter.py
@@ -0,0 +1,55 @@
+from abc import ABC, abstractmethod
+import unittest
+
+# Bei Eingabe des Strings Decker liegert die Funktion 3
+
+# Bei Eingabe eines leeren Strings soll 0 ausgegeben werden
+
+# Bei Eingabe des Strings Hallo soll 0 ausgegeben werden
+
+# Bei Eingabe von Groß-/Kleinschreibung soll trotzdem der entsprechende Wert rauskommen
+
+# Bei Eingabe vom Buchstaben D oder E soll trotzdem die 1 rauskommen
+
+class ICounter(ABC):
+    @abstractmethod
+    def count_ED(self, s):
+        pass
+
+class Counter(ICounter):
+    def count_ED(self, s):
+        s = s.upper()
+        return s.count("E") + s.count("D")
+
+class TestCounter(unittest.TestCase):
+    def setUp(self):
+        self.c = Counter()
+
+    def test_count_ED_regular(self):
+        res = self.c.count_ED("Decker")
+        self.assertEqual(res, 3)
+
+    def test_count_ED_empty(self):
+        res = self.c.count_ED(" ")
+        self.assertEqual(res, 0)
+
+    def test_count_ED_wo(self):
+        res = self.c.count_ED("Hallo")
+        self.assertEqual(res, 0)
+
+    def test_count_ED_insensetiv(self):
+        res = self.c.count_ED("Der Esel")
+        self.assertEqual(res, 4)
+
+    def test_count_ED_oneL(self):
+        res = self.c.count_ED('E')
+        self.assertEqual(res, 1)
+        res = self.c.count_ED('D')
+        self.assertEqual(res, 1)
+        res = self.c.count_ED('e')
+        self.assertEqual(res, 1)
+        res = self.c.count_ED('d')
+        self.assertEqual(res, 1)
+
+if __name__ == "__main__":
+    unittest.main()
diff --git a/helloWorld.py b/helloWorld.py
new file mode 100644
index 0000000000000000000000000000000000000000..8c64f7960f82631864ef6f0c22e7e21158eadb67
--- /dev/null
+++ b/helloWorld.py
@@ -0,0 +1 @@
+print("Hello World :)")
\ No newline at end of file
diff --git a/main.py b/main.py
index 8e235769c023ae8b5dad489734aa4ac26ad526de..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
--- a/main.py
+++ b/main.py
@@ -1 +0,0 @@
-print("Hello World")
\ No newline at end of file
diff --git a/test.py b/test.py
deleted file mode 100644
index f027fd1b10d975e53ba24358ab5a225fe9bb3230..0000000000000000000000000000000000000000
--- a/test.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import unittest
-
-class Person:
-    def __init__(self, name, age):
-        self.name = name
-        self.age = age
-
-    def adult(self):
-        return self.age >= 18
-    
-class TestPerson(unittest.TestCase):
-    def test_if_adult(self):
-        person1 = Person("Daniel", 24)
-        person2 = Person("Wasilios", 21)
-        person3 = Person("Goksis", 12)
-
-        self.assertTrue(person1.adult())
-        self.assertTrue(person2.adult())
-        self.assertFalse(person3.adult())
-
-
-
-if __name__ == "__main__":
-    unittest.main()
diff --git a/test_calculator.py b/test_calculator.py
new file mode 100644
index 0000000000000000000000000000000000000000..0ecaa8bd747ea51031fb1bf3f37560a435ea0822
--- /dev/null
+++ b/test_calculator.py
@@ -0,0 +1,38 @@
+import sys
+import unittest
+from calculator import Calculator
+
+class TestCalculator(unittest.TestCase):
+
+    def setUp(self):
+        self.c = Calculator()
+
+    # Test add-function
+    def test_add(self):
+        erg = self.c.add(3, 5)
+        self.assertEqual(erg, 8)
+
+    # Test sub-function
+    def test_sub(self):
+        erg = self.c.sub(10, 3)
+        self.assertEqual(erg, 7)
+
+    # Test mul-function
+    def test_mul(self):
+        erg = self.c.mul(4, 6)
+        self.assertEqual(erg, 24)
+
+    # Test div-function
+    def test_div(self):
+        erg = self.c.div(20, 4)
+        self.assertEqual(erg, 5)
+
+    # Test div/0
+    def test_div_by_zero(self):
+        with self.assertRaises(ValueError):
+            self.c.div(10, 0)
+    
+    # Test negative numbers
+
+    # Test wrong inputs
+
diff --git a/unittestExample1.py b/unittestExample1.py
deleted file mode 100644
index 55c1a53b46497034d83be840ffffdb85ddf19586..0000000000000000000000000000000000000000
--- a/unittestExample1.py
+++ /dev/null
@@ -1,27 +0,0 @@
-import unittest
-
-class Person:
-    def __init__(self, name, age):
-        self.name = name
-        self.age = age
-
-    def adult(self):
-        return self.age >= 18
-    
-class TestPerson(unittest.TestCase):
-    def test_if_adult(self):
-        person1 = Person("Daniel", 24)
-        person2 = Person("Wasilios", 21)
-        person3 = Person("Goksis", 12)
-
-        self.assertTrue(person1.adult())
-        self.assertTrue(person2.adult())
-        self.assertFalse(person3.adult())
-
-
-
-if __name__ == "__main__":
-    unittest.main()
-
-
-
diff --git a/unittestExample2.py b/unittestExample2.py
deleted file mode 100644
index 84ff7a74104c0125ffeffb80612b17e1f2f028ff..0000000000000000000000000000000000000000
--- a/unittestExample2.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import unittest
-
-def add(a, b):
-    return a + b
-    
-def sub(a, b):
-    return a - b
-    
-def mul(a, b):
-    return a * b
-    
-def div(a, b):
-    return a / b
-    
-class TestCalculation(unittest.TestCase):
-    def test_add(self):
-        self.assertEqual(add(1,2), 3)
-        self.assertEqual(add(8,7), 15)
-        self.assertEqual(add(200, 380), 580)
-
-    def test_sub(self):
-        self.assertEqual(sub(2,1), 1)
-        self.assertEqual(sub(8,7), 1)
-        self.assertEqual(sub(380, 200), 180)
-
-    def test_mul(self):
-        self.assertEqual(mul(2,5), 10)
-        self.assertEqual(mul(8,7), 56)
-        self.assertEqual(mul(3, 20), 60)
-
-    def test_div(self):
-        self.assertEqual(div(10,5), 2)
-        self.assertEqual(div(8,1), 8)
-        self.assertEqual(div(200, 20), 10)
-
-if __name__ == "__main__":
-    unittest.main()
\ No newline at end of file