C面向对象课程序设计课件第一章概述.ppt

上传人:牧羊曲112 文档编号:3146208 上传时间:2023-03-11 格式:PPT 页数:60 大小:917.51KB
返回 下载 相关 举报
C面向对象课程序设计课件第一章概述.ppt_第1页
第1页 / 共60页
C面向对象课程序设计课件第一章概述.ppt_第2页
第2页 / 共60页
C面向对象课程序设计课件第一章概述.ppt_第3页
第3页 / 共60页
C面向对象课程序设计课件第一章概述.ppt_第4页
第4页 / 共60页
C面向对象课程序设计课件第一章概述.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《C面向对象课程序设计课件第一章概述.ppt》由会员分享,可在线阅读,更多相关《C面向对象课程序设计课件第一章概述.ppt(60页珍藏版)》请在三一办公上搜索。

1、Object Oriented,面向对象技术与C+,计算机学院,Object Oriented,教材:,C+面向对象程序设计,陈维兴,中国铁道出版社,Object Oriented,参考书,面向对象的理论与C+实践,王燕,清华大学出版社Visual C+实用教程,郑阿奇,电子工业出版社Visual C+6.0技术内幕,David J.Kruglinski著,北京希望电子出版社,Object Oriented,课程性质与设置目的,性质计算机专业的专业基础课学习目标:掌握面向对象程序设计的基本概念及基本思想;掌握类、对象的概念及C+语言实现方法;掌握继承的概念及C+语言实现方法;掌握多态的概念及C

2、+语言实现方法;掌握C+语言模板、流类库的应用;初步建立计算机专业必备的面向对象程序设计思想。,Object Oriented,理论学习理解、掌握基本概念,多看例题理论指导实践,实践提高认识实践学习勤思考,多动手重视上机实习环境坚持自学,课程学习方法,Object Oriented,成绩评定,总成绩=平时成绩(10%)+实验(20%)+期末考试成绩(70%)平时成绩包括考勤,作业,课堂小测验等实验成绩根据考勤及实验内容完成的情况确定期末考试指学期末学校安排的正式考试,Object Oriented,第1章 面向对象程序设计概述,Object Oriented,面向对象概述,是一种全新的软件工程

3、技术;程序设计方法更符合人类的思维方式,更直接地描述客观世界;通过提高代码的可重用性、可扩充性和程序自动生成功能来提高编程效率,大大减少软件维护的开销;面向对象技术已经被越来越多的软件技术人员所接受和采用。,Object Oriented,1.1 面向对象程序设计概述,OO思想的来源需要:人们希望直接与计算机进行交互,而不必进行专门的学习和长时间训练。目标:软件系统对现实世界的直接模拟,尽量实现世界中的事务直接映射到软件系统的接空间。它希望用户用最小的气力,最大程度地利用软件系统来解决问题。,Object Oriented,现实世界物质意识OO世界具体事务抽象概念,Object Oriente

4、d,一切都是对象 例题:编写一个开发票程序,需要对发票的名细栏进行计算。,面向对象思路:对象 一组属性 操作:发票总计,非面向对象思路:定义数据结构定义函数,Object Oriented,1.1 面向对象程序设计概述,从程序设计方法的角度看,面向对象是一种新的程 序设计范型(paradigm),其基本思想是使用对象、类、继承、封装、聚合、关联、消息、多态性等基本概念来进行程序设计。自八十年代以来,面向对象方法已深入到计算机软件领域 的几乎所有分支。它不仅是一些具体的软件开发技术与策 略,而且是一整套关于如何看待软件系统与现实世界的关 系,用什么观点来研究问题并进行问题求解,以及如何进 行系统

5、构造的软件方法学。从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。,Object Oriented,1.1 面向对象程序设计概述,程序设计方法的演进 1、程序设计语言:机器语言汇编语言高级语言(面向过程的高级语言面向对象的编程语言面向对象的可视化编程语言)。2、程序设计方法:程序设计的自然描述结构化程序设计(面向过程的程序设计方法)面向对象的程序设计方法面向对象的可视化编程方法。,Object Oriented,面向过程,Object Oriented,Object Oriented,1.1 面向对象程序设计概述,3、结构化(

6、面向过程)程序设计方法与面向对象程序设计方法的关系。观点1:面向过程的程序设计方法可以作为面向对象程序设计方法的基础,学习面向对象的程序设计应具备面向过程的程序设计方法方面的知识。观点2:面向对象的程序设计方法与面向过程的程序设计方法在思维方法上与面向过程程序设计方法相背离,是独立的程序设计体系。,Object Oriented,1.1 面向对象程序设计概述,面向过程程序设计的特点面向过程程序设计思想的核心:功能分解面向过程程序设计思想的主要特点:程序与数据相分离。即:程序=算法+数据结构面向过程程序设计思想的主要缺点:程序代码的可重用性差,维护代价高。,Object Oriented,1.1

