




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 Java与面向对象程序设计,叶保留 南京大学计算机科学与技术系,2,主要内容,Java语言简介 面向对象程序设计 Java中的类、方法与变量,3,Java发展背景,发展里程 1991OAK(James Gosling) 1994WWW快速增长 从语言发展成平台(J2EE vs. .NET) 典型语言的发展 现代编程语言的诞生:C语言 对编程方法的新需要:C+语言 网络时代的到来:Java语言的出现,Java语言简介,4,Java语言的特点,Java是什么? Java灵魂:字节码 Java内涵:丰富的类库 Java特性 平台无关性 目标代码“没有因机器的不同而不同” 或“由编译器决定” 安全性强 沙箱机制 支持多线程 面向对象 封装性、多态性、继承性、动态链接,Java语言简介,5,Java语言的编译机制,Java语言简介,6,Java语言执行机制,源 程 序,Java编译器,SPARC,Pentium,Power PC,中间码,Power PC,Pentium,SPARC,二进制,源 程 序,SPARC,Power PC,Pentium,Power PC,Pentium,SPARC,编译器,二进制,Java解释器,技术特征:字节码+虚拟机技术,Java语言简介,7,Java的执行流程,Java语言简介,8,Java虚拟机(JVM),Java interpreter,Just-In-Time compiler,Runtime System,Operating Systems,Hardware,不同操作系统的虚拟机不同 类似一个小巧而高效的CPU 字节码是虚拟机的机器指令 Java字节代码运行的两种方式 1)interpreter(解释方式) 2)Just-In-Time(即时编译):有代码生成器将字节代码转换成本机的机器代码,然后可以以较高速度执行。,Java语言简介,9,Java语言与C语言的差别,Java=“C+”-“复杂性和奇异性”+“安全性和可移植性” 无类外全局变量(与C+不同) 数据类型长度固定 取消自动类型转换,要求强制转换 不支持宏,没有#include 和#define 不再有structure , union及typedef 不再有函数、指针、多重继承 不再有goto 不再有操作符重载(Operator Overloading) 自动内存管理,Java语言简介,10,主要内容,Java语言简介 面向对象程序设计 Java中的类、方法与变量,11,面向对象思想的产生背景,软件开发对程序设计的需求 提高生产能力 扩大处理范围 面向新的环境 支持分布式协同处理,面向对象程序设计,12,面向对象思想的由来,面向过程程序设计 程序代码数据 编程思想:围绕“正在发生什么” 编写代码,即用计算机能够理解的逻辑来描述和表达待解决的问题及其具体的解决流程 程序执行机制:代码作用于数据 主要特点:适合小规模求解,大规模系统代码控制困难 面向对象程序设计 程序 = 对象 + 消息 编程思想:代码的相关数据为核心点进行程序编写 程序执行机制:用数据控制对代码的访问 主要特点:代码与其相关数据被分离开来进行处理,有利于程序规模的扩大,而程序的可维护性得到增强。 面向对象实质性要素:抽象,面向对象程序设计,13,面向对象思想解决问题,对象 :表示现实世界中某个具体的事物 事物分类 物质:表达具体的事物 意识:描述抽象的概念 现实问题空间 面向对象解空间 物质 对象(客观存在) 意识 类(抽象概念) OO Object-Oriented,面向对象程序设计,14,对象,真实世界对象:是一个实体,如汽车、电视 状态(如颜色、轮胎) 行为(停车、加速、减速) 软件对象:一组变量和相关方法的集合 状态:变量 行为:方法 软件对象作用 描述真实世界中的对象,如控制电动车的程序 为抽象概念建模,如GUI中的事件对象(按键、按鼠标),面向对象程序设计,15,软件对象表示现实对象,软件对象的状态:变量 软件对象的行为:方法 实例(instance):特定对象 实例变量( instance variable):有具体值的变量 软件对象内涵 现实世界:客观世界中的一个实体 计算机世界:一个可标识的存储区域,软件对象的描述方法:类,面向对象程序设计,16,类,具有共同属性和行为的对象集合 描述对象的基本原型 定义一种对象所能拥有的数据和能完成的操作 在面向对象的程序设计中,类是程序的基本单元 类与对象的关系 类是对象的抽象 对象是类的实例 类具有层次关系,面向对象程序设计,17,类的结构,面向对象程序设计,18,类的实例,面向对象程序设计,19,类对对象的伪代码描述,class Car int color_number; int door_number; int speed; void brake() void speedUp() ; void slowDown() ,面向对象程序设计,20,类与对象实例,在程序中操作对象是类的一个实例:即对象 创建一个对象:Car obj=new Car(); 调用方法:obj. brake();,面向对象程序设计,21,面向对象的三大特性,封装 继承 多态,面向对象程序设计,22,封装概念,封装的实体 = 数据(属性)+方法(行为) 把对象的所有组成部分组合在一起 定义程序如何引用对象的数据 使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度,私有数据,方法,方法,数据,对象A,对象B,公有数据,面向对象程序设计,23,封装效果,模块化 将一个复杂的系统分解为若干个模块,有特定关系的信息尽可能在一个模块中 信息隐蔽 将模块的细节部分对用户隐藏起来,用户只通过受保护的接口访问某个模块 外部程序存取状态变量要通过方法 方法可以允许可以拒绝 方法访问的级别限制,面向对象程序设计,24,继承,一个对象获得另一个对象的属性的过程 父类和子类之间共享数据和方法的机制 子类利用父类中定义的方法和变量就像它们属于子类本身一样 继承性具有传递性 继承性包括单继承和多重继承 继承的作用 使软件系统具有开放性 更好地进行抽象与分类 增强代码的重用率 提高可维护性,面向对象程序设计,25,父类与子类关系,子类,继承部分,个性部分,父类,共性部分,面向对象程序设计,26,继承实例,bicycle,(super class),Mountain bikes,Racing bikes,Tandem bikes,sub class,面向对象程序设计,27,单继承与多继承,面向对象程序设计,28,继承的伪代码描述,class Car int color_number; int door_number; int speed; push_break() add_oil() ,class Trash_Car extends Car double amount; fill_trash() ,面向对象程序设计,29,覆盖,在子类中重新定义父类中已有的方法,class Car int color_number; int door_number; int speed; push_break() speed=0; add_oil() ,class Trash_Car extends Car double amount; fill_trash() push_break() speed=speed-10; ,面向对象程序设计,30,多态,允许一个接口被多个同类动作所使用 具体使用哪个动作取决于应用场合 当不同的对象收到相同的消息时,产生不同动作 实质上是使用一个名称来定义不同的方法 这些方法执行类似的但又不同的操作,即以相同的接口来访问功能不同的函数,从而实现“一个接口,多种方法”,面向对象程序设计,31,多态的伪代码描述,在同一个类中至少有两个方法用同一个名字,但有不同的参数,类,void show(int int_num),void show(float double_num),void show(int int_num, float float_num),123,1.23,123,1.23,面向对象程序设计,32,面向对象中的消息,面向对象程序设计范型特征 程序=对象+消息 面向对象=对象+类+继承+通信 软件对象通过相互间传递消息来相互作用和通信 一个消息由三部分组成 接受消息的对象 要完成方法的名字 方法需要的参数,面向对象程序设计,33,面向对象编程思路,客观世界由各种对象组成 任何事物都是对象 复杂的对象可以由比较简单的对象以某种方式组合而成 把所有对象都划分成各种对象类 每个对象类都定义了一组数据和一组方法 按照子类与父类的关系,把若干个对象类组成一个层次结构的系统 对象彼此之间仅能通过传递消息互相联系,面向对象程序设计,34,面向对象思想的优点,与人类习惯的思维方法一致 可重用性 可扩展性 可管理性,面向对象程序设计,35,对象的关系,包含 当对象A 是对象B 的属性时,称对象B包含对象A 继承 当对象是对象B的特例时,称对象A继承了对象B 关联 当对象A的引用是对象B的属性时,称对象A和对象B之间是关联关系,面向对象程序设计,36,面向对象的软件开发过程,面向对象的分析明白用户想要什么 面向对象的设计怎么做 面向对象的实现具体编程,面向对象程序设计,37,主要内容,Java语言简介 面向对象程序设计 Java中的类、方法与变量,38,Java类,class Car int car_number; void set_number(int car_num) car_number=car_num; void show_number() System.out.println (“My car No. is :”+car_number); ,class CarDemo public static void main(String args) Car Democar=new Car(); DemoCar.set_number(3838); DemoCar.show_number(); ,My car number is 3838,Java中的类、方法与变量,39,Java类的继承、关系,class Car int car_number; void set_number(int car_num) car_number=car_num; void show_number() System.out.println (“My car No. is :”+car_number); ,class TrashCar extends Car int capacity; void set_capacity(int trash_car_capacity) capacity=trash_car_capacity; void show_capacity(); System.out.println(“My capacity is: ”+ capacity);,Java中的类、方法与变量,40,Java类的继承、关系,TrashCar继承Car中的两个方法,class CarDemo public static void main(String args) TrashCar DemoTrashCar=new TrashCar(); DemoTrashCar.set_number(4949); DemoTrashCar.set_capacity(20); DemoTrashCar.show_number(); DemoTrashCar.show_capacity(); ,Java中的类、方法与变量,41,何时选择继承性,一个很好的经验: “B是一个A吗?” 如果是则让B做A的子类,常犯的错误A有一个B吗? 例如让汽车轮子成为汽车的子类是错误的,J
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国豌豆项目创业计划书
- 中国减肥茶电商项目创业计划书
- 中国三维动画软件项目创业计划书
- 中国肉鹅屠宰项目创业计划书
- 中国高梁项目创业计划书
- 中国多功能麻醉机项目创业计划书
- 家电采购协议书
- 酒店住宿客人信息保护协议
- 旅行社服务质量控制协议
- 车辆质押贷款合同及违约责任条款
- 新生儿休克的评估及护理
- 《手链》(教案)-二年级下册劳动苏科版
- 石油钻井动火作业的风险识别及安全措施
- 2025长春中医药大学辅导员考试题库
- 成都建材院煤矸石悬浮煅烧中试线投产成功
- 2024年四川乐山中考满分作文《有一束光照亮了我》
- 工程大学生创业规划书
- 2025年广东省佛山市南海区中考一模英语试题(原卷版+解析版)
- 不断提升法治素养课件
- 部编2024版历史七年级下册期末(全册)复习卷
- DB32T3434-2018人民防空核生化监测中心工程设计规范
评论
0/150
提交评论