面向对象设计的基本原则都有哪些
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象设计的基本原则都有哪些相关的知识,希望对你有一定的参考价值。
SRP 单一职责原则就一个类而言,应该专注于做一件事和仅有一个引起它变化的原因。
OCP 开放--封闭原则
对于扩展开放,对于修改封闭。
LSP 里氏替换原则
子(继承)类能在程序中代替父类(C#:基类,Java:超类)。
DIP 依赖倒置原则
抽象不依赖于细节,细节应该依赖抽象。(面向抽象编程,C#为面向接口编程)。
ISP 接口隔离原则
接口属于用户类。(接口面用用户类,不用想着和自身层次、方法相关)
REP 重用发布等价原则
重用的粒度就是发布的粒度。(?这个没有具体的认识)
CCP 共同封闭原则
对于需求的响应,一个包中的所以类,有一个共同的响应(改变),而对于包外是不造成影响。
CRP 共同重用原则
包中的所有类共同重用,就是要重用就全部重用。
ADP 无环依赖原则
依赖关系不要存在环。
ADP 稳定依赖原则
朝着稳定的方向进行依赖。
SAP 稳定抽象原则
包的抽象程度应该和稳定程序一致。 参考技术A 单一职责原则(SRP)
开放封闭原则(OCP)
里氏替换原则(LSP)
依赖倒置原则(DIP)
接口隔离原则(ISP)
面向对象程序设计具都有哪些特性呢?
面向对象程序设计具有的特性有:抽象性、封装性、继承性和多态性。
面向对象程序设计有4个主要特点,分别是:抽象、封装、继承、多态。以下是具体解释;一、抽象和封装
类和对象体现了抽象和封装
抽象就是解释类与对象之间关系的词。类与对象之间的关系就是抽象的关系。一句话来说明:类是对象的抽象,而对象则是类得特例,即类的具体表现形式。
封装两个方面的含义:一是将有关数据和操作代码封装在对象当中,形成一个基本单位,各个对象之间相对独立互不干扰。二是将对象中某些属性和操作私有化,已达到数据和操作信息隐蔽,有利于数据安全,防止无关人员修改。把一部分或全部属性和部分功能(函数)对外界屏蔽,就是从外界(类的大括号之外)看不到,不可知,这就是封装的意义。
二、继承
面向对象的继承是为了软件重用,简单理解就是代码复用,把重复使用的代码精简掉的一种手段。如何精简,当一个类中已经有了相应的属性和操作的代码,而另一个类当中也需要写重复的代码,那么就用继承方法,把前面的类当成父类,后面的类当成子类,子类继承父类,理所当然。就用一个关键字extends就完成了代码的复用。
三、多态
没有继承就没有多态,继承是多态的前提。虽然继承自同一父类,但是相应的操作却各不相同,这叫多态。由继承而产生的不同的派生类,其对象对同一消息会做出不同的响应。 参考技术A 1、封装性,封装就是隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别,将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。面相对象的不就是使用程序处理事情时以对象为中心去分析吗,与面向过程不同,面向过程关心处理的逻辑、流程等问题,而不关心事件主体。而面向对象即面向主体,所以我们在解决问题时应该先进行对象的封装(对象是封装类的实例,比如张三是人,人是一个封装类,张三只是对象中的一个实例、一个对象)。比如我们日常生活中的小兔子、小绵羊都可以封装为一个类。比如兔子的属性有两只耳朵、四只腿、一双眼睛、三瓣嘴等;行为(功能)有跑、跳、吃素等。2、继承性,继承是面向对象的基本特征之一,继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。类似下面这个图:我们在上面已经封装了兔子这个类,其他动物也一样可以进行封装。在封装过程中我们发现兔子、绵羊这两个类具有相似的功能或特性如吃草,所以我们可以抽取共有特征和方法形成高一层的类,如这里的食草动物、食肉动物。继承之间是子父类的关系。继承机制可以很好的描述一个类的生态,也提高了代码复用率,在Java中的Object类是所有类的超类,常称作上帝类。3、多态性,多态同一个行为具有多个不同表现形式或形态的能力。是指一个类实例(对象)的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用。 参考技术B 1.面向对象程序设计的四大特征分别为【 封装性 】、【 继承性 】、【 多态性 】、【 】。
2.每个C++程序开始执行的函数是【 main函数 】。
3.在C++中enum类型中第一个枚举元素的缺省值为【 1 】。
4.C++中只有一条语句是关于函数头部的描述,没有函数体部分,这条语句被称做函数的【 预处理语句 】。
5.在C++中,允许不同的函数具有相同的名字,只有不同的类型和不同的参数个数,这种函数被称为【 构造函数 】。
6.初始化一个类的数据成员的专用成员函数是【 析构函数 】。
7.一个非成员函数必须声明为一个类的【 private 】,才有可能存取该类的私有数据成员。
8. 【 const final 】保留字表示在对象或变量初始化后是不可修改的。
9. C++提供了【内部类(innerClass)】机制,
10.所有函数模板都用【 template 】关键字定义,接着在<符号和>符号范围内列出函数模板的模板形参表。
11.当从一个带有public继承的基类中导出一个类时,这个基类的public成员就成为该导出类的【公共】成员,而这个基类的protected成员就成为该导出类的【私有】成员。
12. 【 operator 】关键字引入了重载运算符的函数定义。
13.在类内部定义的【 private 】数据不能被该类的函数来存取,定义为【 public 】的数据和函数则可以在类外部进行存取。
14.对于导出类的构造函数,在定义对象时构造函数的执行顺序为:先执行【构造函数】,再执行【 对象构造函数】 参考技术C 面向对象的程序设计(OOP:Object-Oriented Programming)是一种基于结构分析的、以数据为中心的程序设计方法。它的主要思想是将数据及处理这些数据的操作都封装(Encapsulation)到一个称为类(Class)的数据结构中,使用这个类时,只需要定义一个类的变量即可,这个变量叫做对象(Object)。通过调用对象的数据成员完成对类的使用。
如图:编制“五子棋”的游戏程序
面向过程程序设计方法 面向对象程序设计方法
1、开始游戏; 1、玩家系统类
2、黑子先走; ——负责接收用户的输入;
3、绘制画面; 2、棋盘系统类
4、判断输赢; ——负责绘制画面;
5、轮到白子; 3 、规则系统类
6、绘制画面; ——负责判定犯规、 输赢等。
7、判断输赢;
8、返回步骤2;
9、输出最后结果。
面向对象的三个重要特征,这在类中体现明显
(1) 封装性
开发人员并不需要完全了解类体内每句代码的具体含义,只需通过对象来调用类内某个属性和方法即可实现需要的功能,这就是类的封装性。
(2) 继承性
一个类可以拥有它继承的类的所有成员,而不需要重新定义,这种特性在面向对象编程技术中称作对象的“继承性。
(3) 多态性
多态性是指在基类中定义的属性或方法被派生类继承后可以进行更改。
类与对象
在面向对象的程序设计方法中,类是对具有相同特征的一类事物所做的抽象(或者说,归纳)。对象是类的实例,是现实存在的并且可唯一区分的。
类成员
类的具体成员有以下类型: 1、常量 2、变量 3、事件 4、类型 5、方法 6、 属性 7、索引指示器 8、 运算符 9、构造函数 10、析构函数
以上是关于面向对象设计的基本原则都有哪些的主要内容,如果未能解决你的问题,请参考以下文章