面向对象编程

来源:互联网 发布:知乎 金庸女性 编辑:程序博客网 时间:2024/05/16 14:42

之前介绍的基本上是复习c语言相关的内容了,只是区分下语法方面的一些不同,下面介绍面向对象编程,要了解C#语言和.NETFramework 的强大功能,需要使用面向对象编程(Object-Oriented Programming,OOP)技术,相信学过c++的同学,对这个概念并不陌生。当然不熟悉也不要紧,语言类的学习就是要多看,多练,原因很简单,容易忘记。

一、面向对象编程的含义:

面向对象编程是创建计算应用程序的一种相当新的方法,它解决了传统编程技巧带来的许多问题。前面介绍的编程方法称为函数(或过程)化编程,常常会导致所谓的单一应用程序,即所有的功能都包含在几个代码模块中(常常是一个代码模块)。而使用OOP 技术,常常要使用许多代码模块,每个模块都提供特定的功能,每个模块都是孤立的,甚至与其他模块完全独立。这种模块化编程方法提供了非常大的多样性,大大增加了重用代码的机会。

在传统的应用程序中,执行流常常是简单的、线性的。把应用程序加载到内存中,从A 点开始执行,在B 点结束,然后从内存中卸载,在这个过程中可能用到其他各种实体,例如存储介质上的文件或显卡的功能,但处理的主体总是位于一个地方。此时的代码一般与使用各种数学和逻辑方式处理数据相关。处理方法通常比较简单,使用基本的数据类型,例如整型和布尔值,建立比较复杂的数据表达方式。

而使用OOP,事情就不是这么直接了。尽管可以获得相同的效果,但其实现方式是完全不同的。OOP 技术以结构、数据的含义以及数据和数据之间的交互操作为基础。这通常意味着要把更多的精力放在项目的设计阶段,但项目的可扩展性比较高。一旦对某种类型的数据的表达方式达成一致,这种表达方式就会应用到应用程序以后的版本中,甚至是全新的应用程序中。这种一致的表达方式可以大大减少开发时间。

二、面向对象编程最离不开的两个概念:对象和类

对象的含义:对象就是OOP 应用程序的一个组成部件。这个组成部件封装了部分应用程序,这部分程序可以是一个过程、一些数据或一些更抽象的实体(初看可能有点抽象,但编过代码后会发现还是有道理的)。简单地说,对象非常类似于前面讨论的结构类型,包含变量成员和函数类型。它所包含的变量组成了存储在对象中的数据,其中包含的函数可以访问对象的功能。略为复杂的对象可能不包含任何数据,而只包含函数,表示一个过程。例如,可以使用表示打印机的对象,其中的函数可以控制打印机(允许打印文档、测试页等)。使用”类”的定义实例化对象,这表示创建该”类”的一个实例.

那么一个类包含那些东西呢?

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

属性与字段是不同的,因为属性不提供对数据的直接访问。一般情况下,在访问状态时最好提供属性,而不是字段,因为这样可以更好地控制各种行为,这个选择不会影响使用对象实例的代码,因为使用属性和字段的语法是相同的。对属性的读写访问也可以由对象来明确定义。某些属性是只读的,只能查看它们的值,而不能改变它们(至少不能直接改变)。

常见的情况是把字段设置为私有,通过公共属性访问它们。

2.方法:“方法”这个术语用于表示对象中的函数。方法用于提供访问对象的功能。与字段和属性一样,方法也可以是公共的或私有的,按照需要限制外部代码的访问。

三、对象的生命周期:

每个对象都有一个明确定义的生命周期,除了“正在使用”的正常状态之外,还有两个重要的阶段:

1)构造阶段:对象最初进行实例化的时期。这个初始化过程称为构造阶段,由构造函数完成。(对象的初始化过程是自动完成的。我们不需要找一个适于存储新对象的内存空间。一般是初始化用的,所有的类定义都至少包含一个构造函数。用new 关键字来调用构造函数)

2)析构阶段:在删除一个对象时,常常需要执行一些清理工作,例如,释放内存,这由析构函数完成。(.NET Framework 使用析构函数清理对象。一般情况下,不需要提供析构函数的代码,而是由默认的析构函数自动执行操作。)

四、静态成员:

属性、方法和字段等成员是对象实例所特有的,此外,还有静态成员(也称为共享成员),例如静态方法、静态属性或静态字段。静态成员可以在类的实例之间共享,所以可以将它们看作是类的全局对象。静态属性和静态字段可以访问独立于任何对象实例的数据,静态方法可以执行与对象类型相关、但与对象实例无关的命令。在使用静态成员时,甚至不需要实例化对象。

(这里说明一下,面向对象编程的概念内容有很多,我在这主要提一些常用,使用方便的内容,要全面学习还是得要同学自己参考书籍。比如静态构造函数,静态类等等,避免大家混淆,在这就不举出来,如果后面有遇到再做详细说明)

原创粉丝点击