摇咩 发表于 2023-9-12 08:49:20

类的聚合和组合

第1题:
创建一个 Shape 类,传递顶点列表并将这些顶点存储为受保护的属性。这个新类是聚合的一个示例,因为顶点可以独立于形状而存在--可以说一个形状 "有一些 "顶点。当一个类的对象与另一个类的对象一起初始化时,这就是聚合的有力证明,因为如果是组合关系,则形状需要创建自己的顶点。
实现具有以下功能的类:
属性(受保护的):vertices (受保护的顶点对象列表,用于定义形状)
方法: def __init__(self, vertices):    # 初始化形状
            def get_vertices(self)         #返回顶点列表
        def set_vertices(self, vertices) # 设置新的顶点列表
        def __eq__(self, other) # 当形状的顶点是相同的返回True - 无序

第2题:
现在,让我们来看看组成的示例。创建一个 "正方形 "类,该类接受原点和正方形边长,并通过计算正方形的角来创建自己的受保护顶点列表,然后将每个角存储在一个列表中,作为 "顶点 "类的一个实例。
在许多情况下,在聚合和组合之间做出决定是一个略显灰色的领域。不过,在本例中,我们可以说角是正方形的一部分,由正方形创建,并且不受任何其他形状的保护。因此,正方形是由角组成的。
创建正方形的步骤如下

属性(受保护的):corners (受保护的顶点对象列表,用于定义形状)
方法:def __init__(self, origin, side_length) # 正方形的顶点原点和边长
   
         def get_corners(self) # 返回定义形状的顶点列表

       def __eq__(self, other) # 如果正方形的大小和原点相同,则返回 True

       def __repr__(self) # 返回一个逗号分隔的角列表,如'(1, 1), (1, 3), (3, 3), (3, 1)'

isdkz 发表于 2023-9-12 08:49:27

第1题:

class Shape:
    def __init__(self, vertices):
      self._vertices = vertices
   
    def get_vertices(self):
      return self._vertices
   
    def set_vertices(self, vertices):
      self._vertices = vertices
   
    def __eq__(self, other):
      return set(self._vertices) == set(other.get_vertices())


在上述代码中,我们创建了一个名为 Shape 的类,该类接受一个顶点列表并将其存储为受保护的属性。我们还实现了三个方法:一个用于返回顶点列表,一个用于设置新的顶点列表,以及一个用于比较两个形状的顶点是否相同。

第2题:

class Square:
    def __init__(self, origin, side_length):
      self._origin = origin
      self._side_length = side_length
      x, y = origin
      self._corners = [(x, y), (x + side_length, y), (x + side_length, y + side_length), (x, y + side_length)]
   
    def get_corners(self):
      return self._corners
   
    def __eq__(self, other):
      return self._origin == other._origin and self._side_length == other._side_length
   
    def __repr__(self):
      return ', '.join(str(corner) for corner in self._corners)


在上述代码中,我们创建了一个名为 Square 的类,该类接受一个原点和边长,并通过计算正方形的角来创建自己的受保护顶点列表。我们还实现了三个方法:一个用于返回定义形状的顶点列表,一个用于比较两个正方形大小和原点是否相同,以及一个用于返回一个逗号分隔的角列表。
页: [1]
查看完整版本: 类的聚合和组合