C++设计画图(多态)

我们要画图形时,首先要确定在什么位置画图,可以设置一个点point来确定位置,要换什么样的形状可以设计形状类的位置设置一些形状的动作如画,移动翻转等,然后由这两个类派生出具体形状类,
各自实现接口。

是的,你描述的这种设计方式叫做继承。通过将公共的属性和方法放在父类中,然后让具体的形状类继承父类,就能复用父类的代码。这样,你可以让具体的形状类只关注自己独有的特性,而不用再重复地编写公共的代码。

此外,你还可以通过实现接口的方式来设计你的程序。接口是一种特殊的类型,它只包含方法的声明,而不包含方法的实现。通过实现接口,你的类就必须实现接口中声明的所有方法,这有助于确保你的类具有所需的行为。
下面是一个用 Python 语言实现的示例:

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y

class Shape:
    def __init__(self, point, color):
        self.point = point
        self.color = color
    
    def draw(self):
        # 实现画图的代码
        pass
    
    def move(self, dx, dy):
        self.point.x += dx
        self.point.y += dy
    
    def flip(self):
        # 实现翻转的代码
        pass

class Circle(Shape):
    def __init__(self, point, color, radius):
        super().__init__(point, color)
        self.radius = radius
    
    def draw(self):
        # 实现画圆的代码
        pass

class Rectangle(Shape):
    def __init__(self, point, color, width, height):
        super().__init__(point, color)
        self.width = width
        self.height = height
    
    def draw(self):
        # 实现画矩形的代码
        pass

class Triangle(Shape):
    def __init__(self, point, color, side1, side2, side3):
        super().__init__(point, color)
        self.side1 = side1
        self.side2 = side2
        self.side3 = side3
    
    def draw(self):
        # 实现画三角形的代码
        pass

在这个例子中,我们设计了三个形状类:Circle、Rectangle 和 Triangle。这三个类都继承自 Shape 类,并重写了 draw 方法,用于实现画形状的功能。

Shape 类包含了 point 和 color 两个属性,分别用于存储图形的位置和颜色。它还包含了 draw、move 和 flip 三个方法,分别用于画图、移动和翻转图形。

Point 类只有两个属性:x 和 y,用于存储二维平面上的一个点的坐标。