1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,C#,面向对象程序设计概念,主讲人:,个人简介,面向对象,的软件开发技术是当今计算机技术发展的重要成果和趋势之一。,C#,是,完全,面向对象的程序设计语言,。,类和对象,是面向对象程序设计中的重要概念。,封装性、继承性和多态性,是面向对象的特点。,本章主要介绍面向对象程序设计中的基本概念,类和对象,一 面向对象的概述,1.1,面向对象的概念,面向对象程序设计,(,Object-Oriented Programming,)简称,OOP,技术。,OOP,是一种系统化的程序设计方法,强调直接以,问题域,(即现实世
2、界)中的,事物,为中心来考虑问题,并按照这些事物的本质特征把它们抽象为对象。,OOP,的主要思想是将数据及处理这些数据的操作都封装(,Encapsulation,)到一个称为,类(,Class,),的数据结构中。,在这种方法下,编程人员不需要过分关注“如何做”,而是重点关注“做什么”。,OOP,编程思想较好地适应了现实世界中的问题,因而得以广泛应用。,1.2,面向对象语言的特点,面向对象的编程方式具有继承、封装和多态性特点。,(1),继承,继承(,inheritance,)是面向对象编程技术的一块基石,通过它可以创建,分等级层次关系,的类。,继承是父类和子类之间共享数据和方法的机制,通常把父类
3、称为基类,子类称为派生类,。子类可以从其父类中继承属性和方法,通过这种关系模型可以简化类的设计。,假如已经定义了,A,类,接下来准备定义,B,类,而,B,类中有很多属性和方法与,A,类相同,那么就可以实现,B,类继承于,A,类,这样就无须再在,B,类中定义,A,类中已具有的属性和方法,从而可以在很大程度上提高程序的开发效率,提高代码利用率。,例如,可以将水果看作一个父类,那么水果类具有颜色属性。然后再定义一个香蕉类,在定义香蕉类时就不需要定义香蕉类的颜色属性,通过如下继承关系可以使香蕉类具有颜色属性。,class,水果类,Public,颜色,;/,在水果类中定义颜色属性,class,香蕉类,:
4、水果类,/,香蕉类中其他的属性和方法,1.2,面向对象语言的特点,1.2,面向对象语言的特点,(2),封装,类是属性和方法的集合,为了实现某项功能而定义类后,开发人员并不需要了解类体内每行代码的具体涵义,只需通过对象来调用类内某个属性或方法即可实现某项功能,这就是类的封装。,封装提供了外界与对象进行交互的控制机制,设计和实施者可以公开外界需要直接操作的属性和方法,而把其他的属性和方法隐藏在对象内部。这样可以让软件程序封装化,而且可以避免外界错误地使用属性和方法。,1.2,面向对象语言的特点,以汽车为例,厂商把汽车的颜色公开给外界,外界想怎么改颜色都可以的,但是防盗系统的内部构造是隐藏起来的;
5、更换汽缸可以是公开的行为,但是汽缸和发动机的协调方法就没有必要让用户知道了。,1.2,面向对象语言的特点,(3),多态性,类的多态性,(polymorph),指对于属于,同一个类,的对象,,在不同的场合能够表现出不同的特征,。,多态性主要指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类具有不同的意义。,例如:某个对象,其基类为“笔”,在调用它的“写”方法时,程序会自动判断出它的具体类型,如果是毛笔,则调用毛笔类对应的“写”方法,如果是铅笔,则调用铅笔类对应的“写”方法。,2,定义类,在,C#,中,“类”是一种数
6、据结构,它可以包含,数据成员,(常量和字段)、,函数成员,(方法、属性、事件、索引器、运算符、构造函数、析构函数)。,类是个静态的概念,,如果要使用某个类,就应该定义该类的一个或多个实例,每一个实例就是一个对象。如果要使用某个类,只要向该类发送消息即可,而对象会利用自身存在的函数来响应接收的消息。,类支持继承,继承是一种使派生类可以对基类进行扩展和专用化的机制。,2.1,类的概念,类是对象概念在面向对象编程语言中的反映,是相同对象的集合。类描述了一系列在概念上有相同含义的对象,并为这些对象统一定义了属性和方法。,类是对象的抽象描述和概括,。例如:车是一个类,自行车、汽车、火车也是类。但是自行车
7、汽车、火车都是车这个类的子类。因为他们有共同的特点都是交通工具,都有轮子,都可以运输。而汽车有颜色,车轮、车门、发动机,这是和自行车、火车的不同之处,是汽车类自己的属性。,2.1,类的概念,而具体到某辆汽车就是一个对象了,例如:车牌照为苏,A2345*,的黑色奥迪轿车。用具体的属性可以在汽车类中唯一确定自己,并且对象具有类的操作。简而言之,类是,C#,中最为强大的数据类型,它定义了数据类型的数据和行为。,在,C#,中,所有的内容都被封装在类中,类是,C#,的基础,每个类通过属性和方法及其他一些成员来表达事物的状态和行为。,事实上,编写,C#,程序的主要任务就是定义各种类及类的各种成员。,2.
8、2,类的声明,简单地讲,类是一种数据结构,用于模拟现实中存在的对象和关系,包含静态的属性和动态的方法。,C#,中类的声明需要使用,class,关键字,并把类的主体放在花括号中,格式如下:,类修饰符,class,类名,:,基类类名,/,属性,/,方法,其中,除了,class,关键字和类名外,剩余的都是可选项;类名必须是合法的,C#,标识符,它将作为新定义的类的类型标识符。,2.2,类的声明,class,关键字前面是访问级别。在,C#,中,类的访问级别由类的修饰符进行限定,类的修饰符如表,5-1,所示。在上例中,如果类的修饰符为,public,,这表示该类可以被任何其他类访问。类的名称位于,cla
9、ss,关键字的后面。,2.2,类的声明,以上的类修饰符可以两个或多个组合起来使用,但需要注意下面几点:,(1),在一个类声明中,同一类修饰符不能多次出现,否则会出错。,(2),new,类修饰符仅允许在嵌套类中表示类声明时使用,表明类中隐藏了由基类中继承而来的、与基类中同名的成员。,(3),在使用,public,、,protected,、,internal,和,private,这些类修饰符时,要注意这些类修饰符不仅表示,所定义类,的访问特性,而且还表明,类中成员,声明中的访问特性,并且它们的可用性也会对派生类造成影响。,(4),抽象类修饰符,abstract,和密封类修饰符,sealed,都是受
10、限类修饰符。,(5),如果省略类修饰符,则默认为私有修饰符,private,。,(6),对于具有继承关系的类才有基类。如果一个类没有从任何类继承,就不需要基类类名选项。在,C#,中,一个类只能从另一个类中继承,而不能从多个类中继承;而在,C+,及其他面向对象的程序设计语言中,一个类可以从多个其他类中继承。如果一个类想继承多个类的特点,可以采用接口的方法实现。,2.2,类的声明,-,实例,下面以一个学生类的实例,说明该类在,C#,中的实现。该类的类图如图,5-3,所示。,【,例,5-1】,定义一个学生类。,public class Student,/,属性,/,学号、姓名、年龄等,/,方法,/,
11、长大、入学、毕业等,类是现实世界中对象或者关系的模拟,是一个抽象的概念。例如,像“学生”这个概念,世界上并没有一个叫做“学生”的活生生的东西,而只有“张三”或者“李四”这些具体的学生实例,这反应了类和对象的关系。,(,1,),类是具有相同或相似结构、操作和约束规则的,对象组成的集合,。,(,2,),对象是某一类的具体化实例,每一个类都具有某些共同特征对象的抽象。,C#,使用,new,关键字来实现实例化类得到一个具体的对象,其格式如下:,class-name object-name=new Class-name(paramenter-list);,在前面的示例中已经用到创建类实例,都是使用,new,关键字得到一个具体的学生对象。如下列代码所示:,Student s=new Student();,3,结论,本章主要介绍了面向对象的一些基本知识,包括对象和类。,面向对象语言的特点:继承、封装和多态性。,类的定义以及类的声明。,感谢各位领导、老师的指导!,






