• 我的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);
                }
            }
        }

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

  • 相关阅读:
    微信mac版的bug 直接显示了消息原始数据
    提一下InfoQ
    成长
    SaaS产品成功学
    .io域名在申请SSL证书时被坑
    一件小事
    Git做代码增量发布的重要用法
    今天
    为什么都不写博
    惑不惑
  • 原文地址:https://www.cnblogs.com/huaizuo/p/1867916.html
Copyright © 2020-2023  润新知