<九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性
设计类
--->设计类是系统实施中一个或多个对象的抽象。
--->设计类已经直接映射到实现代码了,因此设计类依赖于实施语言。另一方面,设计类来源于前期的系统分析,在统一过程中,类不是品空想像出来的。他们可以一一映射到前期系统分析的成果上。从这个观点出发,分析类的重要性就能够体现出来。分析类为设计类中多需要的界面,逻辑和数据提供了非常好的抽象基础,设计类可以非常容易和自然地从分析类中演化出来。
类
--->类对对象进行定义,而对象又实现(或成为实施)用例。类的来源可以是用例实现对系统所需对象的需求,这是为实现业务需求而定义的。也可以是任何以前已开发的对象模型,即现有的系统模块,采用的软件框架,第三方产品等。类说明了对象是什么,同时也决定了对象拥有什么属性,具有什么方法。在java和C++这些典型的面向对象语言里,类就对应于一个class声明。
--->类是对对象某一方面特征的归纳和抽象,而对象则是类实例化的结果。
属性
---->属性是对象的特征。
---->属性同时表明对象的唯一性。
方法
---->原则上,访问对象或影响其他对象的属性或关系的唯一途径是方法,直接访问和修改对象属性是不提倡的。
---->对象的方法由它的类进行定义。大多数情况下,类定义的方法都是由实例化后的对象执行的,即这些方法为对象方法。但有时候也可以由类来执行,这种方法称之为类方法。例如,在java中,类方法是由static关键字声明的。一个static方法可以由类来执行而不必实例化成对象。
---->方法的作用是访问和改变对象的属性,有时候方法仅仅封装了算法,执行该方法不会改变对象的属性,在面向对象中,需要注意的原则是一个对象的属性只应该由它自己的方法来改变。
可见性
---->类的属性和方法都有相似的可见性定义,各编程语言对可见性的处理是不完全一致的。在UML中,可见性可以归纳为以下四类
---->共有:除了类本身意外,属性和方法对其他模型元素也是可看见的。共有的可见性应该尽量少用,共有就意味着将类的属性和方法暴露给外部,这与面向对象的封装原则是矛盾的。暴露给外部的内容越多,对象越容易受影响,越容易形成高耦合度。
--->保护:属性和方法只对类本身,它的子类或友元(取决于具体语言)是可看见的。保护可见性是默认的可见性。它保护属性和方法使其不被外部类使用,防止行为的耦合和封装变得松散。
---->私有:属性和方法只对类本身和类的友元(取决于具体语言)是可视的。私有的可见性可以用在不希望子类继承属性和方法的情况下。它提供了从超类对子类的去耦方法。并减少了删除或排除未使用继承操作的需要
---->实施:属性和方法只在类本身的内部是可看见的(取决于具体的语言)。实施可见性最具限制性。当只有类本身才可以使用操作时,使用这种可见性。它是私有可见性的变体。
<九>面向对象分析之UML核心元素之设计类,类,属性,方法,可见性的更多相关文章
- <四>面向对象分析之UML核心元素之用例
一:基本概念 --->用例定义了一组用例实例,其中每个实例都是系统所执行一系列操作,这些操作生成特定主角可以观测的值. --->所谓用例,就是一件事情,要完成这 ...
- <十>面向对象分析之UML核心元素之关系
关系 --->在UML中关系是非常重要的语义,它抽象出对象之间的联系,让对象构成特定的结构. 一,关联关系(association)
- <五>面向对象分析之UML核心元素之边界
一:基本概念
- <八>面向对象分析之UML核心元素之分析类
一:基本概念 ---->在那大数项目中,分析类是被忽视的一种非常有用的元素. ---->分析类用于获取系统中主要的“职责簇”,他们代表系统的原型类,是系统必须处 ...
- <三>面向对象分析之UML核心元素之参与者
一:版型 --->在UML里有一个概念叫版型.有些书里也称类型,构造型. --->这个概念是对一个UML元素基础定义的扩展.在同一个元素基础定义的基础上赋予特别 ...
- <十二>面向对象分析之UML核心元素之节点和设备
节点,设备
- <七>面向对象分析之UML核心元素之包
一:基本概念
- <六>面向对象分析之UML核心元素之业务实体
一:基本概念
- <十一>面向对象分析之UML核心元素之组件
组件
随机推荐
- iOS开发之ARC&MRC混用
Xcode 项目中我们可以使用 ARC 和非 ARC 的混合模式. 如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签. 如果你的项目使用的是 ARC 模 ...
- unity与Android相互调用
原地址:http://www.cnblogs.com/ayanmw/p/3727782.html 现在unity 导出的android客户端需要调用 Android 的支付SDK,但是unity与an ...
- Boost简介
原文链接: 吴豆豆http://www.cnblogs.com/gdutbean/archive/2012/03/30/2425201.html Boost库 Boost库是为C++语言标准库提供扩 ...
- 0环境设置 - Statspack设置
简单说明 Statspack主要用于永久存储performance statistics 信息 只有作为sysdba连接时才能安装Statspack. 然后改目录到#cd $ORACLE_HOME/r ...
- Netty 的Downstream 和 Upstream
Netty的Downstream 和 Upstream 如果一个event从第一个handler传递直到最后一个handler就是 Upstream 相反的如果一个event从最后一个handler传 ...
- css中的:before与:after的简单使用
直接上代码,不多说了! 画三角形 1). <style type="text/css"> .triangle{ width: 0; height: 0; /*borde ...
- 目标检测的图像特征提取之(三)Haar特征
1.Haar-like特征 Haar-like特征最早是由Papageorgiou等应用于人脸表示,Viola和Jones在此基础上,使用3种类型4种形式的特征. Haar特征分为三类:边缘特征.线性 ...
- TCL语言笔记:TCL基础语法
一.什么是TCL Tcl 全称是 Tool command Language.它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握. Tcl 语言是一个解释性语言,所谓解释性是指不象其 ...
- SQLite数据库的体系结构(翻译自sqlite.org)
$1 简介 本文档描述了SQLite库的体系结构,这些信息对那些想理解和修改SQLite的内部工作机制的人是有用的. 下图显示了SQLite的主要组成部件及其相互关系,下面的内容将描述每一 ...
- Haxe数据类型
以下是Haxe里面的一些数据类型 基本类型 空特性 类 枚举 匿名结构 方法 动态 抽象 1. 基本类型Bool, Float, Int 2. 空特性由于Haxe可以被编译为各种不同的target,不 ...