diff --git a/06-vyrazy/objektove.py b/06-vyrazy/objektove.py
new file mode 100755
index 0000000000000000000000000000000000000000..95659f62332984274184fb67935cc6f2fc69bcd3
--- /dev/null
+++ b/06-vyrazy/objektove.py
@@ -0,0 +1,66 @@
+#!/usr/bin/python3
+
+class Node:
+
+    def eval(self):
+        raise NotImplemented()
+
+
+class NumNode(Node):
+
+    def __init__(self, x):
+        self.value = x
+
+    def __str__(self):
+        return str(self.value)
+
+    def eval(self):
+        return self.value
+
+
+class BinaryNode(Node):
+
+    def __init__(self, left, right):
+        self.left = left
+        self.right = right
+
+
+class AddNode(BinaryNode):
+
+    def __str__(self):
+        return '(' + str(self.left) + '+' + str(self.right) + ')'
+
+    def eval(self):
+        return self.left.eval() + self.right.eval()
+
+
+class SubNode(BinaryNode):
+
+    def __str__(self):
+        return '(' + str(self.left) + '-' + str(self.right) + ')'
+
+    def eval(self):
+        return self.left.eval() - self.right.eval()
+
+
+class MulNode(BinaryNode):
+
+    def __str__(self):
+        return '(' + str(self.left) + '*' + str(self.right) + ')'
+
+    def eval(self):
+        return self.left.eval() * self.right.eval()
+
+
+class DivNode(BinaryNode):
+
+    def __str__(self):
+        return '(' + str(self.left) + '/' + str(self.right) + ')'
+
+    def eval(self):
+        return self.left.eval() // self.right.eval()
+
+
+x = AddNode(MulNode(NumNode(3), NumNode(4)), SubNode(NumNode(5), NumNode(6)))
+print(x)
+print(x.eval())