第1章.上升到面向对象

合集下载

第1章面向对象基础知识

第1章面向对象基础知识

根据需求,对每一部分分别进行具体
的设计,首先是类的设计,可能包 括多个层次(利用继承和派生机
制),然后提出程序设计的思路和
方法。
38
3、面向对象编程(Object oriented programming, OOP) 选用适当的开发工具进行编程。
4、面向对象测试(Object oriented test, OOT) 对程序进行严格的测试。 5、面向对象维护(Object oriented software maintenance, OOSM)
第一章 面向对象的基本知识
1
内容提要
1. 面向对象程序设计诞生的原因 1.1 面向过程语言 1.2面向对象的程序设计 2. 面向对象语言的特征 2.1 封装 2.2 继承 2.3 多态 3. C++和 C 4. 面向对象的软件开发
2
1. 面向对象程序设计诞生的原因
1.1 面向过程语言 (Procedural Language) • C, Pascal, FORTRAN, 以及其它的
的,反之却不成立。
36
4. 面向对象的软件开发
1、面向对象分析(Object oriented
analysis, OOA)
系统分析员和用户一起,对用户的需
求做出分析和明确的描述。从客观 存在的事物和它们之间的关系归纳
出有关的对象及其关系,并将具有
相同属性和行为的对象用一个类来 表示。
37
2、面向对象设计(Object oriented design,OOD)
26
面向对象范例
典型的C++程序由许多对象组成,它们通过调 用成员函数来进行通信。
对象1 数据
成员函数

面向对象的开发方法步骤

面向对象的开发方法步骤

面向对象的开发方法步骤引言面向对象的开发方法是一种常用的软件开发方法,它以对象为中心,通过将系统划分为一系列相互关联的对象来进行开发。

这种方法能够提高代码的重用性、可维护性和可扩展性,是现代软件开发中非常重要的一部分。

本文将详细介绍面向对象的开发方法的步骤和相关概念。

什么是面向对象编程面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将系统看作是一系列独立的对象,每个对象都具有唯一的身份、状态和行为。

面向对象编程的核心思想是将现实世界中的事物抽象为对象,通过对象之间的交互来完成系统的功能。

面向对象的开发方法步骤面向对象的开发方法包括以下步骤:1. 需求分析需求分析是软件开发的第一步,它的目标是确定系统的需求和功能。

在面向对象的开发方法中,需求分析的重点是识别系统中的对象、它们之间的关系以及每个对象的属性和方法。

2. 领域建模领域建模是将需求分析得到的对象抽象为类的过程。

在这个阶段,需要识别系统中的类、类之间的关系、类的属性和方法,并将其用类图进行建模表示。

领域建模的步骤1.识别类:根据需求分析确定系统中的类,每个类代表一个真实世界中的对象。

2.确定类的属性:确定每个类的属性,属性包括该类的状态信息。

3.确定类的方法:确定每个类的方法,方法是类用来完成某个功能的操作。

4.确定类之间的关系:确定类与类之间的关联、依赖和继承关系。

3. 设计在面向对象的开发方法中,设计是将领域模型转化为可执行的代码的过程。

设计的重点是确定类的细节,包括属性的类型和访问权限、方法的实现和调用顺序等。

设计的步骤1.确定类与类之间的关系:根据领域模型中的关联、依赖和继承关系,确定类的设计关系。

2.设计类的属性:确定每个类的属性的类型和访问权限。

3.设计类的方法:确定每个类的方法的实现和调用顺序。

4. 编码编码是将设计的结果翻译成计算机能够理解的代码的过程。

在编码过程中,需要根据设计文档编写代码,并进行单元测试来验证代码的正确性。

面向对象分析的五个层次

面向对象分析的五个层次

面向对象分析补充内容:1.面向对象分析的五个层次面相对象分析由五个主要活动组成,即确定类-&-对象、识别结构、识别主题、定义属性和定义服务(方法)。

