




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南昌大学实验报告 学生姓名: 崔圆圆 学 号: 6100510079 专业班级: 航天102 实验类型: 验证 综合 设计 创新 实验日期:201359实验成绩: 实验3 装饰模式和状态模式一、实验目的(1)学习和掌握装饰模式(2)学习和掌握状态模式(3)学习和掌握使用这些模式解决实际问题二、实验内容1、请使用状态模式实现下列编程要求:为了美化图片,请根据需要给图片增加背景图片修饰、边框文本描述等修饰。运行结果如图1所示。2、某银行系统定义的信用卡账号有三种状态:(1)如果账户(Account)中的余额(balance)大于等于0,此时账户的状态为正常用户状态,账号可以存款和取款操作;(2)如果账户中的余额小于0,并且大于等于-1000,则账户为欠费状态,此时可以向该账户存款,也可以从该账户取款;(3)如果账户中的余额小于-1000,那么账户的状态为透支状态,此时,用户只能向该账户存款,不能再从中取款。请结合状态模式,实现账户状态的转换问题。用户只需要换行简单的三、实验要求用UML图表示上述练习的程序结构,以及各个类之间的相互关系。四、实验环境1、PC微机;2、DOS操作系统或 Windows 操作系统;3、jdk程序集成环境Eclipse 五、实验步骤1、先安装好jdk;2、配置环境变量;3、书写java程序;4、运行程序,查看结果。六、源代码、测试数据及UML图实验一1.1 UML图:1.2程序代码:package decorator;import java.awt.Graphics;import java.awt.Image;import javax.swing.ImageIcon;import javax.swing.JPanel;public abstract class VisualPicture extends JPanel/* * */private static final long serialVersionUID = 1L;public static Image myImage=new ImageIcon(src/decorator/Penguins.jpg).getImage();public abstract void draw(Graphics g);/package decorator;import java.awt.*;public class Picture extends VisualPicture/* * */private static final long serialVersionUID = 1L;public void paint(Graphics g)this.draw(g);Overridepublic void draw(Graphics g) g.drawImage(VisualPicture.myImage, 0,0, 500,500, this);/package decorator;import java.awt.Graphics;public abstract class Decorator extends VisualPicture/* * */private static final long serialVersionUID = 1L;public abstract void draw(Graphics g);/package decorator;import java.awt.Color;import java.awt.Graphics;public class BorderDecorator extends Decorator/* * */private static final long serialVersionUID = 1L;private VisualPicture vpic;public BorderDecorator(VisualPicture vpic)this.vpic=vpic; public void paint(Graphics g)this.draw(g);Overridepublic void draw(Graphics g) vpic.draw(g);g.setColor(Color.red); g.drawRect(7, 12,483,475);g.drawRect(5, 10,487,480);g.drawRect(2, 5,494,490);/package decorator;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;public class WordsDecorator extends Decorator/* * */private static final long serialVersionUID = 1L; private VisualPicture vpic; private Font myFont=new Font(南极企鹅,Font.BOLD,36);public WordsDecorator(VisualPicture vpic)this.vpic=vpic; public void paint(Graphics g)this.draw(g);Overridepublic void draw(Graphics g) vpic.draw(g);g.setFont(myFont);g.setColor(Color.red);g.drawString(myFont.getName(), getX()+50, getY()+70);/package decorator;import javax.swing.JFrame;public class Text extends JFrame/* * */private static final long serialVersionUID = 1L;public Text()add(new BorderDecorator(new WordsDecorator(new Picture(); public static void main(String args) Text frame = new Text(); frame.setTitle(图片装饰);frame.setLocationRelativeTo(null); frame.pack();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true); 1.3 实验结果 实验二2.1 UML图2.2 程序代码:package state;public abstract class State static float amount=1000;public abstract void deposit(float account);/存款public abstract void withdraw(float account);/取款/package state;public class NormalState extends StateOverridepublic void deposit(float account) State.amount+=account;System.out.println(存款+account+后您的剩余金额为:+State.amount );Overridepublic void withdraw(float account) State.amount-=account;System.out.println(取款+account+后您的剩余金额为:+State.amount );/package state;public class OweState extends StateOverridepublic void deposit(float account) State.amount+=account;System.out.println(您现在处于欠费状态,存款+account+后的剩余金额为:+State.amount );Overridepublic void withdraw(float account) State.amount-=account;System.out.println(您现在处于欠费状态,取款+account+后的剩余金额为:+State.amount );/package state;public class OverdrawState extends StateOverridepublic void deposit(float account) State.amount+=account;System.out.println(您现在处于透支状态,存款+account+后的剩余金额为:+State.amount );Overridepublic void withdraw(float account) System.out.println(您现在处于透支状态,不能取款,剩余金额为:+State.amount );/package state;public class CustomerAccount private State state=new NormalState();public void deposit(float account) state.deposit(account); if(State.amount=0) state=new NormalState(); else if(State.amount=-1000) state=new OweState(); else state=new OverdrawState();public void withdraw(float account)state.withdraw(account);if(State.amount=0) state=new NormalState(); else if(State.amount=-1000) state=new OweState(); else state=new OverdrawState();/package state;public class CustomerText public static void main(String args)CustomerAccount ca=new CustomerAccount();ca.wit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业生产流程的数据优化管理
- 工业设计在智能制造业中的价值体现
- 工业自动化技术的创新与发展趋势探讨
- 工作中的健康保障劳动保护用品的作用及重要性分析
- 工业领域中的新能源技术革新与环保实践
- 工业锅炉高效低耗的节能减排技术
- 工程中的节能技术与设备应用
- 工作流程标准化与执行力推进
- 工程伦理在智慧城市建设中的作用研究
- 工程设计与数据分析的融合应用
- 《文化遗产的数字化传承》课件
- 2025医保政策培训
- 《互感器》培训课件
- 学校体育课教师能力提升策略研究
- 《烹饪原料知识》全套教学课件
- 旅游业安全生产月工作总结
- 培养直播知识的专业素养
- 全球包装材料标准BRCGS第7版内部审核全套记录
- 2023年贵州贵州贵安发展集团有限公司招聘考试真题
- 生猪屠宰兽医卫生检疫人员考试题库答案
- 甘肃电投集团笔试试题
评论
0/150
提交评论