抽象类和虚拟方法 - 显示总数

时间:2012-10-21 03:41:08

标签: c# oop inheritance

我目前正在使用抽象类和虚方法。我正在做一个带有窗体的小项目,该窗体列出了两个类TreesTomatoes。结果显示在两个文本框中。 TextBox1显示名称,库存数量和每件商品的价格。 TextBox2显示每个工厂的总价格。我正在尝试添加一个方法来显示所有植物的总数,并在TextBox2中显示它?

代码

 namespace nursery_plant
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

        public abstract class Plants
        {
            public string the_name;
            public double num_stock;
            public double price_peritem;
            public double total_item_value;

            public Plants(string new_name, int new_stock, double new_price)
            {
                the_name = new_name;
                num_stock = new_stock;
                price_peritem = new_price;
            }

            public override string ToString()
            {
                return "";
            }

            public virtual double Get_Value()
            {
                double s = 0;
                return s;
            }


        }

        public class Trees : Plants
        {
            double tree_height;
            public Trees(string new_name, int new_stock, double new_price, double new_height)
                : base(new_name, new_stock, new_price)
            {
                tree_height = new_height;
                total_item_value = num_stock * price_peritem;
            }

            public override string ToString()
            {
                string s = "Tree" + "     " + num_stock + "      " +  the_name + "     " + price_peritem + "    " + tree_height ;
                return s;
            }

            public override double Get_Value()
            {
                total_item_value = num_stock * price_peritem;
                return total_item_value;
            }

        }

        public class Tomatoes : Plants
        {

            string sizeoftomato;
            int tomatoesinpat;

            public Tomatoes(string new_name, int new_stock, double new_price, int tomatoes_perplat, string tomatoes_size)
                : base(new_name, new_stock, new_price)
            {
                tomatoesinpat = tomatoes_perplat;
                sizeoftomato = tomatoes_size;


                total_item_value = num_stock * price_peritem;


            }

            public override string ToString()
            {
                string s = "Tomatoes" + "     " + num_stock + "      " + the_name + "     " + price_peritem;
                return s;
            }

            public override double Get_Value()
            {

                total_item_value = price_peritem;
                return total_item_value;
            }
        }




        public void Report()
        {

             Trees trees1 = new Trees("Tree", 3, 14.40, 2);
             const string format = "{0,-26} {1,-25} {2,-25} {3,-25}";
             string trees1_result = String.Format(format, trees1.the_name, "Oak", trees1.num_stock, trees1.price_peritem);            
             textBox1.AppendText(trees1_result + Environment.NewLine);
             textBox2.AppendText(trees1.Get_Value() + Environment.NewLine);

             Tomatoes tomatoes1 = new Tomatoes("Tomatoe", 30, 10, 12, "Large");
             const string format2 = "{0,-26} {1,-25} {2,-25} {3,-25}";
             string tomatoes1_result = String.Format(format2, tomatoes1.the_name, "Big Boy", tomatoes1.num_stock, tomatoes1.price_peritem);
             textBox1.AppendText(tomatoes1_result + Environment.NewLine);
             textBox2.AppendText(tomatoes1.Get_Value() + Environment.NewLine);

        }

        private void button1_Click(object sender, EventArgs e)
        {
            Report();
        }


    }
}

1 个答案:

答案 0 :(得分:2)

难道你不能只使用这样的东西吗?

textBox2.AppendText(trees1.total_item_value + tomatoes1.total_item_value);

另外,我注意到你正在重复一些共享逻辑。这一行,例如

total_item_value = num_stock * price_peritem;

可以进入抽象基类'构造函数。