现在的位置: 首页 > 综合 > 正文

C#面向对象(四)

2012年06月14日 ⁄ 综合 ⁄ 共 3385字 ⁄ 字号 评论关闭

C#面向对象

面向对象思想:面向过程的编程常常会导致所谓的单一应用程序,即所有的功能包含在几个模块(常常是包含在一个代码模块中)。而使用oop(面向对象)技术,常常要使用许多代码模块,每个模块都提供特定的功能,每个模块都是孤立的,甚至与其他模块完全独立。这种模块化编程方法提供了非常大的多样性,大大增加了代码的重用机会。

在传统的应用程序中,执行流常常是简单的、线性的。把应用程序加载到内存中,从A点开始执行到B点结束,然后从内存中卸载,这个过程可能用到其他各种实体,例如存储介质的文件或视频卡的功能,但处理的主体总是位于一个地方。而使用oop,事情就不是这么直接了,尽管可以获得相同的效果,但其实现方式是完全不同的。Oop技术以结构、数据的含义以及数据和数据之间的交互操作为基础,这通常意味着要把更多的精力放在项目的设计阶段,但项目的可扩展性比较高。一旦对某种类型的数据的表达方式达成一致,这种表达方式就会应用到应用程序以后的版本中,甚至是全新的应用程序中。这样将大大减少开发时间。

(一)类:

类描述一组相似对象的共同特性。类和结构实际上都是创建对象的模板,并提供了处理和访问数据的对象。

类定义以下要素:

1.  定义该类的对象所操作的数据结构(attribute的名称和类型);

2.  这些对象要执行的操作,尤其是哪些操作,类的对象如何被调用执行这些操作,以及对象执行这些操作是的“后台运作”。

注:在类里面声明变量必须说明变量是共有的还是私有的或着是保护的。

public int i;//声明了一个int变量,而这个变量是共有的,就是说,在客户端只要实力化对象后就能在客户端使用他了。如果定义成私有的provate,那么在客户端就算实力化对象后也不能使用他。

类的定义:


(二)什么是对象

对象就是oop应用程序的一个组成部件。这个组成部件封装了部分应用程序,这部分程序可以是一个过程、一些数据或一些更抽象的实体。

C#中的对象是从类型中创建的,就像前面的变量一样,对象的类型在oop中有一个特殊的名称:类。可以使用类的定义实例化对象,这表示创建该类的一个实例。

“类的实例”和对象表示相同得的含义,注意“类”和“对象”是完全不同的概念。

注:类是一系列实物的共体的抽象,而对象才是真正的实体。类是将相同实体抽象的描述为某一类别的事物。

如:将所有学生抽象为一个类,所有老师为一个类,而每个学生是学生类的一个类的实例(类是抽象的,具体的学生才是真实存在的),或说学生类的一个对象,所以说对象是类的一个实例。(实例:一个真实存在的例子)。

所有学生都有课程,假期,书本,上课,下课,选课等相同特性,先将他们抽象为一个Student类在Student类里面有上面这些属性。但是类本身不能实现自己啊,他是不真实存在的,所以要实例化一个对象创建了一个对象后就好像创建了某一个学生,假如我是这个学生,那么我就可以真正的去上课,去选课,但是Student类本身不能去上课,去选课。只有实例化化后(如同我实例化后,就相当于该类的一个实例)我是该类的实例(真实存在的一个例子)那么我就可以去上课,选课了。

对象是真实存在的,而类是对某一类具有相同特性的对象的一个抽象模型。

注:对象只能做所属类已定义的方法所规定的操作。

如:现在本田公司定义一个汽车类,这个汽车类里面定义了轮子、螺丝、底板、方向盘、玻璃、座椅、刹车、油箱等。而你是设计师,在公司汽车这个类里面你要创造出一辆汽车来。轮子、螺丝、底板等那些都是公司里面现有的,你现在要创造一辆汽车,你不能用公司里面没有的东西,而你创建出一辆汽车的时候,这辆汽车就是汽车类的一个真实存在的例子,他是真实存在的。

对象和类的关系进一步说明:类就好像是一个byte类型,byte类型规定被定义为byte型的变量只能在0——256之间。超出这个范围就溢出,程序就会出错。

