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;
}
}
}
}