本章要点
l 面向对象的编程简介:面向对象编程的特征,对象的生命周期,类和对象的关系 l vs2008中的OOP工具:使用vs2008创建类库,使用类关系图 l 类成员:通过实例讲解如何设计一个简单的类 l 封装:为什么要封装,如何封装类和成员 l 重载:运算符重载、方法重载、构造函数重载 l 接口:定义及其使用 l 继承:实现继承和接口继承,共享基类成员 l 多态:虚方法和重写 l 抽象方法:定义以及它与接口的异同 l 命名空间:优缺点 l 匿名类、部分类、扩展方法、结构、枚举 |
本章学习线路
我们首先从什么是面向对象编程开始介绍;接下来我们开始讲解如何利用Visual Studio 2010工具进行创建项目,创建类库、使用类库等工作;再下一步通过实例讲解如何设计一个简单的类,然后根据问题进入面向对象三大特性的主题,从封装开始分别讲解重载、接口、继承、多态和抽象方法,最后我们对于匿名类型、扩展方法、结构、和部分类进行详细讲解。
建议学习多态的时候一定要是在头脑非常清醒的状态下。而且,一定要用断点调试来看代码的运行流程。
知识回顾
小天:学了这么多天了,我觉得C#的语法基础和数据库我已经学得差不多了,什么时候开始做项目吧?
老田:。。。。。。你才学了多少啊,都想做项目了?
小天:我想下。 根据本系列书的提示,最开始学习了《SQL SERVER 2008》那本书的第一至十章,数据库从分析项目建库、建表到最后存储过程、全文搜索我都学会了;C#我也会很多东西啦,控制台应用程序、WinForm和WebForm我都会做简单的了啊。
老田:不错,数据库的基本要求你达到了,可是C#是面向对象的语言。我们前面讲的那些东西根本就没有具体用到对象(实际上是用了,只不过我们没有讲到思想)?本章内容比较多,也是整个C#编程的核心之一,学习时间是2-3天,我们说C#是面向对象的编程语言,前面学了几天有提到过吗。
知道啦,那么快告诉我什么是面向对象吧,我可还没有对象呢。
4.1 面向对象的编程简介
我们前面学了C#的基本语法,如果再加一点点WINFORM或者WEBFORM知识也确实可以写出非常简单的程序了,但是这有一个致命的缺点,你所写程序的所有功能实现的代码都包含在一个或者几个模块中,如果遇到在不同模块中有一个同样的功能,那就只能把同样的代码再写一次,比如每一个窗体上或者页面上都需要显示当前登录用户的名字,那么读取用户信息并显示的代码就必须在每个窗体或页面上都写一次,这就是常说的面向过程编程。而OOP(Object-Oriented Programming)作为一种功能非常强大的编程方法,可以将这类需要重复使用的代码块封装在一个类中,在所有需要使用的地方直接调用即可,已达到更容易地维护和重使用已经编写好的代码,执行非常复杂的任务。相对于面向过程的编程语言而言,面向对象的编程语言具有如此的几个优势:
l 代码维护方便
l 可扩展性好
l 支持代码重用技术
模块化是面向对象编程的一个重要的特征,通过采用模块化方式,我们可以使我们的维护变得更加简单。由于在创建类的时候是封装的,类便作为一个独立的实体存在,我们就可以将这些独立的实体放在一起,从而提供一个类库。实际上,.NET Framework类库就为我们提供了很多的功能,我们在编程的时候就可以使用这些类库。同时,我们还可以创建符合要求的类来扩充我们的功能,满足我们的需求。OOP的三个特点:封装性、继承性和多态性,在下面的内容当中将具体讨论。
名词解释:面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、面向对象的编程实现(OOP,Object Oriented Programming) |
在面向对象编程中存在以下几个概念:
(1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的宇宙飞船等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。
(3)类。
具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
② 整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。
搞不懂你在说什么,老田,可以不可以用现实中的实例来解释啊?
好吧,假设我们买一辆汽车,这辆汽车的所有零部件都是从炼钢炉里面一次成型的,忽然有一天你想换个引擎。咋办?难道把汽车弄回炼钢炉去回炉?如果这辆汽车是按照OOP的方式做的,你就只需要把引擎换下来就OK了。
而调用方法和消息就更简单了,你把车开到加油站,告诉工作人员:“师傅,300”。这个过程就是调用加油站加油的方法,而你让他给你300元的油这就是在调用方法的时候传递参数。
本文章为天轰穿原创作品,转载请注明出处及作者。