花绕月
花开人间自凋零,绕在心间却有情。月冷风清心若冰,我断凄愁魂犹明。

精彩的代码是如何想出来的,要比看到精彩的代码更加令人期待。

如果想成为一名更优秀的软件设计师,了解优秀软件设计的演变过程比学习优秀设计本身更有价值,因为设计的演变过程中蕴藏着大智慧。

通过这些模式让你找到“封装变化”、“对象间松散耦合”、“针对接口编程”的感觉,从而设计出易维护、易扩展、易复用、灵活性好的程序。

对象是一个自包含的实体,用一组可识别的特性和行为来标识。

自包含----自身包含了自身的所有信息,当重用时不必包含其它的构件。

类就是具有相同的属性的抽象的集合。

类名称首字母要大写,多个单词则每个首字母都大写。

没有构造方法时,系统会生成为空的默认的构造方法。

方法重载同名而使用不同的参数类型或个数。

方法重载可以在不改变方法的基础上新增功能。

属性是一个或一对方法,在调用看来是一个字段。字段是存储类满足设计所需的数据,是类相关的变量。

private int shortNum = 3; 
public ShortNum 
{ 
    get 
    { 
        return value; 
    } 
    set 
    { 
        shortNum = value; 
    } 
} 

类中的成员若没有加修饰符,默认为private。

通常字段是private,属性是public。

字段一般是首字母小写或前加‘_’。

利用get和set来控制私有字段的读写。

//字段是只读的 
private int shortNum = 3; 
public ShortNum 
{ 
    get 
    { 
        return value; 
    } 
} 

//控制shortNum的值 
private int shortNum = 3; 
public ShortNum 
{ 
    get 
    { 
        return value; 
    } 
    set 
    { 
        if(value < 10) 
            shortNum = value; 
        else 
            shortNum = 10; 
    } 
} 

每个对象都包含它能进行操作所需要的所有信息,这个特性称为封装,因此对象不必依赖其他对象来完成自己的操作。
封装减少耦合,类内部可自由更改,有清晰的对外接口。

子类继承于父类,子类拥有父类非private的属性和功能,子类可以扩展出自己的属性和功能,子类还可以以自己的方式实现父类的功能(方法重写)。

protected修饰的类成员,对子类公开,但是不对其他类公开。

子类从父类继承方法、域、属性、事件、索引指示器,但对于构造方法,它不能被继承,只能被调用。对于调用父类的成员可以用base关键字。

class Cat : Animal 
{ 
    public Cat() : base() 
    { } 
    public Cat(string name) : base(name) 
    { } 
} 

继承使得代码得到了共享,避免了重复。

继承的缺点:父类变,子类会跟着改变;破坏包装,父类实现细节暴露给子类。

继承是强耦合的关系。

多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。

注意:子类以父类的身份出现,子类在工作时以自己的方式来实现,子类以父类的身份出现时,子类特有的属性和方法不可以使用。

对象的声明必须是父类,而不是子类,实例化的对象是子类,这才能实现多态。

Animal animal = new cat(); 

C#允许把类和方法声明为abstract,即抽象类和抽象方法。

abstract class Animal 
{ 
    //... 
    protected abstract string getShoutSound(); 
} 

注意:如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否包含其他一般方法。

让抽象类拥有尽可能多的共同代码,拥有尽可能少的数据。

在一个以继承关系形成的等级结构里面,树叶节点应当是具体类,而树枝节点均应当是抽象类。

posted on 2010-05-11 16:16  花绕月  阅读(244)  评论(0编辑  收藏  举报