面向对象程序设计_1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C和C++的关系
C++
C
C++语言的地位
2014年语言排行榜
C++语言的地位
C++ 薪水 (单位英镑)
C++语言的地位
C
C++语言的地位
java
C++语言的地位
C++与其它语言比较
C++、Java、C#非常相似。
每种语言都有它适合的地方 语言直接比较优缺没有意义 C++、Java /
C#之比较
面向对象的程序设计 = 对象 + 消息
1.2 面向过程程序设计与面向对象程序设计
面向对象技术的提出
面向对象技术是目前流行的系统设计开发技 术,它包括面向对象分析(OOA)和面向对象 程序设计(OOP)。
面向对象程序设计技术的提出,主要是为了 解决传统程序设计方法——面向过程程序设计所 不能解决的代码重用,对超大系统设计困难等问 题。
1.3 面向对象语言的核心概念
了解五个概念
1 对象(object) 2 类(class) 3 实例(Instance) 4 消息(message) 5 方法(method)
三大核心
1) 封装性 2) 多态性 3) 继承性
1.3 面向对象语言的核心概念 五个概念
1) 对象 概念上:对象是系统的一个实体
1.3 面向对象语言的核心概念
Is a(属于关系): 既可以描述类与类之间的关系,也可以描述对
象与其所属类之间的关系。
例如:圆形类属于形体类,这是类与类之间的 关系的例子;另外对象与所属类之间也是一种属 于关系,如停在教学楼外的一辆汽车是汽车类的 一个实例,即这辆停在楼外的汽车是属于汽车类 的。
1.3 面向对象语言的核心概念
3 实例
一个结构对象是对一组数据的集合的抽象表示。
类是对象的蓝图。
对象是类的实例(Instance)
例如: 你可以为狗狗建立一个抽象,它具有一些特征,如颜色、 身高[译注:狗狗也要记录身高?]和重量;还有一些行为, 如跑和咬。我们称这些特征为属性,称这些行为为方法。
类 狗的抽象 狗类 那你的狗-丑丑 就是一个对象。也称为狗类的一个实例
实现上:对象是状态和操作(或方法)的封装 体,状态是由对象数据结构的内容和值定 义的,方法是一系列的实现步骤
对象实现了信息屏蔽(封装)
对象通过消息与另一个对象传递信息
1.3 面向对象语言的核心概念 2) 类
类是创造对象的样板;
类包含所创造对象的状态、方法、外部接口、内部 算法、数据结构;
由一个特定类所创建的对象称为这个类的实例,具 有共同性;
缺陷:
– 随着应用程序的规模扩大,操作与数据分离所带来的 维护工作量越来越大。
– 不适用于GUI界面、事件驱动编程
1.2 面向过程程序设计与面向对象程序设计
(3)面向对象(Object Oriented) (C++ JAVA C#)
全新的程序设计思想:计算机——现实世界 对象 - 实体
对象拥有属性,行为,将数据与操作结合在一起
3学分,32学时,1-11周上课,每周3学时
一. 引论 (3学时) 二. C++:一个更好的C(6学时) 三. 类类型(7学时) 四. 运算符重载(7学时) 五. 派生类(7学时) 六. 流库(1学时) 七. 模板(1学时)
学习本书的前提
– 学过C程序设计 推荐书 (清华大学出版社 谭浩强) (四川大学出版社 王舒)
1)汇编语言 : 比机器语言方便 2) FORTRAN 20世纪50年代中期,第一种高级语
言。变量、数组、循环、分支 3) Algol: 20世纪50年代后期。初级封装,块结构 4) Simula67: 20世纪60年代。面向对象鼻祖,类、
继承 5) Ada : 20世纪70年代。基于对象语言,封装、不
类是抽象数据类型的实现,具有共享操作的代码, 而各对象有各自状态
1.3 面向对象语言的核心概念
面向对象的(Object-oriented)语言通过类 (Class)来提供抽象。
类为一个对象(Object)的类型定义了属性 (Porperty)和方法(Method)。
通过对象发送消息来实现对象的操纵,对象根据消息 的内容调用相应的方法 。
public myFirst(int f)
int value_myFirst;
{
public:
value_myFirst = f;
void myFirst(int f){
}
value_myFirst = f;
}
}
Java代码片段
};
class myFirst{
int value_myFirst;
public myFirst(int f){
全面支持继承 6) Smalltalk : 面向对象
1.1 C/C++的历史
两类面向对象的语言
1. 开发全新的面向对象的语言 Eiffel Smalltalk 80
2. 对传统语言进行面向对象的扩充 C++:混合型语言 Java C#
1.1 C/C++的历史
C/C++的历史
C++源于C语言。 Unix Linux 1972-1973年间,两位程序员Brian Kernighan和Dennis Ritchie首创了一种 新的程序设计语言,取名为C语言。 设计C语言的最初目的是编写操作系统。 由于其简单、灵活的特点,C语言很快就被 用于编写各种不同类型的程序,从而成为世 界上最流行的语言之一。
2. 掌握面向对象程序设计基本思想与方法
3. 培养面向对象的思维习惯和思维方式
教学要求
1. 能比较熟练地用C++语言进行面向对象的程序 设计
2. 了解面向对象的基本概念和使用面向对象技术 进行程序设计的基本思想
3. 初步掌握面向对象编程环境的使用
4. 为学习计算机系统高级课程做准备
教学时间、内容安排
发送方 发出消息,请求接收方响应 接收方 收到消息后,经过解释,激活方法,予以响应
1.3 面向对象语言的核心概念
司机对象 加速消息 汽车对象 例子——消息
accelerate()
孤立的对象动作没有太大的用处,一个对象需要 对其他对象做些有实际意义的事情:
– 司机对象向汽车对象发送“加速”消息,这个过程实 际上就是司机对象通过调用汽车对象的accelerate()方 法向汽车对象发送“加速”消息。
1) 关于跨平台问题
2) 关于指针问题 C#/Java 借鉴了C++,但去掉了C++的双刃剑——指 针
3)垃圾回收问题 malloc( ) free( )
C++与其它语言比较
C++代码片段
C#代码片段
class myFirst{
class myFirst{
int value_myFirst;
private:
1.3 面向对象语言的核心概念
4)方法(methods)
方法
– 是对象的行为方式 (操作)
– 对象与外界的接口
作用
– 改变对象的属性 – 返回wenku.baidu.com象的属性
object 1 object 2
1.3 面向对象语言的核心概念
5、消息(message)
消息 对象之间相互请求或相互协作的途径,是要求某个 对象执行某项操作的规格说明
value_myFirst = f;
}
}
C++学习方法
C++也是一种语言学习方法和英语一样
1)多看,多读 2)多写,多练习
答疑
1)问助教或者我
2)在网上下载别人的程序看
3)BBS上提问.
www.vckbase.com www.csdn.net www.codeproject.com
实验问题: 大家要重视实验
1.1 C/C++的历史
C 语言是一个面向过程的语言。 随着软件开发技术的进步, 程序员们最终发现,
把数据和施加在其上的操作结合起来,会得到 更易于理解的程序,由此产生了面向对象的程 序设计思想。
1980年代初,美国 AT & T 贝尔实验室的 Bjarne Stroustrup设计并实现了C语言的扩充、 改进版本,C++语言诞生了!
奥托, 奇瑞QQ等
1.3 面向对象语言的核心概念
Has a & is a:面向对象设计中的各种关系
Has a(拥有关系):通常是指类与类之间 的关系。
例如:汽车由发动机、传送系统和排气系统组 成,如果写一个汽车的类,我们可以先写一个发 动机类,再让汽车类具有一个发动机类的成员, 即汽车类拥有发动机类。
1.2 面向过程程序设计与面向对象程序设计
面向过程程序设计与面向对象程序设计的比较
1. 面向过程程序设计特点: 面向过程程序设计从系统的功能入手,按照工
程的标准和严格的规范将系统分解为若干功能模块, 系统是实现模块功能的函数和过程的集合。
由于用户的需求和软、硬件技术的不断发展变化, 按照功能划分设计的系统模块必然是易变的和不稳 定的。这样开发出来的模块可重用性不高。
C++改进了C的不足之处,增加了对面向对 象的程序设计的支持,在改进的同时,保持了 C的简洁性和高效性。
1.2 面向过程程序设计与面向对象程序设计
程序语言的发展
一段典型的 汇编语言
(1)面向机器(机器语言、汇编语言)
– 可读性、可维护、移植性差;效率高
(2)面向过程
核心:算法 + 数据结构
push cs pop ds push cs pop es mov ax,3
一条消息由三件事组成:
– 接收消息的对象 (小汽车) – 执行的动作 (加速) – 该操作所需要的参数 (+15mph)
1.3 面向对象语言的核心概念
1.2 面向过程程序设计与面向对象程序设计
面向过程 vs 面向对象
面向过程的程序
面向对象的程序
对象
过程 过程
数据
方法 方法
数据
在面向过程的程序中, 数据和过程之间没有逻 辑和组织上的联系,这 是面向过程程序的主要 缺陷
在面向对象的程序中,方 法和数据被封装在一起形 成一个集合,这就是对象, 对象就是对现实世界中事 物的抽象
《Essential C++中文版》 Scott Meyers著 华中科技大学出版社 (台)侯捷译
1. C++概述
主要内容
1.1 C/C++的历史 1.2 面向对象程序设计与面向对象程序设计 1.3 面向对象语言的核心概念 1.4 客户/服务器模式 1.5 接口与组件 1.6 C++语言的特点 1.7 C++程序的开发过程和C++程序结构
FORTRAN COBOL
BASIC PL/1
ANSI-BASIC QBASIC VB
FORTRAN77
FORTRAN90
LISP
PROLOG
1.1 C/C++的历史 1.1.1 编程语言的发展
面向对象编程语言的发展历史
程序设计语言的变迁:
– 机器语言 汇编语言 高级语言
1.1 C/C++的历史
使用教材
C++语言教程 (第三版) 电子科技大学出版社
考核办法
采用闭卷考试方式(3学分)
平时占 50-55% 平时包括
(平时课堂考试6次, 平时作业,实验) 期末考试占45-50%
参考书
《C++程序设计语言(特别版)》 Bjarne Stroustrup/贝尔实验室 机械工业出版社 裘宗燕译
《C++编程思想》 Bruce Eckel 著 机械工业出版社 刘宗田等译
1.2 面向过程程序设计与面向对象程序设计
2. 面向对象程序设计的特点: 面向对象程序设计从所处理的数据入手,以数
据为中心而不是以功能为中心来描述系统。
它把编程问题视为一个数据集合,数据相对于 功能而言,具有更强的稳定性。
两者的差别: 面向对象程序设计关心的是所要处理的数据,
而面向过程程序设计关心的是功能。
《面向对象程序设计 C++语言描述》
主讲教师 吴炜 副教授 wuwei75@yeah.net 13880082860
2015面向对象程序设计 QQ群: 137563579
1.教学的目的 2.教学的要求 3.教学时间、内容安排 4.C++语言的地位 5.C++与其它语言比较
教学目的
1. 掌握面向对象程序设计的基本理论和基 本知识
1.3 面向对象语言的核心概念
例子——对象和类
小狗
– 状态(属性):颜色、重量、体长… – 行为(方法):觅食、睡觉、犬吠…
小汽车
– 状态(属性) :速度、档位、驱动类型… – 行为(方法) :转弯、制动、加速…
将一类对象共同的东西进行抽象就得到类,如: 汽车就是一个类,它下面的对象有:Benz s600,
1.1 C/C++的历史
52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96
ALGOL60
Ada
ALGOL68
Pascal
Modula-2
CPL BCPL B C
Simula 67
C++ Smalltalk 80
Java