天天看点

面向对象概念、特征、原则归纳

摘要:自从计算机学科引入面向对象以来,面向对象的概念已经在计算机软件领域中经历翻天覆地地变化。从60年代中后期的Simula到现在流行的java、C#等面向对象的编程语言,面向对象的理念早已深入到大多数开发者的心里。然而,作为一名面向对象的开发人员来说,熟练掌握和理解好面向对象相关概念、特征及相应的设计原则也是非常重要的事情。本文主要归纳了面向对象的相关概念、特征及原则,希望给大家带来一定的收获。

一、面向对象的相关概念

1、面向对象概念的组成
a、类:一个类即为用户根据自己需要定义的一种类型,类型实际包含了一组属性与对这些属性操作的一些操作。
b、对象:对象为实际业务过程定义的一个具体实体,它属于一种类型。
c、消息:在运行时期,对象之间为了实现相互的通信而传递的一些信息(可能是一些数值、对象引用)。
2、软件开发中涉及英文概念
a、OO(Object-Oriented)面向对象:基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界。
b、OOA(Object-Oriented Analysis) 面向对象分析:无论是整个软件系统、还是相对较小的一个软件模块在分析阶段应采用面向对象的方式去分析。
c、OOD(Object-Oriented Design)面向对象设计:主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被开发人员接受。
d、OOP(Object-Oriented Programming)面向对象编程:把面向对象的思想应用于软件系统的编写。

二、面向对象的特征

1、抽象(abstract):对现实生活中的抽象。
2、封装(encapsulation):控制对象的边界以及充值对象对外的接口。封装使我们对边界内部代码的修改不会影响到边界外代码的实现。
3、继承(inheritance):”is a“关系。从一般到特殊,表现一种分类关系。
4、多态(polymorphism):一种行为在不通的条件下会表现出不同的行为方式。编译时多态,即方法的重载,屏蔽方法的差异。运行时多态,也叫引用多态,屏蔽子类的差异。

三、面向对象的原则

1、封装变化:找出应用中的不变之处,把他们独立出来,不要和那些不变的代码混合在一起。
2、SRP(Single Responsibility Principle)单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
3、OCP(Open-Closed Principle)开-闭原则:一个软件实体应该对拓展开放,对修改关闭。
4、LSP(Liskov Substation Principle)里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。并且利用子类替换它的父类,程序的行为没有变化。
5、DIP(Dependency Inversion Principle)依赖倒转原则:抽象不应该依赖细节,细节应该依赖于抽象。
6、ISP(Interface Segregation Principle)接口隔离原则:使用多个专门的接口,比使用单一的接口好。
7、CARP(Composition/Aggregationn Principle)组合/聚合原则:应该尽量使用组合和聚合来实现复用而不是继承。
8、LOD(Law of Demeter)迪米特原则:又称为最少知识原则,一个对象应当对其他对象有尽可能少的了解。

四、总结

以上只是个人在学习使用过程中的一个总结,其中参考了《Java 编程思想》、《大话设计模式》及网络上一些朋友的思想。这里主要以归纳为主,如果对其中有问题的话,大家一起交流。