zoukankan      html  css  js  c++  java
  • 基础知识

    一.C#概念

    C#语言是从CC++语言演变而来的,是微软创建的一门面向对象、运行在.NET Framework上的高级程序语言,是Windows的一个必要组件,包括一个称为公共语言运行时(common language runtimeCLR)的虚拟执行系统和一组统一的类库。(C#源文件扩展名为.cs

    C#与Java有很多相似的地方:继承、接口、声明命名空间(using&import)、从Main入口点开始执行、源代码被编译成中间状态等。同时也有明显不同之处:C#借鉴了Delphi的与COM是直接集成的特点、它们所执行的平台也不相同,Java运行环境JRE(Java Runtime Environment),C#运行环境CLR(Common Language Runtime),且CLR支持多种语言;同时C#提供封箱装箱等方法。

    二.面向对象思想

    面向对象是将客观事物看做属性和行为的对象,通过抽象同一类对象的共同属性和行为,形成类。通过对类的继承和多态实现代码重用等。对象(Object)是类(Class)的一个实例(Instance),如果将对象比作房子,那么类就是房子的设计图(类中定义包括属性和方法)。

    面向对象的三个基本特征为:

    (1).封装:把客观事物封装成抽象的类,类中数据和方法只让可信类或对象操作,不可信的隐藏(内部细节)

    (2).继承:它可使用类的所有功能,无需重新编写原有类且对功能进行扩展

    (3).多态:一般类中定义的属性或行为,被特殊类继承后,可以具有不同的数据类型或表现不同的行为,各个类能表现不同的语义,实现的两种方法为覆盖和重载

    通过下面的例子来讲解面向对象:

    1:让你编写一个计算长方体体积的程序,通常的思想是定义3个变量长=a,宽=b,高=c,体积v=a*b*c;而在面向对象思想中先创建一个长方体的类,在类中定义长宽高和体积,然后定义方法,在实例化使用。(C++代码)

    class Rect {
    public:
        void showArea(…);         //定义方法:计算长方体体积
    private:
        float a,b,c,v;            //定义属性:长 宽 高 体积(私有成员)
    }
    void Rect::showArea(…) {…}

    这样的好处是它是站在事物本身的角度去思考解决问题,如果上面采用面向过程定义函数的形式实现,当出现多个形状时,你需要对每一种形状都定义一种方法,而面向对象只需把这些形状的属性和方法抽象出来,更加方面的实现。

    值得注意的是,面向对象提供的是一种思想,而非仅仅是课本中的那点知识,很多时候我们仅仅是把使用了C++C#Java一门面向对象的语言,或者是定义了几个类、使用继承等知识就认为自己运用了面向对象(我就是这样的);但我更认为面向对象是一种思想,一种更好的解决实际问题的方法。比如有这样一个问题:

    2:为了方便儿童学习编程,X公司开发了一套Racing Car 模拟器,使用这个模拟器每个孩子都可以用一种简单的语言来控制一辆赛车,例如,right,left等。请设计一种简单的语言,给出它的语法,以及该语言的类图。

    这就是我们实际编程中联系到生活的问题,它涉及到了设计模式的相关知识,其中我采用的方法是“命名模式”实现的:客户端是定义ChildrenCar,请求者是Children发出的RightLeftUpDown命令,接受实现者是Car执行Move(),抽象命令是上下左右的抽象接口,具体命令是Car的上下左右。我制作的类图如下:

     

    通过这个例子我不是想证明我采用命令模式和画的类图是否正确,我想阐述的想法是我们学习面向对象知识主要是用来解决实际生活中的问题,让它更加高效的解决问题和优化代码。在学习《设计模式》时老师就曾说过“模式是现成的,但实现方法要靠自己;同时,学习的时候要敢于否认自己以前很熟悉的套路,甚至经典套路,只要能更加高效正确的完成项目,你的模式就很可能就是经典。”所以,我才认为面向对象是一种思想,不是宏观的C语言就是面向过程,C++C#就是面向对象。

    同时,面向对象思想要适应需求的变化,解决用户的实际需求,在设计时就要尽量考虑到变化,会涉及到抽象、封装变化(重点)、设计模式等知识。补充:C#中的对象都是System.Object的子类,即所有对象都继承System.Object,这样的好处是所有的对象都可以有公用的方法,如ToString()方法。

     http://blog.csdn.net/eastmount/article/details/10090767

    C#基础知识2

  • 相关阅读:
    flask 源码专题(七):threading.local和高级
    flask 源码专题(六):session处理机制
    flask 源码专题(五):SqlAlchemy 中操作数据库时session和scoped_session的区别
    flask 源码专题(四):wtforms Form实例化流程以及csrf验证
    flask 源码专题(三):请求上下文和应用上下文入栈与出栈
    python 追踪函数调用
    flask 源码专题(一):app.run()的背后
    flask 源码专题(二):请求上下文与全文上下文
    边框间距 | border-spacing (Miscellaneous Level 2)
    边框样式属性 | border-top-style (Backgrounds & Borders)
  • 原文地址:https://www.cnblogs.com/hongdada/p/3386558.html
Copyright © 2011-2022 走看看