第五章面向对象编程设计与开发

5.1 什么是面向对象的程序设计
面向过程的程序设计
优点:复杂的问题流程化,进而简单化
缺点:一套流水线或者流程就是用来解决一个问题,扩展性极差。
应用场景:面向过程的程序设计思想一般用于那些功能一旦实现之后就很少需要改变的场景,著名的例子有Linux内核,git,以及Apache HTTP Server等

面向对象的程序设计
优点:扩展性高
但是对于一个软件质量来说,面向对象的程序设计并不代表全部,面型对象的程序设计只是用来解决扩展性问题。
软件质量属性,可扩展性,成本,性能,可靠性,安全性,可维护性,可移植性,可伸缩性
缺点:编程的复杂的远高于面向过程
应用场景:用户层,互联网应用,企业内部软件,游戏等
5.2 类与对象
类即类别、种类,是面向对象设计最重要的概念。对象是特征与技能的结合体,而类则诗一系列对象相似的特征和技能的结合体。
在程序中:务必保证先定义类,后产生对象
在程序中需要先定义类,后调用类。调用类会产生对象,返回的是对象
class

5.3属性查找与绑定方法
属性查找:数据属性和函数属性
1.类的数据属性是所有对象共享的
id都一样
2.类的函数数据是绑定给对象用的,成为绑定到对象的方法
内存地址都不一样
绑定方法
绑定到对象的方法的特殊之处在于,绑定给谁就由谁来调用,就会将“谁”本身当做第一个参数传给方法,即自动传值

类即类型

5.5继承与派生
继承与抽象(先抽象再继承)
继承与重用性
派生
继承的实现原理:
深度优先和广度优先,经典类深度优先,新式类广度优先,python3都是新式类,广度优先

类.__mro__

只有新式类才有这个属性可以查看线性列表,经典类没有这个属性。

在子类中调用父类的方法
方式一,指名道姓,即父类名,父类方法().与继承无关
方式二,super()。依赖于继承

5.6组合
组合与重用性
组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合。
1.继承的方式
“是”的关系
2.组合的方式
“有”的关系
总结:当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好。
5.7抽象类
接口与归一化设计
接口指的是,自己提供给使用者来调用自己功能的方式\方法\入口。
接口的意义在于归一化。
抽象类:
只能被继承,不能被实例化
如果类是从现实对象抽象而来的,那么抽象类就是基于类抽象而来的
抽象类只能有抽象方法(没法实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。

import abc
class All_file(metaclass=abc.ABCMeta):
    all_type= "file"
    @abc.abstractmethod
    def read(self):
        "子类必须定能够以读功能”
        pass

抽象类是一个介于类和接口直接的一个概念,同时具备类和接口的部分特性,可以用来实现归一化设计

5.8多态与多态性
多态指的是一类事物有多种形态
多态性
多态是指在不考虑实例类型的情况下使用实例,多态性分为静态多态性和动态多态性。
鸭子类型
“如果看起来像,叫声像而且走起来像鸭子,那么它就是鸭子”
5.9封装
隐藏
在python中用双下划线开头的方式将属性隐藏起来(设置为私有的)
这种变形的特点:
1.在类外部无法直接obj.AttrName
2.在类的内部可以直接使用obj.__AttrName
3.子类无法覆盖父类__开头的属性
封装的目的是隔离复杂度
特性(property)
property 是一种特殊的属性,访问它时会执行一段功能然后返回值。

5.10绑定方法与非绑定方法
一、绑定方法
1.绑定到类的方法:@classmethod
2.绑定到对象的方法:无装饰器
二、非绑定方法
@staticmethod
5.11内置方法
一、
isinstance(obj,cls)检查是否obj是否是类cls的对象
issubclass(sub,super)检查sub类是否是super类的派生类
二、反射
hasattr(object,name) # 判断
getatter(object,name,default=None) #获得
setattr(x,y,v) #设置
delattr(x,y) #删除

getattr(sys.modules[__name__], func_name)

的含义便是找到当前文件下名称为func_name的对象(类对象或者函数对象)。
5.12元类
元类是类的类,是类的模板。
5.13面向对象的软年开发
1.面向对象分析OOA
2.面向对象设计OOD
3.面向对象编程OOP
4.面向对象测试OOT
5.面型对象维护OOSM
5.14领域模型
领域建模三字经
找名词、名词列表、加属性
5.15异常处理
try:
except:
万能异常Exception

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值