多态计算机程序

一.创建一个窗体

二.创建一个类Operator里面有两个操作数和一个方法

public  abstract  class Operator
    {

     public abstract int Calc();
     //计算数
     public int NumLeft { get; set; }
     public int NumRight { get; set; }
    }

三.创建一个Add类

 public class Add:Operator
    {
        public override int Calc()
        {
            return this.NumLeft + this.NumRight;
        }
    }

四.创建一个Sub类

 public    class Sub:Operator
    {
        public override int Calc()
        {
            return this.NumLeft - this.NumRight;
        }
    }

五.创建一个Mul类  

public    class Mul:Operator
    {
        public override int Calc()
        {
            return this.NumLeft * this.NumRight;
        }
    }

六.创建一个div类

public   class Div:Operator
    {

        public override int Calc()
        {
            int result = 0;
            if (NumLeft == 0)
            {
                throw new Exception("除数不能为0");
            }
            else
            {
                    result=this.NumLeft / this.NumRight;
            }
            return result;
        }
    }

七. 创建一个类似于工厂的类

public     class Factory
    {
    //静态的   返回值类型    参数
    public static Operator cu(string Type)
    {
        Operator oper=null;
        switch (Type)
	{
            case"+":
            oper=new Add();
                break;
                case"-":
            oper=new Sub();
                break;
                case"*":
            oper=new Mul();
                break;
                case"/":
            oper=new Div();
             break;
	}
        return oper;
    }
    }

  

八.在主窗体的结果按钮中添加

  private void btOk_Click(object sender, EventArgs e)
        {

         int num1=Convert.ToInt32(   txtLfet.Text);
         string oper = cb.Text;
         int num2 = Convert.ToInt32(txtRight.Text);
         //04.调用工厂的静态方法,传入类型 ,获取返回值
         Operator part = Factory.cu(oper);
         part.NumLeft = num1;
         part.NumRight = num2;
         int result = 0;
         //05.调用对应父类变量的Calc()完成计算,接收返回值
         try
         {
             result = part.Calc();
         }
         catch (Exception ex)
         {

             MessageBox.Show(ex.Message);
         }
         //06.在Label中显示
         label1.Text = result.ToString();
        }

  

  

时间: 2024-10-16 03:44:37

多态计算机程序的相关文章

计算机程序的思维逻辑 (22) - 代码的组织机制

使用任何语言进行编程都有一个类似的问题,那就是如何组织代码,具体来说,如何避免命名冲突?如何合理组织各种源文件?如何使用第三方库?各种代码和依赖库如何编译连接为一个完整的程序? 本节就来讨论Java中的解决机制,具体包括包.jar包.程序的编译与连接,从包开始. 包的概念 使用任何语言进行编程都有一个相同的问题,就是命名冲突,程序一般不全是一个人写的,会调用系统提供的代码.第三方库中的代码.项目中其他人写的代码等,不同的人就不同的目的可能定义同样的类名/接口名,Java中解决这个问题的方法就是包

计算机程序的思维逻辑 (23) - 枚举的本质

