面向对象程序设计基础ppt课件.ppt
《面向对象程序设计基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计基础ppt课件.ppt(189页珍藏版)》请在三一办公上搜索。
1、第5章 面向对象程序设计基础,面向对象的软件开发技术是当今计算机技术发展的重要成果和趋势之一。C#是完全面向对象的程序设计语言。类和对象是面向对象程序设计中的重要概念。封装性、继承性和多态性是面向对象的特点。本章主要介绍面向对象程序设计中的基本概念和基于C#的面向对象程序设计的方法。,2022/11/15,2,C#程序设计实用教程,5.1 面向对象概述,5.1.1 面向对象的概念面向对象程序设计(Object-Oriented Programming)简称OOP技术。面向对象编程技术是计算机编程技术中一次重大的进步。在面向对象编程技术出现之前,程序的设计普遍采用的是面向过程的程序设计方法。,2
2、022/11/15,3,C#程序设计实用教程,5.1.1 面向对象的概念OOP是一种系统化的程序设计方法,强调直接以问题域(即现实世界)中的事物为中心来考虑问题,并按照这些事物的本质特征把它们抽象为对象。OOP的主要思想是将数据及处理这些数据的操作都封装(Encapsulation)到一个称为类(Class)的数据结构中。使用这个类时,只需要定义一个类的变量即可,这个变量(Object)通过调用对象的数据成员完成对类的使用。在这种方法下,编程人员不需要过分关注“如何做”,而是重点关注“做什么”。OOP编程思想较好地适应了现实世界中的问题,因而得以广泛应用。,2022/11/15,4,C#程序设
3、计实用教程,5.1.2 面向对象语言的特点,面向对象的编程方式具有继承、封装和多态性等特点。(1)继承在生活中,事物有很多的相似性,这种相似性是人们理解纷繁事物的一个基础。因为事物之间往往具有某种“继承”关系。比如,儿子和父亲往往有许多相似之处,因为儿子从父亲那里遗传了许多特性;汽车与卡车、轿车、客车之间存在一般化与具体化的关系,它们也可以用继承来实现。,2022/11/15,5,C#程序设计实用教程,5.1.2 面向对象语言的特点,继承(inheritance)是面向对象编程技术的一块基石,通过它可以创建分等级层次关系的类。继承是父类和子类之间共享数据和方法的机制,通常把父类称为基类,子类称
4、为派生类。子类可以从其父类中继承属性和方法,通过这种关系模型可以简化类的设计。假如已经定义了A类,接下来准备定义B类,而B类中有很多属性和方法与A类相同,那么就可以实现B类继承于A类,这样就无须再在B类中定义A类中已具有的属性和方法,从而可以在很大程序上提高程序的开发效率,提高代码利用率。,2022/11/15,6,C#程序设计实用教程,5.1.2 面向对象语言的特点,例如,可以将水果看作一个父类,那么水果类具有颜色属性。然后再定义一个香蕉类,在定义香蕉类时就不需要定义香蕉类的颜色属性,通过如下继承关系可以使香蕉类具有颜色属性。class 水果类Public 颜色;/在水果类中定义颜色属性cl
5、ass 香蕉类 : 水果类/香蕉类中其他的属性和方法,2022/11/15,7,C#程序设计实用教程,5.1.2 面向对象语言的特点,(2) 封装类是属性和方法的集合,为了实现某项功能而定义类后,开发人员并不需要了解类体内每行代码的具体涵义,只需通过对象来调用类内某个属性或方法即可实现某项功能,这就是类的封装。封装提供了外界与对象进行交互的控制机制,设计和实施者可以公开外界需要直接操作的属性和方法,而把其他的属性和方法隐藏在对象内部。这样可以让软件程序封装化,而且可以避免外界错误地使用属性和方法。,2022/11/15,8,C#程序设计实用教程,5.1.2 面向对象语言的特点,以汽车为例,厂商
6、把汽车的颜色公开给外界,外界想怎么改颜色都可以的,但是防盗系统的内部构造是隐藏起来的;更换汽缸可以是公开的行为,但是汽缸和发动机的协调方法就没有必要让用户知道了。,2022/11/15,9,C#程序设计实用教程,5.1.2 面向对象语言的特点,(3) 多态性类的多态(polymorph)指对于属于同一个类的对象,在不同的场合能够表现出不同的特征。多态性主要指在一般类中定义的属性或行为,被特殊类继承之后,可以具有不同数据类型或表现出不同的行为。这使得同一个属性或行为在一般类及其各个特殊类具有不同的意义。例如:某个对象,其基类为“笔”,在调用它的“写”方法时,程序会自动判断出它的具体类型,如果是毛
7、笔,则调用毛类对应的“写”方法,如果是铅笔,则调用铅笔对应的“写”方法。,2022/11/15,10,C#程序设计实用教程,5.2定义类,在C#中,“类”是一种数据结构,它可以包含数据成员(常量和字段)、函数成员(方法、属性、事件、索引器、运算符、构造函数、析构函数)。类是个静态的概念,如果要使用某个类,就应该定义该类的一个或多个实例,每一个实例就是一个对象。如果要使用某个类,只要向该类发送消息即可,而对象会利用自身存在的函数来响应接收的消息。类类型支持继承,继承是一种使派生类可以对基类进行扩展和专用化的机制。,2022/11/15,11,C#程序设计实用教程,5.2.1 类的概念,类是对象概
8、念在面向对象编程语言中的反映,是相同对象的集合。类描述了一系列在概念上有相同含义的对象,并为这些对象统一定义了属性和方法。类是对象的抽象描述和概括。例如:车是一个类,自行车、汽车、火车也是类。但是自行车、汽车、火车都是车这个类的子类。因为他们有共同的特点都是交通工具,都有轮子,都可以运输。而汽车有颜色,车轮、车门、发动机,这是和自行车、火车的不同之处,是汽车类自己的属性。而具体到某辆汽车就是一个对象了,例如:车牌照为苏A2345*的黑色奥迪轿车。用具体的属性可以在汽车类中唯一确定自己,并且对象具有类的操作。简而言之,类是C#中最为强大的数据类型,它定义了数据类型的数据和行为。,2022/11/
9、15,12,C#程序设计实用教程,5.2.1 类的概念,在C#中,所有的内容都被封装在类中,类是C#的基础,每个类通过属性和方法及其他一些成员来表达事物的状态和行为。事实上,编写C#程序的主要任务就是定义各种类及类的各种成员。,2022/11/15,13,C#程序设计实用教程,5.2.2 类的声明,简单地讲,类是一种数据结构,用于模拟现实中存在的对象和关系,包含静态的属性和动态的方法。下面来看如何声明类及其属性、方法。在声明一个类之前,需要向工程中新添加一个文件。,2022/11/15,14,C#程序设计实用教程,5.2.2 类的声明,1. 向工程添加新项目在VS.NET中添加一个新的类文件以
10、及其他新项目。操作很简单,具体步骤如下:(1)在【解决方案浏览器】视图中,在工程上单击右键,再在打开的快捷菜单中选择【添加】【类】,如图5-1所示。,2022/11/15,15,C#程序设计实用教程,5.2.2 类的声明,(2)在此时弹出的对话框中选择添加类文件,并为新文件命名,以.cs作为后缀,如图5-2所示。(3)单击【打开】按钮后,就可以在【解决方案浏览器】视图中看到这个新的类文件了。(4)双击该类文件,可以在其中声明新的类。当然,也可以把多个功能类似的类放在一个类文件中。,2022/11/15,16,C#程序设计实用教程,5.2.2 类的声明,2. 声明类C#中类的声明需要使用clas
11、s关键字,并把类的主体放在花括号中,格式如下:类修饰符 class 类名 :基类类名/属性/方法其中,除了class关键字和类名外,剩余的都是可选项;类名必须是合法的C#标识符,它将作为新定义的类的类型标识符。,2022/11/15,17,C#程序设计实用教程,5.2.2 类的声明,注意:为了促进C#程序的标准化和可读性,应尽量采用.NET Framework推荐的类命名规则:类名尽量是一个名词或者名词短语,首字母大写,并尽量避免缩写。class关键字前面是访问级别。在C#中,类的访问级别由类的修饰符进行限定,类的修饰符如表5-1所示。在上例中,如果类的修饰符为public,这表示该类可以被任
12、何其他类访问。类的名称位于class关键字的后面。,2022/11/15,18,C#程序设计实用教程,5.2.2 类的声明,以上的类修饰符可以两个或多个组合起来使用,但需要注意下面几点:(1) 在一个类声明中,同一类修饰符不能多次出现,否则会出错。(2) new类修饰符仅允许在嵌套类中表示类声明时使用,表明类中隐藏了由基类中继承而来的、与基类中同名的成员。,2022/11/15,19,C#程序设计实用教程,5.2.2 类的声明,(3) 在使用public、protected、internal和private这些类修饰符时,要注意这些类修饰符不仅表示所定义类的访问特性,而且还表明类中成员声明中的
13、访问特性,并且它们的可用性也会对派生类造成影响。(4) 抽象类修饰符abstract和密封类修饰符sealed都是受限类修饰符。,2022/11/15,20,C#程序设计实用教程,5.2.2 类的声明,(5) 如果省略类修饰符,则默认为修饰符internal。(6) 对于具有继承关系的类才有基类。如果一个类没有从任何类继承,就不需要基类类名选项。在C#中,一个类只能从另一个类中继承,而不能从多个类中继承;而在C+及其他面向对象的程序设计语言中,一个类可以从多个其他类中继承。如果一个类想继承多个类的特点,可以采用接口的方法实现。,2022/11/15,21,C#程序设计实用教程,Msdn:搜索a
14、ccess modifiers,Class and Struct Accessibility Classes and structs that are declared directly within a namespace (in other words, that are not nested within other classes or structs) can be either public or internal. Internal is the default if no access modifier is specified.,Class and Struct Member
15、 Accessibility Class members (including nested classes and structs) can be declared with any of the five types of access. Struct members cannot be declared as protected because structs do not support inheritance.,访问权限控制图解,public The type or member can be accessed by any other code in the same assemb
16、ly or another assembly that references it.private The type or member can be accessed only by code in the same class or struct.protected The type or member can be accessed only by code in the same class or struct, or in a class that is derived from that class.internal The type or member can be access
17、ed by any code in the same assembly, but not from another assembly.protected internal The type or member can be accessed by any code in the assembly in which it is declared, or from within a derived class in another assembly. Access from another assembly must take place within a class declaration th
18、at derives from the class in which the protected internal element is declared, and it must take place through an instance of the derived class type.,5.2.2 类的声明,下面以一个学生类的实例,说明该类在C#中的实现。该类的类图如图5-3所示。【例5-1】定义一个学生类。public class Student /属性 /学号、姓名、年龄等 /方法 /长大、入学、毕业等,2022/11/15,26,C#程序设计实用教程,5.2.3 类的静态特性,
19、属性(或字段)可以看作是类的静态描述,同样,在定义属性时,也可以使用访问修饰符来定义其访问级别。属性的定义格式如下:attribe-modifier data-type attribute-name;其中,属性修饰符attribe-modifier包括public、private、protected。下面的例子用来说明public和private修饰符的作用。,2022/11/15,27,C#程序设计实用教程,5.2.3 类的静态特性,【例5-2】public和private修饰符的作用。using System;namespace Example_PublicAndPrivate / / 学
20、生类 / public class Student /属性 public string strName;/公有属性 private int nAge;/私有属性 /方法. ,/ / Main函数类 / class Test / / 应用程序的主入口点。 / static void Main(string args) Student s = new Student(); s.strName = 张三“;/正确 s.nAge = 20;/错误,不能访问 ,2022/11/15,28,C#程序设计实用教程,5.2.3 类的静态特性,上述程序中,定义一个Student类,包含一个公有属性“strNam
21、e”和一个私有属性“nAge”。在Test类中,试图对学生类的对象s的年龄进行设置,但是Student类的nAge属性是私有的,在其他的类中无法访问,因此程序会报错,报错信息如图5-4所示。而访问其公有属性strName就不会有问题。,2022/11/15,29,C#程序设计实用教程,5.2.4 类的动态行为,类的属性是客观世界实体性质的抽象,而方法是实体所能执行的操作。下面来看如何声明其动态方法。同属性一样,类的方法也具有访问属性,如public、private、protected等,其定义格式如下:method-modifier return-type method-nameparamen
22、t-list;下面的例子为Student类定义了公有方法SetAge()和GetAge(),用于设置和获取其静态属性“年龄”。,2022/11/15,30,C#程序设计实用教程,5.2.4 类的动态行为,【例5-3】类的公有方法的示例。using System;namespace DeclareMethod / / 学生类 / public class Student /属性 public string strName;/公有属性 private int nAge;/私有属性 /方法. public void SetAge(int _nAge) this.nAge = _nAge; ,2022
23、/11/15,31,C#程序设计实用教程,5.2.4 类的动态行为,ublic int GetAge() return this.nAge; / / Main函数类 / class Class1 static void Main(string args) Student s = new Student(); s.SetAge(20);/赋值年龄 Console.WriteLine(s.GetAge();/获取年龄 ,2022/11/15,32,C#程序设计实用教程,5.2.4 类的动态行为,程序中为各个学生定义了公有方法SetAge(),其功能是为类的私有属性“年龄”赋值;同时为学生类定义了获
24、取“年龄”属性值的公有方法GetAge()。通过SetAge()方法,并传递适当的参数,便可以为学生s的年龄赋值,而通过调用GetAge()方法获取其年龄,并输出。,2022/11/15,33,C#程序设计实用教程,5.2.5 创建类的实例,类是现实世界中对象或者关系的模拟,是一个抽象的概念。例如,像“学生”这个概念,世界上并没有一个叫做“学生”的活生生的东西,而只有“张三”或者“李四”这些具体的学生实例,这反应了类和对象的关系。(1)类是具有相同或相似结构、操作和约束规则的对象组成的集合。(2)对象是某一类的具体化实例,每一个类都具有某些共同特征对象的抽象。C#使用new关键字来实现实例化类
25、得到一个具体的对象,其格式如下:class-name object-name=new Class-name(paramenter-list);在前面的示例中已经用到创建类实例,都是使用new关键字得到一个具体的学生对象。如下列代码所示:Student s = new Student();,2022/11/15,34,C#程序设计实用教程,5.2.6 继承类,继承的本质是代码重用。当要构造一个新的类时,通常无需从头开始。例如,在学生类的基础上,可以建立一个“大学生”类。很明显,“大学生”这个类具有自己的新特点,如“所在系”就并不是所有的学生都有的,而是大学生才有的特殊性质。因此,可以把大学生看作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 基础 ppt 课件

链接地址:https://www.31ppt.com/p-1371583.html