精华内容
下载资源
问答
  • 对象典型行为描述
    2018-05-09 18:44:43
    public void watching(String films, String tv) {
    System.out.println("储豪冶在看电影" + films + "和看电视" + tv);

    }

    形参可以写多个,用逗号隔开。

    更多相关内容
  • 以拟环纹豹蛛Pardosa pseudoannulata为研究对象,对其在室内求偶和交配行为进行了详细描述.雄蛛第1对步足水平前伸高频颤动及雄蛛触肢“划浆”式动作是其典型求偶行为.雄蛛触肢上黑白相间的毛丛在求偶中可能具重要...
  • 面向对象分析,结合面向对象的方法学对需求分析阶段进行具体分析的总结

    halo~我是bay_Tong桐小白
    本文内容是桐小白个人对所学知识进行的总结和分享,知识点会不定期进行编辑更新和完善,了解最近更新内容可参看更新日志,欢迎各位大神留言、指点

    【更新日志】

    最近更新:

    • 暂无编辑记录,持续更新中……

    面向对象分析概述

    问题域与系统责任

    • 问题域:在软件工程中,问题域是指被开发系统的应用领域,即在客观世界中由该系统处理的业务范围
    • 系统责任:所开发的软件系统应该具备的职能

    面向对象分析(OOA)

    强调运用面向对象方法,对问题域和系统责任进行分析和理解,找出描述问题和系统责任所需要的对象,定义对象的属性、操作以及对象之间的关系,建立一个符合问题域、满足用户功能需求的OOA模型

    面向对象分析主要活动

    • 与客户进行沟通、了解用户需求、建立需求模型
    • 表示问题域中的对象,分析对象承担的职责
    • 分析对象与对象间的关系
    • 定义对象间的交互

    这些活动需要反复迭代,直至模型完成
    在这里插入图片描述
    面向对象分析的模型

    • 功能模型(用例模型):由用例和场景表示,从用户的角度描述系统的功能,是整个后续工作的基础,也是测试与验收的依据
    • 静态模型(对象模型):由类和对象表示,主要包含面向对象系统中的类、接口及对象等软件的基本组成单元以及它们间的联系
    • 动态模型(交互模型):由活动图、顺序图等表示,描述问题涉及的交互作用和时序

    系统范围

    建立需求模型时首先要确定系统的范围(即一个系统与系统以外各种事物的分界线),找出系统外与系统交互的事物,然后从这些事物与系统交互的角度,通过用例来描述这些事物怎样使用系统,以及系统向他们提供什么服务

    进行面向对象系统分析时,需要建立这样的环境图(也可看成是顶层用例图)来确定系统的边界

    建立用例模型

    用例:简单说即为对系统的功能描述,用例模型奠定了整个系统软件开发的基础

    建立用例模型的目的是提取和分析足够的需求信息,用例模型应能表述用户需要什么,而不涉及系统将如何构造和实现特定细节。

    创建用例模型的过程

    • 确定参与者——标识系统将支持的不同类型的用户,可以是人、事件或其它系统
    • 确定需求用例——参与者需要系统提供的完整功能
    • 创建用例图——标识参与者与用例间、用例与用例间的关系

    确定参与者

    重点放在如何使用系统而不是如何构造系统上,也即进一步明确系统的范围和边界(环境图)。可以从几个方面来识别参与者:

    • 人员或组织,即直接使用系统的人员或组织
    • 外部系统,所有与本系统交互的外部系统都是参与者。两种常见的情况:
      如果正在开发的系统中使用一个已有系统,则这个已有系统被看成是一个外部系统;
      如果一个大系统在任务分解时被划分成几个子系统,则每个子系统的开发者都把其他子系统看成是外部系统
    • 设备,即与系统交互的设备

    在这里插入图片描述
    确定需求用例

    从用户的视角看,一个用例是参与者与系统之间的一次典型的交互作用;从系统内部的视角出发,一个用例代表系统执行的一系列动作,动作的执行结果能够被外部的参与者察觉。可以从以下几个方面获取用例:

    • 从参与者角度获取。识别参与者的责任是尊者参与者与系统交互理由的良好基础
    • 从系统功能的角度获取。完成一项功能的一组动作序列要描述在一个用例中,通常,以用例中的动作为线索能发现其他用例
    • 利用场景获取用例。即仅关注具体的业务活动,确定谁是扮演者,具体做了哪些事情,做这些事情的目的是什么,将本质上相同的场景抽象为一个用例

    用例规约描述(规格说明):对用例的完整描述包括用例名称、参与者、前置条件、后置条件、一个主事件流、零到多个备选事件流

    • 前置条件:规定在用例中场景开始之前必须为“真”的条件
    • 后置条件:规定在用例结束后必须为“真”的条件
    • 主事件流:表示正常情况下参与者与系统之间的信息交互及动作序列
    • 备选事件流:表示特殊情况或异常情况下的信息交互及动作序列

    每个用例均应给出用例的规格说明

    以银行ATM转账用例为例,规约描述如下:
    在这里插入图片描述
    创建用例图

    用例图是若干个参与者和用例以及它们间的关系构成的图形表示

    每个系统通常都有一个总体用例图,若总体用例图过于复杂,则可以创建多个用例图,每个用例图关注系统的某一方面,事实上用例建模是围绕参与者创建,且往往不是一次就能完成的,需要多次迭代、逐步完善

    需要注意的是:

    • 参与者和用例之间的连线并不表示信息流,仅代表用例同用例及参与者之间的相互联系
    • 参与者和用例间的箭头表示在这一关系中哪一方是交互的主动发起者,箭头所指方式交互的被动接受者

    用例图建好后,下一步应建立初步的类图,之后对于关键的用例需要建立顺序图、活动图等

    建立对象模型(更新中……)

    在系统分析阶段,对象建模的主要任务是建立问题域的概念模型,即描述现实世界中问题域类与对象以及他们之间的关系

    复杂问题(大型系统)的对象模型应由5个层次组成:主题层(也称范畴层)、类-对象层、结构层、属性层、服务层,与此对应的5项主要活动:划分主题、确定类与对象、确定结构、确定属性、确定服务
    在这里插入图片描述
    这5项活动的抽象层次不同,在实际面向对象分析时,总体上是按照自顶向下的顺序进行的,但不需要严格遵守这种原则,也无需彻底完成一项工作后再开始另外一项工作

    建立动态模型(更新中……)

    动态模型描述与操作时间和顺序有关的系统特征、影响更改的事件、事件的序列、事件的环境以及事件的组织

    在UML中动态模型的描述工具有顺序图、协作图、活动图、状态图等

    建立数据模型(更新中……)

    数据模型是数据特征的抽象,从抽象层次上描述了系统的静态特征、动态行为和约束条件,为数据库系统的信息表示与操作提供一个抽象的框架

    数据模型所描述的内容有三部分,分别是数据结构、数据操作和数据约束

    • 数据结构:数据模型中的数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据结构是数据模型的基础,数据操作和约束都建立在数据结构上。不同的数据结构具有不同的操作和约束
    • 数据操作:数据模型中数据操作主要描述在相应的数据结构上的操作类型和操作方式
    • 数据模型中的数据约束主要描述数据结构内数据间的语法、词义联系、它们之间的制约和依存关系,以及数据动态变化的规则,以保证数据的正确、有效和相容

    由类图可自动生成数据库表

    持续更新中……
    我是桐小白,一个摸爬滚打的计算机小白

    展开全文
  • 面向对象的基本概念

    千次阅读 2021-08-02 05:19:12
    面向对象的基本概念来源:信管网2018年07月20日 【所有评论】面向对象的基本概念包括对象、类、抽象、封装、继承、多态、接口、...对象包含3个基本要素,分别是对象标识、对象状态和对象行为。例如,对于姓名(标识)...

    面向对象的基本概念

    来源:信管网

    2018年07月20日 【所有评论】

    面向对象的基本概念包括对象、类、抽象、封装、继承、多态、接口、消息、组件、复用和模式等。

    (1)对象:由数据及其操作所构成的封装体,是系统中用来描述客观事物的一个模块,是构成系统的基本单位。用计算机语言来描述,对象是由一组属性和对这组属性进行的操作构成的。

    对象包含3个基本要素,分别是对象标识、对象状态和对象行为。例如,对于姓名(标识)为joe的教师而言,其包含性别、年龄、职位等个人状态信息,同时还具有授课等行为特征,joe就是封装后的一个典型对象。

    (2)类:现实世界中实体的形式化描述,类将该实体的属性(数据)和操作(函数)封装在一起。

    例如,joe是一名教师,也就拥有了教师的特征,这些特征就是教师这个类所具有的,如图2.1所示。

    1fab6e9655ff0cdf1205d55d90c0df16.png

    类和对象的关系可理解为,对象是类的实例,类是对象的模板。如果将对象比作房子,那么类就是房子的设计图纸。

    (3)抽象:通过特定的实例抽取共同特征以后形成概念的过程。抽象是一种单一化的描述,强调给出与应用相关的特性,抛弃不相关的特性。对象是现实世界中某个实体的抽象,类是一组对象的抽象。

    (4)封装:将相关的概念组成一个单元模块,并通过一个名称来引用它。面向对象封装是将数据和基于数据的操作封装成一个整体对象,对数据的访问或修改只能通过对象对外提供的接口进行。

    (5)继承:表示类之间的层次关系(父类与子类),这种关系使得某类对象可以继承另外一类对象的特征,继承又可分为单继承和多继承。

    如图2.2所示,dog和cat类都是从mammal继承而来,具有父类的eyecolor属性特征,因此在子类中就可以不用重复指定eyecolor这个属性。

    3022de41b6b8e240e43cf1fb62f4c481.png

    (6)多态:使得在多个类中可以定义同一个操作或属性名称,并在每个类中可以有不同的体现。多态使得某个属性或操作在不同的时期可以表示不同类的对象特性。

    如图2.3所示,rectangle和circle都继承于shape,对于shape而言,会有getarea()的操作。但rectangle和circle的getarea()方法的实现是完全不一样的,这就体现了多态的特征。

    cdbbb2ce0b03b00e3db42d8a1b531bda.png

    (7)接口:描述对操作规范的说明,其只说明操作应该做什么,并没有定义操作如何做。可以将接口理解成为类的一个特例,它规定了实现此接口的类的操作方法,把真正的实现细节交由实现该接口的类去完成。

    (8)消息:体现对象间的交互,通过它向目标对象发送操作请求。

    (9)组件:表示软件系统可替换的、物理的组成部分,封装了模块功能的实现。组件应当是内聚的,并具有相对稳定的公开接口。

    (10)复用:指将已有的软件及其有效成分用于构造新的软件或系统。组件技术是软件复用实现的关键。

    (11)模式:描述了一个不断重复发生的问题,以及该问题的解决方案。其包括特定环境、问题和解决方案3个组成部分。应用设计模式可以更加简单和方便地去复用成功的软件设计和架构,从而帮助设计者更快更好地完成系统设计。

    6bc8d8bd70d77c328a2d5c0109769944.png

    温馨提示:因考试政策、内容不断变化与调整,信管网网站提供的以上信息仅供参考,如有异议,请以权威部门公布的内容为准!

    信管网致力于为广大信管从业人员、爱好者、大学生提供专业、高质量的课程和服务,解决其考试证书、技能提升和就业的需求。

    信管网软考课程由信管网依托10年专业软考教研倾力打造,官方教材参编作者和资深讲师坐镇,通过深研历年考试出题规律与考试大纲,深挖核心知识与高频考点,为学员考试保驾护航。面授、直播&录播,多种班型灵活学习,满足不同学员考证需求,降低课程学习难度,使学习效果事半功倍。

    相关内容

    展开全文
  • 因为想在笔记中夹杂这篇文章中部分内容,所以进行了还是比较多的引用,核心的地方还是自己写的 可以一直接调转到深入理解Java的OOP ...名称:Object-Oriented Analysis:面向对象分析方法 OOA是指...

    转自https://blog.csdn.net/qq443068902/article/details/44256619 对其进行了改写 重新布局 

    因为想在笔记中夹杂这篇文章中部分内容,所以进行了还是比较多的引用,核心的地方还是自己写的 可以一直接调转到深入理解Java的OOP

    大纲

    一、OOA

    名称:Object-Oriented Analysis:面向对象分析方法


    OOA是指在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。OOA与结构化分析有较大的区别,OOA强调在系统调查资料的基础上,针对OO方法所需要的素材进行的归类分析和整理,而不是对管理业务现状和方法的分析。
    OOA(面向对象的分析)模型由五个层次:主题层、对象类层、结构层、属性层和服务层,五个活动:标识对象类、标识结构、定义主题、定义属性和定义服务组成。在这种方法中定义了两种对象类之间的结构,一种称为分类结构,一种称为组装结构。分类结构就是所谓的一般与特殊的关系。组装结构则反映了对象之间的整体与部分的关系。
    OOA在定义属性的同时,要识别实例连接。实例连接是一个实例与另一个实例的映射关系。OOA在定义服务的同时要识别消息连接。当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。OOA 中的5个层次和5个活动继续贯穿在OOD(画向对象的设计)过程中。OOD模型由4个部分组成。它们分别是设计问题域部分、设计人机交互部分、设计任务管理部分和设计数据管理部分。

    (一)主要原则

    (1)抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质性的特征,就叫作抽象。抽象是形成概念的必须手段。抽象原则有两方面的意义:第一,尽管问题域中的事物是很复杂的,但是分析员并不需要了解和描述它们的一切,只需要分析研究其中与系统目标有关的事物及其本质性特征。第二,通过舍弃个体事物在细节上的差异,抽取其共同特征而得到一批事物的抽象概念。
    抽象是面向对象方法中使用最为广泛的原则。抽象原则包括过程抽象和数据抽象两个方面。过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可以把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。数据抽象是OOA的核心原则。它强调把数据(属性)和操作(服务)结合为一个不可分的系统单位(即对象),对象的外部只需要知道它做什么,而不必知道它如何做。
    (2)封装:封装就是把对象的属性和服务结合为一个不可分的系统单位,并尽可能隐蔽对象的内部细节。
    (3)继承:特殊类的对象拥有的其一般类的全部属性与服务,称作特殊类对一般类的继承。在OOA中运用继承原则,就是在每个由一般类和特殊类形成的一般—特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和服务,一次性地在一般类中进行显式的定义。在特殊类中不再重复地定义一般类中已定义的东西,但是在语义上,特殊类却自动地、隐含地拥有它的一般类(以及所有更上层的一般类)中定义的全部属性和服务。继承原则的好处是:使系统模型比较简练也比较清晰。
    (4)分类:就是把具有相同属性和服务的对象划分为一类,用类作为这些对象的抽象描述。分类原则实际上是抽象原则运用于对象描述时的一种表现形式。
    (5)聚合:又称组装,其原则是:把一个复杂的事物看成若干比较简单的事物的组装体,从而简化对复杂事物的描述。
    (6)关联:是人类思考问题时经常运用的思想方法:通过一个事物联想到另外的事物。能使人发生联想的原因是事物之间确实存在着某些联系。
    (7)消息通信:这一原则要求对象之间只能通过消息进行通信,而不允许在对象之外直接地存取对象内部的属性。通过消息进行通信是由于封装原则而引起的。在OOA中要求用消息连接表示出对象之间的动态联系。
    (8)粒度控制:一般来讲,人在面对一个复杂的问题域时,不可能在同一时刻既能纵观全局,又能洞察秋毫。因此需要控制自己的视野:考虑全局时,注意其大的组成部分,暂时不详察每一部分的具体的细节;考虑某部分的细节时则暂时撇开其余的部分。这就是粒度控制原则。
    (9)行为分析:现实世界中事物的行为是复杂的。由大量的事物所构成的问题域中各种行为往往相互依赖、相互交织。
     

    (二)OOA产生的三种分析模型

    1、对象模型:对用例模型进行分析,把系统分解成互相协作的分析类,通过类图/对象图描述对象/对象的属性/对象间的关系,是系统的静态模型。
    2、动态模型:描述系统的动态行为,通过时序图/协作图描述对象的交互,以揭示对象间如何协作来完成每个具体的用例,单个对象的状态变化/动态行为可以通过状态图来表达。
    3、功能模型(即用例模型作为输入)。

     

    (三)OOA优点

    (1)加强了对问题域和系统责任的理解;
    (2)改进与分析有关的各类人员之间的交流;
    (3)对需求的变化具有较强的适应性;
    (4)支持软件复用。
    (5)贯穿软件生命周期全过程的一致性。
    (6)实用性;
    (7)有利于用户参与。
     

    (四)OOA基本步骤

    在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤
    第一步,确定对象和类。这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。
    第二步,确定结构(structure)。结构是指问题域的复杂性和连接关系。类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
    第三步,确定主题(subject)。主题是指事物的总体概貌和总体分析模型。
    第四步,确定属性(attribute)。属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。
    第五步,确定方法(method)。方法是在收到消息后必须进行的一些处理方法:方法要在图中定义,并在对象的存储中指定。对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。


    二、OOD

    面向对象设计(Object-Oriented Design,OOD)方法是OO方法中一个中间过渡环节。其主要作用是对OOA分析的结果作进一步的规范化整理,以便能够被OOP直接接受。


    面向对象设计(OOD)是一种软件设计方法,是一种工程化规范。这是毫无疑问的。按照Bjarne Stroustrup的说法,面向对象的编程范式(paradigm)是[Stroustrup, 97]:
    【决定你要的类;给每个类提供完整的一组操作;明确的使用继承来表现共同点】
    由这个定义,可以看出OOD就是“根据需求决定所需的类、类的操作以及类之间关联的过程”。


    OOD的目标是管理程序内部各部分的相互依赖。为了达到这个目标,OOD要求将程序分成块,每个块的规模应该小到可以管理的程度,然后分别将各个块隐藏在接口(interface)的后面,让它们只通过接口相互交流。比如说,如果用OOD的方法来设计一个服务器-客户端(client-server)应用,那么服务器和客户端之间不应该有直接的依赖,而是应该让服务器的接口和客户端的接口相互依赖。
    这种依赖关系的转换使得系统的各部分具有了可复用性。还是拿上面那个例子来说,客户端就不必依赖于特定的服务器,所以就可以复用到其他的环境下。如果要复用某一个程序块,只要实现必须的接口就行了。


    OOD是一种解决软件问题的设计范式(paradigm),一种抽象的范式。使用OOD这种设计范式,我们可以用对象(object)来表现问题领域(problem domain)的实体,每个对象都有相应的状态和行为。我们刚才说到:OOD是一种抽象的范式。抽象可以分成很多层次,从非常概括的到非常特殊的都有,而对象可能处于任何一个抽象层次上。另外,彼此不同但又互有关联的对象可以共同构成抽象:只要这些对象之间有相似性,就可以把它们当成同一类的对象来处理。

     

    (一)OOD背景与来源

    背景:

    计算机硬件技术却在飞速发展。从几十年前神秘的庞然大物,到现在随身携带的移动芯片;从每秒数千次运算到每秒上百亿次运算。当软件开发者们还在寻找能让软件开发生产力提高一个数量级的“银弹”[Brooks, 95]时,硬件开发的生产力早已提升了百倍千倍。
    硬件工程师们能够如此高效,是因为他们都很懒惰。他们永远恪守“不要去重新发明轮子”的古训。Grady Booch把这些黑箱称为类属(class category),现在我们则通常把它们称为“组件(component)”。
    类属是由被称为类(class)的实体组成的,类与类之间通过关联(relationship)结合在一起。一个类可以把大量的细节隐藏起来,只露出一个简单的接口,这正好符合人们喜欢抽象的心理。所以,这是一个非常伟大的概念,因为它给我们提供了封装和复用的基础,让我们可以从问题的角度来看问题,而不是从机器的角度来看问题。
    软件的复用最初是从函数库和类库开始的,这两种复用形式实际上都是白箱复用。到90年代,开始有人开发并出售真正的黑箱软件模块:框架(framework)和控件(control)。框架和控件往往还受平台和语言的限制,现在软件技术的新潮流是用SOAP作为传输介质的Web Service,它可以使软件模块脱离平台和语言的束缚,实现更高程度的复用。但是想一想,其实Web Service也是面向对象,只不过是把类与类之间的关联用XML来描述而已[Li, 02]。
    在过去的十多年里,面向对象技术对软件行业起到了极大的推动作用。在可以预测的将来,它仍将是软件设计的主要技术——至少我看不到有什么技术可以取代它的。

    来源:

    有很多人都认为:OOD是对结构化设计(Structured Design,SD)的扩展,其实这是不对的。OOD的软件设计观念和SD完全不同。SD注重的是数据结构和处理数据结构的过程。而在OOD中,过程和数据结构都被对象隐藏起来,两者几乎是互不相关的。不过,追根溯源,OOD和SD有着非常深的渊源。
    1967年前后,OOD和SD 的概念几乎同时诞生,它们分别以不同的方式来表现数据结构和算法。当时,围绕着这两个概念,很多科学家写了大量的论文。其中,由Dijkstra和 Hoare两人所写的一些论文讲到了“恰当的程序控制结构”这个话题,声称goto语句是有害的,应该用顺序、循环、分支这三种控制结构来构成整个程序流程。这些概念发展构成了结构化程序设计方法;而由Ole-Johan Dahl所写的另一些论文则主要讨论编程语言中的单位划分,其中的一种程序单位就是类,它已经拥有了面向对象程序设计的主要特征。
    这两种概念立刻就分道扬镳了。在结构化这边的历史大家都很熟悉:NATO会议采纳了Dijkstra的思想,整个软件产业都同意goto语句的确是有害的,结构化方法、瀑布模型从70年代开始大行其道。同时,无数的科学家和软件工程师也帮助结构化方法不断发展完善,其中有很多今天足以使我们振聋发聩的名字,例如Constantine、Yourdon、DeMarco和Dijkstra。有很长一段时间,整个世界都相信:结构化方法就是拯救软件工业的 “银弹”。当然,时间最后证明了一切。
    而此时,面向对象则在研究和教育领域缓慢发展。结构化程序设计几乎可以应用于任何编程语言之上,而面向对象程序设计则需要语言的支持[1],这也妨碍了面向对象技术的发展。实际上,在60年代后期,支持面向对象特性的语言只有Simula-67这一种。到70年代,施乐帕洛阿尔托研究中心(PARC)的 Alan Key等人又发明了另一种基于面向对象方法的语言,那就是大名鼎鼎的Smalltalk。但是,直到80年代中期,Smalltalk和另外几种面向对象语言仍然只停留在实验室里。
    到90年代,OOD突然就风靡了整个软件行业,这绝对是软件开发史上的一次革命。不过,登高才能望远,新事物总是站在旧事物的基础之上的。70年代和80年代的设计方法揭示出许多有价值的概念,谁都不能也不敢忽视它们,OOD也一样。

    (二)OOD与传统方法区别

    还记得结构化设计方法吗?程序被划分成许多个模块,这些模块被组织成一个树型结构。这棵树的根就是主模块,叶子就是工具模块和最低级的功能模块。同时,这棵树也表示调用结构:每个模块都调用自己的直接下级模块,并被自己的直接上级模块调用。
    那么,哪个模块负责收集应用程序最重要的那些策略?当然是最顶端的那些。在底下的那些模块只管实现最小的细节,最顶端的模块关心规模最大的问题。所以,在这个体系结构中越靠上,概念的抽象层次就越高,也越接近问题领域;体系结构中位置越低,概念就越接近细节,与问题领域的关系就越少,而与解决方案领域的关系就越多。
    但是,由于上方的模块需要调用下方的模块,所以这些上方的模块就依赖于下方的细节。换句话说,与问题领域相关的抽象要依赖于与问题领域无关的细节!这也就是说,当实现细节发生变化时,抽象也会受到影响。而且,如果我们想复用某一个抽象的话,就必须把它依赖的细节都一起拖过去。
    而在OOD中,我们希望倒转这种依赖关系:我们创建的抽象不依赖于任何细节,而细节则高度依赖于上面的抽象。这种依赖关系的倒转正是OOD和传统技术之间根本的差异,也正是OOD思想的精华所在。

     

    (三)OOD步骤

    • 细化重组类
    • 细化和实现类间关系,明确其可见性
    • 增加属性,指定属性的类型与可见性
    • 分配职责,定义执行每个职责的方法
    • 对消息驱动的系统,明确消息传递方式
    • 利用设计模式进行局部设计
    • 画出详细的类图与时序图

    (四)OOD过程主要工作

    (一)对象定义规格的求精过程
    对于OOA所抽象出来的对象-&-类以及汇集的分析文档,OOD需要有一个根据设计要求整理和求精的过程,使之更能符合OOP的需要。这个整理和求精过程主要有两个方面:一是要根据面向对象的概念模型整理分析所确定的对象结构、属性、方法等内容,改正错误的内容,删去不必要和重复的内容等。二是进行分类整理,以便于下一步数据库设计和程序处理模块设计的需要。整理的方法主要是进行归类,对类一&一对象、属性、方法和结构、主题进行归类。
    (二)数据模型和数据库设计
    数据模型的设计需要确定类-&-对象属性的内容、消息连接的方式、系统访问、数据模型的方法等。最后每个对象实例的数据都必须落实到面向对象的库结构模型中。
    (三)优化
    OOD的优化设计过程是从另一个角度对分析结果和处理业务过程的整理归纳,优化包括对象和结构的优化、抽象、集成。
    对象和结构的模块化表示OOD提供了一种范式,这种范式支持对类和结构的模块化。这种模块符合一般模块化所要求的所有特点,如信息隐蔽性好,内部聚合度强和模块之间耦合度弱等。
    集成化使得单个构件有机地结合在一起,相互支持。

    (五)OOD方法特点和面临的问题

    OO方法以对象为基础,利用特定的软件工具直接完成从对象客体的描述到软件结构之间的转换。这是OO方法最主要的特点和成就。OO方法的应用解决了传统结构化开发方法中客观世界描述工具与软件结构的不一致性问题,缩短了开发周期,解决了从分析和设计到软件模块结构之间多次转换映射的繁杂过程,是一种很有发展前途的系统开发方法。
    但是同原型方法一样,OO方法需要一定的软件基础支持才可以应用,另外在大型的MIS开发中如果不经自顶向下的整体划分,而是一开始就自底向上的采用OO 方法开发系统,同样也会造成系统结构不合理、各部分关系失调等问题。所以OO方法和结构化方法目前仍是两种在系统开发领域相互依存的、不可替代的方法。

     

    三、OOP

    面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。OOP 的一条基本原则是计算机程序是由单个能够起到子程序作用的单元或对象组合而成。OOP 达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息、处理数据和向其它对象发送信息。OOP 主要有以下的概念和组件:
    组件 - 数据和功能一起在运行着的计算机程序中形成的单元,组件在 OOP 计算机程序中是模块和结构化的基础。
    抽象性 - 程序有能力忽略正在处理中信息的某些方面,即对信息主要方面关注的能力。
    封装 - 也叫做信息封装:确保组件不会以不可预期的方式改变其它组件的内部状态;只有在那些提供了内部状态改变方法的组件中,才可以访问其内部状态。每类组件都提供了一个与其它组件联系的接口,并规定了其它组件进行调用的方法。
    多态性 - 组件的引用和类集会涉及到其它许多不同类型的组件,而且引用组件所产生的结果得依据实际调用的类型。
    继承性 - 允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性。典型地来说就是用类来对组件进行分组,而且还可以定义新类为现存的类的扩展,这样就可以将类组织成树形或网状结构,这体现了动作的通用性。
    由于抽象性、封装性、重用性以及便于使用等方面的原因,以组件为基础的编程在脚本语言中已经变得特别流行。Python 和 Ruby 是最近才出现的语言,在开发时完全采用了 OOP 的思想,而流行的 Perl 脚本语言从版本5开始也慢慢地加入了新的面向对象的功能组件。用组件代替“现实”上的实体成为 JavaScript(ECMAScript) 得以流行的原因,有论证表明对组件进行适当的组合就可以在英特网上代替 HTML 和 XML 的文档对象模型(DOM)。

     

    (四)建立Java面向对象编程OOP模型

    内容学习的要点:深度细节过程。即有深度的详细的编译/执行过程。

    ​​​​​​ Java的三个阶段

    在进入OOP之前,首先要确定好一定的需求,一般经过分析选择不同的软件过程,参考文章 软件过程(五大过程解析)

    之后经过OOA,OOD进入到OOP阶段

    关于这个阶段的知识体系

    一方面要学习如何编写Java程序,了解Java的语言规范(也就是语法),这里就详细的介绍一下,静态 与 强类型到底是什么鬼

    没有对比,很难清楚,
    C语言是静态语言、弱类型语言。
    Java语言是静态语言、强类型语言。
    JavaScript语言是动态语言、弱类型语言。

    下面来解释一下:

    静态类型语言、动态类型语言:
    静态类型语言:变量定义时有类型声明的语言。
    1)变量的类型在编译的时候确定
    2)变量的类型在运行时不能修改
    这样编译器就可以确定运行时需要的内存总量。
    例如:C/C++/Java/C#语言是静态类型语言。

    动态类型语言:变量定义时无类型声明的语言。
    1) 变量的类型在运行的时候确定
    2) 变量的类型在运行可以修改
    例如:Javascript语言是动态类型语言。

    强类型语言、弱类型、无类型语言:
    弱/强类型指的是语言类型系统的类型检查的严格程度。弱类型相对于强类型来说类型检查更不严格,比如说允许变量类型的隐式转换,允许强制类型转换等等。
    强类型语言:例如Java/C#语言是强类型语言,强类型定义语言是类型安全的语言,是由编译器以及编译器生成的中间代码来保证类型安全。
    弱类型语言:C/C++/Javascript语言是弱类型语言,其类型安全由程序员来保证,Javascript语言的安全由程序员来保证。
    无类型语言:是动态语言,变量中既可以存放数据又可以存放代码。
     

    另一方面了解Java跨平台是怎么实现的,这牵扯到部署问题,还有想要Java跨版本等情况的处理

    在编写合格的Java源程序,有编辑器的帮助,但这却是远远不够的,需要有Java编程思想的辅助,这本书必须要啃上几遍呀! 在

    还有在学习语法的时候,就应该去捣鼓JVM是什么情况了,比如说Java能够很好的解决数组溢出的情况,原因就是在进行在JVM执行的时候,加上了几条判断语句,这是JVM帮你做的东西,如果不了解JVM,就是浮于表面做定西了,遇到"奇怪"的东西,你也会感到困惑,在前期学习阶段Java类库是少不了的,尤其是Object类,它是你理解Java内存模型的关键,

    深入(深度的详细的)编译/执行过程,并不是简单的过程,需要你沉下心来,认真咀嚼,很多人都是在这里拉开差距的,这是深入的关键步骤,最终直至你建立完整的Java内存模型

     

     

     

    OOA/OOD(过程、方法与内容)能够提升你去设计你进行OOP的能力,Java编程思想是一项你进行设计OOP非常关键的一部分。

    我们不应该从语法的角度去学习Java语言,而应该站在操作系统、CPU、JVM的角度去学习Java。

    API类库的使用需要经验的积累,在这一方面,作为本科生.我们无法超越那些有七八年工程经验的Java工程师,但是Java编程思想方面的学习,是机会突破的!

    Java核心技术,Java编程思想并不是无底洞,打扎实基础,才是王道,趁有时间,前行!

    展开全文
  • java面向对象简介

    千次阅读 多人点赞 2021-11-06 13:59:14
    三、类 类是具有相同属性和方法的一组对象的集合,它为属于该类的所有对象提供了统一的抽象描述,其内部包括属性和方法两个主要部分。在面向对象的编程语言中,类是一个独立的程序单位,它应该有一个类名并包括属性...
  • Python程序设计 第7章:Python面向对象编程7.1 面向对象编程概述7.1.1 OOP的产生7.1.2 OOP核心思想7.1.3 OOP特征7.2 类和对象7.2.1 类的创建7.2.2 对象的创建7.2.3 类的属性7.2.4 类的方法7.2.5 内部类7.2.6 魔术...
  • 面向对象基本概念

    万次阅读 多人点赞 2019-02-06 21:56:15
    面向对象就是:把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象...
  • Go基础编程:面向对象—接口

    千次阅读 2017-12-29 14:55:46
    接口类型是一种抽象的类型,它不会暴露出它所代表的对象的内部值的结构和这个对象支持的基础操作的集合,它们只会展示出它们自己的方法。因此接口类型不能将其实例化。 Go通过接口实现了鸭子类型(duck-typing):...
  • 面向对象建模得到的模型包含系统的3个要素:静态结构(对象模型)、交互次序(动态模型)和数据变换(功能模型)。  这三个模型解决的问题不同,其重要程度也不同:几乎解决任何一个问题,都需要从客观世界实体及...
  • 十、面向对象分析 面向对象分析的基本过程 面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程。 步骤: 分析需求陈述(多次与用户协商,快速建立计算机原型系统) 深入理解用户需求,抽象出目标系统的...
  • 问题聚焦: 行为模式,将你的注意力从控制流转移到对象间的联系通信方式上来。 本节所介绍的职责链,是典型的松耦合设计模式。 职责链模式可以相应多个请求接受者,选择其中最合适的处理者。
  • 面向对象分析与设计

    千次阅读 2020-07-03 19:27:35
    用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。 优点: 减少耦合:可以独立地开发、测试、优化、使用、理解和修改 减轻维护的负担:可以更容易被程序员理解,并且在调试的时候可以不影响...
  • Java面向对象面试题总结

    万次阅读 多人点赞 2019-02-27 17:22:05
    (2)提供一个接口来描述其他对象的使用方法 (3)其他对象不能直接修改本对象所拥有的属性和方法 (4)封装反映了事物的相对独立性  (5)封装在编程上的作用是使对象以外的部分不能随意存取对象的内部数据...
  • 写了这么久代码你了解Java面向对象的设计原则吗?

    千次阅读 多人点赞 2021-09-17 09:59:18
    面向对象设计原则是学习设计模式的基础,每一种设计模式都符合某一种或多种面向对象设计原则。通过在软件开发中使用这些原则,可以提高软件的可维护性和可复用性,让我们可以设计出更加灵活也更容易扩展的软件系统,实现...
  • 软件工程期末复习6-面向对象分析

    千次阅读 2020-12-26 22:24:13
    1. 面向对象分析方法 1.1 面向对象分析过程 面向对象的分析主要以...2.控制类代表了系统的逻辑控制,描述一个用例所具有的事件流的控制行为,实现对用例行为的封装。通常,可以为每个用例定义一个控制类。 3.实体类描
  • 为了具体地分析通信与指控系统作战任务、理解通信与指控系统反导作战的行为特征,分析了反导作战过程,描述了指挥控制系统体系构成:在此基础之上利用UML面向对象系统建模方法,针对通信与指控系统的典型反导作战...
  • 行为型模式四

    千次阅读 2022-08-06 11:44:34
    本篇是我们设计模式的第四章节,还是对行为型模式进行讲解主要讲解:模板方法模式、观察者模式、策略模式、责任链模式。并对于每一个模式进行概念、例子、uml 以及应用场景等进行说明。希望对读者有所帮助.............
  • Java引用对象

    万次阅读 2018-12-11 10:09:03
    你也许想知道循环引用会发生什么,即对象A包含一个对象B的引用,同时对象B也包含对象A的引用。答案是标记-清除回收器并不傻,如果A和B都无法由强引用链到达,那么它们都可以被回收。 Finalizers C++允许对象...
  • 面向对象复习总结

    千次阅读 2016-12-07 21:11:27
    把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。 (分类) Ø 通过在不同程度上运用抽象的原则可以得到 较一般的类 和 较特殊的类 。特殊类继承一般类的属性与...
  • 其中一个很重要的原因,就是对于高度动态和交互性的场景下的行为和轨迹预测问题始终没有得到很好的解决,失去这一前提,再完美的决策、规划、控制在实际应用中都不可能是安全和高效的。 实际上,从业者很早就指出...
  • 面向对象编程(Python版详解)

    万次阅读 多人点赞 2020-04-03 14:14:18
    本篇是面向对象编程Python版详解!案例教学超详细,欢迎打卡、阅读学习!
  • 几种典型的面向对象开发方法总结

    千次阅读 2012-11-17 09:45:15
    重要的概念模型是类和对象、类和对象的特征、类和对象之间的关系。使用的图形文档包括六种: 类图、对象图、状态转换图、交互图、模块图和进程图。 Booch方法的开发过程: (1) 在给定的抽象层次上识别类和对象...
  • JAVA面向对象的思维导图

    千次阅读 2019-08-31 20:05:43
    C语言是一种典型的面向过程语言,Java是一种典型的面向对象语言。 面向对象是一种“设计者思维”。设计时,先从问题中找名词,然后确立这些名词哪些可以作为类,再根据问题需求确定的类的属性和方法,确定类之间的...
  • 文件存储NAS与对象存储OSS

    千次阅读 2021-02-04 15:44:47
    文件存储与对象存储 摘要:本文主要介绍文件存储NAS与对象存储OSS这2种目前主要的存储技术,以及差异,并介绍了各自的主要使用场景。 一、技术介绍 1.1、文件存储NAS 1.1.1概念 NAS(Network Attached ...
  • es6 Proxy对象详解

    千次阅读 2019-05-13 11:53:00
    Proxy 可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来“代理”某些...
  • 行人异常行为检测

    千次阅读 2020-03-09 02:01:22
    行人异常行为检测什么是行人异常检测异常行为意义分类按行为定义的方法基于定义规则的方法基于概率的统计学方法学习正常模型学习所有数据基于机器学习的方式无监督有监督半监督基于选择的特征局部运动特征轨迹数据集...
  • JavaScript - 实例对象 与 new命令

    千次阅读 2020-05-18 16:01:23
    1.应用场景 JavaScript 语言具有很强的面向对象编程能力, ... 典型的面向对象编程语言(比如 C++ 和 Java),都有“类”(class)这个概念。所谓“类”就是对象的模板,对象就是“类”的实例。 .
  • 四、软件体系结构描述

    千次阅读 2020-04-02 23:05:05
    软件体系结构描述方法 描述方法的种类: 非形式化→形式化→ 标准化 图形表达工具 采用由矩形框和有向线段组合而成的图形表达工具。 矩形表示抽象构件 框内文字为抽象构件的名称 有向线段代表辅助各构件进行通信、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 98,878
精华内容 39,551
热门标签
关键字:

对象典型行为描述