前面系列,我们介绍了Java中表示和操作数据的基本数据类型.类和接口,本节探讨Java中的枚举类型. 所谓枚举,是一种特殊的数据,它的取值是有限的,可以枚举出来的,比如说一年就是有四季.一周有七天,虽然使用类也可以处理这种数据,但枚举类型更为简洁.安全和方便. 下面我们就来介绍枚举的使用,同时介绍其实现原理. 基础 基本用法 定义和使用基本的枚举是比较简单的,我们来看个例子,为表示衣服的尺寸,我们定义一个枚举类型Size,包括三个尺寸,小/中/大,代码如下: public enum Size {

计算机程序的思维逻辑 (21) - 内部类的本质

内部类 之前我们所说的类都对应于一个独立的Java源文件,但一个类还可以放在另一个类的内部,称之为内部类,相对而言,包含它的类称之为外部类. 为什么要放到别的类内部呢?一般而言,内部类与包含它的外部类有比较密切的关系,而与其他类关系不大,定义在类内部,可以实现对外部完全隐藏,可以有更好的封装性,代码实现上也往往更为简洁. 不过,内部类只是Java编译器的概念,对于Java虚拟机而言,它是不知道内部类这回事的, 每个内部类最后都会被编译为一个独立的类,生成一个独立的字节码文件. 也就是说,每个内部

计算机程序的思维逻辑 (15) - 初识继承和多态【转】

继承 上节我们谈到,将现实中的概念映射为程序中的概念,我们谈了类以及类之间的组合,现实中的概念间还有一种非常重要的关系,就是分类,分类有个根,然后向下不断细化,形成一个层次分类体系.这种例子是非常多的: 在自然世界中,生物有动物和植物,动物有不同的科目,食肉动物.食草动物.杂食动物等,食肉动物有狼.狗.虎等,这些又分为不同的品种 ... 打开电商网站,在显著位置一般都有分类列表,比如家用电器.服装,服装有女装.男装,男装有衬衫.牛仔裤等 ... 计算机程序经常使用类之间的继承关系来表示对象之间的

计算机程序的思维逻辑 (15) - 初识继承和多态

继承 上节我们谈到,将现实中的概念映射为程序中的概念,我们谈了类以及类之间的组合,现实中的概念间还有一种非常重要的关系,就是分类,分类有个根,然后向下不断细化,形成一个层次分类体系.这种例子是非常多的: 在自然世界中,生物有动物和植物,动物有不同的科目,食肉动物.食草动物.杂食动物等,食肉动物有狼.狗.虎等,这些又分为不同的品种 ... 打开电商网站,在显著位置一般都有分类列表,比如家用电器.服装,服装有女装.男装,男装有衬衫.牛仔裤等 ... 计算机程序经常使用类之间的继承关系来表示对象之间的

C++多态和虚函数学习笔记

1.从实现的角度看,多态可以划分为两种情况:编译期多态和运行时多态. 前者是在编译过程中,确定同名操作的具体操作对象,从而确定同名函数的具体实现: 后者是在程序运行过程中,动态确定具体的操作对象,从而确定同名函数的具体实现. 这种确定操作具体对象的过程成为联编或联合.联编就是将一个标识符和一个存储地址联系在一起的过程,是计算机程序自身彼此相关联的过程. 从联编进行的不同阶段,可以将联编分为静态联编和动态联编. (1)静态联编是指联编工作在程序编译和连接阶段完成的联编过程.静态联编是程序编译之前进

C#多态

通过继承,一个类可以用作多种类型:可以用作它自己的类型.任何基类型,或者在实现接口时用作任何接口类型.这称为多态性.C# 中的每种类型都是多态的.类型可用作它们自己的类型或用作 Object 实例,因为任何类型都自动将 Object 当作基类型. 多态性不仅对派生类很重要,对基类也很重要.任何情况下,使用基类实际上都可能是在使用已强制转换为基类类型的派生类对象.基类的设计者可以预测到其基类中可能会在派生类中发生更改的方面.例如,表示汽车的基类可能包含这样的行为:当考虑的汽车为小型货车或敞篷汽车时

Java基础(八):多态

一.多态的理解: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作,如图所示: 多态性是对象多种表现形式的体现:现实中,比如我们按下 F1 键这个动作:如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档:如果当前在 Word 下弹出的就是 Word 帮助:在 Windows 下弹出的就是 Windows 帮助和支持:同一个事件发生在不同的对象上会产生不同的结果. 二.多态的优点和必要条件: 多态的优点:1. 消除类型之间的耦合关系2

当this指针成为指向之类的基类指针时,也能形成多态

this指针: 1)对象中没有函数,只有成员变量 2)对象调用函数,通过this指针告诉函数是哪个对象自己谁. 1 #include<iostream> 2 using namespace std; 3 class Shape 4 { 5 public: 6 //void cal_display(Shape* this) 7 void cal_display(){ 8 display(); 9 this->display(); 10 } 11 private: 12 virtual vo