7、 面向对象程序设计概述,面向对象程序设计的特点 面向对象程序设计将数据及数据的操作(算法)当成一个整体。即:程序=(算法+数据结构)其主要思想:面向对象程序设计,是把一些具有相同数据特性的实例抽象成为一个类,通过对类的定义和类的使用(即对象的使用)实现对实例的使用的面向对象程序设计是一种新的程序设计范型。,Object Oriented,1.1 面向对象程序设计概述,特点:程序由类的定义及类的使用两部分组成,通常在主程序定义各对象并规定对象间传递消息的规律;程序中的一切操作都是通过发送消息实现的,对象接收消息后,启动相应的消息完成相应的操作对象内、对象间采用消息传递机制;面向对象的程序设计最主

8、要的优点:软件的可重用性面向对象的程序设计最重要的的概念:类与对象。,Object Oriented,1.2 面向对象程序设计的基本概念,一、对象 对象的概念 对象是我们认识世界的一些基本单元(人或物等)例【1.1】观察学生对象。如下表:,Object Oriented,1.2 面向对象程序设计的基本概念,表中各对象都是现实世界中一个客观实体,其特性是:有一个名字来惟一标识该对象;有一组属性(或称状态)描述对象的特征;有一组操作来描述对象的各种行为(实现其功能)。例【1.2】观察WINDOWS下窗口的命令按钮:每个命令按钮都有一个名字,如:“确定”、“取消”;每个按钮都有一些属性,如:“长、高

9、、颜色等”;对每个按钮均可实现一些操作,如:“改变焦点、单击、双击、按回车键等”总之:对象是现实世界一个个客观实体。,Object Oriented,1.2 面向对象程序设计的基本概念,对象:是既包括属性(状态)数据,又包括作用于属性数据的一组操作的封装体。属性:对象的属性数据或状态数据通常称为属性。方法/服务:对象的能力(功能),即能实现的操作称为方法或服务。注:在C+语言中,属性称作数据成员,服务/方法称为成员函数。,Object Oriented,1.2 面向对象程序设计的基本概念,对象的特性1封装性2模块独立性:每个对象都是一个独立的模块,具有独立的计算能力,通过消息激活对象自身的动作

10、;3动态连接性:通过消息传递机制将对象动态地联接在一起,使多个对象共同完成某项任务。4系统的易维护性,Object Oriented,1.2 面向对象程序设计的基本概念,二、类如例【1.1】,对象“张三”、“李四”,具有相同的一些属性、操作,将其抽取具体所描述的数据,可抽象为一个类别类:即学生类。如例【1.2】,“确定”、“取消”按钮等可抽象为一个类命令按钮类。类就是具有相同的属性和相同的操作的一组对象的抽象。,Object Oriented,1.2 面向对象程序设计的基本概念,由此可知:类是对象的抽象(如“学生”是对张三、李四等的抽象,“命令按钮”是对确定、取消等的抽象);对象是类的实例(如

11、张三是“学生”的一个实例,确定是“命令按钮”的一个实例)。在实际应用中,先定义一个类,然后再定义一个个具体对象。在面向对象程序设计中的定义:类是创建对象的样板,它包含对创建对象的状态描述及操作行为的说明;对象是类的实例化(对象变量、对象数组等),Object Oriented,1.2 面向对象程序设计的基本概念,三、消息 概念 消息(Message):是描述事件发生的信息,是一个对象向另一个对象发出的请求。消息传递:面向对象程序设计技术所提供的一种允许一个对象与另一个对象交互的机制。组成 1.接受消息的对象;2.消息名;3.零个或若干个参数。,Object Oriented,1.2 面向对象程

12、序设计的基本概念,消息的三个性质同一个对象可以接受不同形式的多个消息,产生的消息各不相同;相同形式的消息可以发送给不同的对象,产生的响应可以各不相同;一个对象可以立即响应发送给它的消息,也可以暂时不予响应消息。,Object Oriented,1.3 面向对象程序设计的基本特性,面向对象系统的最突出的特性:封装性、继承性、多态性。一、数据的抽象与封装 例【1.3】现实社会中抽象与封装的例子:家电设备(电视机等)的使用;汽车的驾驶。数据的抽象与封装的基本概念1.数据的抽象数据的抽象是对数据进行实例分析,抽取其共同性质的结果。如:“学生”对象,先对一些学生实例进行分析,确定他们的共同特性或主要特性

