C语言基础学习PYTHON——基础学习D06

20180821内容纲要:

 面向对象初级学习

    1 面向对象

    2 类

      (1)封装

      (2)继承

      (3)多态

    3 小结

    4 练习:选课系统

    5 课外拓展:答题系统

1 面向对象

扫描二维码关注公众号,回复: 2967242 查看本文章

先说什么是面向过程编程(procedural programm)。

procedural programm uses a list of institutions to tell the computer what to do step by step.
基本设计思路就是程序一开始幺解决一个大问题,然后把一个大问题分解成很多小问题,继续分解直至简单到可以一步解决的问题。
不方便修改和维护,如果需要不断地迭代且各部分之间相互依赖。面向过程可能就没那么简单了。

再说什么是面向对象编程(Object Orientation Programming)

利用类和对象来创建各种模型来实现对真实世界的描述。面向对象更加容易理解代码逻辑。
方便程序的维护和扩展变得简单,并且大大提高程序的考法效率。

其实我觉得面向过程其实就是简单的一次性的脚本,而面向对象是一种经过封装的结构化程序,更加规范。面向对象的主要优势就是对于后续的维护和更新会更加便捷!

所以我们一般认为, 如果你只是写一些简单的脚本,去做一些一次性任务,用面向过程的方式是极好的,但如果你要处理的任务是复杂的,且需要不断迭代和维护 的, 那还是用面向对象最方便了。

说的这么神奇,那就来看看吧~相信大家都打过CS游戏吧,我们就自己开发一个简单版的CS来玩一玩。 

暂不考虑开发场地等复杂的东西,我们先从人物角色下手, 角色很简单,就俩个,恐怖份子、警察,他们除了角色不同,其它基本都 一样,每个人都有生命值、武器等。

用OOP的方式写出游戏的基本角色 

 简易版cs

没看懂?下面分解来看看~

2 类

先来介绍两个概念:

  (1)类class:一类具有相同属性的对象的抽象、蓝图、原型。

  (2)对象object:一个类的实例化后的实例。一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象。

那什么是类呢?

 类的语法

 类的初识

通过类的初识(__inint__(self)是什么鬼?)那先来一个新的名词叫析构函数。

析构函数:在实例释放、销毁的时候执行的,通常做一些扫尾工作,比如关闭一些数据库链接。打开的临时文件。

 析构函数

这个__init__()叫做初始化方法(或构造方法), 在类被调用时,这个方法(虽然它是函数形式,但在类中就不叫函数了,叫方法)会自动执行,进行一些初始化的动作。

认识了类。那就来看看关于类的一些常识。

  a.类变量:大家共有的属性,对于共有属性和默认参数,能够节省内存。节约成本

  b.实例变量

  c.经典类

  d.新式类

  e.私有方法

  f.私有属性

经典类和新式类对于我们的不同之处就是多继承。

这些都是什么意思呢?直接上代码~看一下

 关于类的一些小概念

接下来介绍类的三种特性:

  (1)封装Encapsulation:在类中对数据进行赋值,内部调用对外部是透明的。里面包含着类的数据和方法。封装可以隐藏实现的细节,使代码模块化。

  (2)继承Inheritance:一个类可以派生出子类。在这个父类里定义的属性、方法自动被子类继承。继承可以扩展代码模块(类)。

  (3)多态Polymorphism:一个接口,多种实现。指一个基类中派生出了不同的子类,且每个子类在继承了同样方法名的同时又对父类的方法做了不同的实现。

看过这些代码大概能明白是封装了吧。封装,其实就是使用构造方法将内容封装到某个具体对象中,然后通过对象直接或者self间接获取被封装的内容,不知道那就接着看什么是继承。

 继承

 多继承

多继承是顺序继承,也就是说如果两个父类中有相同属性方法等,按顺序寻址,如果第一个父类有,那第二个就不会执行。

python2经典类是按深度优先继承的;新式类是按广度优先来继承的。python3中经典类和新式类统一按广度优先继承的。

看完这些,那就来个实例小试牛刀吧~

 继承实例-学校

最后看看什么是多态,其实python中没有直接的语法支持多态,但是可以通过间接的方式实现。

多态的作用就是在类的继承和派生的同时,保证使用家谱中任一类的实例的某一属性时的正确调用。python中没有直接的语法支持多态但是可以间接实现。

 多态实例

 3 小结

面向对象设计的由来:http://www.cnblogs.com/linhaifeng/articles/6428835.html

这个内容有点多,有点懵逼。可我总觉得有一天我都会。不知道哪来的自信。大概是梁静茹给的勇气吧~!!!

主要还是练得少。多看多写多思考!!!多动手~!!!

4 练习

角色:学校、学员、课程、讲师
要求:
1. 创建北京、上海 2 所学校
2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
3. 课程包含,周期,价格,通过学校创建课程 
4. 通过学校创建班级, 班级关联课程、讲师
5. 创建学员时,选择学校,关联班级
5. 创建讲师角色时要关联学校, 
6. 提供两个角色接口
  6.1 学员视图, 可以注册, 交学费, 选择班级,
  6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩 
  6.3 管理视图,创建讲师, 创建班级,创建课程

7. 上面的操作产生的数据都通过pickle序列化保存到文件里

第一步:选课系统用例

 选课系统用例

第二步:找名词

 名词

第三步:加属性

 属性

第四步:连关系

第五步:写代码

https://www.cnblogs.com/lianzhilei/p/5832691.html

http://www.cnblogs.com/lianzhilei/p/5985333.html

说好的以后要看?我真的会看嘛?

5 课外拓展:答题系统案例

第一步:需求分析(写用例)

 需求分析

第二步:领域模型(找名词,加属性,连关系=>出图)

 找名词

 加属性

 连关系

最后看代码:

链接:https://pan.baidu.com/s/1qyy7Gdsziwfcy_C8OFrAFg 密码:rrjf

还有个面向对象的小练习,有兴趣可以点进来看看~基于面向对象设计一个对战小游戏~!!!

http://www.cnblogs.com/linhaifeng/articles/7340497.html

我是尾巴~

推荐一些小工具,彻底解放电脑桌面:

 http://www.cgpwyj.cn/
http://www.peacemind.com.cn/
http://www.tasknet.com.cn/
http://www.metroworld.com.cn/
http://www.cngodo.cn/
http://www.gzrdbp.cn/
http://www.dnapt.cn/
http://www.zgxxyp.cn/
http://www.sjjdvr.cn/
http://www.sujinkeji.cn/
http://www.zsjxbd.cn/
http://www.yesgas.cn/
http://www.quickpass.sh.cn/
http://www.jspcrm.cn/
http://www.yjdwpt.cn/
http://www.henanwulian.cn/
http://www.hhrshh.cn/
http://www.gpgold.cn/
http://www.jingzhuiyou.cn/
http://www.ownbar.cn/
http://www.shtarchao.net.cn/

虽不才,才要坚持~!

猜你喜欢

转载自blog.csdn.net/qq_38462207/article/details/81939553