从一开始上课老师就讲面向对象设计面向对象设计,然而对于什么是面向对象是什么没有什么具体的概念,相较于面向对象设计,面向对象又有什么什么优势。《大象》从一开始就交代了我最基础的知识欠缺,在书的第一部分就将两个概念形象的展现在我面前。

面向过程方法认为我们的世界是由一个个相互关联的小系统组成的,面向过程方法还认为每个小系统都有着明确的开始和明确的结束,开始和结束之间有着严谨的因果关系,只要我们将这个小系统的每一个步骤和影响这个小系统走向的所有因素都分析出来,我们就能定义这个系统的行为。

面向对象方法将世界看作是一个个相互独立的对象,相互之间并无因果关系,他们平时是“鸡犬之声相闻,老死不相往来”的。只有在某个外部力量的驱动下,对象之间才会依据某种规律相互传递信息。这些交互构成了这个生动世界的一个“过程”。在没有外力的情况下,对象则保持着“静止”的状态。这些独立的对象有着一系列奇妙的特性。例如:封装,聚合,继承,接口,多态,依赖,耦合,方法。又用汽车组装的例子形象的揭示了面向对象的另一个非常重要的特性:抽象层次。

当面向对象方法解决面向过程方法出现的问题时,自己本身也会存在一些困难。实际上,想要跨越这道鸿沟,我们需要:(1)一种把现实世界映射到对象世界的方法。(2)一种从对象世界描述现实世界的方法。(3)一种验证对象世界行为是否反映了现实世界的方法。

在实践中,人们很快发现了问题:编程序需要的对象不但不能够从设计中自然而然地推导出来,而且强调连续性和过程话的结构化设计与时间驱动型的离散对象结构之间有着难以调和的矛盾。为了解决这些困难,一些面向对象的设计方法开始出现。

UML是一种建模用的语言,用自然世界和计算机逻辑都能够理解的表达方法来说明现实世界。除了对语言的掌握功力之外更重要的是思想和理念。语言如果不能用于沟通,那语言就没有意义!最好的方法就是创造一种打架都认可的统一语言。UML统一建模预言帝额意义也正在于此,UML采用了“可视化”的图形方式来定义语言。

首先,由现实世界到业务模型,再从业务模型到概念模型,最后再到概念模型。

UML是一种语言,用来描述软件产生过程中要产生的文档,统一过程则是知道如何产生这些文档以及这些文档要讲述什么方法。虽然同意过程是知道UML的方法中最追命、应用最广、也可能最成功的一个,但是两者却不是完全不可以分开的。

实施统一过程一方面出于提高软件成熟度的需要;另一方面是出于提高软件科技水平和质量的需要;再一方面,统一过程适用于开发稳定的架构。

问题领域=抽象角度1+抽象角度2+......抽象角度n

抽象角度=问题领域边界之外的参与者的业务目标=业务用例

业务用例=特定场景1+特定场景2+......特定场景n

特定场景=静态事物+特定的条件+特定的动作

(或者:特定场景=静态事物+特定的规则+特定的行为)

用例驱动:用例视图,逻辑视图,进程视图,实施视图,部署试图。

抽象层次是面向对象方法中极其重要的。抽象有两种方法:一种是自顶向下,适用于让人们从头开始认识事物;一种是自底向上,适用于在实践中改进和提高认识。对象分析方法:一切都是对象,对象都是独立的,对象都具有原子性,对象都是可抽象的,对象都有层次性。

RUP和UML是可以分离的,采用哪种方法其实并不妨碍试用UML来做软件的分析和设计。

无论是面向对象还是UML统一建模语言,都是辅助我们最终达到更好的设计出性能良好的软件的工具,理论终是纸上谈兵,重在实践,考虑什么方面,采用什么样的结构,怎样封装类,有时说不出原因单凭经验。

