引用自面向对象_百度百科
面向对象(Object Oriented)是软件开发方法,一种编程范式。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
对象我们可以理解为一个实物,比如人、动物、物体等
当我们想要完成一件事情只需要告诉这个对象,你去完成什么事情,至于对象怎样去完成这个事情就是我们所要编写的代码。
比如我们使用计算器进行两个数的相加计算伪代码就是
对象 计算器
动作 两个数相加 ( 数A, 数B) {
返回 数A + 数B
}
而对于对象有三大特性,分别是封装、继承和多态。
上面的伪代码,就是一个封装的过程,像神一样捏造出一个计算器,并且这个计算器可以进行两个数相加的动作。
而继承我们可以拿人来举例子。在一个工厂里面,分为职能人员和工人,而职能人员又按照职位的不同区分不同的职能工人按照不同的工作区分不同的工种。他们都需要工作,但是做着自己分内的工作,谁也不会去做其他人的事情,因为他们并不知道其他人的工作要如何去做。而这些人在进入自己的工作岗位之前,首先要成为工厂的员工。无论是职能人员还是工人,作为工厂的员工就都要打卡上班、打卡下班。于是员工的对象就有了明确的定位,而封装一个员工,他能做的事情就是打卡上班、打卡下班。
对象 员工
属性 上班时间
属性 下班时间
动作 打卡上班 () {
获取当前打卡时间
如果 打卡时间 大于 上班时间
迟到
do 记录迟到记录
}
动作 打卡下班 () {
获取当前打卡时间
如果 打卡时间 小于 下班时间
早退
do 记录早退记录
}
因为区分职能人员和工人,职能人员和工人有着不同的上班时间和下班时间,所以又有了两个对象。
对象 职能人员 继承自 员工
属性 上班时间 早9
属性 下班时间 晚5
对象 工人 继承自 员工
属性 上班时间 早9
属性 下班时间 晚9
而多态就是,公司现在有个事情需要去做,但是只要是公司的员工就都可以做的一件事情,比如跑腿。只是职能人员跑腿的地点是A,工人跑腿的地点是B,之前是要跑腿A的,然后现在要跑腿B。就有了如下的伪代码。
对象 职能人员 继承自 员工
覆盖动作 跑腿
去A做点什么
对象 工人 继承自 员工
覆盖动作 跑腿
去B做点什么
-- 调整之前跑腿去A
对象 公司
属性 员工
初始化(职能人员)
员工 = 职能人员
动作 跑腿
员工 去 跑腿
-- 调整之后跑腿去B
对象 公司
属性 员工
初始化(工人)
员工 = 工人
动作 跑腿
员工 去 跑腿
虽然上面去跑腿的对象一直都是员工,但实际执行的人是在初始化的时候,指派的人,如果我指派给职能人员,就是去A跑腿,如果指派给工人就是去B跑腿