• python——面向对象


    一、面向过程,是按照问题解决步骤,一步一步的进行,思路比较简单,但是不易维护,面向对象编程是将问题分块,各个模块搭建最后的总的解决方案

    1、铅球问题的面向对象编程

     1 from math import sin, cos, radians
     2  #创建类
     3 class Projectile:
     4     def __init__(self, angle, velocity, height):
     5         
     6         #创建状态,根据给定的发射角度、初始速度和位置创建一个投射体对象
     7         self.xpos = 0.0
     8         self.ypos = height
     9         theta = radians(angle)
    10         self.xvel = velocity * cos(theta)
    11         self.yvel = velocity * sin(theta)
    12 
    13     #创建类的方法
    14     def update(self, time):
    15         #更新投射体的状态
    16         self.xpos = self.xpos + time * self.xvel
    17         yvell = self.yvel - 9.8 * time
    18         self.ypos = self.ypos + time * (self.yvel + yvell) / 2.0
    19         self.yvel = yvell
    20  
    21     def getY(self):
    22         #返回投射体的角度
    23         return self.ypos
    24  
    25     def getX(self):
    26         #返回投射体的距离
    27         return self.xpos

    调用类

     1 from Projectile import *
     2  
     3 def getInputs():
     4     a = eval(input("Enter the launch angle (in degrees):"))
     5     v = eval(input("Enter the initial velocity (in meters/sec):"))
     6     h = eval(input("Enter the initial height (in meters):"))
     7     t = eval(input("Enter the time interval: "))
     8     return a,v,h,t
     9  
    10 def main():
    11     angle,vel,h0,time = getInputs()#输入参数
    12     shot = Projectile(angle,vel,h0)#调用类,注意只用三个参数
    13     while shot.getY() >=0:
    14         shot.update(time)
    15     print("
    Distance traveled:{0:0.1f}meters.".format(shot.getX()))
    16    
    17 if __name__ == "__main__":
    18     main()

    2、GPA

     1 # 找到GPA最高的学生
     2 
     3  #定义类
     4 class Student:
     5     def __init__(self, name, hours, qpoints):
     6         self.name = name
     7         self.hours = float(hours)
     8         self.qpoints = float(qpoints)
     9         
    10     #定义方法 
    11     def getName(self):
    12         return self.name
    13      
    14     def getHours(self):
    15         return self.hours
    16      
    17     def getQPoints(self):
    18         return self.qpoints
    19      
    20     def gpa(self):
    21         return self.qpoints/self.hours
    22 
    23 #定义函数,获取每一行数据   
    24 def makeStudent(infoStr):
    25     name, hours, qpoints = infoStr.split("	")
    26     return Student(name, hours, qpoints)
    27      
    28 def main():
    29     # 打开输入文件
    30     filename = input("Enter name the grade file: ")
    31     infile = open(filename, 'r')
    32     # 设置文件中第一个学生的记录为best
    33     best = makeStudent(infile.readline())
    34  
    35     # 处理文件剩余行数据
    36     for line in infile:
    37         # 将每一行数据转换为一个记录
    38         s = makeStudent(line)
    39         # 如果该学生是目前GPA最高的,则记录下来
    40         if s.gpa() > best.gpa():
    41             best = s
    42     infile.close()
    43  
    44     # 打印GPA成绩最高的学生信息
    45     print("The best student is:", best.getName())
    46     print("hours:", best.getHours())
    47     print("GPA:", best.gpa())
    48  
    49 if __name__ == '__main__':
    50     main()
  • 相关阅读:
    过程作为黑箱抽象——《计算机程序的构造和解释》
    过程与它们所产生的计算——《计算机程序的构造和解释》
    重构手法(四)之在对象之间搬移特性
    重构手法(三)之简化条件表达式
    重构手法(二)之简化函数调用
    重构手法(一)之重新组织函数
    代码的坏味道
    泛型算法(二十三)之排列算法
    泛型算法(二十二)之集合操作算法
    泛型算法(二十一)之比较算法
  • 原文地址:https://www.cnblogs.com/ruo-li-suo-yi/p/7417441.html
Copyright © 2020-2023  润新知