23、面向对象编程思想介绍

文章目录

一、面向过程思想与面向对象思想

  1. 面向过程:
    - 核心是 “过程” 二字
    - 过程的终极奥义就是将程序流程化
    - 过程是“流水线” 用来分步解决问题的
  2. 面向对象(面向容器)
    • 核心是 “对象” 二字
    • 对象的终极奥义就是将程序“整合”
    • 对象是“容器”,用来盛放数据与功能

二、思考问题过程

  • 程序 = 数据+功能
  • 假设什么都没学, 完成 一个学生课程记录信息
# 学生数据
stu_name="p"
stu_age=18
stu_gender="male"
# 学生功能
print('学生信息:名字:%s 年龄:%s 性别:%s'%(stu_name, stu_age, stu_gender))

# 课程数据
course_name="python"
course_period="6mons"
course_score=10

# 课程功能
print('课程信息:名字:%s 周期:%s 学分:%s'%(course_name, course_period, course_score))
  • 函数可以将他们"整合"
# 学生数据
stu_name="p"
stu_age=18
stu_gender="male"
# 学生功能
def stu_info():
	print('学生信息:名字:%s 年龄:%s 性别:%s'%(stu_name, stu_age, stu_gender))

# 课程数据
course_name="python"
course_period="6mons"
course_score=10

# 课程功能
def course_info():
	print('课程信息:名字:%s 周期:%s 学分:%s'%(course_name, course_period, course_score))
  • 但是不够, 还是乱, 如何容器思想呢, .py文件,按照模块放置
  • 举例说明, stu.py
# 学生数据
stu_name="p"
stu_age=18
stu_gender="male"
# 学生功能
def stu_info():
	print('学生信息:名字:%s 年龄:%s 性别:%s'%(stu_name, stu_age, stu_gender))
  • 还是不够好, 还能在“整合”, 列表呢?
# 学生功能
def stu_info():
	print('学生信息:名字:%s 年龄:%s 性别:%s'%(stu_name, stu_age, stu_gender))
stu_obj = ['p', 18, 'male', stu_info]
# 不好, 信息不明确
  • 列表不好, 信息不明确, 那信息明确字典比较好? 试一下
# 学生功能
def stu_info():
	print('学生信息:名字:%s 年龄:%s 性别:%s'%(stu_name, stu_age, stu_gender))
stu_obj = {
	"stu_name"="p",
	"stu_ag"e=18,
	"stu_gender"="male",
	"stu_info": stu_info
}
# 还是不够好, 虽然都是容器, 都是面向对象的思维, 但是字典不能将stu_info删除
  • 理想的
stu_obj = {
	"stu_name"="p",
	"stu_ag"e=18,
	"stu_gender"="male",
	"stu_info": 函数功能
}
  • Python这们语言到底提供了什么语法来允许我们将数据与功能很好的整合在一起呢?
上一篇:HDU 4400 Mines(好题!分两次计算距离)


下一篇:mysql基础4