对于一个复杂问题的面向对象的模型可用五个层次表示:类-&-对象层、结构层、主题层、属性层和服务层,如图1:图1 对象模型的五个层次主题(Subject)层:主题给出分析模型的总体概貌,是控制读者在同一时间所能考虑的模型规模的机制。

类-&-对象(Class & Object)层:对象是数据及其处理的抽象。

它反映了保存有关信息和与现实世界交互的能力。

结构(Structure)层:结构表示问题域的复杂性。

类 - 成员结构反映了一般 - 特殊关系,整体 - 部分结构反映了整体 - 部分的关系。

属性(Attribute)层:属性是数据元素,用来描述对象或分类结构的实例,可在图中给出并在对象的储存中指定,即给出对象定义的同时,指定属性。

服务(Serves)层:服务是接收到消息后必须执行的一些处理,可在图上标明它并在对象的储存中指定,即给出对象定义的同时,定义服务。

五个层次就像合并在一起的五个透明的图层一样,每一层从不同角度将对象模型更细化、更具体化。

2.五个层次对应的五个活动面向对象的模型的五个层次对应着分析建模的五个主要活动。

这五个活动的工作可以不按顺序进行,也没必要完成一项活动后才开始另一项活动工作。

也就是说,五个主要活动可以同时(并行)处理;可以从较高抽象层转移到较低的具体层,然后再返回到较高抽象层继续处理;当系统分析员在确定类-&-对象的同时,想到该类的服务,则可以先确定服务后,再返回去继续寻找类-&-对象;没有必要遵循自顶向下,逐步求精的原则。

3.面向对象分析流程一般情况下,面向对象分析过程可按照下列流程进行:确定类-&-对象、识别结构、识别主题、定义属性、建立动态模型、建立功能模型、定义服务(方法)。

面向对象的开发方法步骤

面向对象的开发方法步骤

面向对象的开发方法步骤面向对象的开发方法步骤随着计算机技术的不断发展,面向对象的编程方法越来越受到开发者的青睐。

与传统的面向过程编程相比,面向对象编程具有更高的可读性、可扩展性和可维护性,可以更好地解决复杂问题。

面向对象的开发方法步骤如下:1. 需求分析在开始开发前,首先要明确需求。

需求分析是软件工程中最关键的阶段之一,其准确性直接影响开发后期的成功与否。

需要明确用户的需求、使用场景和目标。

此时可以使用UML工具来制定类图和用例图。

2. 概念设计在分析了需求后,需要制定项目中用到的类和对象。

这些类和对象的属性、方法等都需要在这一阶段定义清楚。

此时可以使用UML工具来绘制类图、对象图等。

3. 详细设计在概念设计确定后,需要对每个类和对象进行详细设计。

在这一阶段,需要定义类的结构、算法和成员函数。

此时可以使用UML工具完成时序图、类图、活动图等。

4. 编码和测试完成了详细设计后,就可以开始编码了。

在编写代码时,需要遵循设计时制定的规范和标准。

在代码编写后,需要进行测试。

测试有两种类型:单元测试和综合测试。

单元测试是针对代码功能进行的测试,而综合测试则是指在系统环境下测试各个模块之间的交互和应对各种情况的能力。

5. 调试在测试后,可以进行调试。

调试是指在发现错误时,通过追踪代码来寻找错误源头并进行修复。

调试应该是必须的,并且应该在测试过程中进行。

这能够帮助开发人员修复所有的错误。

6. 发布完成了调试后,代码就可以发布了。

发布可以包括安装、使用说明以及文档。

在发布前,需要对产品进行全面测试,以确保用户能够顺利地使用系统。

总结面向对象的开发方法是软件工程中重要的部分,它需要经历需求分析、概念设计、详细设计、编码和测试、调试和发布等多个步骤。

其中,需求分析是非常关键的阶段,过程的准确性直接影响后续开发的效果。

