(Development)Software Engineering:Theory and Practice

(Development)Software Engineering:Theory and Practice

 

看来我很容易忘记面向对象中的很多概念.参看很多概念书,规范一些概念的定义.
在《Software Engineering:Theory and Practice》一书中摘出标识的概念,它是指将数据组织为离散的,可区分的实体,称为对象.
行为是一个对象执行(或作用于该对象)的动作或转换.
关于静态视图包括对对象,属性,行为的描述以及对象之间关系的描述.动态视图描述通讯,控制/计时和状态以及状态改变.限制描述关于结构(如属性值和基数)和动态行为的约束.
时序图说明消息是如何从一个对象流向另一个对象的,它形式化地描述需求中的非形式化的事件.协作图使用对象和时序信息来说明对象之间的事件流.
包图说明如何将逻辑地划分为模块.构件图通常和包图一样但是它们反映的实际的,最终的系统模块.因为最终的系统通常是较大的网络中的一部分,所以部署图说明要构造的应用中的网络链接.
而参看我国教材,统一定义了部分概念
对象具有状态和行为,而对象及其操作就是对象的行为.
区分对象,对象具有有形实体,作用,事件,性能说明.并且对象的唯一性,每个对象都有自身唯一的标识.
而具有相同或相似性质的对象的抽象就是类,对象的抽象就是类.类的具体化就是对象.
类是具有属性和操作的.
类的结构又分为一般和整体.
而类又有为抽象类,子类和父类,超类,派生类,包括接口
由于类的概念繁杂,不好统一,其实很多概念就是一个概念,比如说父类就是超类,而子类就是派生类.
而抽象类与接口之间的联系,因为抽象类的提出,使得面向对象的特性之一封装性,变得不是很正确,显然它并不能起到预期的效果,对于信息的隐蔽性,并不是密不透风,显然他对于抽象类说是透明或者说是半透明的.
而模块于模块之间,存在消息的传递(消息包括对象名,方法),而在抽象类可以定义不存在的接口,打乱原本密不透风的模块.
而随后提出的概念更叫人让人匪夷所思.
关联和链.
链表示对象间的物理与概念联结.(组合)
关联表示类之间的一种关系(弱关联)
受限关联显然是受限制的关联关系.(强关联)
聚集关系式一种"整体-局部"关系.
一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方式.
因为UML中概念相当多,今天只记了一部分.这些概念相当的麻烦和包好理解.
前几天,我谈及软件工程的部分概念,他确实是一个比较让人头疼的问题:
Software Enginering提出了UML,构建框架,是在已知框架上搭建的,对于那些软件构架师来说:这是非常具有挑战性的工
作.
不过还好!因为提出的软件构架还比较成熟.和完善的
但仍然避免不了软件危机的本身.
特别是当今流行的面对对象的语言的转型.比如说Java一个纯面向对象的语言
有种类图:(取自2007年11月份程序员考试下午题)

[ Java
    Triangle tr = new Triangle();
    Square sq = new Square();
    Shape  sh = tr;
[ 关于上述Java代码中sh 和 tr的以下叙述中,哪两个是正确的(写出编号)。
         ① sh 和 tr分别引用同一个对象;
         ② sh 和 tr分别引用同一类型的不同的对象;
         ③ sh 和 tr分别引用不同类型的不同对象;
         ④ sh 和 tr分别引用同一个对象的不同拷贝;
         ⑤ sh 和 tr所引用的内存空间是相同的。
[ 写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请填写“无”)。
         tr.height()         (1)    
         sh.perimeter()     (2)    
         sq.height()         (3)    
         sq.perimeter()     (4)    
         sh.height()         (5)    
         tr.perimeter()     (6)    
[ 下列赋值语句中哪两个是合法的(写出合法赋值语句的编号)。
     ① sq = sh;  ② sh = tr;  ③ tr = sq;  ④ sq = tr;  ⑤ sh = sq;
考虑哈!显然这是UML文档中的类图模式,最顶上的是Shape是个超类,而最底下的Square是个派生类,他是继承超类中所具有的共享属性,而我要说的是类的覆盖的概念,类能被覆盖,但是是有条件的,被覆盖的类,必须是覆盖它类的超类(父类),简单的说,被覆盖的类是超类,而覆盖他的类是派生类.但是超类可以被多次嵌套继承,这跟多继承还是有很大的区别,因为多继承是多个子类继承父类的属性和方法,再说java是不支持多继承,C++存在多继承和联编的概念,而嵌套继承是,是子类的子类,字面都能理解,就是相对于爷爷和孙子的关系,但他们之间仍然有关系,而且继承了爷爷和孙子都共有的特点,这在程序里表现的不是很明显,但是在基类中却表现了他的不凡,这里此时Shape是爷爷,Square是孙子而他们共有的特性是perimeter.所以在继承的时候,他们都可以提出Perimeter这个方法.就好比Map,和Hashtable是属于Map类,Map就是基类,他们就是一个对象,并且继承他的中所有特性,故我们可以写成Map hashtable=new Hashtable();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值