第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对象:是面向对象系统基本构造块,是一些相关变量和方法的软件集。
类:是具有相同属性和操作的一组对象的组合,也就是说,抽象模型中的“类”描述了一组相似对象的共同特征,为属于该类的全部对象提供了统一的抽象描述。
消息:是指描述事件发生的信息,是对象间相互联系和相互作用的方式。
事件:是指一种由系统预先定义而由用户或系统发出的动作。
事件作用于对象,对象识别事件并作出相应的反应。
面对对象的三大要素:封装:就是把对象的状态和行为绑到一起的机制,使对象形成一个独立的整体,并且尽可能地隐藏对象的内部细节。
继承:是一种连接类与类之间的层次模型,是指特殊类的对象拥有其一般的属性和行为。
多态:是指两个或多个属于不同类的对象中,同一个函数名对应多个具有相似功能的不同函数,可以使用相同的调用方式来调用这些具有不同功能的同名函数。
(1)试述对象和类的关系答:类是具有相同或相似结构、操作和约束规则的对象组成的集合,而对象是某一类的具体化实例,每一个类都是具有某些共同特征的对象的抽象。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,而对一类对象的抽象就是类.类描述了一组有相同特性和相同行为的对象。
(2)请简要叙述面向对象的概念答:面向对象技术是一种以对象为基础,以事件或信息来驱动对象执行处理的程序设计技术。
从程序设计方法上来讲,它是一种自下而上的程序设计方法,它不像面向过程程序设计那样一开始就需要使用一个主函数来概括出整个程序,面向对象程序设计往往从问题的一部分着手,一点一点地构建出整个程序。
(3)软件开发的模式有几种?它们的优缺点各是什么?答:瀑布模型、喷泉模型、基于组件的开发模型、XP开发模型瀑布模型—优点:提供了软件开发的基本框架;有利于软件开发过程中人员的组织与管理;缺点:1、只有在项目生命周期的后期才能看到结果;2、通过过多的强制完成日期和里程碑来跟踪各个项目阶段;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 掌握函数式编程•深入学习的参考书•后记•致谢。
Java程序设计基础-面向对象
访问修饰符名称
说明
public
可以被任何类访问
可以被同一包中的所有
protected
类访问
可以被所有子类访问
private
只能够被当前类的方法 访问
default(无访问修饰符)
可以被同一包中的所有 类访问
备注
子类没有在同一包中也 可以访问
如果子类没有在同一个 包中,也不能访问
在继承的体系中,访问看类型,调用看对象,在案例56中,当一个Crucian对象的类型被定义成Fishes时,这个 对象只能访问Fishes所拥有的属性和方法,但是实际方法 调用则会到该对象的定义类中查找,如果该方法在这个对象 的类中定义了,则会调用这个方法,否则调用Fishes类中 定义的该方法。从案例5-6的toString()方法的输出就可以 得出该结论。
图5-2 文件中的包结构
在开发的过程中,使用恰当的包结构、包名称和类 名称,可以让自己和其他开发人员快速地了解项目并且 使用你的类。所以,平时要培养这种命名思想,合理地 命名包和类名。
2.访问修饰符
在Java中有4种访问修饰符:public、protected、 private和default,这4种访问修饰符的控制范围是不 同的,如表5-1所示。
通过表5-1可知,当访问修饰符是public的时候,所有 的类都可以访问,就是说这是完全公开的;当用protected 修饰的时候只能被同包下的类和子类所访问(子类的概念在 5.4节中会详细介绍);如果是使用private,则只有当前类 可以访问;对于没有修饰符限制的,我们称之为缺省修饰符, 这种方法或者属性只能被本包内的其他类所使用,如果其子 类不在本包内,也不可以使用。
面向对象程序设计 1_面向对象方法概述
(1) 重用性 传统软件生产中缺乏大粒度、可重用的构件。基 本处于手工作业阶段。 (2) 复杂性 传统程序中数据与其操作是相分离的,开发大程 序时,常因数据的一个的小小变动而导致意想不到的 错误,甚至整个程序的崩溃。以致出现过所谓的“软 件危机”。 (3) 可维护性 传统程序中数据与操作相分离的结构不利于程序 的维护。
1.1
什么是面向过程程序设计方法 本节主要内容
1.1.1 面向过程程序设计方法概述 1.1.2 面向过程程序设计方法的局限性
1.1.1 面向过程程序设计方法概述
面向过程程序设计方法是流行很广泛的程序设计 方法。如C、PASCAL、FORTRAN、Ada等语言都是采用面 向过程程序设计方法。 在面向过程程序设计中,程序设计者不仅要考虑程 序要“做什么”,还要解决“怎么做”的问题。 首先要明确程序的功能,程序设计的重点是如何设 计算法和实现算法。 在面向过程程序设计中,普遍采用结构化程序设计 方法,即所有的程序由顺序、分支和循环三种基本结构 组成。
3.传统的程序设计难以适应各种新环境
当前,并行处理、分布式、网络和多机系统等,已 经或将是程序运行的主流方式和主流环境。 传统的程序设计技术很难适应这些新环境。 综上所述,传统的面向过程的结构化程序设计不能 够满足计算机技术的迅猛发展的需要,软件开发迫切需 要一种新的程序设计方法的支持。
1.2
什么是面向对象程序设计方法 本节主要内容
例1.1 利用面向过程程序设计方法计算圆和三角 形的面积。设圆的半径为r,圆周率取3.14,则圆面积 的计算公式为cs=3.14*r*r;设三角形的高为h,底为w, 则三角形面积的计算公式为ts=0.5*h*w。
用面向过程程序设计方法编写一个计算面积的C语言程序。 #include<stdio.h> double circle(double r){ return 3.14*r*r; } //定义函数circle double triangle(double h,double w) //定义函数triangle { return 0.5*h*w; } int main() //定义主函数main { double r,h,w,cs,ts; printf(“Input r,h,w:”); //调用函数,输出字符串 scanf("%lf%lf%lf",&r,&h,&w); //调用函数scanf,输入圆的半径和三角形高和底的值 cs= circle(r); //调用函数circle ts= triangle(h,w); //调用函数triangle printf("The area of circle is:%f\n",cs);//调用函数输出圆的面积 printf("The area of triangle is:%f\n",ts); //调用函数输出三角形的面积 return 0;}
软件工程 面向对象的技术
1. Coda方法的OOA
类与对象层 属性层 服务层
类的边界 实例的边界 实例连接
属性 消息连接
服务
结构层
主题层
泛化与特化结构 主题
整体与部分结构
图4.10 分析过程的五个层次
在Coda方法中, 构 造 和 评 审 OOA 概 念模型的顺序由五 个层次组成:类与 对象、属性、服务、 结构和主题
这五个层次表 示分析的不同侧面。
继承是使用现存的定义作为基础,建立新定义的 技术。是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。
继承性分:
单重继承:一个子类只有一个父类。即子类只继承 一个父类的数据结构和方法。
多重继承:一个子类可有多个父类。继承多个父类 的数据结构和方法。
基类
现存类定义 父类(基类)
继承
图 4.3 继承性
良好的接口,子系统内的类相互协作。标识问题本身 的并发性,为子系统分配处理器。
系统内部
保险单 填写界面
保险单
客户
数据库界面 (abstract)
Oracle 界面 Sybasec界面
子系统的分解是关键,可以有分层和分块:
分层:将软件系统组织为层次结构,每层是一个子系 统。分层结构又分为封闭式和开放式。
类具有属性,用数据结构来描述类的属性, 类具有操作,它是对象的行为的抽象,操作实现 的过程称为方法(method) ,方法有方法名,方法体 和参数。
由于对象是类的实例,在进行分析和设计时, 通常把注意力集中在类上,而不是具体的对象上。
对象和类的描述
类和对象一般采用“名字”、“属性”和“运算”来描 述。
基本概念: 问题域(problem domain) — 被开发系统的应用领域。 系统责任(system responsibilities) — 所开发的系统应 具备的职能。
设计模式之面向对象编程
设计模式之面向对象编程随着互联网的快速发展,软件开发成为了人们生活中不可或缺的一部分。
而在软件开发中,设计模式是非常重要的一环,设计模式可以使程序更好的满足需求,更容易维护和扩展,保证程序的健壮性。
其中面向对象编程(OOP)就是软件设计中最具有代表性和广泛应用的方式之一。
一、面向对象编程的优点面向对象编程是一种把现实世界的事物看作是“对象”的编程方式,对事物进行抽象,然后将其具体化为程序中的类和对象。
面向对象编程有以下几个优点:1.易于扩展:代码无需全部重构,可以根据需求添加新的方法,也可以通过继承和多态实现复用代码。
2.易于维护:可读性强,易于理解和维护。
代码结构清晰明了,不会出现大量的if、else语句,减少了代码的复杂度。
3.提高代码的复用性:类可以继承父类,子类可以重写或新增方法,子类还可以使用父类中的方法和属性,避免了代码的重复编写。
4.保护了数据的安全性:对象的属性和方法只能在类内部访问,外部无法直接访问。
二、设计模式在面向对象编程中的运用面向对象编程可以使用设计模式来解决一些常见的问题。
设计模式是一系列被广泛使用、总结出来的问题解决方案。
以下是几个常见的设计模式:1.工厂模式(Factory Pattern)工厂模式是一种创建型模式,它可以将对象的创建过程封装起来,而不必暴露其具体的实现。
工厂模式通常会定义一个工厂接口和一个实现工厂接口的类,通过工厂类创建对象。
这种方式可以让代码更加灵活可维护,因为如果要修改类的实现方式,只需要修改工厂类而不是修改所有的new操作。
2.单例模式(Singleton Pattern)单例模式是一种创建型模式,它保证了一个类只能被实例化一次。
这就意味着如果存在多个线程同时访问这个类的实例,这些线程得到的都是同一个实例。
单例模式通常会使用一个私有构造函数和一个私有的静态实例变量来实现。
在需要创建对象的时候,调用一个公共的静态方法返回单例对象。
3.策略模式(Strategy Pattern)策略模式是一种行为型模式,它定义了一组算法或行为,并将这些算法或行为封装为一个类。
简述面向对象的基本概念
面向对象的基本概念面向对象(Object-Oriented,简称OO)是一种软件开发方法论,它将现实世界中的事物抽象为对象,并通过对象之间的交互来实现软件系统的设计与实现。
面向对象具有封装、继承和多态三个核心概念,这些概念在面向对象的编程语言和方法中扮演着重要的角色。
本文将详细解释这三个关键概念的定义、重要性和应用。
1. 封装1.1 定义封装是将数据和对数据的操作封装在一个对象中的过程。
它通过将相关的属性和方法集中到一个对象中,隐藏对象内部的细节,提供给外界一个结构简单、功能明确的接口,使对象与外界的交互只通过有限的方式进行。
封装可以有效地实现数据的安全性和可维护性。
1.2 重要性封装的重要性体现在以下几个方面:•信息隐藏:封装将对象的内部细节隐藏起来,只暴露公共接口给外部使用,从而保护对象内部数据的安全性和完整性,避免不必要的干扰和错误操作。
•模块化设计:通过将相关属性和方法封装到一个对象中,可以对系统进行模块化设计,降低系统的复杂性,提高代码的可读性和可维护性。
•减少耦合:封装可以实现对象与对象之间的松耦合,对象之间通过接口进行交互,而不需要关心对方的内部实现细节,提高了系统的灵活性和可扩展性。
•提高复用性:封装将数据和操作封装在一个对象中,可以将对象作为一个整体进行复用,避免了重复编写相同的代码,提高了代码的复用性和可维护性。
1.3 应用场景封装广泛应用于面向对象的程序设计中。
以下是一些常见的应用场景:•类的设计:在面向对象的编程语言中,封装是实现类的基础。
将类的属性和方法封装到一个类中,通过实例化对象来使用和操作对象的属性和方法。
•数据的封装:在面向对象的编程中,通过将数据和操作封装在一个对象中,实现对数据的封装和管理。
例如,在一个学生信息管理系统中,可以将学生的信息(姓名、年龄等)和操作(添加、删除等)封装到一个学生对象中。
•接口的设计:封装也可以应用于接口的设计中,通过对外暴露有限的接口,封装对象内部的实现细节,实现模块之间的解耦和隔离。
面向对象程序设计基础知识
面向对象程序设计基础知识面向对象程序设计(Object-oriented programming,简称OOP)是一种让计算机程序更具可维护性、可扩展性和可重用性的编程范式。
其中,基于类和对象的概念是核心要素。
本文将介绍面向对象程序设计的基础知识,包括类与对象、封装与继承、多态和抽象等。
一、类与对象类是面向对象程序设计的基本单位,是对一类具有相同属性和行为的对象的抽象描述。
类可以看作是对象的模板或蓝图,它定义了对象的属性和方法。
对象则是类的实例化,是具体的实体。
在面向对象程序设计中,类包含两个主要的成员:属性和方法。
属性是类的特性,描述了对象的状态;方法是类的行为,描述了对象的操作。
通过封装属性和方法,类实现了对数据和行为的封装,使得程序的逻辑更加清晰和灵活。
二、封装与继承封装是将类的属性和方法封装在一起,形成一个独立的单元。
通过封装,我们可以隐藏类的内部实现细节,只暴露必要的接口给外部使用。
这种数据与行为的封装增强了类的安全性和可靠性,同时也降低了程序的耦合性。
继承是面向对象程序设计的另一个重要概念。
通过继承,一个类可以继承另一个类的属性和方法,从而实现代码的复用和扩展。
继承关系可以形成类的层次结构,其中父类被称为超类或基类,子类被称为派生类。
派生类可以重写父类的方法或添加自己的方法,实现对父类的功能增强。
三、多态和抽象多态是指同一种类型的对象在不同情况下表现出不同的行为。
通过多态,我们可以根据对象的具体类型调用相应的方法,而不关心对象的具体实现。
多态提高了代码的灵活性和可扩展性,使得程序更易于维护和扩展。
抽象是将复杂的事物简化为一个易于理解的模型。
在面向对象程序设计中,抽象提供了接口和抽象类两种机制。
接口定义了一个类应该具有哪些方法,但不提供具体的实现;抽象类则是一种中间状态,既可以有定义了方法的具体实现,又可以有定义了接口的抽象方法。
通过接口和抽象类,我们可以实现代码的分离和模块化,提高代码的灵活性和复用性。
智慧树知到《面向对象分析与设计》章节测试答案
智慧树知到《面向对象分析与设计》章节测试答案第一章1、UML中接口可用于()。
A:提供构造型(stereotype)名称为《interface》的具体类B:Java和C++程序设计中,而C#程序设计中不支持C:定义可以在多个类中重用的可执行逻辑D:声明对象类所需要的服务答案: 声明对象类所需要的服务2、在面向对象方法中,两个及以上的类作为一个类的父类时,称为( )。
A:多重继承B:多态C:封装D:层次继承答案: 多重继承3、以下关于封装在软件复用中所充当的角色的叙述,正确的是()。
A:封装使得其他开发人员不需要知道一个软件组件内部如何工作B:封装使得软件组件更有效地工作C:封装使得软件开发人员不需要编制开发文档D:封装使得软件组件开发更加容易答案: 封装使得其他开发人员不需要知道一个软件组件内部如何工作4、在定义类一个类时,将其属性声明为private的目的是( )。
A:实现数据隐藏,以免意外更改B:操作符重载C:实现属性值不可更改D:实现属性值对类的所有对象共享答案: 实现属性值对类的所有对象共享5、面向对象的四个基本特征是?A:继承、封装、多态、抽象B:继承、封装、多态、层次C:封装、多态、层次、模块化D:抽象、封装、模块、结构答案: 继承、封装、多态、抽象6、首次提出“面向对象”概念的计算机科学家是()?A:比尔.盖茨B:艾伦.灵图C:艾伦.凯D:史蒂夫.乔布斯答案: 艾伦.凯7、在面向对象方法中,讲逻辑上相关的数据及行为绑定在一起,使信息对使用者隐藏称为()A:抽象B:继承C:封装D:多态答案: 封装8、以下关于面向对象继承的叙述中,错误的是()。
A:继承是父类和子类之间共享数据和方法的机制B:继承定义了一种类与类之间的关系C:继承关系中的子类将拥有父类的全部属性和方法D:继承仅仅允许单重继承,即不允许一个子类有多个父类答案: 继承仅仅允许单重继承,即不允许一个子类有多个父类9、一个类是( )在定义类时,将其属性可以声明为private、protected、public。
chap01上升到面向对象
筛选法求素数序列
筛选法:生成 2< i <n 的素数序列,设n=50
筛掉2的倍数:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
筛掉3的倍数:2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 …
筛掉5的倍数:2 3 5 7 11 13 17 19 23 25 29 31 35 37 41 … 筛掉7的倍数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 49
筛子:存储源数据
筛掉7的倍数:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 49
过滤器:表明当前 留下素数序列:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 过滤因子 计数器:记录当前 什么是对象?对象在哪?
正在筛选的数据
这才是对象思维!
验证设计方案
void main(){ Counter c(2); Sieve s(&c); 关键代码只有一行, int next, n; 筛子自己知道如何找出素数 cin>>n; while(1){ next=s.out(); if(next>n) break; cout<<next<<" "; } cout<<endl; }
用对象思维解决问题?
筛选法:生成 2< i <n 的整数序列,设n=50
筛掉2的倍数:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 …
筛掉3的倍数:2 3 5 7 9 11 13 15 17 19 21 23 25 27 29 …
面向对象程序设计(Java)知到章节答案智慧树2023年烟台职业学院
面向对象程序设计(Java)知到章节测试答案智慧树2023年最新烟台职业学院第一章测试1.下列关于Java特点的描述中,错误的是()参考答案:Java只能运行在Window和Linux平台2.如果jdk的安装路径为:c:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java命令,需要将环境变量path设置为以下哪个选项()参考答案:c:\jdk\bin3.下面哪种类型的文件可以在Java虚拟机中运行()参考答案:.class4.下列关于Java语言的描述中,错误的是()参考答案:Java是一门介于汇编和高级之间的语言5.下列选项中,哪些是Java语言的特性()参考答案:跨平台性;简单性;支持多线程;面向对象6.下列关于使用Javac命令编译后生成文件的说法中,正确的是()参考答案:编译后生成的文件为二进制文件;编译后生成的文件可以在Java虚拟机中运行;编译后生成文件的后缀名为.class7.下列关于多行注释的应用,正确的是()参考答案:多行注释有利于代码的阅读性;写多行注释是一个良好的习惯;程序中可以不写多行注释8.在Java中,类名的首字母要求大写。
( )参考答案:对9.lib是library的缩写,用于存放Java类库或库文件。
( )参考答案:对10.JDK安装的时候不可以修改安装目录。
( )参考答案:错第二章测试1.以下关于三元运算符的说法中,正确的是()参考答案:三元运算符第一个表达式的结果必须是boolean类型值。
2.阅读下面程序片段switch (i) {case 1:System.out.println("message1");case 2:System.out.println("message2");case 3:System.out.println("message3");break;}请说当变量i的值为多少时,程序只输出“message 3”。
UML课后习题答案
UML课后习题答案UML习题答案第⼀章⾯向对象设计与UML1.填空题(1)基本构造块UML规则公共机制(2)名字属性操作(3)封装继承多态(4)继承(5)瀑布模型喷泉模型基于组件的开发模型XP开发模型2. 选择题(1)C(2)A B C D(3)A B C D(4)A B C(5)A3.简答题(1)类是具有相同或相似结构、操作和约束规则的对象组成的集合,⽽对象是某⼀类的具体化实例,每⼀个类都是具有某些共同特征的对象的抽象。
类与对象的关系就如模具和铸件的关系,类的实例化结果就是对象,⽽对⼀类对象的抽象就是类.类描述了⼀组有相同特性和相同⾏为的对象。
(2)1.UML是⼀种语⾔。
2. UML是⽤来建模的。
3.UML是统⼀的标准。
(3)建模能够帮助我们按照实际情况或按我们需要的形式对系统进⾏可视化;提供⼀种详细说明系统的结构或⾏为的⽅法;给出⼀个指导系统构造的模板;对我们所做出的决策进⾏⽂档化。
在建模时应遵循以下原则:选择要创建什么模型对如何动⼿解决问题和如何形成解决⽅案有着意义深远的影响;每⼀种模型可以在不同的精度级别上表⽰;最好的模型是与现实相联系的;单个模型不充分;对每个重要的系统最好⽤⼀组⼏乎独⽴的模型去处理。
(4)UML和⾯向对象软件开发之间有紧密的关系,可以说是⾯向对象软件开发促使了UML 的产⽣。
但是由于在UML标准化的过程中,吸收了业务建模、⼯作流建模和数据库建模等领域的标准规范,形成了适应性很强的标准。
(5)在软件设计过程中,使⽤UML建模是为了能够更好地理解正在开发的系统。
通过UML 建模,可以达到以下⽬的:有助于按照实际情况或按照所需要的样式对系统进⾏可视化;能够规约系统的结构或⾏为;给出了指导构造系统的模板;对做出的决策进⾏⽂档化。
第⼆章UML通⽤知识点综述1.填空题(1)依赖泛化关联实现(2)视图图模型元素(3)实现视图部署视图(4)构造型标记值约束(5)规格说明修饰通⽤划分2. 选择题(2)C(3)A(4)A B(5)D3.简答题(1)在UML中,定义了四种基本的⾯向对象的事物,分别是结构事物、⾏为事物、分组事物和注释事物等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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:对象思维分析问题
昨天我的一个朋友结婚了