②更新宠物主人信息:减少 ③更新宠物商店信息:增加 ④更新账目信息:添加新账目 如下图:
图 3-2 3.3.4宠物主人购买新培育宠物
主人成功登录后,可选择购买新培育宠物,显示所有新培育宠物列表主人选择,输入宠物编号完成购买,购买成功将显示提示信息。
思路分析
①实现步骤与购买库存宠物相同
②购买库存宠物和新培育宠物属于两种不同的业务,在业务接口和实现类中应该定义不同的方法
③重用数据访问层代码
宠物主人卖出宠物给商店显示主人的宠物列表,选择要卖出的宠物序号,确认卖出宠物,显示宠物商店列表,选择买家序号完成交易,
交易成功将显示提示信息。
1、思路分析 (1)DAO代码 (2)Service代码
①获得指定ID的宠物主人的所有宠物信息 ②宠物主人向宠物商店卖出自己宠物
(3)测试类
①ownerSell():宠物主人卖出宠物
②ownerLogin() :如果主人卖出宠物,调用ownerSell()
2、重点
根据主人选择实现购买 ①更新宠物信息:删除ownerid ②更新宠物主人信息:增加 ③更新宠物商店信息:减少 ④更新账目信息:添加新账目 如下图:
图 3-3
3.4主要的类设计
3.4.1根据数据库表创建实体类
实体类一般和数据库表对应,实体类的属性对应于表的字段,为四个数据库表分别创建实体类,实现数据库数据在各个层次的传输,四个实体类的名称可以定义为Pet、PetOwner、PetStore、Account。
①宠物商店实体类:PetStore ②宠物主人实体类:PetOwner ③宠物实体类:Pet
④宠物商店账目类:Account
图 3-5
3.4.2创建DAO接口和实现类
采用面向接口编程的思想设计数据访问层,定义DAO接口和实现类,为四个数据库表分别创建DAO接口和实现类,为了重用建立和关闭数据库的代码,创建BaseDao作为四个实现类的父类
图3-6
3.4.3创建业务接口和实现类
①宠物主人实现类:PetOwnerServiceImpl
②宠物工厂实现类:PetFactoryImpl ③宠物商店实现类:PetStoreServiceImpl ④宠物商店工程实现类:PetStoreFactoryImpl
图 3-7
3.4.4优化业务接口
我们按照“单一职能原则” 对业务接口定义进行优化,抽取出Buyable、Sellable、Breedable、Accountable等接口,PetOwnerService、PetStoreService接口根据自身功能继承其中的一个或多个接口。
①宠物商店数据库操作类:PetStoreDaoImpl ②宠物主人数据库操作类:PetOwnerDaoImpl