summaryrefslogtreecommitdiff
path: root/mit/oop/fractions.py
diff options
context:
space:
mode:
authorCarlos Maiolino <[email protected]>2025-07-10 22:55:07 +0200
committerCarlos Maiolino <[email protected]>2025-07-10 22:56:55 +0200
commitd98f46ce647846b0aa30b2e16a30fd4e152a1bf5 (patch)
tree267474fcc77cf20b428f6f4c7f768ca09f4cfe0e /mit/oop/fractions.py
parent869e68986aa8f69af6e7842260a68d1e5c6f796f (diff)
Add new code
Signed-off-by: Carlos Maiolino <[email protected]>
Diffstat (limited to 'mit/oop/fractions.py')
-rw-r--r--mit/oop/fractions.py80
1 files changed, 80 insertions, 0 deletions
diff --git a/mit/oop/fractions.py b/mit/oop/fractions.py
new file mode 100644
index 0000000..46f62a8
--- /dev/null
+++ b/mit/oop/fractions.py
@@ -0,0 +1,80 @@
+#!/usr/bin/python3
+
+# Example of class usage in python.
+
+# Let's define a new class to represent fraction numbers
+
+
+class fraction(object):
+ def __init__(self, numer, denom):
+ self.numer = numer
+ self.denom = denom
+
+ def __str__(self):
+ return str(self.numer) + ' / ' + str(self.denom)
+
+
+ # Getters definition
+ # We almost never want to directly manipulate the data inside objects,
+ # so, we should (almost) always define getters and setters methods for data
+ # manipulation inside a class
+
+ def getNumer(self):
+ return self.numer
+
+ def getDenom(self):
+ return self.denom
+
+ def __add__(self, other):
+ new_numer = (self.getNumer() * other.getDenom()) + \
+ (other.getNumer() * self.getDenom())
+ new_denom = (self.getDenom() * other.getDenom())
+
+ return fraction(new_numer, new_denom)
+
+ def __sub__(self, other):
+ new_numer = (self.getNumer() * other.getDenom()) - \
+ (other.getNumer() * self.getDenom())
+ new_denom = (self.getDenom() * other.getDenom())
+
+ return fraction(new_numer, new_denom)
+
+ # Return the float representation of the fraction
+ def convert(self):
+ return self.getNumer() / self.getDenom()
+
+
+# Set example
+
+# Create a class to represent a set of numbers which are not allowed to be
+# repeated
+
+class Set(object):
+
+ def __init__(self):
+ self.set = []
+
+ def insert(self, nval):
+ if nval not in self.set:
+ self.set.append(nval)
+ else:
+ raise ValueError(str(nval) + " is already in the set")
+
+ def remove(self,nval):
+ try:
+ self.set.remove(nval)
+ except:
+ raise ValueError(str(nval) + " not found!")
+
+ def member(self, nval):
+ return nval in self.set
+
+ def __str__(self):
+ self.set.sort()
+
+ result = ''
+
+ for i in self.set:
+ result += str(i) + ', '
+
+ return '{' + result[:-2] + '}'