think in UML(一)的更多相关文章

  1. UML课程复习重点

    第一章 一.UML图示建模工具 二.UML--统一建模语言,以图形符号为基础,描述软件模型既简洁又清晰.它不是开发方法,是独立于任何开发方法之外的语言.它用于描述软件系统分析.设计和实施中的各种模型. ...

  2. UML图中经常用到几种的关系图例

    学习这个东西挺奇怪的,时间一长就容易忘记,或者记不清楚.今天看到一些UML图的关系,发现有些出入了,索性就写下来,以后再忘记的时候过来看看. 在UML的类图中,常见的有以下几种关系: 继承(Gener ...

  3. UML类图(下):关联、聚合、组合、依赖

    前言 上一篇文章UML类图(上):类.继承.实现,讲了UML类图中类.继承.实现三种关系及其在UML类图中的画法,本文将接着上文的内容,继续讲讲对象之间的其他几种关系,主要就是关联.聚合.组合.依赖, ...

  4. UML类图(上):类、继承和实现

    面向对象设计 对于一个程序员来说,在工作的开始阶段通常都是别人把东西设计好,你来做.伴随着个人的成长,这个过程将慢慢变成自己设计一部分功能来实现,自己实现.如果要自己设计,无论是给自己看,还是给别人看 ...

  5. UML

    UML:1.继承关系用空心三角形+实线来表示2.实现接口用空心三角形+虚线来表示3.关联关系用实线箭头来表示4.依赖关系用虚线箭头来表示5.聚合关系用空心菱形+实线箭头来表示6.组合关系用实心菱形+实 ...

  6. UML类图与面向对象设计原则

    1. 引言     从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模 ...

  7. 浅谈UML的概念和模型之UML九种图

    1.用例图(use case diagrams) [概念]描述用户需求,从用户的角度描述系统的功能 [描述方式]椭圆表示某个用例:人形符号表示角色 [目的]帮组开发团队以一种可视化的方式理解系统的功能 ...

  8. UML类图几种关系的总结

    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composit ...

  9. 我的敏捷、需求分析、UML、软件设计电子书 - 下载(持续更新中)

    我将所有我的电子书汇总在一起,方便大家下载!(持续更新) 文档保存在我的网站——软件知识原创基地上(www.umlonline.org),请放心下载. 1)软件设计是怎样炼成的?(2014-4-1 发 ...

  10. UML类图关系全面剖析

    UML的类图关系分为: 关联.聚合/组合.依赖.泛化(继承).而其中关联又分为双向关联.单向关联.自身关联:下面就让我们一起来看看这些关系究竟是什么,以及它们的区别在哪里. 1.关联 双向关联:C1- ...

随机推荐

  1. VS2013自带报表+打印功能

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010773667/article/details/27540389 经过了VB版机房收费系统的学习 ...

  2. UMI开源项目

    本文主要围绕UMI是什么及其特征.安装应用.模板例子等四个方面内容来讲解UMI,希望能够对初学者有所启发. 一. UMI是什么 UMI是可插拔的企业级反应应用程序框架. 二. 特征 特征

  3. JSP中使用JDBC连接MySQL数据库的详细步骤

    1,首先在自己新建的项目文本框中输入Web Project的名称,然后单击下一步. 2,继续单击下一步 3,把Generate web.xml deployment descriptor复选框勾上. ...

  4. JBOSS安装与配置搭建本地项目环境(方便前端开发调式)

    JBOSS安装与配置搭建本地项目环境  什么是JBOSS? JBOSS是EJB的服务器,就像Tomcat是JSP服务器一样,就是服务器的一种. 环境搭建如下: 一:首先安装JDK,配置环境变量(PAT ...

  5. Java设置以及获取JavaBean私有属性进阶

    在上一篇博客中讲到使用Java提供的原生API设置以及获取一个JavaBean的私有属性. 但是使用Java的原生API过于复杂,有没有更加简单的方法呢?答案是肯定的.下面介绍一个开元工具包来非常方便 ...

  6. OpenGL笔记(二) 渲染管线

    GLSL着色器代码分为两个部分,即Vertex Shader(顶点着色器)与Fragment Shader(片元着色器). 上下文环境搭建 OGL不负责窗口管理与上下文环境管理,该职责由平台完成.在A ...

  7. 极客互联网电视不是噱头,用户体验成创维G7200核心竞争力

        IT产业的迅猛发展带动了智能设备的崛起与繁荣,除已经高度普及的智能手机之外.智能电视.智能可穿戴设备等一大批新兴产品更是让消费者充分感受到了智能科技为生活所带来的变化.以智能电视为例,除了乐视 ...

  8. kettle学习笔记(十)——数据检验、统计、分区与JS脚本

    一.概述 数据剖析和数据检验: 用于数据的检查.清洗 . 统计步骤: 提供数据采样和统计的功能 分区: 根据数据里某个字段的值,拆分成多个数据块.输出到不同的库表和文件中. 脚本: Javascrip ...

  9. Django Rest Framework源码剖析(一)-----认证

    一.简介 Django REST Framework(简称DRF),是一个用于构建Web API的强大且灵活的工具包. 先说说REST:REST是一种Web API设计标准,是目前比较成熟的一套互联网 ...

  10. 网络对抗技术 2017-2018-2 20152515 Exp1 PC平台逆向破解(5)M

    Exp1 PC平台逆向破解(5)M 1 知识要求 2 直接修改程序机器指令,改变程序执行流程 3 通过构造输入参数,造成BOF攻击,改变程序执行流 4 注入Shellcode并执行 1 知识要求 掌握 ...