同时,详细设计是面向对象开发中最为重要的一块,人类的大脑是直直接的与这个过程相关联的,因此详细设计的合理性直接影响代码质量与维护成本。

面向对象程序设计步骤

面向对象程序设计步骤

面向对象程序设计步骤面向对象程序设计(Object-Oriented Programming,简称OOP)是一种程序设计方法论,它以对象(实例)为中心,通过封装、继承和多态等特性,使得程序的设计更加模块化、可维护、可复用。

下面将介绍面向对象程序设计的步骤。

1. 分析需求面向对象程序设计的第一步是分析问题,并明确程序的需求。

这可以通过与客户或用户交流,深入了解问题的本质和功能需求,从而为后续的设计提供参考。

2. 定义类与对象在面向对象程序设计中,类是创建对象的模板。

程序的下一步是定义类,包括类名、属性和方法等。

类的属性是描述对象特征的变量,方法是描述对象行为的函数。

3. 建立关系面向对象程序设计的核心是建立类与类之间的关系。

关系包括继承、组合和关联等。

继承是指一个类可以继承另一个类的属性和方法,从而实现代码的复用。

组合是指一个类包含其他类的对象作为属性。

关联是指一个类与另一个类有某种关系,可以通过对象间的引用进行交互。

4. 设计方法在定义类的过程中,需要设计类的方法。

方法是描述对象行为的函数,可以通过方法来操作类的属性,实现对对象的控制和交互。

5. 编写代码在设计完类和方法后,开始编写程序的代码。

代码的编写需要按照语言的语法规则和设计模式来,同时要注意代码的规范性和可读性,以便后续的测试和维护。

6. 测试与调试编写完代码后,需要进行测试与调试。

测试可以通过创建多个对象,调用类的方法,验证程序的正确性和运行效果。

如果发现问题,需要进行调试,逐步排查错误并进行修复。

7. 优化与重构在测试和调试的过程中,可能会发现程序存在性能问题或代码不够优雅的情况。

这时需要进行优化和重构。

优化是指通过改进算法或结构,提升程序的性能和效率。

重构是指通过修改代码结构和逻辑,提高代码的可读性和可维护性。

8. 文档撰写最后一步是撰写程序的文档。

文档可以包括需求分析、设计思路、类和方法的说明等。

文档的撰写有助于后续的团队协作和项目维护。

《面向对象程序设计》知识点

《面向对象程序设计》知识点

《面向对象程序设计》知识点《面向对象程序设计》是计算机科学中的重要概念,它是一种软件开发方法,将软件模型作为一个系统的集合来设计、分析和实现。

本文将重点介绍面向对象程序设计中的关键知识点,包括面向对象的基本概念、类与对象、继承与多态、封装和抽象等内容,以便读者全面了解和掌握面向对象程序设计的核心概念和方法。

一、面向对象的基本概念1. 面向对象编程的起源:面向对象编程(Object-Oriented Programming,简称OOP)起源于20世纪60年代,是一种基于对象的软件开发范式,它将数据和操作数据的方法组合到一个对象中,以及通过对象之间的交互来完成程序的设计。

2. 面向对象的特征:面向对象的程序设计具有封装、继承和多态的特征。

封装指的是将数据和处理数据的方法封装在对象中,继承指的是子类可以继承父类的属性和方法,多态指的是同一操作作用于不同对象上时可以有不同的行为。

3. 面向对象的优势:面向对象的程序设计具有代码复用性高、可维护性强、扩展性好、可靠性高等优势,可以提高程序的设计效率和质量。

二、类与对象1. 类的定义:类是一种抽象数据类型,用来描述具有相同属性和行为的对象的集合。

类用来创建对象的模板,包含数据成员和成员函数。

2. 对象的创建:对象是类的一个实例,是具体的数据和行为的封装体。

通过类实例化,可以创建多个对象来表示真实世界的实体。

3. 类的成员:类包含数据成员和成员函数。

数据成员表示对象的属性,成员函数表示对象的行为,可以进行数据的操作和处理。

