一、了解什么是面向对象的软件开发方法

答:1、OOSD是一种把面向对象的思想应用于软件开发过程,是一种当今成熟的、普遍流行的软件开发方法

2、面向对象方法的解决思路是从现实世界中的客观对象入手,尽量运用人类的自然思维方式来构造软件系统。是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。

3、面向对象方法中,把一切都看成是对象。对象是功能抽象和数据抽象的统一,较过程稳定。

二、面向对象软件开发的主要思想

答:1、按照人类的自然思维的方式,对客观世界建立软件模型。

2、客观实体和实体之间的联系构成了现实世界的所有问题。

3、面向对象技术将现实世界中的实体及相互关系映射为对象及对象间的关系,实体间的相互作用被映射为对象间的消息发送等。

 三、面向对象方法的主要优点

答:(1)把易变的数据结构和部分功能封装在对象内并加以隐藏
i、保证了对象行为的可靠性。
ii、对其修改并不会影响其它对象,有利于维护,对需求变化有较强的适应。

(2)封装性和继承性有利于复用对象

i、把对象的属性和操作捆绑在一起,提高了对象(作为模块)的内聚性,减少了与其它对象的耦合,为复用对象提供了可能性和方便性。(高内聚,低耦合)
ii、在继承结构中,特殊类对一般类的继承,本身就是对一般类的属性和操作的复用。

四、面向对象开发方法的组成

答:(1)OOA(Object-Oriented Analysis)面向对象的分析

(2)OOD(Object-Oriented Design)面向对象的设计

(3)OOP(Object-Oriented Program)面向对象的程序设计

五、掌握面向对象的核心元素有哪些?

1、对象 2、类 3、抽象 4、封装 5、继承 6、接口 7、多态性消息 8、结构与连接

六、什么是对象?

答:1、客观世界里的任何实体都可以被称为对象。

2、软件中的对象是与应用问题(问题域或实现域中)有一定关联的某个事物,是事物的一种抽象描述。不同的角度和不同的问题域对一个对象的描述有所不同。

3、对象是一个封装数据属性和操作行为的实体。

4、对象可以是具体的、有形的物,也可以是无形的事物或概念。

5、对象的标识(名字)
对象的状态(属性描述和属性值)
对象的行为(操作行为)

七、什么是类?

答:1、类是对一类具有相同特征的对象的描述
类共享相同的属性、操作、关系,以及用来描述对象集合的语义,并定义每个对象的结构和行为。

2、类的属性
i、属性是类的特征或特性。
ii、属性的值是某一特定对象的属性值,不同对象属性值可以有所不同。

3、类的行为(操作、方法)
i、操作访问或修改对象的属性值。(封装性)
ii、一个类的所有对象都可以使用在这个类中定义的操作。

八、什么是抽象?

答:1、抽象是抽取对问题域有帮助的对象属性和行为。
2、抽象是从众多的事物中抽取出共同的、本质性的特征。
3、问题域不同,抽象程度不同,抽象结果也不同。

九、什么是封装?

1、封装的含义
数据抽象(对象属性和方法的结合)
信息隐藏

2、封装的目的
将对象的使用者和对象的设计者分开,使用者不必知道行为实现的细节,只需用设计者提供的消息来访问该对象。
把定义和实现分开,可以大大提高软件的可维护性、可修改性。

十、什么是继承

1、继承指子类自动获得父类中定义的数据、方法和关系,并可以添加新的成员的机制。

2、起始类称为基类、超类、父类或者泛化类,而继承类称为派生类、子类或者特化类。

3、继承可以帮助我们借助已知和熟悉的事物理解新的事物。

4、继承可提高软件的可复用性。

5、继承简化了对现实世界的描述,定义子类时只需专注于自己特有的属性和操作。

6、继承具有传递性。

7、继承关系表示类之间的层次关系。

类间具有共享特征

类间具有差别或新增部分

类间具有层次关系

8、继承的好处

i、通过继承可实现代码复用和扩展,可降低软件开发和维护的费用,继承是OO技术和非OO技术的一个很明显的区别。

ii、继承的另一个好处是可以保证类之间的一致性,父类可以为所有的子类定制规则,子类必须去遵守这些规则。
如C++中的虚函数(抽象类--纯虚函数),Java中的接口。

