13.23. OOP Architecture Rationale¶

13.23.1. Glossary¶

• Class - blueprint, idea, receipt

• Instance, Object - incarnation, implementation of an idea

• Variables in a class:

• Field - generic name for a variable in a class

• Property - fields which typically do not change

• State - fields which changes frequently

• Attribute - field, but in Python also a method

>>> data = tuple()
>>> data.append()
Traceback (most recent call last):
AttributeError: 'tuple' object has no attribute 'append'


13.23.2. Value¶

• Identifier + Scalar = Value

>>> point_x = 1
>>> point_y = 2
>>> point_z = 3
>>>
>>> print(f'Point: x={point_x}, y={point_y}, z={point_z}')
Point: x=1, y=2, z=3


13.23.3. Structure¶

• Value + Relation = Structure

>>> point = (1, 2, 3)
>>>
>>> print(f'Point: x={point[0]}, y={point[1]}, z={point[2]}')
Point: x=1, y=2, z=3


13.23.4. Data¶

• Structure + Meaning = Data

>>> point = {'x':1, 'y':2, 'z':3}
>>>
>>> print(f'Point: x={point["x"]}, y={point["y"]}, z={point["z"]}')
Point: x=1, y=2, z=3


13.23.5. Information¶

• Data + Behavior = Information

• Entity (class, object)

>>> class Point:
...     x: int
...     y: int
...     z: int
...
...     def set(self, x, y, z):
...         self.x = x
...         self.y = y
...         self.z = z
...
...     def show(self):
...         return f'x={self.x}, y={self.y}, z={self.z}'
>>>
>>>
>>> point = Point()
>>> point.set(x=1, y=2, z=3)
>>>
>>> print(f'Point: {point.show()}')
Point: x=1, y=2, z=3