三、继承与多态1. 继承:继承是指一个新类从现有类中派生出来,并且拥有现有类的属性和行为。

继承可以实现代码的复用,并且可以建立类之间的关系。

2. 多态:多态是指同一操作作用于不同对象上时可以有不同的行为。

多态通过虚函数和动态绑定实现,可以使程序具有更好的灵活性和扩展性。

四、封装和抽象1. 封装:封装是指将数据和数据的操作封装在类的内部,外部无法直接访问和修改类的数据。

UML系统建模基础教程习题答案(清华大学出版社)

UML系统建模基础教程习题答案(清华大学出版社)

第一章面向对象设计与UML对象:是面向对象系统基本构造块,是一些相关变量和方法的软件集。

类:是具有相同属性和操作的一组对象的组合,也就是说,抽象模型中的“类”描述了一组相似对象的共同特征,为属于该类的全部对象提供了统一的抽象描述。

消息:是指描述事件发生的信息,是对象间相互联系和相互作用的方式。

事件:是指一种由系统预先定义而由用户或系统发出的动作。

事件作用于对象,对象识别事件并作出相应的反应。

面对对象的三大要素:封装:就是把对象的状态和行为绑到一起的机制,使对象形成一个独立的整体,并且尽可能地隐藏对象的内部细节。

继承:是一种连接类与类之间的层次模型,是指特殊类的对象拥有其一般的属性和行为。

多态:是指两个或多个属于不同类的对象中,同一个函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数。

(1)试述对象和类的关系答:类是具有相同或相似结构、操作和约束规则的对象组成的集合,而对象是某一类的具体化实例,每一个类都是具有某些共同特征的对象的抽象。

类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类.类描述了一组有相同特性和相同行为的对象。

(2)请简要叙述面向对象的概念答:面向对象技术是一种以对象为基础,以事件或信息来驱动对象执行处理的程序设计技术。

从程序设计方法上来讲,它是一种自下而上的程序设计方法,它不像面向过程程序设计那样一开始就需要使用一个主函数来概括出整个程序,面向对象程序设计往往从问题的一部分着手,一点一点地构建出整个程序。

(3)软件开发的模式有几种?它们的优缺点各是什么?答:瀑布模型、喷泉模型、基于组件的开发模型、XP开发模型瀑布模型—优点:提供了软件开发的基本框架;有利于软件开发过程中人员的组织与管理;缺点:1、只有在项目生命周期的后期才能看到结果;2、通过过多的强制完成日期和里程碑来跟踪各个项目阶段;3、在软件需求分析阶段,要完全地确定系统用户的所有需求是一件比较困难的事情,甚至可以说完全确定是不太可能的。

面向对象是怎样工作的(第3版)

面向对象是怎样工作的(第3版)