iii、子类继承一个或多个父类,从而实现了不同的抽象层次,实现多态处理。

9、继承可分单继承和多继承。

i、单重继承:子类只有一个父类

ii、多重继承:子类可以有多个父类

十一、什么是接口

1、接口是一组没有相应方法实现的操作,非常类似于仅包含抽象方法的抽象类。

2、接口是对对象行为的描述,但是并不给出对象的实现和状态。(通俗的说,接口只是说明函数应该做什么what,但没有定义函数如何做how。)

3、接口一般只包含操作而不包含属性。

4、一个类可以实现多个接口。一个接口可以被多个类实现。
5、使用接口比使用抽象类要安全得多,因为它可以避免许多与多重继承相关的问题。
6、如果需要几个类共享公共基类中没有的一些特性,且希望确保每个类自己实现这些特性,就应使用接口。
7、Java和C#等新型编程语言允许类实现多个接口,但只能继承一个通用或抽象类。

十二、什么是多态

1、多态性定义:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。
2、多态性是“一个接口,多种实现方法”。

3、使用接口可以实现多态。
4、接口支持“即插即用(plug and play)”的结构。

5、多态性的实现方式

通过接口实现多态性
通过继承实现多态性
通过抽象类实现的多态性

6、多态性的优势

i、面向对象技术正是利用多态提供的动态行为特征,来封装变化,适应变更,以达到系统的稳定。

ii、增加了面向对象软件系统的灵活性。
iii、进一步减少了信息冗余。
iv、提高了软件的可重用性和可扩展性。

v、面向对象的设计原则充分体现了多态性的运用。

十三、什么是消息

1、每个对象都至少与另一个对象联系,孤立的对象是无用的。
2、对象一旦建立了联系,就可以协作完成复杂的任务。
3、对象之间是通过相互发送消息进行协作的。

4、消息是向对象发出的服务请求。
5、消息传递机制:一个对象发送一个操作消息给另一个对象,接收消息的对象就执行此操作。
6、消息的属性:消息名、接受对象的标志、服务(方法)标志、输入信息、回答信息等。

7、一个对象能够接收多个形式、内容不同的消息。
8、相同形式的消息可以发送给不同的对象。

9、不同的对象对于形式相同的消息可以有不同的解释,做出不同的反应。(多态形式)

10、注意:消息和函数存在区别
i、消息可以包括同步消息和异步消息。
ii、如果消息是异步的,则一个对象发送消息后,就继续自己的活动,不用等待消息接收者返回控制,而函数调用往往是同步的,消息发送者要等待接收者返回。

十四、什么是结构和连接

1、问题域中对象关系之间的描述

对象的分类关系、对象之间的组成关系,对象属性之间的静态关系,对象行为之间的动态关系。

2、面向对象方法用以下四种方法描述对象之间的关系。

(1)一般/特殊结构
(2)整体/部分结构
(3)实例连接
(4)消息连接

3、一般/特殊结构又称做分类结构,是一组由一般/特殊关系的类所组成的结构。(UML中的泛化关系)

4、整体/部分结构又称为组成、组合结构,描述对象之间的组成关系。

5、实例连接反映对象和对象间的静态关系。

6、消息连接描述对象之间的动态联系。一个对象需要另一个对象对它提供服务。
消息连接是有向。连接从消息发送者指向消息接收者。

