面向对象

来源:互联网 发布:小学生体质健康数据 编辑:程序博客网 时间:2024/05/29 13:29

面向对象:

可以通过封装、继承、多态,降低程序的耦合度。面向对象的三大特性为 继承封装 多态

简单的类的封装实例:

输入两个数,并输入运算符,得出结果:

控制台程序:

static void Main(string[] args)

        {

            Console.WriteLine("请输入一个数");

            int a = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("请输入另一个数");

            int b = Convert.ToInt32(Console.ReadLine ());

            Console.WriteLine("请输入运算符");

            string strMark = Convert.ToString(Console.ReadLine());

            Console.WriteLine(fun(a, b, strMark));

            Console.ReadKey();

        } 

运算类程序:

  public static int  fun(int a , int b , string strMark)

        {

            int result = 0;

            switch (strMark)

            {

                case "+":

                    result = a + b;

                    break;

                case "-":

                    result = a - b;

                    break;

                case "*":

                    result = a * b;

                    break;

                case "/":

                    result = a / b;

                    break;

                default :

                    break;

            }

            return result;

        }

紧耦合与松耦合

首先看override 的特性: override 方法提供从基类继承的成员的新实现。 由 override 声明重写的方法称为重写基方法。 重写的基方法必须与 override 方法具有相同的签名。 不能重写非虚方法或静态方法。 重写的基方法必须是 virtualabstract 或 override 的。override 声明不能更改 virtual 方法的可访问性。 override 方法和 virtual 方法必须具有相同的访问级别修饰符。您不能使用 newstatic 或 virtual 修饰符来修改 override 方法。重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称,并且被重写的属性必须是 virtualabstract 或 override 的。


        public class Operation

        {

            private double _numberA = 0;

            private double _numberB = 0;

            public double numberA

            {

                get {

                    return _numberA;

                }

                set

                {

                    _numberA = value;

                }

            }

            public double numberB

            {

                get { return _numberB; }

                set { _numberB = value; }

            }

            public virtual double GetResult()

            { 

                double result = 0 ;

                return result;

            }

        }

        class OperationAdd : Operation

        {

            public override double GetResult()

            {

                double result = 0;

                result = numberA + numberB;

                return result;

            }

        }

        class OperationDiv : Operation

        {

            public override double GetResult()

            {

                double result = 0;

                result = numberA / numberB;

                return result;

            }

        }

        class OperationSub : Operation

        {

            public override double GetResult()

            {

                double result = 0;

                result = numberA - numberB;

                return result;

            }

        }

        class OperationMul : Operation

        {

            public override double GetResult()

            {

                double result = 0;

                result = numberA * numberB;

                return result;

            }

        }

下面开始实例化对象:简单工厂模式, 

public class OperateFactory
        {
            public static Operation createOperation(string operate)
            {
                Operation oper = null;
                switch (operate)
                {
                    case "+":
                        oper = new OperationAdd();
                        break;
                    case "-":
                        oper = new OperationSub();
                        break;
                    case "*":
                        oper = new OperationMul();
                        break; 
                    case "/":
                        oper = new OperationDiv();
                        break ;
                    default:
                        break;
                }
                return oper ;
            }

        }

客户端代码:

 Operation oper;
            oper = OperateFactory.createOperation("+");
            oper.numberA = 1;
            oper.numberB = 1;
            double result = oper.GetResult();

0 0