- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验二 面向对象设计原则(下)之里氏代换依赖倒置迪米特
实验二 面向对象设计原则(下) 专业班级 计本102 学 号 1018014070 姓 名 牛浩兴 实验学时 2 实验类型 设计 实验地点 实验时间 指导老师 实验成绩 年 月 日 一、实验目的及要求 ①深入理解面向对象设计的思维方式。 ②掌握里氏代换原则,并会运用该原则设计可扩展的软件模块。 ③掌握依赖倒置原则,并会运用该原则设计更抽象的软件模块。 ④掌握迪米特法则,并会运用该原则设计低耦合的软件模块。 二、实验环境 微型计算机,MyEclpic.8.5 实验内容 案例1:一家咖啡店,销售的咖啡品种如下:普通咖啡5元一杯,加糖咖啡6元一杯,加奶咖啡7元一杯,冰咖啡6元一杯,巧克力咖啡8元一杯。假如一个顾客点了2杯普通咖啡、1杯冰咖啡,2杯巧克力咖啡,请编写一个结算模块计算该顾客的应付金额。若该咖啡店以后还会推出新的咖啡产品(如柠檬咖啡、香草咖啡等),要求改结算模块能够方便地进行扩展。 实验要求: (1)保证在程序中可以自由增加新的咖啡产品而无需修改已有的程序代码。——开闭原则 (2)保证在结算模块中可以正确获得各类咖啡产品的价格。——里氏代换原则 (3)编写一个场景类来测试结算模块的功能实现是否正确。 (4)绘制最后得到的最佳设计类图。 实验后的思考: (1)子类与父类相比较,哪个更抽象一些?你编程时是否喜欢使用继承机制? (2)里氏代换原则告诉我们,定义一个子类时应该注意哪些方面? 案例3: Tom总是随身带着一个钱包(里面有1000元钱),而我们只想向Tom借300元钱。 实验要求: (1)依据案例的描述,识别案例中的基本对象类别和各自的行为。 (2)确保人有借钱的行为,并隐藏人有一个钱包的信息。 (3)编写一个测试场景:我们连续4次向Tom借300元钱,输出每次借到的实际钱数。 (4)绘制最后得到的最佳设计类图。 实验后的思考: (1)迪米特法则告诉我们,软件模块间的联系越少越好。为什么? (2)一个对象通常包含许多信息,其中哪些信息应该隐藏,哪些信息又应该公开,你在设计时是如何做出决定的? 3、实验步骤 ①实验前,复习课堂讲授内容,熟悉Java编程语言,做好实验准备工作。 ②实验时,抓紧时间完成全部案例。 ③实验过程中遇到问题,可与指导教师或同学讨论交流。 ④实验中若不能完成全部实验案例,务必课后补做,以提高软件设计实际能力。 实验结果 案例1: (1)编写一个场景类来测试结算模块的功能实现是否正确。 package jb102.niuhaoxing.lsdh; import java.util.ArrayList; public class Client { public static void main(String[] args) { ArrayListCoffee arr = new ArrayListCoffee(); UsualCoffee usual = new UsualCoffee(2); IceCoffee ice = new IceCoffee(1); ChocolateCoffee chocolate = new ChocolateCoffee(2); arr.add(usual); arr.add(ice); arr.add(chocolate); double totalPrice = Platform.getTotalPrice(arr); System.out.println(结算 : + totalPrice); } } 抽象类Coffee.java: package jb102.niuhaoxing.lsdh; public abstract class Coffee { public abstract int getPrice(); public abstract int getCount(); public abstract void setCount(int count); } 普通咖啡UsualCoffee.java: package jb102.niuhaoxing.lsdh; public class UsualCoffee extends Coffee { private int count; public UsualCoffee(int count) { this.count = count; } @Override public int getPrice(){ return 5; } @Override public int getCount() {
文档评论(0)