Javaweb微专业第八讲-----面向对象程序设计

1.面向对象与面向过程的区别

我们常说C语言是面向过程的编程语言,而java、python、c++是面向对象的编程语言,那究竟什么是面向过程,什么是面向对象?

1.1面向过程

1.1.1 什么是面向过程

以过程为中心,分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

1.2面向对象

1.2.1 什么是面向对象

面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。

1.2.2 为什么需要面向对象

更符合人类认识现实世界的思维方式。面向过程中属性是属性,行为是行为,不是一个有机的整体,编写的代码难于维护与使用。
面向对象的主要概念:抽象继承封装多态
抽象是忽略问题中与当前目标无关的哪些方面,以便更充分地注意与当前目标有关的方面.
所用的抽象有过程抽象数据抽象两类
面向对象的软件开发方法的主要特点之一是采用了数据抽象的方法来构建程序的类与对象

1.3面向过程(Procedure Oriented)与面向对象( object oriented)

区别:
面向过程:事物比较简单,可以用线性的思维去解决
面向对象:事物比较复杂,使用简单的线性思维无法解决
共同点
都是解决实际问题的一种思维方式
二者相辅相成,并不是对立
解决复杂问题,通过面向对象方式便于我们宏观上把握事吴复杂的关心,方便我们分析整个系统;具体到微观操作,仍然使用面向过程方式来处理

2.面向对象的三个基本特征

2.1继承

继承是指新的类可以获得已有类(基类或父类)的属性和行为,成新类为已有类的派生类(或子类)
继承是一种联结类的层次模型,为类的重用提供了方便, 他提供了明确表述不同类之间共性的关系
继承性有助于解决软件的可重用性问题,使用继承使程序结构清晰,降低了编码和维护的工作量
继承特性中有多继承和单继承。单继承是指任何一个派生类都只有单一的直接父类;多继承是一个类可以用一个以上的直接父类。采用单继承的类层次结构为树状结构;采用多继承的类层次结构为网状结构,设计及实现复杂
java语言只支持单继承

2.2封装

封装是一种信息隐蔽技术,是利用抽象数据类型将数据和基于数据的操作封装在一起.封装的目的在于将对象的使用者和设计者分开,使用者不必知道行为实现的细节,只需要使用设计者提供的消息来访问对象
封装的定义
1.清楚的边界,所有对象的内部信息被限定在这个边界内
2.接口,即对象向外界提供的方法,外界可以通过这些方法与对象进行交互
3.受保护的内部实现,即软件对象功能的实现细节,实现细节不能从类外访问
好处
由于封装特性禁止了外界直接操作类中的数据,模块与模块之间只能通过严格控制的接口进行交互,这使得模块之间的耦合度大大降低,从而保证了模块具有较好的独立性,使得程序维护和修改较为容易,保证了数据的安全性,隐藏了方法的实现细节,也方便了使用。

2.3多态

多态是指一个程序中同名的不同方法共存的情况。通过子类对父类的覆盖来实现多态。这样一来,不同类的对象响应同名的消息(方法)来完成特定的功能,但其具体的实现方法却可以不同
多态性使语言具有灵活、抽象、行为共享、代码共享的优势,很好地解决了应用程序函数同名问题

3.面向对象程序设计原则

3.1单一职责原则(SRP)

一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的职责。另外,多个职责耦合在一起,会影响复用性
原则的核心就是解耦和增强内聚性

3.2开放封闭原则(OCP)

设计要对扩展有好的支持,而对修改要严格限制。最重要、最为抽象的原则

3.3里氏替换原则(LSP)

子类必须能够替换基类,否则不应当设计为其子类。也就是说子类只能去扩展基类,而不是隐藏或覆盖基类。

3.4依赖倒置原则(DIP)

设计要依赖于抽象而不是具体化

3.5接口隔离原则(ISP)

将大的接口打散成多个小接口

3.6迪米特法则或最少知识原则

一个对象应当尽可能少的去了解其他对象

3.7组合/聚合复用原则

设计者首先应当考虑复合/聚合,而不是继承。这个就是所谓的“Favor Composition over Inheritance”,在实践中复合/聚合会带来比继承更大的利益,所以要优先考虑。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小嘉丶学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值