13、(姓名、性别、年龄、专业等),忽略不同点或次要的引不起兴趣的那些特性(长相差异、性格差异等)。,Object Oriented,1.3 面向对象程序设计的基本特性,2.数据的封装 将数据结构以及作用于数据结构上的操作组成一个实体,把数据的表示方式及操作细节隐藏起来,用户通过接口对数据进行操作。这样,用户就只知道操作接口对该数据进行操作,而不知道内部是如何做的以及如何表示的数据的封装。例【1.4】银行帐户的抽象与封装分析:用户关心的问题:存款、取款、转帐、查询、修改密码数据结构:业主、帐号、余额、利息、密码等,Object Oriented,数据的抽象与封装,1.3 面向对象程序设计的基本特性,

14、Object Oriented,1.3 面向对象程序设计的基本特性,结论:抽象是抽取数据共同性质的结果,而封装则是隐蔽了抽象的内部实现细节的结果,是将数据抽象的外部接口与内部实现细节清楚地分离开。,Object Oriented,1.3 面向对象程序设计的基本特性,二、继承性、继承的概念 所表达的是对象类之间相互的关系。这种关系使的某一类可以继承另外一个类的特征和能力。例【1.4】现实社会中继承的实例由此可知:继承是将客观世界中一般和特殊关系模型化成层次结构;通过继承可实现和增强代码的可重用性通过继承基类的属性、方法实现;在创见新的派生类时,只要指明了派生类是由哪个基类派生的便可自动继承基类的

15、属性和方法。修改或扩充程序功能时不必修改原代码(增加新代码即可)。,Object Oriented,1.3 面向对象程序设计的基本特性,继承的几个名词:基类(父类)派生类(子类)直接基类及间接基类 继承的分类单继承多继承,Object Oriented,1.3 面向对象程序设计的基本特性,三、多态性多态性:是指不同的对象在收到相同的消息时产生多种不同的行为。多态性的例子。“+”:2+3=5 设复数a=2+3i b=3+4i 则:a+b=5+7i(运算符重载)max()函数的调用:max(a,b)求二个数之间的最大数;max(a,b,c)求三个数之间的最大数;max(*p,n)求n个数的最大数。

16、(函数重载),Object Oriented,Object Oriented,1.4 面向对象程序设计语言,要求:必须支持抽象数据类型和继承性。提供继承性、多态性和动态链接机制,使得类和类库成为可重用的程序模块。1、LISP家族:Flavors、LOOPS、CommonLOOPS、CommonObjects2、Simula3、Smalltalk4、C家族:TC、BC、VC5、PASCAL家族:Turbo PASCAL、Object PASCAL6、Visual Basic7、Java8、.NET与C#,Object Oriented,C+语言 混合型面向对象程序设计语言;20世纪80年代在C语

17、言的基础上开发而来;C+是对C的革命,既兼容C的语法,又全面支持面向对象;广泛流行,并有各种版本的C+编译系统;,Object Oriented,Java语言 1995年6月由SUN推出;一种纯粹的面向对象程序设计语言;避免了C、C+中的不合理因素;真正实现了与平台无关,可运行于各种操作系统和芯片;,Object Oriented,Visual Basic语言 1991年Microsoft在BASIC语言的基础上推出;继承了BASIC语言的特点,语法简单、容易学习、容易使用,数据处理能力强;采用了面向对象、事件驱动的编程机制和可视化程序设计方法;降低了开发Windows应用程序的难度,有效地提

18、高了应用程序开发的效率。,Object Oriented,Visual C+6.0 Visual C+是以C+作为语言、以MFC类库为基础的功能强大的可视化软件开发工具库;Visual C+可以完成各种各样的应用程序的开发,从底层软件直到上层直接面向用户的软件以及网络应用程序等;Visual C+提供强大的调试功能,为大型应用程序开发提供了有效的排错手段;,Object Oriented,Visual C+.NET Visual C+NET 是MicrosoftNET(简称NET)的核心;软件开发人员利用NET能够很快速的创建下一代面向任何设备及任何平台集成的Internet应用环境;使Mic

19、rosoft现有的软件在Internet时代既适用于传统的PC,又能够满足蜂窝电话、个人数字助理(PDA)等新设备的需求;,Object Oriented,面向对象的软件工程包括:面向对象分析(OOA);面向对象设计(OOD);面向对象编程(OOP);面向对象测试(OOT);面向对象软件维护(OOSM);,1.5 面向对象的软件开发,Object Oriented,面向对象分析是指在深入、全面理解问题本质需求的基础上,发现对象与类,确定属性、确定对象模式、确定对象类的关联关系、确定服务等要素。,1.面向对象分析,Object Oriented,抽象与分类:抽象(化)忽略事物的非本质特征,只注意

