融智技术学院第3章面向对象的程序设计面向对象程序设计是程序开发的一个里程碑,通过使用计算机编程语言可以模拟现实世界中的各种实体对象。面向对象通过类、对象、继承、属性、方法等技术及扩展方法,使得复杂的工作条理清晰、编写容易。本章将结合具体实例来介绍面向对象的开发技术。融智技术学院3.1面向对象程序设计概述面向对象的程序设计:Object-OrientedProgramming,又称OOP程序设计。面向对象程序是程序开发的一场重要革命。面向对象程序的诞生,让更多初学者逐步成为程序员,同时推动了整个计算机软件事业的发展。本节将介绍面向对象程序设计的一些相关概念。融智技术学院3.1.1面向对象的概念对象是程序中的组成部件。对象可以理解为程序中的“一样东西”。现实生活中到处都是对象。从一个对象就可以访问成员,并将该成员作为一个对象,再访问该对象成员的属性、方法,这种技术就是面向对象。计算机应用这种面向对象技术进行开发就是面向对象程序开发。融智技术学院3.1.2面向对象开发的特点面向对象程序开发通过对象就可以访问其成员,访问成员的属性、方法,使程序开发更接近人性化,变得更简易性。面向对象程序之所以是程序开发的一个里程碑,除了上面这些特点外,更重要的就是其具有唯一性、分类性、模板性、继承性、多态性。融智技术学院3.2创建类与成员类是一种对包括构造数据成员、函数成员和嵌套类型进行封装的数据结构。在面向对象的程序开发中,类就是对象的模板,对象的模板性就是通过类来实现的。在本章的3.1节中所讲的玩具车模板就是一个类,由该模板创建生成的玩具车就是对象。融智技术学院3.2.1在VisualStudio中创建类文件在面向对象开发中,首先就需要创建类。在ASP.NETWeb开发中,创建类时最好是将类单独存储到一个文件中。在VisualStudio中开发网站,如果创建一个新类,将会把类文件存储到App_Code目录下。使用该目录存储类文件,可以方便ASP.NET编译网站。融智技术学院3.2.2对象的创建类是对象的模板,对象是通过类来创建的。创建对象就是程序按照类的构造,为内存分配一定存储空间。对象的创建是通过new关键字来创建的,其语法如下。ClassNameobjectName=newClassName(参数)融智技术学院3.2.3构造函数的设计构造函数是一种很特殊的方法,是类创建对象实体时将要执行的方法。构造函数总是与new关键字一起使用。类中可以创建许多构造函数。如果类是玩具车模板,那么构造函数就是注塑行为。通过向玩具车模板(类)中注入塑料(构造函数),就可以生产出一部玩具车,该过程如图所示。玩具车模板注塑玩具车1融智技术学院3.2.4类的属性类的属性用于控制类的特征,类就是由这些属性组成的。属性分为私有属性和公开属性。公开属性是指类提供给外界可访问的特征。私有属性是指外界不可以访问的特殊属性。融智技术学院3.2.5类的方法方法是类的行为,用于执行类的特定任务。上面所创建的学生类,只包括了3个属性,没有方法。该类只能用于存储数据。方法分为两种类型,一种有返回值,一种没有返回值。融智技术学院3.2.6继承性儿子由父亲所生,多少是要像父亲的,这就是继承性。面向对象程序开发,同样提供了“儿子由父亲所生,多少要像父亲”的继承机制。类A可以根据类B生成,类A可以看成类B的“儿子”,类B可以看成类A的“父亲”,类A(儿子)要“像”类B(父亲),这个“像”就是类的继承。类A既然是由类B生成的,那么类B的所有属性及方法,类A也同样具有。通常称A类为B类的子类,B类是A类的基类(或父类)。类的继承性使程序员可以基于已创建好的类,创建属于自己的类,提高了程序的重复性使用。融智技术学院3.2.7多态性儿子由父亲所生,说他像其父亲,但还是有些不像,这些不像就是由于儿子有自身的特点,这就是多态性。类的多态性是指子类继承基类之后,可以设置自身的一些属性和方法,使子类“像”(继承)基类,又有点“不像”(多态性)。子类的属性和方法的创建与上述所讲的语法一样。融智技术学院3.3面向对象的抽象编程从诞生开始,面向对象程序开发就是基于类的创建和使用而不断发展的。但随着面向对象程序开发的进一步发展,为了使其程序设计更为灵活,更趋向智能化,例如,程序员不喜欢原来程序结构要求它们必须使用某种数据类型,来构建应用程序,而更喜欢程序结构只定义数据的框架结构。至于使用什么数据类型,则由程序员在开发中自行定义。这就推动了抽象程序的发展。抽象编程主要包括接口、集合、泛型等。融智技术学院3.3.1枚举枚举是自定义数据类型,该值可以是众多值中的一个。枚举在.NET的程序开发里十分常见,常用于控件属性的设置。例如,在VisualStudio中创建一个新页面,页面将自动添加一个div标签。在div标签属性面板中,单击“Align属性”右边的下三角按钮,则显示该属性可以设置为center、left、right。融智技术学院3.3.2集合集合与数组十分相似,是由许多数据项目组成的整体。同时,集合为这些数据项目标上序号,方便今后对这些数据项目进行查找索引。但是数组在其创建时就必须指定其数组项,让内存为其分配存储空间。而集合可以通过Add方法,添加新的数据项目。此时内存为集合重新分配空间。融智技术学院3.3.3接口接口是指由一系列虚拟方法组成的抽象类型,其中每一种方法都有其名称、参数和返回值。接口的实现,就是让实现接口的子类具体实现这些方法。日常生活中的学习可以看成一种接口,学习(接口)包括读书、做作业、背诵。由于学习没有规定要学习什么,应该如何读书,如何做作业,如何背诵等具体方法,所以这些学习方法,可以看作接口方法。一名学生既然到学校读书(实现接口),学生就要学习,至于如何学习、如何读书、做作业、背诵则要学生在具体学习中去实现。融智技术学院3.4.NET中开发语言的特性ASP.NET4.0的程序开发逐步向智能化程序开发推进,泛型已广泛应用到其编程领域中。.NET4.0为了提高并简化泛型编号,对其自身的编程语言进行改进,主要有以下特点。•自动属性;•隐含类型变量;•匿名类型;•类和集合的初始化器;•扩展方法;•Lambda表达式;•Lambda表达式树。融智技术学院3.4.1使用匿名类型为了提高程序开发的效率及程序代码智能化,.NET4.0推出一种可以在程序中自动创建类型,又无须设置其相关属性的方法,该方法就是匿名类型。融智技术学院3.4.2类和集合的初始化器类初始化器由一系列成员对象组成,其对象必须初始化,用逗号间隔,使用花括号封闭。学习了类之后可以知道,类创建后要通过其构造函数创建一个实例。如果构造函数是无参数的,还要对其属性进行一一设置相关数据。类的初始化器则可以在创建类的实例时,无须经过构造函数直接为?涫粜愿持?。融智技术学院3.4.3应用扩展方法扩展方法就是在无须修改现有类或创建新类的情况下,为现有类“添加”新方法。扩展方法是一种特殊的静态方法,但该方法可以像原来类的方法一样进行调用。扩展方法本身必须实现一个静态类,其方法也必须实现一个静态方法,其参数必须使用this关键字定义一个数据类型,该数据类型就是要“添加”扩展方法的数据类型。融智技术学院3.4.4Lambda表达式Lambda表达式是一个匿名函数,可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。所有Lambda表达式都使用Lambda运算符=,该运算符读为“goesto”。该Lambda运算符的左边输入参数(如果有),右边包含表达式或语句块。融智技术学院3.5小结本章全面介绍了面向对象开发中类的创建与运用,继承与接口的实现等基础知识。还讲解了抽象编程枚举、集合、泛型等基础知识。这里只是简单讲解了泛型的运用,并没讲解泛型的实现,该部分知识读者可以参考由电子工业出版社出版的《VisualC#2008开发技术详解》和《ASP.NET3.5网络数据库开发实例自学手册》进一步研究。