Python 面向对象和面向过程对比
- # 大象装冰箱
- # 脚本, 此时代码是最简单的. 不需要构思整个程序的概况
- print("开门")
- print("装大象")
- print("关门")
- # 函数式编程. 比脚本麻烦. 对功能有了概况.
- def kai():
- print('开门')
- def zhuang():
- print("装大象")
- def guan():
- print('关门')
- kai()
- zhuang()
- guan()
- # 面向对象编程, 对整个系统进行分析. 分析出需要哪些对象. 然后给对象进行归类.
- # 先写类. 然后使用类创建对象. 最后用对象去执行相关的操作
- class Elephant:
- def __init__(self):
- print("创建了一个大象")
- def kai(self):
- print("开门")
- def zuan(self):
- print("大象进冰箱")
- def guan(self):
- print("大象把门带上")
- #
- dx = Elephant()
- dx.kai()
- dx.zuan()
- dx.guan()
- # 第一回合
- # 脚本胜
- # 函数侧重的是功能
- # 面向对象侧重的是 归类
- # PK2
- # # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 超人
- # # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蝙蝠侠
- # # 小猪佩奇. 使用嘴巴嘟嘟技能攻击 蜘蛛侠
- #
- # # 面向过程: 代码非常的冗余. 尤其是参数
- def fight_superman(name, jineng):
- print("%s使用%s攻击超人" % (name, jineng))
- def fight_batman(name, jineng):
- print("%s使用%s攻击蝙蝠侠" % (name, jineng))
- def fight_spiderman(name, jineng):
- print("%s使用%s攻击蜘蛛侠" % (name, jineng))
- #
- #
- fight_superman('小猪佩奇', "嘴巴嘟嘟")
- fight_batman('小猪佩奇', "嘴巴嘟嘟")
- fight_spiderman('小猪佩奇', "嘴巴嘟嘟")
- #
- #
- class Pig:
- def __init__(self, name, jineng):
- self.name = name
- self.jineng = jineng
- def fight_superman(self):
- print("%s使用%s攻击超人" % (self.name, self.jineng))
- def fight_batman(self):
- print("%s使用%s攻击蝙蝠侠" % (self.name, self.jineng))
- def fight_spiderman(self):
- print("%s使用%s攻击蜘蛛侠" % (self.name, self.jineng))
- #
- #
- pg = Pig("小猪佩奇", "嘴巴嘟嘟")
- # # 不需要向原来一样传递一样的参数了
- # # 面向对象的程序: 结果相对清晰. 缺点: 代码量比原来大, 上手太难
- pg.fight_batman()
- pg.fight_spiderman()
- pg.fight_superman()
- # 如果写一个定时任务, 半夜12点. 给老板发送财务报表(一张图)
- def send_email(address, name, title, content):
- print("发送邮件")
- def send_wechat(wechat_num, name, title, content):
- print("发送微信")
- def send_chat(wechat_num, name, title, content):
- print("发送短信")
- def send_dd(wechat_num, name, title, content):
- print("发送钉钉")
- def send_oa(wechat_num, name, title, content):
- print("发送OA")
- class Messager:
- def __init__(self, name, title, content):
- self.name = name
- self.title = title
- self.content = content
- def send_email(self, address):
- print("发送邮件")
- def send_wechat(self, wechat_num):
- print("发送微信")
- def send_chat(self, phone_num):
- print("发送短信")
- def send_dd(self, dd_num):
- print("发送钉钉")
- def send_oa(self, oa_num):
- print("发送OA")
- # 用面向对象就比面向过程稍微好一些.
- # 可维护性比原来好
- # python同时支持面向对象和面向过程:
- # 面向过程: 应用程序相对比较小. 不需要大规模的设计
- # 面向对象: 程序非常大. 项目管理 维护成本很高. 此时更适合用面向对象(结构)
- # java : 纯面向对象 => 可以把一个微型项目. 做成巨型项目
Python 面向对象和面向过程对比的更多相关文章
- python面向对象和面向过程介绍与区别
一.面向对象和面向过程的区别: a.面向过程: 1)根据业务逻辑从上到下写代码 2)开发思路是将数据和函数按照执行的逻辑顺序组织在一起 3)分开考虑数据与函数 定义性文字: 面向对象编程(Object ...
- python的面向对象和面向过程
一.面向对象和面向过程的区别: a.面向过程: 1)根据业务逻辑从上到下写代码 2)开发思路是将数据和函数按照执行的逻辑顺序组织在一起 3)分开考虑数据与函数 定义性文字: 面向对象编程(Object ...
- 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() # ...
- python中的面向对象和面向过程
一.面向对象和面向过程 一.什么是面向过程 核心是过程二字:面向过程是一种流水线的工作流程,是先做什么在做什么 二.什么是面向对象 核心 是对象二字:是一种编程思想,上帝思维,一切皆对象,编程中负责调 ...
- Java基础知识强化20:面向对象和面向过程的思想对比
面向对象与面向过程的区别 1. 与面向对象编程思想相比较的,往往是面向过程的编程思想,其实在我来理解,两者并不冲突,原因是面向对象的编程也必须使用面向过程的思维来实现具体的功能,所以我认为,两者的区 ...
- PHP面向对象和面向过程
编程界不论是PHP.Python都有这么两种编程思想,oop面向对象.pop面向过程,这两种在功能上没有多大区别,但是在代码编写上却有很大区别.今天就记录一下面向对象和面向过程的优点.缺点.定义.实现 ...
- Day5-1 面向对象和面向过程
摘要: 类的定义 类的增删改查 对象的增删改查 对象的查找和绑定 面向对象和面向过程的区别: 1.面向过程就像是工厂的流水线,按部就班的有序的工作. 优点:把复杂的问题简单化 缺点:可扩展性差.一个步 ...
- 大话JS面向对象之扩展篇 面向对象与面向过程之间的博弈论(OO Vs 过程)------(一个简单的实例引发的沉思)
一,总体概要 1,笔者浅谈 我是从学习Java编程开始接触OOP(面向对象编程),刚开始使用Java编写程序的时候感觉很别扭(面向对象式编程因为引入了类.对象.实例等概念,非常贴合人类对于世间万物的认 ...
- 面向对象与面向过程 $this的注意事项和魔术方法set和get
一.面向对象与面向过程的区别: 二者都是一种思想,面向对象是相对于面向过程而言的.面向过程,强调的是功能行为.面向对象,将功能封装进对象,强调具备了功能的对象.面向对象更加强调运用人类在日常的思维逻辑 ...
随机推荐
- 深拷贝的原生js实现
面试时被问到怎么实现深拷贝,想都没想就用var obj2=JSON.parse(JSON.stringify(obj1))来实现.但面试官却要我用循环写出来,那就只能用递归了.可惜当时一下子忘了判断是 ...
- json 常用的序列化 反序列化对象 代码
序列化对象: ---------------------------------------------------------- Person p = new Person() { Name = & ...
- PAT 1013 Battle Over Cities
1013 Battle Over Cities (25 分) It is vitally important to have all the cities connected by highway ...
- Oracle中序列(Sequence)详解
一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用途是生成表的主键值,可以在插入语句中引用,也 ...
- 【转】js生成接口请求参数签名加密
js生成接口请求参数签名加密 签名算法规则: 第一步,设所有发送或者接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=v ...
- 【转】在使用实体框架(Entity Framework)的应用中加入审计信息(Audit trail)跟踪数据的变动
在一些比较重要的业务系统中,通常会要求系统跟踪数据记录的变动情况.系统要记录什么时间,什么人,对那些信息进行了变动. 比较简单的实现方式是在每个表中加入两个字段CreatedBy和CreatedAt, ...
- 判断window.open的页面是否已经被关
<!DOCTYPE html><html><head><meta charset="utf-8"><title>菜鸟教程 ...
- Mysql按日期分组(group by)查询统计的时候,没有数据补0的解决办法
转载自:http://blog.csdn.net/jie11447416/article/details/50887888 1.案例中的数据结构和数据如下 2.在没有解决的时候,是这样的 SELE ...
- DLL的Export和Import及extern "C"
今天使用Unrar.dll,在调用RARProcessFileW时,VS总是提示“error LNK2001: 无法解析的外部符号”. Unrar.dll中是使用 extern "C&quo ...
- 蓝桥杯—BASIC-19 完美的代价(贪心)
问题描述 回文串,是一种特殊的字符串,它从左往右读和从右往左读是一样的.小龙龙认为回文串才是完美的. 现在给你一个串,它不一定是回文的,请你计算最少的交换次数使得该串变成一个完美的回文串. 交换的定义 ...