我的C#实验二多态,事件

面向对象的设计思想(控制台程序)  

实验二

【实验目的】

        熟练掌握面向对象程序设计的概念,如类、对象、继承、多态、封装及其数据隐藏等,熟练掌握类的定义与使用,能够利用面向对象技术进行程序设计。

【实验要求】

        1.是一个基于SDK开发的实现面向对象技术的控制台应用程序,功能自定义。

        2.要体现面向对象程序设计的概念,如类、对象、继承、多态、封装及其数据隐藏等。

【实验步骤】(要求自己填写详细的实验步骤,设计思路和关键代码)

【实验体会及存在问题】要求自己填写,感想、设计时碰到的问题,包括设计思想、调试等)

    namespace 实验二
    {
        //建立一个封装事件所需要的数据的类OnEventKeyArgs
        public class OnEventKeyArgs : EventArgs
        {
            private char word;
            public OnEventKeyArgs(char word)
                : base()
            {
                this.word = word;
            }
            public char Word
            {
                get
                {
                    return word;
                }
            }
        }

        //事件处理程序
        public class EventKeyHanderClass
        {
            public void EventKeyFound(object sender, OnEventKeyArgs EventKeyEventArgs)
            {
                Console.WriteLine(EventKeyEventArgs.Word);
            }
        }

        //声明一个名为EventKeyHandler的标准委托
        public delegate void EventKeyHandler(object sender, OnEventKeyArgs EventKeyArgs);
        public class Char
        {
            //声明一个事件OnEventKey
            public event EventKeyHandler OnEventKey;

            public Char()
            {
                OnEventKey = null;
            }
            public virtual void print()
            {
                Console.WriteLine("我是个字母");
            }
        }

        public class A : Char
        {
            public event EventKeyHandler OnEventKey;
            private char a = 'A';
            public override void print()
            {
                Console.WriteLine("我是字母A");
                OnEventKey(this, new OnEventKeyArgs(a));
            }
            public char getA
            {
                get { return a; }
            }
        }

        public class B : Char
        {
            private char b = 'B';
            public char getB
            {
                get { return b; }
            }
            public override void print()
            {
                Console.WriteLine("这是字母B");
            }
        }
    }

代码入口

    namespace 实验二
    {
        class Program
        {
            public static void AddChar(Char c)
            {
                c.print();
            }

            static void Main(string[] args)
            {
                Char c = new Char();
                A a = new A();
                B b = new B();

                c.OnEventKey += new EventKeyHandler(new EventKeyHanderClass().EventKeyFound);
                a.OnEventKey += new EventKeyHandler(new EventKeyHanderClass().EventKeyFound);
                b.OnEventKey += new EventKeyHandler(new EventKeyHanderClass().EventKeyFound);
                //c.input();//开始->触发事件
                AddChar(a);
                AddChar(b);
                AddChar(c);
            }
        }
    }

感觉王育齐的实验报告很难,因为他只提供要求,不像以前赵红直接要求我们做什么题目。。。但我还是挺喜欢这个老师的,因为他讲课会笑。。轻松。。

原文地址:https://www.cnblogs.com/huaizuo/p/1867916.html