面向对象是怎样工作的(第3版)版权信息•推荐序1•推荐序2•前言•本书的结构•各章的结构•第1章面向对象:让软件开发变轻松的技术•1.1 面向对象是软件开发的综合技术•1.2 以对象为中心编写软件的开发方法•1.3 从编程语言演化为综合技术•1.4 面向对象难的原因•1.5 原因之一:OOP结构复杂•1.6 原因之二:滥用比喻引起混乱•1.7 原因之三:面向对象的概念是抽象的•1.8 重点讲解“是什么”和“为什么”•1.9 本书的构成•第2章似是而非:面向对象与现实世界•2.1 对照现实世界介绍面向对象•2.2 类指类型,实例指具体的物•2.3 多态让消息的发送方法变得通用•2.4 继承对共同点和不同点进行系统的分类和整理•2.5 使用比喻进行讲解容易造成混乱•2.6 面向对象和现实世界是似是而非的•2.7 明确定义为编程结构•2.8 软件并不会直接表示现实世界•2.9 与现实世界的相似增大了可能性•第3章理解OOP:编程语言的历史•3.1 OOP的出现具有必然性•3.2 最初使用机器语言编写程序•3.3 编程语言的第一步是汇编语言•3.4 高级语言使程序更加接近人类语言•3.5 重视易懂性的结构化编程•3.6 提高子程序的独立性,强化可维护性•3.7 实现无GOTO编程的结构化语言•3.8 进化方向演变为重视可维护性和可重用性•3.9 没有解决全局变量问题和可重用性差的问题•深入学习的参考书•第4章面向对象编程技术:去除冗余、进行整理•4.1 OOP具有结构化语言所没有的三种结构•4.2 OOP的结构会根据编程语言的不同而略有差异•4.3 三大要素之一:具有三种功能的类•4.4 类的功能之一:汇总•4.5 类的功能之二:隐藏•4.6 类的功能之三:创建很多个•4.7 实例变量是限定访问范围的全局变量•4.8 三大要素之二:实现调用端公用化的多态•4.9 三大要素之三:去除类的重复定义的继承•4.10 对三大要素的总结•4.11 通过嵌入类型使程序员的工作变轻松•4.12 将类作为类型使用•4.13 编程语言“退化”了吗•4.14 更先进的OOP结构•4.15 进化的OOP结构之一:包•4.16 进化的OOP结构之二:异常•4.17 进化的OOP结构之三:垃圾回收•4.18 对进化的OOP结构的总结•4.19 决心决定OOP的生死•第5章理解内存结构:程序员的基本素养•5.1 理解OOP程序的运行机制•5.2 两种运行方式:编译器与解释器•5.3 解释、运行中间代码的虚拟机•5.4 CPU同时运行多个线程•5.5 使用静态区、堆区和栈区进行管理•5.6 OOP的特征在于内存的用法•5.7 每个类只加载一个类信息•5.8 每次创建实例都会使用堆区•5.9 在变量中存储实例的指针•5.10 复制存储实例的变量时要多加注意•5.11 多态让不同的类看起来一样•5.12 根据继承的信息类型的不同,内存配置也不同•5.13 孤立的实例由垃圾回收处理•深入学习的参考书•第6章重用:OOP带来的软件重用和思想重用•6.1 OOP的优秀结构能够促进重用•6.2 类库是OOP的软件构件群•6.3 标准类库是语言规范的一部分•6.4 将Object类作为祖先类的继承结构•6.5 框架存在各种含义•6.6 框架是应用程序的半成品•6.7 世界上可重用的软件构件群•6.8 独立性较高的构件:组件•6.9 设计模式是优秀的设计思想集•6.10 设计模式是类库探险的路标•6.11 扩展到各个领域的思想的重用•6.12 通过类库和模式发现的重用的好处•深入学习的参考书•第7章化为通用的归纳整理法的面向对象•7.1 软件不会直接表示现实世界•7.2 应用于集合论和职责分配•7.3 在上游工程中化为通用的归纳整理法•7.4 两种含义引起混乱•7.5 分为编程技术和归纳整理法进行思考•7.6 为何化为了通用的归纳整理法•第8章 UML:查看无形软件的工具•8.1 UML是表示软件功能和结构的图形的绘制方法•8.2 UML有13种图形•8.3 UML的使用方法大致分为三种•8.4 UML的使用方法之一:表示程序结构和动作•8.5 类图表示OOP程序的结构•8.6 使用时序图和通信图表示动作•8.7 UML的使用方法之二:表示归纳整理法的成果•8.8 使用类图表示根据集合论进行整理的结果•8.9 表示职责分配的时序图和通信图•8.10 UML的使用方法之三:表示非面向对象的信息•8.11 使用用例图表示交给计算机的工作•8.12 使用活动图表示工作流程•8.13 使用状态机图表示状态的变化•8.14 弥补自然语言和计算机语言缺点的“语言”•深入学习的参考书•第9章建模:填补现实世界和软件之间的沟壑•9.1 现实世界和软件之间存在沟壑•9.2 计算机擅长固定工作和记忆工作•9.3 通过业务分析、需求定义和设计来填补沟壑•9.4 建模是顺利推进这三个阶段的工作的技术•9.5 应用程序不同,建模的内容也不一样•9.6 业务应用程序记录现实中的事情•9.7 对图书馆的借阅业务进行建模•9.8 使用用例图来表示图书馆业务•9.9 用概念模型表示图书馆系统的信息•9.10 在业务应用程序中,数据结构反映现实世界•9.11 嵌入式软件替代现实世界的工作•9.12 嵌入式软件中设备的研究开发很重要•9.13 使用状态机图表示全自动工作的情形•9.14 嵌入式软件一直执行单调的工作•9.15 建模蕴含着软件开发的乐趣•深入学习的参考书•第10章面向对象设计:拟人化和职责分配•10.1 设计的目标范围很广•10.2 相比运行效率,现在更重视可维护性和可重用性•10.3 设计目标之一:去除重复•10.4 设计目标之二:提高构件的独立性•10.5 提高构件独立性的诀窍•10.6 设计目标之三:避免依赖关系发生循环•10.7 面向对象设计的“感觉”是拟人化和职责分配•10.8 进行了职责分配的软件创建的奇妙世界•深入学习的参考书•第11章衍生:敏捷开发•11.1 仅靠技术和技术窍门,软件开发并不会成功•11.2 系统地汇总了作业步骤和成果的开发流程•11.3 限制修改的瀑布式开发流程•11.4 瀑布式开发流程的极限•11.5 灵活响应变化的迭代式开发流程•11.6 打破诸多限制的XP•11.7 确定团队工作推进方式的框架的Scrum•11.8 快速编写优秀软件的敏捷宣言•11.9 支持敏捷开发的实践•11.10 先编写测试代码,一边运行一边开发的测试驱动开发•11.11 在程序完成后改善运行代码的重构•11.12 经常进行系统整合的持续集成•11.13 实践敏捷宣言理念的方法•11.14 敏捷开发源于面向对象•11.15 不存在最好的开发流程•深入学习的参考书•第12章熟练掌握面向对象•12.1 面向对象这一强大概念是原动力•12.2 时代追上了面向对象•12.3 面向对象的热潮不会结束•12.4 将面向对象作为工具熟练掌握•12.5 享受需要动脑的软件开发•深入学习的参考书•附章函数式语言是怎样工作的•A.1 面向对象编程语言和函数式语言混合占据主流的时代•A.2 函数式语言的7个特征•A.3 特征1:使用函数编写程序•A.4 特征2:所有表达式都返回值•A.5 特征3:将函数作为值进行处理•A.6 特征4:可以灵活组合函数和参数•A.7 特征5:没有副作用•A.8 特征6:使用模式匹配和递归来编写循环处理•A.9 特征7:编译器自动进行类型推断•A.10 对7个特征的总结•A.11 函数式语言的分类•A.12 函数式语言的优势•A.13 函数式语言的课题•A.14 函数式语言和面向对象的关系•A.15 掌握函数式编程•深入学习的参考书•后记•致谢。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-25-
操作
操作(operation)访问或修改对象的
属性值 对象的行为是由为此对象定义的一系 列操作决定的 一个类可能同时存在多个实例,也可 能在某一时刻没有实例 一个类的所有实例都可以使用在这个 类中定义的操作
-26-
操作取决于视点
一辆汽车具有的操作:

