【面向对象】
对于面向过程而言,重要的是过程二字,顾名思义,面向对象注重的是对象而言,那什么是对象呢
》》》》对于这个你必须站在上帝的视角去解释,对于上帝而言,一切事物皆对象,所有存在的事物都是对象,
比如:
西游记里面,上帝就是如来,如来要把自己的经书传到东土大唐,按照面向过程而言那就是如来要先干什么在干什么然后把经书传到了东土大唐。
但是像如来这样的大人物能干这种粗活吗?当然不能啦,人家日理万机啦。
说白了上帝不需要干活,在上帝眼里就是找出能帮我干活的对象,这个时候他就要找人替他干这些事儿啦,也就是找一些对象去替他干活,就可以了。
如来就找到了师徒四人孙悟空,唐僧,猪八戒,沙僧啦,中途有设置一些妖魔鬼怪进行骚扰,一些神仙保驾护航,这些在如来眼里都是对象,都是具体对象。
设计完这些东西之后,那剩下的事,如来会干涉他们吗?不会,剩下的事,师徒四人跟妖魔鬼怪跟神仙之间的交互的把取经的事儿给完成了。这就是面向对象大致的思路
》》》**那到底什么事对象呢?**也就是说你怎么判断他是不是孙悟空呢?
那你看下面那个图片孙悟空呢?当然不是啦,一看就不像。
摆在我们脑子里面的,我们应该明白孙悟空有哪些哪些特征,那问题是他能不能化妆成孙悟空。那如果他真的化妆成了,你能说他是孙悟空吗?当然不能啦,他不是呀。
心里面肯定还有其他的标准,比如说他没有孙悟空的火眼金睛,包括七十二变呀等。
如果他全部符合了,那我们就可以判断他是孙悟空,因为他符合所有的特征。
》》》总结:面向对象:核心是对象二字,对象就是特征与技能的结合体(非常重要)
优点:可扩展性强
缺点:编程复杂度高
应用场景:用户需求经常变化,互联网应用,游戏,企业内部应用
作为一名合格的的开发人员来说,掌握面向对象是必备的技能
类就是一系列对象相似的特征与技能的结合体
强调:站在不同的角度,得到的分类是不一样的
在现实世界中:一定先有对象,后有类
在程序中:一定得先定义类,后调用类来产生对象
面向过程与面向对象:
面向过程:把事物流程化
面向对象:站在上帝的视角而言,一切皆对象,特征与技能的结合体
使用面向对象还是面向过程,是要根据应用场景而言的,避免出现过度编程过度设计的现象,比如有些场景,本来应用场景没有那么高你还非得用面向对象去写,增加了编程的复杂度,这时候你还不如用面向过程来写。
【面向过程】
面向过程:核心是过程二字。过程指的是解决问题的步骤,设计一条流水线,机械式的思维方式。
优点:复杂的问题流程化,进而简单化
缺点:可扩展性差
"""一个简单的注册登录系统"""
import json
#TODO:输入
def interactive():
name=input("输入姓名>>>:").strip()
pwd=input("输入密码>>>:").strip()
return {
"name":name,
"pwd":pwd
}
#TODO:检测
def check(user_info):
is_valid=True
if len(user_info['name'])==0:
print("用户名不能为空")
is_valid=False
if len(user_info['pwd'])<6:
print('密码不能少于6位数')
is_valid=False
return {
"is_valid":is_valid,
"user_info":user_info
}
#TODO:注册
def register(check_info):
if check_info['is_valid']:
with open('db.josn','w',encoding="UTF-8") as f :
json.dump(check_info['user_info'],f)
#TODO:调用
def main():
user_info=interactive()
check_info=check(user_info)
register(check_info)
if __name__ == '__main__':
main()
结果:
存入文件:
上面的代码已经把我需要实现的功能基本给实现了,但是问题来了,当需要扩展的时候,需要一行一行,一个模块一个模块的改,那就很麻烦像下面这个,当我改了interactive(),我还需要在check(user_info):里添加功能。
"""一个简单的注册登录系统"""
import json
import re
#TODO:输入
def interactive():
name=input("输入姓名>>>:").strip()
pwd=input("输入密码>>>:").strip()
email=input("输入email>>>:").strip()
return {
"name":name,
"pwd":pwd,
"email":email
}
#TODO:检测
def check(user_info):
is_valid=True
if len(user_info['name'])==0:
print("用户名不能为空")
is_valid=False
if len(user_info['pwd'])<6:
print('密码不能少于6位数')
is_valid=False
if not re.search(r'@.*?\.com$',user_info['email']):
print("email格式错误")
is_valid=False
return {
"is_valid":is_valid,
"user_info":user_info
}
#TODO:注册
def register(check_info):
if check_info['is_valid']:
with open('db.josn','w',encoding="UTF-8") as f :
json.dump(check_info['user_info'],f)
#TODO:调用
def main():
user_info=interactive()
check_info=check(user_info)
register(check_info)
if __name__ == '__main__':
main()
结果: