1、OO:
OO(Object Oriented,面向对象)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
2、OOD:面向对象设计
面向对象设计(Object-Oriented Design,OOD)方法是OO方法中一个中间过渡环节。其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。
2、OOP:面向对象编程
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:
4、OOA:面向对象分析方法
Object-Oriented Analysis(面向对象分析方法)是确定需求或者业务的角度,按照面向对象的思想来分析业务。例如:OOA只是对需求中描述的问题,进行模块化的处理,描述问题的本质,区别每个问题的不同点相同点,确定问题中的对象。OOA与结构化分析有较大的区别。OOA所强调的是在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
5、OOD五大原则
S = 单一职责原则 Single Responsibility Principle
O = 开放闭合原则 Opened Closed Principle
L = Liscov替换原则 Liscov Substitution Principle
I = 接口隔离原则 Interface Segregation Principle
D = 依赖倒置原则 Dependency Inversion Principle
6、OOD五大原则简述:
S:单一职责原则,“引起类变化的因素永远不要多于一个。” 一个类,只做它的业务,不管其他类的事务;比如一个超市(项目),包含收银员,只负责收银,保安员,只负责维持秩序!等等
O:开放闭合原则::“软件实体(类,模块,函数等等)应当对扩展开放,对修改闭合。” 装饰模式就是这个原则的实现, 可以动态的添加功能,但是不能修改主体代码;比如手机,可以贴膜,可以加保护盖,但是不能拆里面的零件;
L:李氏替换原则:“子类型必须能够替换它们基类型” ; 多态的思想; 策略模式就是这个原则的实现。 把会变化的方法封装起来,方便不同的实现;比如鸟类,有的会飞,有的不会飞;那么就把飞的方法单独设计成一个接口,鸡就继承不会飞的,燕子就继承会飞的;
I:接口隔离原则 “客户端不应该被迫依赖于它们不用的接口。” 把不必要的接口,不要设计在一起。也就是抽象类,只保留最核心的接口,其他的可以设计成扩展;比如鸟类,吃(),睡(),飞(); 因为飞的函数,对于一些实现类是没有必要的,所以应该隔离掉;只保留核心部分;
D:依赖倒置原则 “高层模块不应该依赖底层模块,两者都应该依赖其抽象”;比如车(项目),包含引擎和轮胎两个属性,那么它们就可以设计成接口,然后各自有不同的实现,而且引擎和轮胎还可以复用到飞机,自行车中去,达到代码复用。
C:“组合替代(优于)继承” (Composite/Aggregate Reuse Principle,CARP)
这关系到 is a 是一个和 hava a 有一个; 比如一个轮胎类,一个车类,那么车需要使用轮胎,就必须要继承轮胎这个类吗? 代码可以这样写,但是不符合逻辑;
所以可以把轮胎类当做属性,添加到车类中去,这就是组合,有继承的优点,而没有它的缺点,更加灵活。
“笛米特法则” (Law of Demeter LoD)“你的类对其它类知道的越少越好” 门面模式(Facade)和中介模式(Mediator) 不好意思,这两个模式我还不知道,网上没找到满意的举例理解。“共同封闭原则”:这是说"相关类应该打包在一起";
“稳定抽象原则”:这是说"类越稳定,越应该由抽象类组成";
7、面向对象和面向过程的区别
面向过程是一种以过程为中心的编程思想,以算法进行驱动。面向对象是一种以对象为中心的编程思想,以消息进行驱动。面向过程编程的组成为:程序=算法+数据,面向对象编程的组成为:程序=对象+消息。
8、面向对象的3个特征
封装就是将抽象得到的数据和行为(或功能)相结合,形成一个有机整体,也就是将数据和操作数据的源代码进行有机的结合。形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口和特定的访问权限来使用类的成员。
继承是指可以使用现有的所有功能,继承可以使一个对象直接用另一个对象的属性和方法,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建新类称为“子类”或“派生类”。被继承的类被称为“基类”,“父类”或“超类”。继承的过程是从一般到特殊的过程。
多态性是允许将对象设置成为一个或多个它的子对象的技术,赋值之后,父对象就可以根据当前赋给它的子对象的特性以不同的方式运作。例如:a:=b;多态性使得能够利用同一类(基类)类型的指针来引用不同类的对象,以及根据所引用对象的不同,以不同的方式执行相同的操作。
9、C++如何实现多态?
多态有动态多态、静态多态、函数多态和宏多态等。编程者常说的多态指的是动态多态,它是基于继承机制和虚函数来实现的。
多态的基础是继承,需要虚函数的支持,C++中多态有下面3中实现方式:使用重载函数;使用模板函数;使用虚函数。
子类继承父类的大部分资源。不能继承的有构造函数、析构函数、拷贝构造函数、operator=函数、友元函数等。
10、继承和多态有何区别
在OOD和OOP中,多态的基础是继承,没有继承,多态无从谈起。
(1)对象的类型不影响类中函数的行为时,就要使用模板来生成这样一组类。
(2)对象的类型影响类中函数的行为时,就要使用继承来得到这样一组类。
11、多态的作用:
(1)隐藏实现细节,是的代码能够模块化、扩展代码模块、实现代码重用。
(2)接口重用:为了类在继承和派生的时候,保证使用家族中在一类的实例的某一属性时的正确调用。
12、关联、聚合及组合有何区别
涉及到UML中一些概念:关联是表示两个类的一般性联系,聚合表示has_a的关系,是一种相对松散的关系。而组合表示contains-a的关系,关联性强于聚合了组合类与被组合类有相同的生命周期组合类对被组合类负责,采用实心的菱形表示组合的关系。
13、软件工程的一个最基本的原则就是将接口和实现分离。
面向对象思想
最新推荐文章于 2023-04-25 16:03:14 发布