软件测试实验二Word下载.docx
《软件测试实验二Word下载.docx》由会员分享,可在线阅读,更多相关《软件测试实验二Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
![软件测试实验二Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/2/5374de5c-f78f-4c77-8f57-a05448415f83/5374de5c-f78f-4c77-8f57-a05448415f831.gif)
我们有很多货物并且货物有不同的种类(书籍、食物等),在现实生活中仓库管理员把这些统称为“货物”,只是销售前或盘点中,才会细分成大小类型不一致的商品。
设计中描述了一个货物泛化对象Product,根据不同的私有属性描述,实例化的Product就成了书籍或者食物。
同样,StoreHouse类描述了一个超市对象。
下面是详细描述。
1、IProductCRCCards
IProductCRC
所属包
com.fastpoint.Product
类名称
PublicinterfaceIProduct
扩展于
none
子类型
实现于
类描述(功能)
货物交易接口,该接口制订了进行货物操作的动作规约。
类属性和类方法列表
01
publicIProductadd(IProductp)
02
publicIProductaddProduct(Productp)
03
IProductaddStoreHouse(StoreHouses)
04
publicbooleanisZero()
05
publicIProductnegate()
06
publicIProductsubtract(IProductp)
07
publicvoidappendTo(StoreHouses);
2、ProductCRCCards
ProductCRC
privateintfSummation
privateStringfType
publicIProductaddStoreHouse(StoreHouses)
08
publicintsummation()
09
publicStringtype()
10
publicbooleanequals(ObjectanObject)
11
publicinthaseCode()
12
publicStringtoSting()
类属性描述(功能)
属性名
fSummation
描述
某类商品总数
修饰为
private
类型
int
fType
商品类型
String
类方法描述(功能)
方法名
add
增加一个商品到货物对象中
参数类型
IProductp
返回值
IProduct
addProduct
一个增加商品操作的快捷方式
Productp
addStoreHouse
为货物对象指定一个超市对象
StoreHouses
isZero
判断商品对象的值是否为空
boolean
negate
取负值操作
Subtract
减少一个货物对象的商品值
appendTo
向超市对象的商品列表增加具体商品
void
summation
返回某类商品的总数
type
返回某类商品的类型
equals
覆盖父类的同名方法,对传入的对象进行逻辑比对
ObjectanObject
false/true
haseCode
返回某类商品属性(类型+数量)的关键字
toSting
返回某类商品属性(类型+数量)
buffer
3、StoreHouseCRCCards
privateVectorfMonies
publicIProductappendSH(StoreHouses)
publicvoidappendProduct(productp)
privateProductfindProduct(Stringtype)
privateBooleancontains(Productp)
13
14
publicIproductsimplify()
15
16
staticIProductcreate(IProductp1,IProductp2)
fMonies
超市商品列表
Vector
增加商品
一个增加商品操作的快捷方式,新增该商品到超市列表中。
合并超市商品值
appendSH
增加商品到超市列表中
appendProduct
合并超市列表中的商品值
ProductaProduct
findProduct
根据商品类型查找相同属性的商品
Stringtype
Product
contains
根据返回商品类型判断商品值
取超市商品列表的商品负值
subtract
减少超市商品列表中某项商品的值
向商品对象到超市对象中
simplify
返回超市商品列表中的一个单例
fType.hashCode()+fSummation
返回超市实例的哈希值
覆盖父类同名方法,返回超市商品列表(字符串输出)
Sting
create
创建指定超市对象的商品列表
IProductp1
三)程序代码
1、IProduct
packagecom.fastpoint.Product;
publicinterfaceIProduct{
publicIProductadd(IProductp);
publicIProductaddProduct(Productp);
publicIProductaddStoreHouse(StoreHouses);
publicbooleanisZero();
publicIProductnegate();
publicIProductsubtract(IProductp);
publicvoidappendTo(StoreHouses);
}
2、Product
publicclassProductimplementsIProduct{
privateintfSummation;
privateStringfType;
publicProduct(intsummation,Stringtype){
fSummation=summation;
fType=type;
}
publicIProductadd(IProductp){
returnp.addProduct(this);
publicIProductaddProduct(Productp){
if(p.type().equals(type()))
returnnewProduct(summation()+p.summation(),type());
returnStoreHouse.create(this,p);
publicIProductaddStoreHouse(StoreHouses){
returns.addProduct(this);
publicintsummation(){
returnfSummation;
publicStringtype(){
returnfType;
publicbooleanequals(ObjectanObject){
if(isZero())
if(anObjectinstanceofIProduct)
return((IProduct)anObject).isZero();
if(anObjectinstanceofProduct){
ProductaProduct=(Product)anObject;
returnaProduct.type().equals(type())&
&
summation()==aProduct.summation();
returnfalse;
publicinthaseCode(){
returnfType.hashCode()+fSummation;
publicbooleanisZero(){
returnsummation()==0;
publicIProductnegate(){
returnnewProduct(-summation(),type());
publicIProductsubtract(IProductp){
returnadd(p.negate());
publicStringtoSting(){
StringBufferbuffer=newStringBuffer();
buffer.append("
["
+summation()+"
"
+type()+"
]"
);
returnbuffer.toString();
publicvoidappendTo(StoreHouses){
s.appendProduct(this);
3、StoreHouse
importjava.util.Vector;
importjava.util.Enumeration;
publicclassStoreHouseimplementsIProduct{
privateVectorfMonies=newVector(5);
privateIProductsimplify(){
if(fMonies.size()==1)
return(IProduct)fMonies.elements().nextElement();
returnthis;
publicProductfindProduct(Stringtype){
for(Enumeratione=fMonies.elements();
e.hasMoreElements();
){
Productp=(Product)e.nextElement();
if(p.type().equals(type))
returnp;
returnnull;
privatebooleancontains(Productp){
Productfound=findProduct(p.type());
if(found==null)returnfalse;
returnfound.summation()==p.summation();
publicinthashCode(){
inthash=0;
e.hasMoreElements();
Objectm=e.nextElement();
hash^=m.hashCode();
returnhash;
returnfMonies.size()==0;
staticIProductcreate(IProductp1,IProductp2){
StoreHouseresult=newStoreHouse();
p1.appendTo(result);
p2.appendTo(result);
returnresult.simplify();
publicIProductadd(IProductm){
returnm.addStoreHouse(this);
returnStoreHouse.create(p,this);
voidappendProduct(ProductaProduct){
if(aProduct.isZero())return;
IProductold=findProduct(aProduct.type());
if(old==null){
fMonies.addElement(aProduct);
return;
fMonies.removeElement(old);
IProductsum=old.add(aProduct);
if(sum.isZero())
fMonies.addElement(sum);
returnStoreHouse.create(s,this);
voidappendSH(StoreHouseaSH){
for(Enumeratione=aSH.fMonies.elements();
)
appendProduct((Product)e.nextElement());
if(anObjectinstanceofStoreHouse){
StoreHouseaStoreHouse=(StoreHouse)anObject;
if(aStoreHouse.fMonies.size()!
=fMonies.size())
if(!
aStoreHouse.contains(p))
returntrue;
Productp=(Product)e.nextElement();
result.appendProduct((Product)p.negate());
returnresult;
returnadd(p.negate());
pub