专题三:面向对象程序设计(Java).ppt_第1页
专题三:面向对象程序设计(Java).ppt_第2页
专题三:面向对象程序设计(Java).ppt_第3页
专题三:面向对象程序设计(Java).ppt_第4页
专题三:面向对象程序设计(Java).ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计O OProgramming 机电学院杨静萍2013 2014 1 内容提要 现实世界 概念世界 计算机世界面向过程vs 面向对象面向对象程序语言Java的面向对象特性Java语言入门 现实世界 现实世界 实体 每个实体都有自己的状态 特征 属性 和行为 Jack特征 姓名 Jack 国藉 美国 性别 男 出生年月 1975 03 19 家电84640338 住址 大连市沙河口区 职业 DJ Jack行为 跑 跳 唱 改名 改家电 改住址 Mary特征 姓名 Mary 国藉 澳州 性别 女 出生年月 1978 02 10 家电87652313 住址 大连市开发区 职业 DJ Mary行为 跑 跳 唱 改名 改家电 改住址 概念世界 类型 以上Jack Mary在特定的应用环境下可以被抽象为特定类型 DJ 假设我们需要建立一个通讯录应用 则抽象 状态和行为有取舍 结果可为 DJ类 状态特征 姓名 家电 住址 行为 改名 改家电 改住址注意 根据解决问题相关的 需要有取舍的抽象 计算机世界 类 将抽象数据类概念转为计算机语言描述 DJ类 封装结构 用变量表示状态 用方法表示行为 计算机世界 对象 以类作为模板创建对象 面向过程vs 面向对象 面向过程传统程序 如C语言程序 算法 数据结构面向对象如C Java程序 对象 消息 面向对象编程的优点 1 符合人们对客观世界的认识规律2 对需求变化具有很强的适应性3 支持软件复用4 可维护性好 面向对象程序语言 C 是一个强大的面向对象语言 可以高效的调用操作系统的API进行系统级的软件开发 应用领域包括网络通讯 网络安全 网络游戏服务端开发 行业应用软件服务端应用等等 netFramework NET系统包括一个相当广泛的产品家族 C VB net ASP net 为用户提供Web服务的开发 管理和应用环境 微软为 NET提供了高效实用的开发工具 所以 NET的开发效率较高 但应用有平台限制 基本只能在Window平台应用 Java具有平台无关性 安全性 分布式和健壮性等特点 比较适合企业级的开发应用 比如行业业务支撑软件 电信 金融 电力 教育 等众多领域 Java的面向对象特性 简单性 C 的纯净版本面向对象 分布性 网络技能鲁棒性 永远不会存取一个 坏的 指针安全性 不直接访问硬件体系结构中立 最显著的优势可移植性 不依赖具体实现解释执行 依赖解释器 运行环境 平台独立高性能 虚拟机性能已大大加强多线程 依赖底层操作系统或线程库实现 动态性 可以将代码添加到正在运行的程序中 Java语言入门 Java程序设计环境Java基本的程序设计结构Java的对象与类Java的继承Java的集合异常 日志 断言和调试 Java程序设计环境 文本编辑器 JDK记事本编写程序安装Java开发工具箱 JavaDevelopmentKit JDK JavaSEDevelopKit 6u18 使用集成开发环境NetbeansEclipseJBuilderOracleJDeveloper Java基本的程序设计结构 一个简单的Java应用程序注释数据类型变量和常量运算符枚举类型EnumSample字符串StringSample控制流程ControlFlowSample数组 ArraySample Java基本数据类型 Java是一种强类型语言 意味着每一个变量声明一种类型 共有8种基本类型 整型int 4字节 short 2字节 long 8字节 byte 1字节 浮点型float 4字节 double 8字节 特殊的浮点数 Double POSITIVE INFINITY Double NEGTIVE INFINITY Double NaNchar类型 单个字符 Unicode字符表 Boolean类型false和true 变量和常量 变量声明 以 结束 变量初始化 变量名必须以字母开头 一般首字母小写 空格和一些特殊符号不能出现在变量名中 利用关键字 final 声明常量 常量一般用大写字母表示 运算符 自增 减 运算符关系运算符与boolean运算符 三元操作 如 x y x y 括号和运算符具有一定的优先级别 详见相关资料 枚举类型 变量的取值只在一个有限的集合内 从JDK5 0开始 增加了该类型 字符串 字符串类子串拼接不可变字符串检测字符串是否相等字符串长度与字符位置 控制流程 块及其作用域条件语句 if循环语句 while dowhile循环语句 for多重选择 switch中断控制流程语句 条件语句 if 循环语句 while 循环语句 dowhile 循环语句 for 确定性循环 多重选择 switch 数组 Java的对象与类 Java的类库 API 自定义类 Student构造器隐式参数和显式参数封装与作用域对象构造包 Java的类库 API java io 输入输出 流操作java math 数学公式 网络编程socketjava rmi 远程方法调用Namingjava sql 数据库操作java text 数据格式Formatjava util 常用类Array List Collections Calender 构造器 与类同名在构造类的对象时被执行 new 每个类可有一个或以上的构造器构造器可有0个或以上的参数构造器没有返回值 隐式参数和显式参数 隐式参数 方法前 对象名 通过new生成关键字this 在类的方法中调用类对象显式参数方法的参数 括号中 封装与作用域 数据域 私有private域访问器方法 公有public域更改器方法 公有public private 私有方法 类内使用 可改可删 public 公有方法 一般不能改或删 final 初始化后不能改变static 静态域 方法 属于类的域 方法 由类名直接调用staticfinal 静态常量Factory 方法没有构造器 直接得到一个实例Main 方法不需要使用对象调用静态方法 对象构造 重载 一个类有多个构造器 一个方法有不同种类参数Student构造器1 构造器2 setId 默认域初始化 0 数值 false 布尔 null 对象 默认构造器 所有域为默认初始值 显式域初始化 TestStudent参数命名 避免单个字符 n m 在构造器中调用另一个构造器 Student初始化块 Student对象垃圾回收 自动回收 close 方法 包 package 类的组织 包结构将包的名字放在源文件的开头 packagecom horstmann corejava将类的源文件 java放入包中包作用域public 可以被任意类调用 protected 可以被包内类调用 private 可以被类或子类调用 类的导入完整包名 java util Datedate newjava util Date 引入特定类 importjava util Date 引入整个包 importjava util Java的继承 Inheritance 类 超类和子类多态和动态绑定抽象类与接口 类之间的继承关系是现实世界中遗传关系的直接模拟 它表示类之间的内在联系以及对属性和操作的共享 即子类可以沿用父类 被继承类 的某些特征 当然 子类也可以具有自己独立的属性和操作 Inheritance 类 超类和子类 superclass 超 基 父类subclass 子 派生类关系 子类is a超类定义关键字 extends子类与父类的调用 thisvs super阻止继承和覆盖 final类和方法 继承层次Inheritancehierarchy 1 子类不能访问父类的private成员 但子类可以访问其父类的public 3 被继承的父类成员虽然没有在子类声明中列出 但是这些成员确实存在于子类中 多态 Polymorphism 提高了程序可扩充性 调用多态性行为的软件传送给对象的消息 即方法调用 与对象的类型无关 因此能响应已有消息的新类型可以直接加入系统 而不用修改基本系统 多态和动态绑定 多态 Polymorphism 把不同的子类对象都当作父类来看 可以屏蔽不同子类对象之间的差异 写出通用的代码 做出通用的编程 以适应需求的不断变化 如果程序需要一个超类对象 都可以用一个子类对象来代替 动态绑定重载 overload 参数 覆盖 override 子类 抽象类与接口 抽象类 abstractclass 含有一个或以上抽象方法的类 抽象类不能被实例化 不能通过new生成对象 子类用extends关键字继承抽象类 Person 接口 interface 对符合接口需求的类的一套规范 可以实现多继承功能 用implement关键字实现接口 接口中的属性都是用final修饰的常量 在这个类中 所有的成员函数都是抽象的 也就是说它们都只有说明没有定义 接口中的方法都是用abstract修饰的抽象方法 在接口中只能给出这些抽象方法的方法名 返回值和参数列表 而不能定义方法体 即仅仅规定了一组信息交换 传输和处理的接口 Java的集合 集合概述集合框架集合接口集合类 集合概述 什么是Java中的集合 一种数据结构表达一组数据序列无序 有序键 值 链表 循环数 i j 队列 栈 集合框架 集合接口 Collection接口Iterator接口List接口Set接口Map接口 Collection接口 无重复 无序 顺序访问的集合方法 Iteratoriterator 迭代器方法 booleanadd 添加元素方法 intsize 返回集合中元素的个数 booleanisEmpty 判断集合是否为空 booleancontains Objectobj 判断集合是否包含某元素 booleanremove Objectobj 删除集合中的元素 voidclear 清空集合 Object toArray 集合中的对象列表变成数组形式 Iterator接口 以迭代方式逐个访问集合中各个元素 并安全的从Collection中除去适当的元素 方法 booleanhasNext 判断是否到最后一个元素 Objectnext 顺序取出下一个元素 voidremove 安全移除上次访问的元素 与next 方法配合使用 List接口 继承了Collection接口以定义一个允许重复项的有序集合 该接口不但能够对列表的一部分进行处理 还添加了面向位置的操作 方法 voidadd intindex Objectobj 在指定位置index上添加元素 Objectget intindex 返回List中指定位置的元素intindexOf Objecto 返回第一个出现元素o的位置 否则返回 1 Objectset intindex Objectelement 用元素element取代位置index上的元素 并且返回旧的元素 Set接口 Set接口继承Collection接口 而且它不允许集合中存在重复项 每个具体的Set实现类依赖添加的对象的equals 方法来检查独一性 Set接口没有引入新方法 所以Set就是一个Collection 只不过其行为不同 Map接口 Map接口不是Collection接口的继承 Map接口用于维护键 值对 key valuepairs 该接口描述了从不重复的键到值的映射 Objectput Objectkey Objectvalue 将互相关联的一个关键字与一个值放入该映像 如果该关键字已经存在 那么与此关键字相关的新值将取代旧值 方法返回关键字的旧值 如果关键字原先并不存在 则返回nullObjectremove Objectkey 从映像中删除与key相关的映射Objectget Objectkey 获得与关键字key相关的值 并且返回与关键字key相关的对象 如果没有在该映像中找到该关键字 则返回null 集合类 ArrayList和LinkedListHashSet和TreeSetHashMap和TreeMapVector ArrayList和LinkedList ArrayList类封装了一个动态再分配的Object 数组 每个ArrayList对象有一个capacity 这个capacity表示存储列表中元素的数组的容量 LinkedList支持频繁的从列表的中间位置添加和除去元素 而只要顺序的访问列表元素 HashSet和TreeSet 使用HashSet存储重复自由的集合 当需要从集合中以有序的方式插入和抽取元素时 使用TreeSet HashMap和TreeMap 在Map中插入 删除和定位元素 HashMap是最好的选择 但如果您要按自然顺序或自定义顺序遍历键 那么TreeMap会更好 使用HashMap要求添加的键类明确定义了hashCode 和equals 的实现 Vector Vector类可以实现可增长的对象数组 与数组一样 它包含可以使用整数索引进行访问的组件 但是 Vector的大小可以根据需要增大或缩小 以适应创建Vector后进行添加或移除项的操作 异常处理 exceptionhandling 异常原因和处理需求Java异常层次结构异常声明与抛出捕获异常 异常原因和处理需求 异常原因 用户输入错误设备 服务错误 物理限制代码错误处理需求向用户通告错误恢复或保存所有的操作结果允许用户以适当的形式退出程序 Java异常层次结构 内部错误和资源耗尽错误 程序导致的错误 错误的类型转换 数组访问越界 访问空指针 文件读取错误 URL格式错误 类不存在 检测数组下标是否越界非空判断 通告用户 安全退出 异常声明与抛出 编写程序不

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论