pthon的如何用类进行编程

前言

面向对象编程就是如何用类进行编程。

1、什么是编程

编程是把人的语言转换成计算机能明白的指令。

2、什么是类

类是把一类实际对象抽象化,关注共有的属性特征,而不是某个对象具体属性特征。

3、类与类之间关系

面向对象编程是以类作为最小编程单位,根据工作流程,设计类与类相互的关系最终实现程序功能。如何相互协作,就要理解类与类之间关系。
类与类之间有多少个关系这不重要,这里仅仅列常见的关系。
应该来说,类该怎么定义,每个人都有自己理解,类之间关系也是多种多样,同样的项目不同人编写类和实现方法不尽相同。不要生搬硬套,重视理解,而不要关注细节。

序号关系名称定义编码表示
关联关系A类与B类存在一定的关系,关系可以是具体下面四种关注A与B类的对象之间数量和关联方向。
1依赖关系A类依靠B类完成工作在A的方法中把B类作为一个参数
2聚合关系B类是A类一个,A类是多个B类的集合B类作为A类属性,数量不确定
3组合关系B类是A类一部分,B类不单独存在B类作为A类属性,数量确定
4泛化关系A类和B类存在父子关系也叫继承关系B类有A类属性和方法,是继承

这个是经典例子,学不会类之间关系可以尝试去画。

依赖关系Denpendency
依赖关系Denpendency
继承关系Inheritance
组合关系Composition
2
1
继承关系Inheritance
实现接口Realization
聚合关系Aggregation
*
1
继承关系Inheritance
继承关系Inheritance
关联关系Assocatian
继承关系Inheritance
实现接口Realization
氧气
动物
+String 有生命
+新陈代谢(o2,water)
+繁殖()
+String 羽毛
+String 有角质喙没有牙齿
+下蛋()
翅膀
大雁
+下蛋()
+飞行()
«interface»
飞翔
+飞行()
雁群
+v型飞行()
+一型飞行()
+下蛋()
企鹅
+下蛋()
气候
唐老鸭
«interface»
说话
+讲人话()

3.1对象与对象协作

类是蓝图是抽象的,对象是类的具体实例。在落地编码中由类产生对象,通过对象之间相互协作最终实现程序功能。如何协作,在类定义已经确定下来,并不是对象来决定。
对象只关心另外一个对象有什么功能,而不关心具体如何实现。 对象只会通过调用另外一个对象方法,实现功能。不参与另外一个对象具体实现。 对象如何与另外一个对象工作,在类的设计过程中,类与类关系已经确定下来。

# 类与类关系依赖关系
class Person:
	def play(ball):
		ball.action
	
class Football:
	def action():
		print('踢球')
# 通过类产生的对象,调用的对象方法具体实现编码
p = Person()
ball=Football()
p.paly(ball)

3.2、类封装

类是把与本类相关的数据和方法绑定一起。 我们熟悉的面向过程中,使用函数实现程序功能,我们发现函数把逻辑语句封装,相关数据没有封装。或者说数据和函数在编码上单独存在。 类封装设计,是在代码上按照对象与对象打交道方式把数据和逻辑隔开,相互不干扰。
类封装是很重要概念,是面向对象思想基础。面向过程转入面向对象,难点在于思想:

  1. 每个类都是把跟自己相关数据和跟自己相关的方法绑定。
    不要把跟自己不相关加进来,包括不是自己层面的数据和方法,不要试图把跟自己不相关不应该处理的数据和方法放进来。

  2. 采用类封装一定是封装跟自己相关的,不要因为类的交互访问调用需求,而把某个类属性定义为调用的类的属性。类与类之间交互,是通过类曝露出来方法给其他类调用,访问属性也是通过类的方法。

  3. 类与类之间,包括各自的数据和方法和功能逻辑,相互之间不知道。所以每个类方法的内部逻辑是完整,调用A类时候,不依靠调用其他类来帮助A类完成A的功能。这里表达的意思,你找我办事,我还需要谁帮忙,你不需要知道细节,那是我的事情。

举例当A类要引入B类是用B类,有数据是在A类和B类反复流转的:如果在A类定义为属性,我们需要传参数形式让B类调用。这里问题是定义一个A类相关不大属性,而且只是为了调用B类,那么你会发现A类是主类时候会引入越来越多属性。这里解决办法是跟B类相关反复用的数据,定义为B类属性。

3.3、面向对象和面向过程并不是对立

在整体编程上通过使用类封装代码,对象协作,按照流程步骤完成,就是采用了面向对象编码方式。
在整体编程上通过函数协作,按照流程步骤完成,就是采用了面向过程编码方式。
不管是对象协作完成,还是函数协作完成,最后按照流程流程步骤,具体代码都是面向过程方式。面向对象看起来就像加了类封装的面向过程。

3.4、 没有用面向对象思维编码都是假的面向对象编码

如果仅仅采取类封装,没有在类定义和类与类关系抽象层面来设计整个程序,这是只是采用面向对象编码方式,不是真正面向对象。
一方面,类编程最重要遵守封装规范,编码过程是自上而下,一开始关注整体结构构建,实现宏观把控。
另外一方面具体编码实践,往往发现需要很多补充细节。
比如需要补充一些类;修改类属性和方法;类与类交互关系调整等等。都要遵守封装规范,约束代码规范编写。

总结

用类编程时,是在代码上按照把数据和逻辑隔开,相互不干扰,同时又能进行一定的协作,在各司其职的情况下,共同完成整个项目的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值