1

私はC#の世界に新たに紹介されました。私は今、Windowsフォーム内で抽象クラスと仮想メソッドを使用する方法を学んでいます。私は構造/アイデアを持っていますが、フォームのコードを記入するのに助けが必要です。私の基本抽象クラスは、、、、およびPlantsという名前の4つのサブクラスという名前TreesTomatoes、1つの仮想メソッドという名前と、すべてのメソッドの外にあるという名前のメソッドです。 SeedsBerriesGet_valueReport

button1クラスごとに少なくとも2つのオブジェクトを作成し、別のクラスへの呼び出しを使用してそれらを複数行に表示し、各textBox1タイプの植物の値とすべての植物の合計値を表示したいと思います。どうすればこれを実現できるかについてのアイデアやヘルプはありますか?ReporttextBox2

コード

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

        public abstract class Plants
        {
            protected string the_name;
            //may need more strings but not sure

            public virtual string Get_Value()
            {
                return "";

                /*
                   Multiplies the number of items times the value per 
                   item and returns the product as a double.
                */
            }

            public override string ToString()
            {

                return "";

              /* 
                Returns a string that gives all the relevant information 
                for the object(including an indication of wheter it is a 
                tree, seed, etc.
              */


            }
        }

        public class Trees : Plants
        {
            /*
              Includes a variety(oak, cherry, etc.), height in feet,
              the number of trees in stock, and the price of each tree.
            */
        }

        public class Tomatoes : Plants
        {
            /*
              Includes: Type(big boy, early girl, etc.), the size of the 
              tomatoes expected (small, medium, or large), the price of each plat,
              the number of plants per plat (6, 12, 24, etc.) and the number of 
              plats in stock.
            */
        }

        public class Seeds : Plants
        {
            /*
              Includes: Type of seeds(pumpkin, cantaloupe, cucumber, etc.), 
              the number of packets in stock, and the cost per packet.
            */
        }

        public class Berries : Plants
        {
          /*
           Includes: Type of plant(blackberry, strawberry, etc.), the variety
           (AAA early, FrostStar, etc), the month of highest bearing (May, June,
           etc.), the number of plants in stock, and the price per plant.
          */
        }

        public void Report()
        {
            /*
            Is passed a Plant object and a TextBox and adds the ToString result of 
            the object to the textbox and then skips to the next line.
             */
        }

        private void button1_Click(object sender, EventArgs e)
        {

        }
    }
}
4

1 に答える 1

1

あなたの質問は少し曖昧です。特に継承と構成の違いについて、もう少し読み続けることをお勧めします。継承は「isa」関係であり、コンポジションは「hasa」関係です。

木は「植物」であり、トマト植物は「植物」です。ベリーは「種」です(植物ではありません)植物は「種を持っています」。

これにより、Plantの抽象クラスに、ベリー、松ぼっくり、ナッツなどの抽象基本クラスであるシードインスタンスが含まれる構造になります。

結局のところ、これはおそらく、作業を試みるのに非常に悪い例です。なぜなら、特に初心者にとっては、一般的に悪い考えである継承に夢中になる可能性があるからです。

代わりに、構成を理解することから始め、次にインターフェースを介したポリモーフィズムを理解し、次に抽象クラスと仮想メンバーを使用した継承に進みます。

于 2012-10-14T22:53:04.287 に答える