实验4设计模式.ppt

上传人:本田雅阁 文档编号:2898086 上传时间:2019-06-02 格式:PPT 页数:18 大小:224.52KB
返回 下载 相关 举报
实验4设计模式.ppt_第1页
第1页 / 共18页
实验4设计模式.ppt_第2页
第2页 / 共18页
实验4设计模式.ppt_第3页
第3页 / 共18页
实验4设计模式.ppt_第4页
第4页 / 共18页
实验4设计模式.ppt_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《实验4设计模式.ppt》由会员分享,可在线阅读,更多相关《实验4设计模式.ppt(18页珍藏版)》请在三一文库上搜索。

1、实验4 设计模式 抽象工厂模式,要求,本周日最后一次实验时(12月23号晚18:0022:00),前三次未交作业的同学将作业补交。 本次实验为选做实验,设计模式的内容请大家自学。,抽象工厂模式结构图,实验目的:1. 理解抽象工厂设计模式的含义 2. 练习抽象工厂模式的实现 3.掌握学习设计模式的一般方法,问题,编写一个程序来完成花园的规划,花园可能是季生植物型花园、蔬菜型花园或多年生植物型花园。要解决的问题: 边缘种植什么植物 中央种植什么植物 阴凉部分种植什么 (用一个图片框来模拟,在一个图片框中的相应位置处标出植物类型,灰色的圆表示阴凉部分。) 以下是以C语言给出的各参考类和运行结果。请实

2、现这一程序,并分析抽象工厂模式的应用情况,使用的程序设计语言不限。,基类Garden,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()

3、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 Sy

4、stem; 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(

5、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 =

6、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 / /

7、 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

8、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 gdP

9、ic1.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 (); /- priva

10、te 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.ComponentMo

11、del; 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; privat

12、e 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 =

13、 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 / / Required method for Designer support - do not modify / the contents of this method with the code editor. / private void InitializeComponent() / / GdPic / #endregion ,类图,gden,center,border,shade,运行结果,运行结果,运行结果,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1