11/18java接口学习

题目2:设计一个图形系统。

对所有的图形有共同的接口Coloring,内含有一个着色的抽象方法;

设计一个抽象的图形类Shape,内含有着色的方法实现,以及求面积的抽象方法;

设计一个圆类,继承自Shape;

设计一个矩形类,继承自Shape;

设计一个测试类,完成测试。

要求:

画出系统的UML类图

完善系统功能。具有输入图形参数创建图形对象、获取图形信息、着色、求面积等功能。

进行构造方法重载;方法重写;要能体现多态。

思路:

设计一个图形系统,其中所有图形都有一个共同的接口 Coloring,其中包含一个着色的抽象方法。设计一个抽象的图形类 Shape,它包含了着色的方法实现,并有一个抽象方法用于求面积。此外,设计一个圆类 Circle 和一个矩形类 Rectangle,它们分别继承自 Shape,并提供具体的面积计算方法。

以下是解决这个问题的主要思路:

创建一个 Coloring 接口,它包含一个抽象方法 color() 用于着色图形。

创建一个抽象类 Shape,其中包含一个受保护的 color 字段来存储图形的颜色。这个类还有一个构造方法,可以用于初始化颜色。定义一个抽象方法 calculateArea() 用于计算图形的面积。同时,实现 Coloring 接口中的 color() 方法。

创建两个具体的图形类 Circle 和 Rectangle,它们都继承自 Shape 类,因此会继承 color() 方法。在这两个类中,需要实现 calculateArea() 方法来计算具体形状的面积,并提供相应的构造方法用于创建对象。

创建一个测试类 ShapeTest,在其中演示多态性。在测试类中,可以创建不同类型的图形对象,并调用它们的方法,如 calculateArea() 和 color(),以测试不同类型图形的功能。

可以在测试类的代码中直接定义圆和长方形的类。定义圆只要输入半径和颜色,长方形则输入长和宽和颜色。

UML类图:

   +------------------------+

   |     Coloring     |

   +------------------------+

   | +color() : void     |

   +------------------------+

            |

            |

            V

   +------------------------+

   |         Shape   |

   +------------------------+

   | +color() : void     |

   | +calculateArea() : double|

   +------------------------+

            |

           / \

          /   \

         /     \

        /       \

       /         \

   +-------+   +-------+

   |  Circle  |  Rectangle|

   +-------+   +-------+

   | +radius: double    |

   +-----------------------+

总结:通过完成上述题目,我深刻掌握了类的继承与复用技术。通过创建抽象类Shape、继承类Circle和Rectangle,我实现了代码的重用,提高了系统的可维护性。同时,使用接口Coloring定义共同的行为规范,体现了接口设计技术,增加了代码的灵活性和扩展性。这次经验使我更熟练地运用多态、构造方法重载和方法重写,为创建更复杂的系统奠定了基础,提升了面向对象编程的实际能力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值