面向对象(Object Oriented,OO)

  • 面向对象(Object Oriented,OO)
  1. 面向对象(Object Oriented,OO)是当前计算机界关心的重点 它是90年代软件开发方法的主流 面向对象的概念和应用已超越了程序设计和软件开发 扩展到很宽的范围(如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域)
  • 面向对象概念
  1. 面向对象不是取代面向过程的
  2. 面向对象的三个特性: 封装 & 继承 & 多态
  3. 类/对象
  4. 字段/属性/方法
  5. 类的继承
  6. 没有面向对象的世界中的难题
  • 成员访问级别
  1. 字段/方法/属性都是类的成员 都需要定义访问级别/访问级别的用处在于控制成员在哪些地方可以被访问 这样达到面向对象”封装”的目的
  2. public/private/protect/internal
  3. public任何地方均可访问 private是默认访问级别 只有本类成员可访问
  4. 永远不要把字段public
  • 定义类
  1. 类就是把一系列相关变量/状态/行为定义为一个整体
  2. class Person{}
  • 属性
  1. 与字段比较 属性可以进行非法值控制 可以设置只读
  2. 惯用法: 属性开头字母大写/字段开头字母小写
  3. 只用get或只用set就可以定义只读或只写属性
  4. get set可以设置访问级别
  5. 简化语法: public int Age{get;set;}
  • .Net Reflector(6免费版)
  • 对象的引用
  1. 值类型(内存堆)/引用类型(栈)
  2. 拷贝赋值的为值类型(int datetime bool char) /引用类型赋值时传递的是引用
  • 构造函数
  1. 用于创建对象的特殊函数
  2. 函数名与类名相同/无返回值/无void/可以有参数
  3. 构造函数可以重载
  4. 如果不指定构造函数则类有一个默认的无参构造函数/如果指定了构造函数则不再有默认无参构造函数 如果需要无参构造函数则需自己写
  • 继承
  1. class Chinish : Person
  2. 定义时不指定父类则父类为Object(所有类的基类)
  3. Object指针指向什么对象均可
  • 异常与异常处理
  1. 异常机制
  2. 传统的错误表示方式: 错误码
  3. 错误码缺点: 不处理则很难发现 每次处理则很麻烦/难以看出错误的原因
  4. try catch
  5. Exception类主要属性: Message & StackTrace
  6. Exception类构造函数
  7. 异常发生后程序默认退出 后续代码不会被执行/catch后代码则会继续执行
  8. 不要吃掉异常/一般情况下不需要处理异常
  9. 抛出自己的异常
  • 常量与静态类&成员
  1. (面向过程)const常量(一定不会变化的值/常量名大写/public const不用new可以直接调用)
  2. 静态类: 无法实例化/一般用于实现纯函数库
  3. 静态成员(方法/字段/属性):不用new即可调/static变量当作全局变量
  4. static方法中可以调用其他static方法/字段/属性但不能调用非static方法/字段/属性 非static方法中可以调用static方法/字段/属性
  • 命名空间
  1. namespace/命名空间: 用于解决类重名问题/可以看做类的文件夹
  2. 调用类: using+namespace / System.Collections.ArrayList类快速引入 右键→解析
  3. 不同namespace下需添加using引用/可修改类默认namespace/相同文件下不一定不用using 不同文件夹下不一定非用using
  • (特殊函数)索引器
  1. C#中提供了按照索引器进行访问的方法(如 数组)
  2. 索引器定义方式: string this[int index]{get{return “”;}set{}}; //string为索引器类型 []中是参数列表 执行set代码块是进行索引器写操作 执行get代码块是进行索引器读操作
  3. 索引器参数可以不止一个 类型也不限于int 几乎可以是任意类型 可以只有get没有set(只读)
  • 事件 & 委托
  1. Windows事件驱动机制: 
  2. 委托机制: 
  3. RunCircus(new AnimalPlay(CatPlay),”Kitty”); 
  4. &
  5. .Net通过委托机制把系统和应用程序中的事件处理程序联系起来了/委托-”函数类型”/委托和事件→对象和类/.Net中预定义多种专用委托类(EventHandler KeyEventHandler MouseEventHandler等)
  6. &
  7. 点按钮时this.label2.Click+=new System.EventHandler(this.label2_Click);
  8. 多余事件代码删除: 属性→事件 先删除/保存/代码处再删除
public class Heater
{
  private int temperature = 0;
  public delegate void BoilHandler(int param);   //声明委托
  public event BoilHandler BoilEvent;   //声明事件
  public void BoilWater()
  {
    fpr(int i=1; I <= 100; i++)
    {
      temperature++;
      if (temperature>=99 && BoilEvent != nill)
      {
        BoilEvent(temperature);   //调用所有注册的方法
      }
    }
  }
}

posted on 2011-09-19 11:11  les_vies  阅读(207)  评论(0编辑  收藏  举报

导航