1 面向对象介绍
程序员文章站
2022-05-10 22:08:50
编程范式 编程是 程序 员 用特定的语法+数据结构+算法 组成的代码来告诉计算机如何执行任务的过程 。 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。 ......
编程范式
编程是 程序 员 用特定的语法+数据结构+算法 组成的代码来告诉计算机如何执行任务的过程 。
一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式。 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式。 两种最重要的编程范式分别是面向过程编程和面向对象编程。
面向对象:核心就是对象二字,对象就是特征与技能的结合体
优点——可扩展性强
缺点——编程复杂度高
应用场景——用户需求经常变化,互联网应用,游戏,企业内部应用
类就是一系列对象相似的特征与技能的结合体(相当于一个模板)
强调:站在不同的角度,得到的分类是不一样的
在现实世界中:一定先有对象,后有类
在程序中:一定得先定义类,后调用类来产生对象
面向过程编程(Procedural Programming)
Procedural programming uses a list of instructions to tell the computer what to do step-by-step.
面向过程编程依赖 - 你猜到了- procedures,一个procedure包含一组要被进行计算的步骤, 面向过程又被称为top-down languages, 就是程序从上到下一步步执行,一步步从上到下,从头到尾的解决问题 。基本设计思路就是程序一开始是要着手解决一个大的问题,然后把一个大问题分解成很多个小问题或子过程,这些子过程再执行的过程再继续分解直到小问题足够简单到可以在一个小步骤范围内解决。
举个典型的面向过程的例子, 写一个数据远程备份程序, 分三步,本地数据打包,上传至云服务器,测试备份文件可用性。
def cloud_upload(file):
print("\nconnecting cloud storage center...")
print("cloud storage connected.")
print("upload file...xxx..to cloud...", file)
print('close connection.....')
def data_backup(folder):
print("找到要备份的目录...", folder)
print("将备份文件打包,移至相应目录...")
return '/tmp/backup20181103.zip'
def data_backup_test():
print("\n从另外一台机器将备份文件从远程cloud center下载,看文件是否无损")
def main():
zip_file = data_backup("c:\\users\\alex\欧美100G高清无码")
cloud_upload(zip_file)
data_backup_test()
if __name__ == '__main__':
main()
这个变量,那这个子过程你也要修改,假如又有一个其它子程序依赖这个子过程 , 那就会发生一连串的影响,随着程序越来越大, 这种编程方式的维护难度会越来越高。
test = 1
def cloud_upload(file):
if test == 1:
print("\nconnecting cloud storage center...")
print("cloud storage connected.")
print("upload file...xxx..to cloud...", file)
print('close connection.....')
return True
else:
print("不备份")
return False
def data_backup(folder):
print("找到要备份的目录...", folder)
print("将备份文件打包,移至相应目录...")
return '/tmp/backup20181103.zip'
def data_backup_test(upload_res):
if upload_res == 1:
print("\n从另外一台机器将备份文件从远程cloud center下载,看文件是否无损")
else:
print("upload error,不备份")
def main():
zip_file = data_backup("c:\\users\\alex\欧美100G高清无码")
res = cloud_upload(zip_file)
data_backup_test(res)
if __name__ == '__main__':
main()
所以我们一般认为, 如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但如果你要处理的任务是复杂的,且需要不断迭代和维护 的, 那还是用面向对象最方便了。
面向对象编程(Object Oriented Programing)
直接解释,你必然会蒙逼,所以先讲个引子。
你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢?
你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色
person = {
'name':'Alex',
'attack': 100, #杀伤力
'life_value':1000}
dog = {
'name':'Peiqi',
'attack': 200
赞 (0)
打赏
微信扫一扫
相关文章:
-
-
1如果如图所示使用多重继承,我们将看到什么 2我们看到了基类被执行了两次Baseclass 3代码验证吧 4改进措施 5完美解决=基类执行了一次 6... [阅读全文]
-
全面二胎放开了,但是50后、60后已经赶不上这班车了。于是他们果断提出了新的政策提案“放开二房!&rdq... [阅读全文]
-
属性查找 类有两种属性:数据属性和函数属性 1、类的数据属性是所有对象共享的 1 #类的数据属性是所有对象共享的,id都一样 2 print(id(... [阅读全文]
-
开篇 numpy库作为科学计算的基础库,其地位相当重要,它是对数组操作的基石。它的存在使得线性代数以及矩阵论等相关知识在计算机上的表达更加方便与简单... [阅读全文]
-
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
上一篇: Android性能系列-内存篇
下一篇: 《巴莱崖壁画》凌渡
发表评论