20、那些与当前目标有关的本质特征,从而找出事物的共性。把具有共同性质的事物划分为一类,得出一个抽象的概念,叫做分类。,Object Oriented,基本准则包括:模块化;抽象;信息隐蔽;低偶合度与高内聚性;可扩充性;可重用性;,2.面向对象设计,Object Oriented,面向对象编程在面向对象分析和面向对象设计的基础上,使用面向对象程序设计语言实际进行程序代码编写,并最终实现一个可供实际使用的软件系统;基础和核心的工作是类的具体设计和实现等;程序的开发通常要经过编辑、编译、连接、运行调试这几个步骤模块化;,3.面向对象编程,Object Oriented,面向对象的软件测试指在符合面向对象

21、的概念与原则的基础上进行的测试,以对象的类作为基本测试单位,发现和排除程序错误,提高测试效率,4.面向对象测试,Object Oriented,由于软件代码规模的越来越庞大,无论经过多少次测试,也无论经过了多么严格的测试,软件中依然难免存在各种各样的隐含错误;因此软件在使用的过程中,需要开发人员或专业软件维护人员进行必要和合理的维护。,5.面向对象软件维护,Object Oriented,六、C+对面向对象技术的支持,C+作为一种面向对象程序设计语言,具有对象、类、消息等概念,同时支持面向对象技术的抽象性、封装性、继承性和多态性。C+对抽象性的支持C+对封装性的支持 C+对继承性的支持 C+对

22、多态性的支持,Object Oriented,总结,面向对象的基本思想(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域(现实世界)中的事物为中心来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象)(2)用对象的属性表示事物的性质;用对象的操作表示事物的行为。(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节。(对象的封装),Object Oriented,(4)对事物进行分类。把具有相同属性和相同操作的对

23、象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。(分类)(5)复杂的对象可以用简单的对象作为其构成部分。(聚合)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档。(继承)(7)类具有封闭性,把内部的属性和操作隐藏起来,只有公共的操作对外是可见的。(类的封闭性),Object Oriented,(8)对象之间通过消息进行通讯,以实现对象之间的动态联系。(消息)(9)通过关联表达类(一组对象)之间的静态关系。(关联)总结:用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性与操作刻画了事物

24、的性质和行为,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系。因此,无论系统的构成成分,还是通过这些成分之间的关系而体现的系统结构,都可直接地映射问题域。,Object Oriented,一个简单的C+程序,问题:输入圆的半径,求圆的周长和面积,数据描述:半径,周长,面积均用实型数表示数据处理:输入半径 r;计算周长=2*r;计算面积=pi*r2;输出半径,周长,面积;,Object Oriented,方法一,用结构化方法编程,求圆的周长和面积/count the girth and area of circle#includevoid main()do

25、uble r,girth,area;const double pi=3.1415;cout r;girth=2*pi*r;area=pi*r*r;cout radius=r endl;cout girth=girth endl;cout area=area endl;,数据描述,半径:r、周长:girth、面积:area,数据处理,输入数据,计算周长和面积,输出计算结果,Object Oriented,方法二,用面向对象方法编程,求圆的周长和面积,分析,“圆”是抽象的类类型,建立具体的圆(对象),半径?,圆的周长?面积?,实例化,Object Oriented,分析,圆类 数据成员 半径 成员

26、函数 置半径值求圆的半径求周长 求面积,实例化,Object Oriented,#includeclass Circle double radius;public:void Set_Radius(double r)radius=r;double Get_Radius()return radius;double Get_Girth()return 2*3.14f*radius;double Get_Area()return 3.14f*radius*radius;void main()Circle A,B;A.Set_Radius(6.23);cout A.Radius=A.Get_Radius

27、()endl;cout A.Girth=A.Get_Girth()endl;cout A.Area=A.Get_Area()endl;B.Set_Radius(10.5);cout B.radius=B.Get_Radius()endl;cout B.Girth=B.Get_Girth()endl;cout B.Area=B.Get_Area()endl;,Circle类定义,数据成员,成员函数,建立对象(类类型变量),通过对象调用类的成员函数,Object Oriented,例:为图书馆的出纳台编一个管理程序,学校图书馆(library)有数十万本藏书(books)和数千位读者(reader

28、s)。每本书具有书号(id)、书名(name)、作者(author)、专业(speciality)和借阅人(borrower)等登记项,其中各书的书号不重复。每位读者具有读者号(id)、姓名(name)、专业(speciality)和所借图书(holding)等登记项,读者都是本校的教师(teachers)和学生(students)。出纳台的功能有:1、注册(join)新读者;2、查询(acquire)某书下落;3、借出(lend)某书给某人;4、收回(receive)某人归还的某书。,Object Oriented,按传统的分析方法,程序中应该包含四个函数:join(注册新读者)、acquire(查询图书)、lend(出借)、receive(归还)两个结构:读者和图书,Object Oriented,按对象的分析方法,整个活动在三个实体(读者群、书库和出纳台)之间进行,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号