- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CRC方法
CRC方法 阚忠良 kanzl@ CRC概念 CRC三个字符代表类(class)、职责(responsibility)以及协作方(collaborator) ,是一种传统的寻找分析类的方法。使用这种方法的工具是便笺。 CRC便笺分为三个栏。顶部记录类的名称,左栏中记录职责,右栏中记录协作方。协作方是其他类,它们与该类协作以实现系统的部分功能。协作方分栏提供了记录类间关系的方法。捕获关系的另一种方法是把便笺贴在白板上,在协作的类之间连线。 阶段1:脑力风暴—收集信息 参与者是OO分析师、利益相关人和领域专家。过程如下: 1、解释:这是真正的脑力风暴 (1) 把所有的想法作为好的想法接受下来。 (2) 记录想法而不争论—决不争论,仅记录下来并且继续。所有的东西将在以后分析。 2、要求团队成员命名运转在业务领域的“事物”,例如,客户、产品。 (1)把每件事物书写在便笺上,这是候选类或类的属性。 (2)把便笺贴在墙上或白板上。 阶段1:脑力风暴—收集信息 过程: 3、要求团队陈述那些事物的职责,把他们记录在便笺的职责栏中。 4、同团队一起工作,尝试识别可能一起工作的类。重新安排白板上的便笺,并在他们之间连线。把协作方记录在便笺的协作方分栏中。 阶段2:分析信息 参与者是OO分析师和领域专家。如何确定哪个便笺应该成为类,哪些便笺应该成为属性呢?分析类应该代表问题域中简洁的抽象。如果某个便笺表示关键业务概念,应该成为类。其他便笺可以成为类的属性。如果在逻辑上一个便笺是另一个便笺的组成部分,这代表一个属性。以后会精化该模型的 例:21点游戏 规则: 1、21点是一个扑克牌游戏,有一个庄家和一个或多个玩家,每个玩家只与庄家是对手。 2、庄家手里有一副完整的牌,庄家给每个玩家及自己发牌,初始先发两张牌,是扣着的,第三牌以后由玩家决定是否要。 21点游戏 3、每张牌都有自己的点数,不考虑花色。A记作1或11。人头牌(J、Q、K)都记作10,其余的牌直接按面值取其点数。 4、获胜规则:在不超过21点的情况下,谁更接近21点谁赢。如果玩家的牌点数之和超过21点,庄家赢。一张A和人头牌或10比使用其它的21点的组合都大。 5、玩家和庄家点数相同,平局。 21点游戏候选类 游戏—Game 牌—Card 21点游戏—Blackjack 一副牌—Deck 老K—King 庄家—Dealer House 一手牌—Hand Q —Queen 点数—Face value J—Jack 玩家—Player A—Ace 胜者—Winner 赌注—Bet 21点游戏最初确定的类 牌—Card 一副牌—Deck 庄家—Dealer 一手牌—Hand 玩家—Player 赌注—Bet 21点游戏 类的职责 职责与动作有关,一般可以从需求总结中选出的动词来确定一些职责。 注意事项: 并非需求总结中所有动词都对应职责 可能需要组合多个动词来找出真正的职责 最终选择的以一些职责可能并没有出现在最初的需求总结中 由于这是一个迭代过程因此需要不断修改和更新需求总结和职责 如果两个或多个类共享一个职责,则每个类都将有这个职责。 21点游戏 类可能的职责 Card(纸牌) 知道它的点数 知道它的花色 知道是否是一张人头牌 知道是否是一个A 知道是否是王牌 21点游戏 类可能的职责 Deck(一副牌) 洗牌 发下一张牌 计算这付牌里还剩下多少张牌 知道是否有整副牌可以开始 Hand(一手牌) 知道一手牌中有多少张牌 知道一手牌的点数 显示一手牌 21点游戏 类可能的职责 Dealer(庄家) 发牌 洗牌 给玩家一张牌 显示庄家的一手牌 计算庄家一手牌的点数 知道庄家一手牌中的牌数 请求一张牌(发牌或自己保留) 确定赢家 开始新的一局 21点游戏 类可能的职责 Player(玩家) 请求一张牌(发牌或留给自己) 显示玩家的一手牌 计算玩家一首牌的点数 知道一手牌中的牌数 知道一手牌点数是否超过21 知道一手牌点数是否等于21 知道一手牌点数是否小于21 21点游戏 类可能的职责 Bet(赌注) 知道赌注类型 知道当前赌注金额 知道玩家还剩下多少现金可以下注 知道是否可以收取赌注 21点游戏—明确协作关系 明确协作关系,需要研究职责,并确定对象与哪些类交互。也就是这个对象需要哪些类来实现它所需的职责并完成其任务?在分析协作关系时,可能会发现漏掉了一些必要的类,或者原来找出的类并不重要。 为了帮助发现协作关系,可以使用用例场景 对于每个用例,明确它交换的对象和消息 21点游戏一个可能的场景 Dealer洗牌 Player下注 Dealer发第一手牌 Player增加玩家的一手牌 Dealer增加庄家的一
文档评论(0)