面向过程和面向对象的区别
面向对象是相对于面向过程而言的,在早期编程中,比如实现1+2+3=6.
通过设计一个简单的算法就能实现。
随着计算机技术的不断提高,计算机被用于解决越来越复杂的问题。一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。通过面向对象的方法,更利于用人理解的方式对复杂系统进行分析、设计与编程。
对象的含义是指具体的某一个事物,即在现实生活中能够看得见摸得着的事物。在面向对象程序设计中,对象所指的是计算机系统中的某一个成分。在面向对象程序设计中,对象包含两个含义,其中一个是数据,另外一个是动作。对象则是数据和动作的结合体。对象不仅能够进行操作,同时还能够及时记录下操作结果。
比如人类的描述:
属性:姓名,身高,体重,肤色,性别,等等
行为:十月怀胎,吃饭,上厕所等等
符合上述描述的,可以称之为类,类:就是类别,类别,一类事物的统称,抽象概念,类并不存在。
而对象则是:类的实例(实实在在的案例)
上述描述说明在面向对象编程时候需要先创建类,再对类进行实例化生成对象。
python中如何创建类和对象
"""
python中定义一个类,使用class关键字
class 类名称 类的命名规范:大驼峰法
潜规则
"""
# 直接这样定义一个类
# class User:
class User(object):
# 定义类的属性(静态的特征)
# 覆盖(重新)__init__方法
def __init__(self):
#类的成员变量
self.name = "波波哥"
self.age = "20"
self.gender = "男"
self.email = "bobo@163.com"
#定义了类的属性,还可以定义类的行为
def study(self):
print("study python")
print("闭门之中,请勿打扰!")
def eat(self,food):
print("我的名字是{},今年{},爱吃{}".format(self.name,self.age,food))
由上,一个简单的类就创建好了。下面就对类进行实例化。
if __name__ == '__main__':
#创建对象
u1 = People()
'''
##调用对象的属性
print(u1.name)
print(u1.age)
print(u1.gender)
print(u1.email)
#调用对象的方法
u1.study()
u1.eat("油泼辣子面")
'''
u1.name = "柳下惠"
u1.age = 25
u1.gender = "男"
u1.study()
u1.eat("馒头")
上面通过类生成对象u1,调用类中的属性和方法,也可以修改类中的属性。
上述代码执行的结果是,注意观察未注释部分:
上面可以看到,是先对类的属性进行了固定,下面再对类的属性进行修改,下面采用生成对象时候传入参数而创建对象。
# -*- coding: utf-8 -*-
class Cat:
def __init__(self,name,age,color,gender):
self.name = name
self.age = age
self.color = color
self.gender = gender
def sperk(self):
print("喵喵喵,嗷嗷嗷!!我是{}".format(self.name))
if __name__ == '__main__':
c1 = Cat("建宏",20,"黑色","公")
print(c1.name)
c1.sperk()
代码执行结果,将创建对象时候传入的参数来生成对象。
在创建类的时候要注意什么才是这个类唯一的属性?
比如,圆类的属性应该是什么呢?我觉得属性是半径R比较合适,方法可以写输出圆的周长,面积等。
可以写为如下:
# -*- coding: utf-8 -*-
import math
class Circle:
def __init__(self,r):
self.r = r
def get_area(self):
return self.r*self.r*math.pi
def get_cal(self):
return 2*self.r*math.pi
if __name__ == '__main__':
radius = float(input("请输入圆的半径"))#还可以加上对输入的值进行判断是否大于0.
r1 = Circle(radius)
print("该圆的周长是{:.3f}".format(r1.get_cal()))
print("该圆的面积是{:.3f}".format(r1.get_area()))#{:.3f}进行格式化输出,保留三位小数
执行结果。
今天的面向对象分享就到这里,你可以尝试着练习下面这些题目:
1、定义一个圆类(Circle),求圆的面积和周长
2、定义一个三角形类(Strange),属性是三边的长度,求三角形的面积和周长
3.创建一个学员类(Student),并设计三个字段用于表示学生的成绩
(语文、数学、英语);然后定义一个列表list表示一个班
的学生(10人),依次输入每个学生的信息和成绩,输入
的同时将学员的每科成绩划分等级(100-90:A 89-80:
B 79-70:C 69-60:D 60以下:E)最后输出所有学员的
信息
4.编一个关于求多个某门功课总分和平均分的程序。
1.每个学生信息包括姓名和某门功课成绩。
2.假设5个学生。
3.类和对象的处理要合理
5.设计一个游戏角色类
字段:角色名、血量、魔法、状态
方法:释放技能 被伤害
要求:设计要合理
答案可参考点这里