C#设计一个Windows应用程序,要求如下。 ①构造一个产品基类。 ②分别定义家电、日用百货、衣服等派生类,要求具有不同的特征和行为。 ③定义一个泛型货架类,约束参数类型为产品类。该泛型的货架类包

本文档展示了一个Windows Forms应用程序的设计,包括一个产品基类和多个派生类(家电、日用百货、衣服)。产品基类包含抽象方法`Type()`,派生类重写了该方法以提供不同类别的信息。此外,定义了一个泛型货架类`Shelves<T>`,约束T为产品类,用于存储和输出不同类型的产品对象。用户可以通过按钮将新产品添加到货架,并显示其类型信息。
摘要由CSDN通过智能技术生成

设计一个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.Windows.Forms;
using System.Collections;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Shelves<Product> prt = new Shelves<Product>();

        private void btnHea_Click(object sender, EventArgs e)
        {
            prt.Products.Add(new Hea(txtName.Text));
            lblShow.Text += string.Format("\n添加家电:{0},成功", txtName.Text);

        }

        private void btnGm_Click(object sender, EventArgs e)
        {
            prt.Products.Add(new Gm(txtName.Text));
            lblShow.Text += string.Format("\n添加日用百货:{0},成功", txtName.Text);

        }

        private void btnClothes_Click(object sender, EventArgs e)
        {
            prt.Products.Add(new Clothes(txtName.Text));
            lblShow.Text += string.Format("\n添加衣服:{0},成功", txtName.Text);

        }

        private void btnType_Click(object sender, EventArgs e)
        {
            lblShow.Text = prt.TypeTo();
        }
        public abstract class Product                                    //产品基类
    {
        protected string name;                                       //产品名字
        public Product(string name)
        {
            this.name = name;
        }
        public abstract string Type();                               //基类抽象方法Type()
    }
    public class Hea : Product                                       //家电类
    {
        public Hea(string name) : base(name) { }                     //自身类的构造函数加上继承基类的构造函数
        public override string Type()                                //重写基类Type()方法
        {
            return string.Format("{0}:我是家电!",name); 
        }
    }
    public class Gm : Product                                        //日用百货类
    {
        public Gm(string name) : base(name) { }                      //继承基类的构造函数
        public override string Type()                                //重写基类Type()方法
        {
            return string.Format("{0}:我是日用百货!", name);
        }
    }
    public class Clothes : Product                                   //衣服类
    {
        public Clothes(string name) : base(name) { }                 //自身类的构造函数加上继承基类的构造函数
        public override string Type()                                //重写基类Type()方法
        {
            return string.Format("{0}:我是衣服!", name);
        }
    }
    public class Shelves<T> where T : Product                        //自定义泛型类Shelves
    {
        private List<T> prts = new List<T>();                        //定义一个T类型的数组,T继承于产品类
        public List<T> Products => prts;   //泛型的只读属性,此处省略get访问器
        /*public  List<T> Products
        {
            get{return prts;}
        } */         //如果出现类型不匹配使用get语句                 
        public string TypeTo()                                       //返回产品信息
        {
            string msg = string.Empty;                               //字符串初始化为空
            foreach (T prt in prts)
            { msg += "\n" + prt.Type(); }                            //调用T集合产品中的Type()方法
            return msg;                                              //返回字符串
        }
    }


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值