从销售人员的角度 处理客户定单 准备销售合同 加入清单 从清单中删除
基础
知识储备:软件工程、面向对象程序设
计 实践储备:了解工程项目的特点,最好 有实际软件项目的开发背景
基本定位
在软件相关行业,能够利用UML进行
面向对象的分析、设计等建模工作 能利用建模工具Rational等完成软件 项目的建模。
-9-
关于教材内容
1 基础(3): 上升到面向对象 2 基础(3) : 可视化建模技术 3 起源(2) : 业务建模 4 需求(4) : 用例建模 5 分析(3) : 用例分析
抽象过程强调相关特征而忽略其它的
特征
类抽象的过程就是将具体对象的特征和
行为进行参数化,分别用类的属性( attribute)和操作(operation)来 表示
-23-
属性
属性(attribute)是类的特征或特性
属性的值是某一特定对象的属性值
在类中属性名必须是唯一的
每一个类的实例都有为这个类定义的所
建立面向对象思维
-13-
什么是面向对象技术?
是一种看待计算机软件系统的观点 是一种系统分析和设计的思想
是一种编程方法
是一组设计原则和模式

…………
-14-
面向对象技术
面向对象技术
是一系列指导软件构造的原则(如抽象、
封装、多态等) 通过语言、数据库和其它工具来支持这 些原则 面向对象技术=类+对象+抽象+封装 +继承+多态+基于消息的通信….
-45-
用对象观点认识事物
A.这里面有什么东西? 类与对象 B.每个东西看上去是什么样的? 类的属性 C.每个东西能做点什么用? 类的操作 E D.这些东西都呆在什么地方? 类的行为、状态、部署 A E.这些东西之间有什么关系? 类间的关联 F.这些东西是怎么成事的? 类间的协作(用例实现)
PUSH EBX MOV EBX,EDX MOV EDX,EAX SHR EDX,16 DIV BX
AHare.Run; ALion.Catch(AHare) ; ALion.Kill(AHare); AHare.Dead; ALion.Eat; ALion.Happy;
在计算机中模拟现实世界的事和物
码而产生的成本
软件开发组越大,组中每个成员的生产率就越低
--Philippe Kahn, Borland公司创始人
15000 构造大型软件不能靠堆人 Ln 3 ( LOC / year) n
-19-
内容安排
课程介绍
对象技术
对象和类
对象技术相关原则
建立面向对象思维
-20-
对象(Object)
思维方式,并培养运用UML来表达这种 思维方式的技能,从而完成面向对象的分 析和设计
-7-
开设本课程的必要性
我们将来从事软件行业 面向对象是最主流的软件开发思想 UML是最主流的建模方法
对于今天的软件开发者来说,UML是他们的面包和黄油 UML OOAD 软件工程师的“饭碗”
-8-
本课程的基础和基本定位
恋人:情侣路,电影院,
-42-
问题分析-4
E.
这些东西之间有什么关系?
小伙 干妈 姑娘 舅妈 恋人 玫瑰
关系 月老 月老 小伙 干儿子
撮合者 没关系
男友老公 男主角 买送主
姑娘 外甥女 女友太太
恋人 被撮合 组成 玫瑰 没关系 信物 组成
女主角 受主
使用者 接受礼物 信物
-43-
问题分析-5
学习路线图
10 …… …… …… ……
-11-
考核方式
考勤、平时表现(20%)
实验(20%)
参照教材内容,围绕一个完整案例,完
成四次实验 根据实验完成情况和实验报告质量评分
考试(60%)
课程结束后安排考试 开卷
-12-
内容安排
课程介绍
对象技术
对象和类
对象技术相关原则
UML:模型的表示工具和手段
-6-
关于本课程
本课程是软件工程类专业课程,侧重于工
程实践能力的培养,强调分析和设计技能, 重点在建模方法的应用
过程驱动:围绕分析和设计过程,关注各阶
段建模技术的应用 案例驱动:围绕具体案例,讲解面向对象分 析和设计的思维方式和解决问题的方法
课程重点不是理论或知识,而是树立对象

