面向对象的C.ppt
《面向对象的C.ppt》由会员分享,可在线阅读,更多相关《面向对象的C.ppt(42页珍藏版)》请在三一文库上搜索。
1、第6章 面向对象的C#,从本章开始进入C#面向对象编程。C#是一门面向对象的语言,面向对象是C#最基本的特征。深入了解C#面向对象,对进入面向对象程序开发具有很大的帮助,对学习其他面向对象的语言具有事半功倍的作用,本章主要涉及到的知识点有: 了解面向对象的概念。 理解System.Object类,以及C#框架类库。 定义类和实例化对象。 理解类的成员,属性和方法。 使用集合类和泛型。,6.1 面向对象基础,面向对象技术最早出现在60年代,在90年代发展成熟,并成为主流编程方法。面向对象强调类的“封装”、“继承”、“多态”等思想,同时强调定义类之间的层次关系,以及这些关系的实质。就像现实世界一样
2、,让程序更易于理解和设计。,6.1.1 什么是面向对象,OOP(Object Oriented Programming),即面向对象程序设计。面向对象编程就是为了更直观的描述现实世界,这里的“对象”跟现实世界中的实体有类比之处,在程序中,所谓“对象”就是一个或一组数据以及处理这些数据的方法和过程的集合。面向对象的程序设计完全不同于传统的面向过程程序设计,它更直观地模拟人的认知思维,大大地降低了软件开发的难度,彻底地影响了软件编程世界。 面向对象编程是一种计算机编程架构。图6.1是对OOP的描述,OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展性。为了实现整体运算,每个对象都能够接收信息
3、、处理数据和向其他对象发送信息。,6.1.2 面向对象的特征,面向对象中的类(class)是最基本的C#类型,类是将状态和操作组织在一个单元中的一种机制,通过类,可以动态创建不同值的实例,即对象,以此创建出丰富多彩的面向对象世界,其中面向对象的编程主要体现在以下的特征: 组件:能够完成某些功能的模块化、结构化的程序单元。 抽象性:程序只关注重要细节,忽略次要细节的过程。 封装:将东西包装在一起,然后以新的完整形式呈现出来,将实现细节隐藏,不让用户看到,以保证完整性。 多态性:多态性是不同的实例对象以不同的方式对相同的信息做出不同的表现。组件的引用和类集,会涉及到其他许多不同类型的组件,而且引用
4、组件所产生的结果得依据实际调用的类型。 继承性:允许在现存的组件基础上创建子类组件,这统一并增强了多态性和封装性,同时达到了重用性。,6.2 万物皆对象,程序本身的目的就是为了描述现实的,把现实的事物描述出来,把事物之间的业务逻辑设计清楚,能够易于人的理解,能够为人们服务,就是程序。在面向对象的程序里,万物皆对象。,6.2.1 怎么理解“对象”,什么是对象呢?人、桌子、汽车、大象这些都是对象。概括地说,现实中一切存在的实体,都是对象。比如说人,人具有姓名、性别、高矮胖瘦等特征,人还具有走路、吃饭、唱歌等行为,这些特征和行为都是可以描述的。把它们归纳起来,就可以描述一个具体的人对象。所以,可以这
5、样定义对象:“对象是存在的具体实体,具有明确定义的状态和行为”。,6.2.2 从对象到类,首先来看一个例子,如图6.2所示,分别描述两个不同的明星,他们都有姓名、职衔、出生和身高等状态,但是状态的值是各不一样的,如罗纳尔迪尼奥是球员,出生于1980年,身高181厘米;布兰妮是歌手,出生于1981年,身高163厘米。他们也具有不同的行为,罗纳尔迪尼奥可以踢球,布兰妮可以唱歌。,6.2.3 定义类,类是C#中功能强大的数据类型,像结构一样,类可以定义数据的状态和行为。使用类声明可以创建新的类。类声明以一个声明头开始,其组成方式如下:先指定类的属性和修饰符,然后是类的名称,接着是基类(如有)以及该类
6、实现的接口。声明头后面跟着类体,它由一组位于一对大括号和之间的成员声明组成。下面是一个类声明的语法结构: class : /类成员 ,6.2.4 构造类,【本节示例参考:源代码chapter66.2.4ClassPropertyExample】 类通过构造方法来提供实例化调用,构造方法是只要在创建给定类的对象时就调用的一个方法,它们与类同名,但不具备任何返回类型。每个类都有一个默认的不带参数的构造方法,如下是定义的“Person”类显示的声明默认构造方法。 class Person private string name = string.Empty; /定义类的字段 public Perso
7、n() /显示声明默认构造方法 Console.WriteLine(“默认构造方法“); static void Main(string args) /主函数调用 Person person = new Person(); /实例化对象 ,6.2.5 类的成员,对象的状态和行为都是通过类的成员定义的,类的成员或者是静态成员,或者是实例成员。静态成员用关键字static修饰,属于类;实例成员属于对象。如表6.1提供了类所能包含的成员种类的概述。,6.2.6 定义类的字段,【本节示例参考:源代码chapter6 6.2.6ClassPropertyExample】 在C#里,通过字段(field)
8、来描述对象的特征,字段是类的构成部分,它使类可以封装数据。如罗纳尔迪尼奥和布兰妮都具有姓名、职衔、出生和身高等特征。如下代码给类Person定义了两个字段,一个表示姓名,一个表示年龄: class Person private string name; /姓名 private int age; /年龄 ,6.2.7 定义类的方法,【本节示例参考:源代码chapter6 6.2.7ClassFunctionExample】 “方法”是为了实现某个功能的一系列语句的代码块,类中的方法跟函数类似,但方法仅仅在类中定义。首先来看一下方法的定义: public static void SayHello(
9、) Console.WriteLine(“Hello!”); 该方法由以下几部分组成: (1)public访问修饰符:用于设定该方法的访问权限,可以省略,6.3.5节会重点讲解。 (2)static关键字:用于表示是静态成员,可以省略。6.3.6节会重点讲解。 (3)void关键字:用于表示方法的返回值类型,void表示没有返回值。 (4)方法名SayHello:方法的惟一标识。 (5)参数列表():为空表示没有参数,可以包含一个或多个各种数据类型的参数。 (6)功能代码块 :方法体,用于实现方法的功能。,6.2.8 从类到对象,定义好类以后,就可以通过类实例化对象。对象的实例化语法如下: P
10、erson aPerson =new Person(); 其中,Person是类名,aPerson是对象名,通过new关键字调用默认的构造方法Person()。在C#中,Person只是定义的一个数据类型,通过new实例化对象的过程,就是给对象分配内存空间的过程。也可以通过带参构造方法实例化对象,如: Person aPerson =new Person(“Kenrome”); 也可以把对象的实例化分为两步,如: Person aPerson; aPerson=new Person(“Kenrome”);,6.2.9 类和对象程序实例,【本节示例参考:源代码chapter6 6.2.9Clas
11、sTest】 在本节中,从概念到程序,逐一学习了类、类的定义、类的字段、类的方法、类的构造以及类的实例化。最后,通过一个完整的例子来综合理解本节的内容。这个例子定义了一个类Person,在类里定义了两个构造函数和一个方法。然后实例化这个类,调用它的方法通过这个例子,读者可以梳理一下所学到的类中的概念。 新建一个名为“ClassTest”的控制台应用程序,并添加一个名为“Person.cs”的文件,给该文件添加代码如6-5所示。,6.3 用对象思考:类的成员,要描述一个对象,往往从两方面入手,一是描述对象所具有的状态,二是描述对象所能完成的操作。一般情况下,字段和属性表示对象的状态,而方法表示对
12、象可以采取的操作。本节的主题描述将属性、字段和方法添加到类的机制及处理与这些项关联的问题。,6.3.1 定义类的属性,【本节示例参考:源代码chapter6 6.3.1PropertyTest】 C#通过属性来读取、编写或计算私有的字段的值。属性相当于对字段访问的封装。通常,属性包括get和set的代码块,get用于读取字段的值,set用于设置字段的值。代码6-7给类Person定义了两个属性,一个用于封装姓名字段,一个用于封装身高字段。,6.3.2 属性和字段的区别,【本节示例参考:源代码chapter6 6.3.2PropertyTest】 属性跟字段有什么区别呢?属性是类中可以像类的字段
13、一样访问的方法。属性可以为类字段提供保护,避免字段在对象不知道的情况下被更改。属性具有多种用法:它们可在允许更改前验证数据;它们可透明地公开某个类上的数据,该类的数据实际上是从其他源(例如数据库)检索到的;当数据被更改时,它们可采取行动,例如引发事件或更改其他字段的值。,6.3.3 命名规则,在计算机编程中,经常用到的命名规则主要有驼峰命名法、帕斯卡命名法和匈牙利命名法。 (1)驼峰(Camel)命名法:正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字,C#中的字段建议采用该命名法(这里所指的是小骆驼式命名法),如: string userName; int userId
14、; (2)帕斯卡(Pascal)命名法:与驼峰命名法类似。只不过骆驼命名法是首字母小写,而帕斯卡命名法是首字母大写,C#中的属性和方法建议采用帕斯卡命名法,如: string UserName; int UserId; DisplayInfo(); SayHello(); (3)匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中。Windows编程中用到的变量、宏的命名采用的是匈牙利命名法,匈牙利命名的标识符的名字以一个或者多个小写字母开头作为前缀;前缀之后的是首字母大写的一个单词或多个单词组合,该单词要指明变量的用途。如: int iSize; string sUser
15、Name;,6.3.4 this关键字,【本节示例参考:源代码chapter6 6.3.4ThisTest】 this关键字用在类中,用于访问该类的成员。当类实例化后,this代表被实例化的对象。代码6-9展示了this关键字的用法。,6.3.5 类成员的访问,类的每个成员都有关联的可访问性,它控制能够访问该成员的程序文本区域。有五种可能的可访问性形式。表6-2概述了这些可访问性。,6.3.6 静态类和静态成员,【本节示例参考:源代码chapter6 6.3.6StaticTest】 在第5章讲数组的时候,用Array类的Sort()方法作排序,如: int numbers = 3, 5, 2
16、, 4, 1 ; /定义数组 System.Array.Sort(numbers); /开始排序 读者会发现Array类在调用Sort方法的时候,并没有对类实例化,读者再看一下Sort方法的声明: public static void Sort(Array array); 这是因为static关键字在起作用。static修饰的类的成员属于静态成员,静态成员是属于类本身,而不是属于对象的成员。static修饰符可用于类、字段、方法、属性、运算符、事件和构造方法,但不能用于索引器、析构函数或类以外的类型。,6.3.7 析构函数,【本节示例参考:源代码chapter66.3.7Destruction
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象
链接地址:https://www.31doc.com/p-2605224.html