面向对象的软件开发方法相关推荐

  1. 面向对象是软件开发范式的根本性颠覆: 主体建模, 非目标导向, 松耦合, 非逻辑分解, 软件进化...

    为什么80%的码农都做不了架构师?>>>    关于面向对象的文章,100篇里面有99篇要么离谱太远,要么不知所云,但剩下有1篇是好的.我历经多年找不到那一篇,最终还是决定自己研究( ...

  2. 软件工程与软件开发模型、软件开发方法

    什么是软件工程? 软件工程一直以来都缺乏一个统一的定义. IEEE给出的定义是:软件工程是:1.将系统化的.严格约束的.可质量化的方法应用于软件的开发.运行和维护,即将工程化应用于软件:2.在1中所述 ...

  3. 软件工程结构化建模的方法和工具_系统架构师之——软件开发方法

    不管你是开发人员,还是互联网行业人员,基本上经常看到各种各样的软件相关的图,如什么架构图什么设计图什么模式图甘特图等.很多时候总是傻傻分不清.对此,我们很有必要对系统开发基础知识有认知.对于一名程序员 ...

  4. 面向对象的软件开发 (转)

    面向对象的软件开发 (转)[@more@] 面向对象的软件开发 Linda M. Northrop (本文转载自软件工程专家网www.21cmm.com,不代表gigix观点) 1 历史回顾 针对日趋 ...

  5. 这个有争议的软件开发方法,陪伴一代程序员走过了 18 年

    作者:熊节 / 插画:虎头锤 一.生于滑雪度假村,它的名字叫敏捷 敏捷是一种重视质量.追求快速反馈的软件开发方法. 2001 年 2 月,美国犹他州雪鸟滑雪度假村,"敏捷软件开发联盟&quo ...

  6. 认识基于中间件的软件开发方法

    与传统的软件开发方式相比,基于中间件的软件开发方法有什么突破呢? 一.体系结构 软件体系结构代表了系统公共的高层次的抽象,它是系统设计成败的关键.其设计的核心是能否使用重复的体系模式.传统的应用系统体 ...

  7. 【软件工程】软件开发方法

    开发方法 过程式逻辑是僵化的,并且无法对突发事件做出恰当的响应.一旦开始,程序便以或多或少的确定性方式来执行,直至完成.偶尔,程序会要求用户输入信息,然后将沿着不同的路径执行.一般来说,与用户的交互是 ...

  8. Python全栈工程师(10:面向对象的软件开发)

    面向对象的软件工程包括下面几个部分 1.面向对象分析(object oriented analysis ,OOA) 软件工程中的系统分析阶段,要求分析员和用户结合在一起,对用户的需求做出精确的分析和明 ...

  9. 什么是软件危机?软件危机的主要表现是什么?什么是软件?什么是软件工程?什么是软件过程?软件过程与软件工程方法学有何关系?​​​​​​​什么是软件开发方法?软件开发方法主要有哪些?

    软件危机:在软件的开发和维护过程中所遇到的一系列严重问题. 软件危机主要包含两方面的问题: 1.如何开发软件,以满足对软件日益增长的需求 2.如何维护数量不断膨胀的已有软件. 软件危机的消除途径: 软 ...

  10. DevOps-4-敏捷软件开发方法Scrum

    Lec03-敏捷软件开发方法 Scrum 1. Scrum历史 Scrum在英语是橄榄球运动中争球的意思. 1986年,"The New New product Development Ga ...

最新文章

  1. 编程之美-数字哑谜和回文方法整理
  2. Shell中的一些小技巧
  3. WWW超文本源码浏览器
  4. java exec 关闭_如何正确关闭java ExecutorService
  5. php有多少种占位符,php 占位符问题?
  6. 网传各高校教授经典语录
  7. 转帖:一份不错的游戏程序书单(比较全面,但都是英文的。。)
  8. 仿微信app项目流程
  9. oauth2基本概念
  10. AD8302 幅度相位检测 鉴幅鉴相器 解调对数放大器 原理图PCB
  11. tortoise介绍
  12. WebSocket 实现聊天功能
  13. windows7 32位系统下好用的一款视频制作工具--Windows live影音制作
  14. Excel的Text函数详解
  15. 抖音SEO优化详教程
  16. Python记录程序运行的时间
  17. 利用Matlab替换图片部分颜色
  18. 设备ssh连接失败问题
  19. 安装北洋雷达驱动以及可能遇到的问题
  20. 计算机网络,操作系统,微机原理,uml,java都非常重要

热门文章

  1. 关于如何将多个Cpp文件关联起来
  2. 计算适应度函数(目标函数)(单目标)
  3. 模电——硬件选择电容的耐压值以及分类和其优缺点
  4. 用Python写的简易PDF阅读器
  5. JSON字符串生成在线生成POJO工具类
  6. ps更换底色2019版本以上
  7. Edge浏览器快捷键
  8. 程序猿的中秋节——浪漫至死不渝!!
  9. 拼多多直播不显示服务器,使用电脑端进行拼多多直播的开播教程
  10. 羡慕的核心是焦虑_焦虑是自由的头晕