从维修人员的角度 测试刹车 修理刹车 转动轮胎 检查马达速度
UML中的类
属性
操作
-28-
类和对象的关系
每一个对象都是某一个类的实例 每一个类在某一时刻都有零个或更多
的实例 类是静态的;它们的存在、语义和关 系在执行前就已经定义好了 对象是动态的;它们在程序执行时可 以被创建和删除

6 设计基础(3) : 面向对象设计原则 7 设计基础(3) : 面向对象设计模式 8 设计(3) : 架构设计 9 设计(3) : 构件设计 10 实现(3) : 正向工程 逆向工程

-10-
学习路线图
1 OO 2 UML 5 8 6 OOP DP 7 9
3
4
: :
… Case-Study …

-35-
内容安排
课程介绍
对象技术
对象和类
对象技术相关原则
建立面向对象思维
-36-
实例1: OO观点的个人简介
tanHuobin是Teacher类的一个实例,
该实例是基于beiHangUniversity对象 的softwareSchool的成员对象 tanHuobin教授ooTechnology课程 类GraduateStudent的所有实例都可以 通过Course类的对象ooTechnology建 立关联。 GraduateStudent的所有实例可以向 tanHuobin发送phone消息或email消息
-17-
对象技术利益-2
稳定
较小的需求变化不会导致系统结构大的
改变 当需求变化时……
稳 定 性 增 加
功能:最易变
数据:较易变
对象:较稳定
用稳定的元素把不稳定的元素封装起来
-18-
对象技术利益-3
复用—提高质量,减少成本
代码重用:基于类库、框架等
设计重用:基于抽象、多态、模式
能提高质量,减少由于编制新的系统代

