-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOOP_3.py
68 lines (56 loc) · 1.31 KB
/
OOP_3.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from abc import ABC, abstractmethod
# inheritance
class Shape(ABC):
"""
Shape = superclass / abstract class
"""
# abstract method
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
# overriding and polymorphism
def toString(self):
pass
# child
class Square(Shape):
"sub class"
def __init__(self, edge):
self.__edge = edge # encapsulation private attribute
def area(self):
result = self.__edge**2
print("Square Area: ", result)
def perimeter(self):
result = self.__edge*4
print("Square Perimeter: ", result)
# override and polymorphise
def toString(self):
print("Square edge: ",self.__edge)
# child
class Cirle(Shape):
"""
Circle Class
"""
# constant variable
PI = 3.14
def __init__(self, radius):
self.__radius = radius
def area(self):
result = self.PI * self.__radius**2
print("Circle Area: ", result)
def perimeter(self):
result = 2 * self.PI * self.__radius
print("Circle Perimeter: ", result)
# override and polymorphise
def toString(self):
print("Circle radius: ",self.__radius)
c= Cirle(5)
c.area()
c.perimeter()
c.toString()
s= Square(5)
s.area()
s.perimeter()
s.toString()