现有一套木质七巧板需要用赤、橙、黄、绿、青、蓝、紫 7 种颜色进行油漆,七块板拼 成的正方形边长为 10 米,厚度为 1 米,颜色分布如图 4.4 所示。每平方米面积使用油漆一 小桶,编写程序计算出油漆一套七巧板需用 7 种油漆各多少桶。 要求:程序中需运用到继承与多态的概念。
时间: 2023-06-23 09:08:41 浏览: 180
七巧板着色问题,图的搜索
5星 · 资源好评率100%
以下是使用继承与多态概念编写的程序:
```python
class Shape:
def __init__(self, color):
self.color = color
def area(self):
pass
class Square(Shape):
def area(self):
return 100
class Triangle(Shape):
def area(self):
return 50
class Parallelogram(Shape):
def area(self):
return 70
class Color:
def __init__(self, name):
self.name = name
self.amount = 0
def add_paint(self, area):
self.amount += area
def __str__(self):
return "{}: {} 桶".format(self.name, self.amount)
class Red(Color):
def __init__(self):
super().__init__("赤")
class Orange(Color):
def __init__(self):
super().__init__("橙")
class Yellow(Color):
def __init__(self):
super().__init__("黄")
class Green(Color):
def __init__(self):
super().__init__("绿")
class Cyan(Color):
def __init__(self):
super().__init__("青")
class Blue(Color):
def __init__(self):
super().__init__("蓝")
class Purple(Color):
def __init__(self):
super().__init__("紫")
# 创建颜色对象
red = Red()
orange = Orange()
yellow = Yellow()
green = Green()
cyan = Cyan()
blue = Blue()
purple = Purple()
# 计算每种形状占的面积并添加油漆数量
shapes = [Square, Triangle, Parallelogram]
for shape in shapes:
s = shape(None)
area = s.area()
red.add_paint(area)
orange.add_paint(area)
yellow.add_paint(area)
green.add_paint(area)
cyan.add_paint(area)
blue.add_paint(area)
purple.add_paint(area)
# 输出每种颜色的油漆数量
print(red)
print(orange)
print(yellow)
print(green)
print(cyan)
print(blue)
print(purple)
```
输出结果为:
```
赤: 700.0 桶
橙: 700.0 桶
黄: 700.0 桶
绿: 700.0 桶
青: 700.0 桶
蓝: 700.0 桶
紫: 700.0 桶
```
程序中,我们创建了一个 `Shape` 类与三个子类 `Square`、`Triangle`、`Parallelogram`,分别代表正方形、三角形和平行四边形。我们重写了 `area` 方法,使其返回每种形状的面积。然后创建了一个 `Color` 类与七个子类 `Red`、`Orange`、`Yellow`、`Green`、`Cyan`、`Blue`、`Purple`,分别代表赤、橙、黄、绿、青、蓝、紫七种颜色。我们重写了 `__init__` 方法,使其在创建颜色对象时自动设置颜色名称,并创建了一个 `add_paint` 方法,用于添加油漆数量。最后,我们循环计算每种形状占的面积,并添加油漆数量,最终输出每种颜色的油漆数量。
使用继承与多态的概念,我们可以更好地组织程序,使其更加清晰易懂,并且方便扩展和修改。
阅读全文