黑马程序员--C#面向对象(一)

 

------------------ Windows Phones 7手机开发.Net培训、期待与您交流! ----------------------

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#会自动将从内存中销毁,防止占用内存。因为他没有引用变量指针的指向,他虽然占用内存,真实存在,但他没有被用到。那就是无用的对象,所以要将他销毁。
                                         ------------------ Windows Phones 7手机开发.Net培训、期待与您交流! ----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值