已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验4 设计模式 抽象工厂模式,要求,本周日最后一次实验时(12月23号晚18:0022:00),前三次未交作业的同学将作业补交。 本次实验为选做实验,设计模式的内容请大家自学。,抽象工厂模式结构图,实验目的:1. 理解抽象工厂设计模式的含义 2. 练习抽象工厂模式的实现 3.掌握学习设计模式的一般方法,问题,编写一个程序来完成花园的规划,花园可能是季生植物型花园、蔬菜型花园或多年生植物型花园。要解决的问题: 边缘种植什么植物 中央种植什么植物 阴凉部分种植什么 (用一个图片框来模拟,在一个图片框中的相应位置处标出植物类型,灰色的圆表示阴凉部分。) 以下是以C语言给出的各参考类和运行结果。请实现这一程序,并分析抽象工厂模式的应用情况,使用的程序设计语言不限。,using System; using System.Drawing ; namespace Gardener / / Summary description for Garden. / public class Garden protected Plant center, shade, border; protected bool showCenter, showShade, showBorder; /select which ones to display public void setCenter() showCenter = true; public void setBorder() showBorder =true; public void setShade() showShade =true; /draw each plant public void draw(Graphics g) if (showCenter) center.draw (g, 100, 100); if (showShade) shade.draw (g, 10, 50); if (showBorder) border.draw (g, 50, 150); ,Plant对象设置植物名字,并绘制自己,using System; using System.Drawing; namespace Gardener / / Summary description for Plant. / public class Plant private string name; private Brush br; private Font font; public Plant(string pname) name = pname; /save name font = new Font (“Arial“, 12); br = new SolidBrush (Color.Black ); /- public void draw(Graphics g, int x, int y) g.DrawString (name, font, br, x, y); ,季生植物型花园,using System; using System.Drawing ; namespace Gardener / / Summary description for AnnualGarden. / public class AnnualGarden : Garden public AnnualGarden () shade = new Plant(“Coleus“); border = new Plant (“Alyssum“); center = new Plant (“Marigold“); ,蔬菜型花园,using System; namespace Gardener / / Summary description for VeggieGarden. / public class VeggieGarden : Garden public VeggieGarden() shade = new Plant(“Broccoli“); border = new Plant (“Peas“); center = new Plant (“Corn“); ,多年生植物型花园,using System; namespace Gardener / / Summary description for PerennialGarden. / public class PerennialGarden : Garden public PerennialGarden() shade = new Plant(“Astilbe“); border = new Plant (“Dicentrum“); center = new Plant (“Sedum“); ,用户界面Form,用户界面单选按钮,private void opAnnual_CheckedChanged(object sender, EventArgs e) setGarden( new AnnualGarden (); /- private void opVegetable_CheckedChanged(object sender, EventArgs e) setGarden( new VeggieGarden (); /- private void opPerennial_CheckedChanged(object sender, EventArgs e) setGarden( new PerennialGarden (); /- private void setGarden(Garden gd) garden = gd; /save current garden gdPic1.setGarden ( gd); /tell picture bos gdPic1.Refresh (); /repaint it ckCenter.Checked =false; /clear all ckBorder.Checked = false; /check ckShade.Checked = false; /boxes ,用户界面复选框,private void ckCenter_CheckedChanged(object sender, System.EventArgs e) garden.setCenter (); gdPic1.Refresh (); /- private void ckBorder_CheckedChanged(object sender, System.EventArgs e) garden.setBorder(); gdPic1.Refresh (); /- private void ckShade_CheckedChanged(object sender, System.EventArgs e) garden.setShade (); gdPic1.Refresh (); ,图片框(PictureBox),using System; using System.Collections; using System.ComponentModel; using System.Drawing; using System.Data; using System.Windows.Forms; namespace Gardener / / Summary description for GdPic. / public class GdPic : System.Windows.Forms.PictureBox / / Required designer variable. / private System.ComponentModel.Container components = null; private Brush br; private Garden gden; private void init () br = new SolidBrush (Color.LightGray ); public GdPic() / This call is required by the Windows.Forms Form Designer. InitializeComponent(); init(); public void setGarden(Garden garden) gden = garden; protected override void OnPaint ( PaintEventArgs pe ) Graphics g = pe.Graphics; g.FillEllipse (br, 5, 5, 100, 100); if(gden != null) gden.draw (g); ,图片框(PictureBox)(续),/ / Clean up any resources being used. / protected override void Dispose( bool disposing ) if( disposing ) if(components != null) components.Dispose(); base.Dispose( disposing ); #region Component Designer generated code / / Req
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自然语言处理在音频识别中的应用研究-洞察与解读
- 智能合约对期权定价影响的实证研究-洞察与解读
- 新能源并网电源系统稳定性研究-洞察与解读
- 煤矿废水处理过程中的膜污染控制研究-洞察与解读
- 2026年吉林省蛟河市高一数学上册期末考试模拟检测卷及答案(夺冠系列)
- 2025年高校辅导员人际关系辅导试题及答案
- 2025年高校创新创业教育管理笔试试题(附答案)
- 家电长期存管协议
- 2026年度一站式口碑营销协议
- 2026年度技术合作电梯安装工程协议
- 2026年精准扶贫知识测试题及答案
- 2026云南长水机场北高速公路有限责任公司就业见习人员招聘10人考试备考试题及答案详解
- 2025北京大兴九银村镇银行社会招聘笔试历年典型考题及考点剖析附带答案详解2套
- 高中地理(高二年级·选择性必修三)教学设计:《环境问题及其危害》
- 2026年大连市金普新区总工会、普兰店区总工会面向社会公开招聘工会社会工作者笔试备考试题及答案详解
- 2026年人教版三年级语文期末名校真题汇编试卷(含答案可下载)
- 【北京专用】期末模拟卷(二)- 2025-2026学年八年级语文下学期同步备考模拟卷(统编版)(原卷版)
- 《山东省学校安全条例》及其实施细则政策解读课件
- 福州市鼓楼区国有资产投资发展集团有限公司招聘笔试真题2025
- 2026年高考全国2卷英语真题及参考答案
- MOOC 跨文化交际通识通论-扬州大学 中国大学慕课答案
评论
0/150
提交评论