类也是一样,规定一些范围,然后用类名来定义一个变量(准确点说应该是引用变量,因为类定义的变量是引用行的)时,这个变量也只能在类的范围里,而用new关键字来真正的在内存中创建一个全新的对象,这个全新的对象里面放着类里面的字段、属性、方法,每新建一个对象。

就如:我是房地产商,在我卖房这前,我先建立一个房子模型告诉顾客这片地将建成什么样的房子(就像定义一个类,类里面有些什么方法,属性,字段),他听后就赋钱给我了,我就用这些钱在这块地盖一栋真实的房子就好像用new在内存中创建了一个对象)。我只有一个模型,所有给我买房的人他们的房子都是照着这个模型来做的,建出来的房子和这个模型一模一样,他不会多什么,也不会少什么,只不过模型不能用,而照着模型新建的房子才能用,所以所有买房的人都会得到一栋相同的相互独立的房子。付了钱的顾客可以根据房子的物理地址来找到他的房子(因为每新建一栋房子,房子物理的地址都会不同),当付了钱的顾客通过物理地址找到房子后,他可以可以随便用房子里面的东西,他也可以可以将房子装修成自己喜欢的样式。

解说:public class Home

     

         private string 沙发;

         private string 们;

         private string 电视;

         ……

      

 Public class 售楼部

{

Public static void main(String arge[])

{

Home 顾客1//没有房子,因为他们是来看的,还没有买房;

Home 顾客2

Home 顾客3

new  Home();//在地上照着Home类这个模型建了一栋真实的房子

Home 付了钱的顾客=new Home();//付了钱的顾客我就给他一懂真实的房子。

//当“顾客1付钱后

顾客1=new Home();//我也给他一栋新房子;

}

}

注:每new Home()一次,都会在没有被占用的内存中新建一个对象(在空余的地皮上新建一栋房子),而不是替换原来的对象,所以每个对象都是互相独立在内存中的,他们互不干涉。

Home 顾客1//这里并没有创建一个对象,只是定义了一个引用变量。

New Home();//这里在内存中创建了一个对象。(在内存中创建那么说明他是占内存的)。

顾客1=new Home(),将“顾客1”的引用指针指向new Home()创建的对象的内存地址。

对于new Home()没有引用变量指针的指向。那么c#会自动将从内存中销毁,防止占用内存。因为他没有引用变量指针的指向,他虽然占用内存,真实存在,但他没有被用到。那就是无用的对象,所以要将他销毁。

(三)成员定义

在类定义中,也提供了该类中所有成员的定义,包括字段、方法和属性,所有的成员都有自己的访问级别,下面的关键字之一来定义:

最后两个关键字可以合并使用,所以也有protected internal成员。它们只能由项目中派生的代码来访问。

字段、方法和属性都可以使用关键字static来声明,这表示它们是类的静态成员,而不是对象实例的成员。

 

(三)属性和字段

属性字段可以访问对象中包含的数据,这个对象数据可以用于区分不同的对象,因为同一个类的不同对象在属性和字段中存储了不同的值。

1.字段

asp.net中,公共字段以PascalCasing形式来命名,而不是camelCasing。这里使用这种命名方法,。

字段用来存储与类有关的数据,字段是与类相关的变量。

字段和变量的区别:直接在类中的数据成员为字段,他用访问修饰符和数据类型类定义

public string name;),字段就像类的一个小数据库,用来存放与类相关的数据;而单纯的变量是没有修饰符的(int age;),他不能直接在类里面定义,只能在函数里面定义,他用来作为方法的一个临时变量。

字段也可以使用关键字readonly,表示这个只读字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值。

Class MyClass

{

   Public readonly int MyInt=12;

}

2.属性的定义

属性用来隐藏字段,提高字段的安全性。

属性拥有两个类似于函数的块,一个块用于获取属性的值,另一个块由于设置属性的值,

这两个块也称为访问器,分别用getset关键字来定义,可以用于控制对属性的访问级别。可以忽略其中的一个块来创建只读或只写属性(忽略get块创建只写属性,忽略

抱歉!评论已关闭.