Open huashengcaicai opened 5 years ago
面向过程
面向过程的解题思路更多是从上到下的,顺序执行
函数式编程
函数式编程更多的是把一些可复用的逻辑代码就行一个函数封装,下次用的时候可以直接使用该函数
面向对象,面向对象更多的是先提取一个抽像的类,给这个类设置变量和方法,然后实例对象 -面向对象呢,对于初学者可能有点抽象,随着经验的积累,慢慢就会掌握这种解题思想
1.这个是解决一个资源消耗过高,需要发邮件报警的功能,面向过程呢 就将所有的逻辑从上到下进行编写,执行
while True: if cpu利用率 > 90% #发送邮件 链接邮件服务器 发送邮件 关闭链接 while True: if 硬盘利用率 > 90% 链接邮件服务器 发送邮件 关闭链接 while True: if 内存利用率 > 90% 链接邮件服务器 发送邮件 关闭链接
1.函数式编程呢,相对来说更简洁一些了,提取了一些共用的功能,封装到一个函数 例如,发邮件这个功能是三种报警情况都会用的,所有可以写成一个函数
while True: if cpu利用率 > 90% def 发送邮件(cpu报警): while True: if 硬盘利用率 > 90% def 发送邮件(硬盘报警): while True: if 内存利用率 > 90% def 发送邮件(内存报警):
1.接下来用一个实例来说一下,面向对象编程 先来两个方法 init str 这是python中的魔法方法,一个是用来初始化数据的,一个是用来打印字符串的 他的特点是,对象不需要去调用这个方法,这个方法是默认调用的
## __init__ 方法 class Animal(): def __init__(self): self.name = '旺财' self.age ='2' def eat(self): print('吃饭') dog = Animal() print(dog.name) ## __str__ 方法 class Car(object): def __str__(self): return '我是魔法方法' def getself(self): print(self) print('self=%s'%id(self)) bwm = Car()
1.首先考虑一下里面的元素,有哪些? 肯定少不了游戏人物,技能,血量这些元素 2.然后我们用面想对象思想来映射 面向对象要素:类和对象,其中的类呢又有属性和方法 结合实际考虑,至少有一个类,可以把玩家创建一个类,现在英雄联盟比较火, 可以创建一个英雄类hero ,然后英雄有哪些属性呢,肯定有名字吧name ,然后还有一个重要的属性就是血量blood ,然后还需要哪些呢,很显然,要打斗就会有伤害技能,映射到面向对象就是方法,比tongren,qiangji,kanren等,然后可以把血量恢复一下,再加一个吃血的技能chiyao,然后就是给类实例化一下,创建几个玩家对象,然后使用对应的方法技能就能实现,简单的游戏场景 下面用代码实现一下:
class Hero(object): def __init__(self, name): self.name = name self.blood = 100 def tong(self, enemy): enemy.blood -= 10 print('%s 捅了%s一刀' % (self.name, enemy.name)) def kanren(self, enemy): enemy.blood -= 15 print('%s 砍了%s一刀' % (self.name, enemy.name)) def kaiqiang(self, enemy): enemy.blood -=20 print('%s 击中%s了一枪' % (self.name, enemy.name)) def chiyao(self): self.blood += 10 print('%s 吃了一颗药,加了10滴血' % (self.name)) def __str__(self): return '%s 还剩余血量 %s' % (self.name,self.blood) huasheng = Hero('花生') baijing = Hero('白鲸') print(huasheng) print(baijing) huasheng.tong(baijing) # huasheng.tong(baijing) # huasheng.tong(baijing) baijing.kanren(huasheng) huasheng.chiyao() huasheng.tong(baijing)
写在开头,这篇的主要是自己对面向对象解决问题的思想的,一个学习思考总结,这里面的语言使用的是python
面向过程,函数式编程,面向对象这几种的区别
面向过程的解题思路更多是从上到下的,顺序执行
函数式编程更多的是把一些可复用的逻辑代码就行一个函数封装,下次用的时候可以直接使用该函数
对于当今社会,分工越来越明细,各有所长,求专求精,很多生产生活的问题,不用去亲自去解决,只需要选择能够解决相应问题的服务商就可以,不用关心她具体是怎么做,只关心结果就好,其实就是面向对象的思想
下面通过一些列子来说明,面向过程
1.这个是解决一个资源消耗过高,需要发邮件报警的功能,面向过程呢 就将所有的逻辑从上到下进行编写,执行
函数式编程
1.函数式编程呢,相对来说更简洁一些了,提取了一些共用的功能,封装到一个函数 例如,发邮件这个功能是三种报警情况都会用的,所有可以写成一个函数
面向对象编程
1.接下来用一个实例来说一下,面向对象编程 先来两个方法 init str 这是python中的魔法方法,一个是用来初始化数据的,一个是用来打印字符串的 他的特点是,对象不需要去调用这个方法,这个方法是默认调用的
面向对象编程思想,设计一个拳皇这样的小游戏,然后考虑都需要哪些元素
1.首先考虑一下里面的元素,有哪些? 肯定少不了游戏人物,技能,血量这些元素 2.然后我们用面想对象思想来映射 面向对象要素:类和对象,其中的类呢又有属性和方法 结合实际考虑,至少有一个类,可以把玩家创建一个类,现在英雄联盟比较火, 可以创建一个英雄类hero ,然后英雄有哪些属性呢,肯定有名字吧name ,然后还有一个重要的属性就是血量blood ,然后还需要哪些呢,很显然,要打斗就会有伤害技能,映射到面向对象就是方法,比tongren,qiangji,kanren等,然后可以把血量恢复一下,再加一个吃血的技能chiyao,然后就是给类实例化一下,创建几个玩家对象,然后使用对应的方法技能就能实现,简单的游戏场景 下面用代码实现一下: