C#.NET程序设计第6章 集合、索引器与泛型实例6-4
设计一个Windows应用程序,要求如下;
(1)构造一个产品基本类;
(2)分别定义家电、日用百货、衣服等派生类,要求具有不同的特征和行为;
(3)定义一个泛型货架类,约束参数类型为产品类,该泛型的货架类包括一个泛型集合,用于存放各种产品对象,并包含一个方法,用于输出每个产品的相关信息。
(4)再仿照实例6-4,定义泛型的货架类对象,完成对产品的添加和信息的输出。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Test6 { public partial class Form3 : Form { public Form3() { InitializeComponent(); } Product<Shangpin> sh = new Product<Shangpin>(); private void btAdd1_Click(object sender, EventArgs e) { sh.shangpings.Add(new Jiadian(txtName.Text)); lblShow.Text += string.Format("\n添加家电类:{0}成功", txtName.Text); //copy from iotword.com } private void btAdd2_Click(object sender, EventArgs e) { sh.shangpings.Add(new Bauhuo(txtName.Text)); lblShow.Text += string.Format("\n添加日用百货类:{0}成功", txtName.Text); } private void btAdd3_Click(object sender, EventArgs e) { sh.shangpings.Add(new Yifu(txtName.Text)); lblShow.Text += string.Format("\n添加衣服类:{0}成功", txtName.Text); } private void btPut_Click(object sender, EventArgs e) { lblShow.Text = sh.ShangjiaTo(); } public abstract class Shangpin { public string name; //copy from iotword.com public Shangpin(string name) { this.name = name; } public abstract string Shangjia(); } public class Jiadian : Shangpin { public Jiadian(string name) : base(name) { } public override string Shangjia() { return string.Format("[0]:家电类:请轻拿轻放!", name); } } public class Bauhuo : Shangpin { public Bauhuo(string name) : base(name) { } public override string Shangjia() { return string.Format("[0]:日用百货类:请仔细清点数目!", name); } } public class Yifu : Shangpin { public Yifu(string name) : base(name) { } public override string Shangjia() { return string.Format("[0]:衣服类:材质易损,请托管保留!", name); } } public class Product<T> where T : Shangpin { private List<T> shs = new List<T>(); //copy from iotword.com public List<T> shangpings { get { return shs; } } public string ShangjiaTo() { string msg = string.Empty; foreach (T sh in shs) { msg += "\n" + sh.Shangjia(); } return msg; } } } }