B C F
D
-46-
俗语和术语间的对应
俗语
出了什么事? 具体事物 事物类型 属性 能力 位置 整-部关系 抽-具关系 协作关系 成事过程
术语
用例 对象 类 属性 操作 部署 聚合关系 继承关系 关联关系 用例实现
例子
我的一个朋友结了婚。 我的一个朋友,他未婚妻… 小伙,姑娘,玫瑰,月老… 年龄,体格,性情… 牵线,追求,结婚… 软件园,情侣路… 恋人-小伙,恋人-姑娘 人-小伙,人-姑娘 小伙-姑娘,小伙-玫瑰 相识,相恋,结婚
-47-
利用UML描述分析过程
完 整 故 事 情 节 的 静 态 模 型
-48-
搞清过程的活动图
结婚过程的活动图
-49-
复述情节的顺序图
初 次 见 面 顺 序 图
-15-
对象技术的发展历史
Simula 基本思想
1967 1972
C++ 商业化
1980s 1995
UML 统一方法学
1997 2011+
Smalltalk 实用化
Java 编程方法的成熟
构件、 服务、 云计算???
-16-
对象技术优势-1
沟通
顺应人类思维习惯,让软件开发人员在
解空间(计算机环境)中直接模拟问题空 间(现实世界)中的对象及其行为
三大目标:
OO:建立对象的思维方式,对面向对
象思想和理论有进一步的理解 UML:能够熟练地使用UML表达面向 对象的设计思想 Model:运用对象技术的一般原则和模 式进行应用系统的分析和设计建模
-5-
课程目标(续)
三大目标之间的关系
Model:软件的抽象表示
OO:建立模型的理论支撑
抽象和封装
抽象是事物区别于其它事物的本质特

抽象的过程取决于使用者的目的,它应
该包括使用者所感兴趣的那些职责,而 忽略掉其它不相关的部分
封装是指对象对其客户隐藏具体的实
现,是软件模块化思想的体现
通过封装实现信息隐藏和数据抽象
-32-
泛化
泛化是类与类之间一种关系
通过这种关系一个类可以共享另外一个
有属性的值
银行帐户类的属性 Mary的银行帐户属性值 12345678 First National Bank Mary Smith $1024.48
-24-
帐号名 银行名称 拥有者 金额
属性取决于视点
一辆汽车具有的属性:

从销售人员的角度 型号 价格 颜色 里程数

从维修人员的角度 马达类型 传动类型 维修记录
-37-
OO个人简介的UML表示
-38-
实例2:对象思维分析问题
昨天我的一个朋友结婚了
相关文档
最新文档