Python 实验四 面向对象程序设计

🌴 2022.5.27 下午 实验

实验四 面向对象程序设计

文章目录

前言

🎬本文章是 【Python语言基础】 专栏的文章,主要是上课的随堂笔记与练习
🔗Python专栏 传送门
📽实验源码已在Github整理

题目一

  1. 定义一个抽象类Shape,在抽象类Shape中定义求面积getArea()和周长getPerimeter()的抽象方法
  2. 分别定义继承抽象类Shape的3个子类即Triangle、Rectangle和Circle,在这3个子类中重写Shape中的方法getArea()和getPerimeter()
  3. 创建类Triangle、Rectangle、Circle的对象,对3个类中的方法进行调用测试

问题分析

利用abc库,设计抽象类Shape,在Shape中定义抽象方法getArea()和周长getPerimeter(),之后让Triangle、Rectangle、Circle分别继承Shape类并重写函数,其中Triangle类输入的三边需要额外判断是否满足两边之和永远大于第三边。设计好四个类之后,在主函数中新建对象并调用计算周长和面积

代码

"""
@Author:张时贰
@Date:2022年05月27日
@CSDN:张时贰
@Blog:zhangshier.vip
"""
import abc
import math


# 抽象类,用abc库,只需要声明函数,不需要写具体功能,不能够实例化.类似C+纯虚函数
class Shape ( metaclass=abc.ABCMeta ):
    # 面积
    @abc.abstractmethod
    def getArea(self):
        pass

    # 周长
    @abc.abstractmethod
    def getPerimeter(self):
        pass


# 三角形
class Triangle ( Shape ):
    def __init__(self, a, b, c):
        self.a = a
        self.b = b
        self.c = c

    def getArea(self):
        return 0.25*math.sqrt ( (self.a + self.b + self.c)*(self.a + self.b - self.c)*(self.b + self.c - self.a)*(
                self.a + self.c - self.b) )

    def getPerimeter(self):
        return self.a + self.b + self.c

    # 判断三边关系
    def judgeInput(self):
        a1 = self.a + self.b - self.c
        a2 = (self.a - self.b) - self.c
        b1 = self.b + self.c - self.a
        b2 = (self.b - self.c) - self.a
        c1 = self.a + self.c - self.b
        c2 = (self.a - self.c) - self.b
        if (a1 > 0 and a2 < 0) and (b1 > 0 and b2 < 0) and (c1 > 0 and c2 < 0):
            return True
        else:
            return False


# 矩形
class Rectangle ( Shape ):
    def __init__(self, a, b):
        self.a = a
        self.b = b

    def getArea(self):
        return self.a*self.b

    def getPerimeter(self):
        return (self.a + self.b)*2


# 圆
class Circle ( Shape ):
    def __init__(self, r):
        self.r = r

    def getArea(self)
  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、 一个三维向量,并定义相应的特殊方法实现两个该对象之间的加、减运算(要求支持运算符+、-),实现该对象与标量的乘、除运算(要求支持运算符*、/),以及向量长度的计算(要求使用属性实现)。 2、 编程实现如下功能: (1)定义一个抽象Shape,在抽象 Shape中定义求面积 getArea()和周长 getPerimeter()的抽象方法。 (2)分别定义继承抽象Shape的3个子类即Triangle、Rectangle、和Circle,在这3个子类中重写 Shape中的方法getArea()和 getPerimeter( )。 (3)创建Triangle、 Rectangle、 Circle的对象,对3个中的方法进行调用试。 3、使用第六章(王雷春版)介绍的知识设计一个“书籍出租管理系统”,该系统包括以下功能。 (1) 菜单项“1”:显示书籍(包括书籍名称、价格和借出状态)。 (2) 菜单项“2”:增加书籍(包括书籍名称和价格)。 (3) 菜单项“3”:借出书籍(包括借出书籍名称和借出天数)。 (4) 菜单项“4”:归还书籍(包括归还书籍名称和应付的租书费)。 (5) 菜单项“5”:统计书籍(包括借出书籍册数、未借出书籍册数和总册数)。 (6) 菜单项“-1”:退出系统。 体会利用面向对象编程的思想。 4、设计一个“超市进销存管理系统”,要求如下: (1)系统包括7种操作,分别是:1查询所有商品;2添加商品;3修改商品;4.删除商品;5卖出端口;6.汇总;-1.退出系统。 (2)选择操作序号“1”,显示所有商品 (3)选择操作序号“2”,添加新的商品(包括商品名称、数量和进货价格)。 (4)选择操作序号“3”,修改商品 (5)选择操作序号“4”,删除商品 (6)选择操作序号“5”,卖出商品(包括商品名称、数量和售出价格)。 (7)选择操作序号“6”,汇总当天卖出商品,包括每种销售商品名称、数量、进货总价、销售总价等。 (8)选择操作序号“-1”,退出系统。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值