收藏 分享(赏)

面向对象复习笔记.doc

上传人:精品资料 文档编号:10338481 上传时间:2019-10-31 格式:DOC 页数:20 大小:615.12KB
下载 相关 举报
面向对象复习笔记.doc_第1页
第1页 / 共20页
面向对象复习笔记.doc_第2页
第2页 / 共20页
面向对象复习笔记.doc_第3页
第3页 / 共20页
面向对象复习笔记.doc_第4页
第4页 / 共20页
面向对象复习笔记.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

1、基于 Java 的面向对象程序设计陈维亚weiya_华中科技大学软件学院第 34 讲:课程总结目录1. 课程内容总结1) 面向对象概念2) 面向对象编程(Java)3) 面向对象设计2. 考试形式与安排3. 复习建议21. 课程内容总结+ 很重要+ 重要+ 一般 面向对象概念(+)如何保证软件系统可扩展,可重用, 可维护?结构稳定,内聚性好 ,松耦合 类与对象 面向过程和面向对象 类和对象的概念、关系、组成类是对象的抽象,对象是类的实例,方法操作对象内部属性(状态) 的改变, 对象的相互调用也是通过方法来完成。 构造函数,对象的初始化、使用创建对象需要以下三步:声明:声明一个对象,包括对象名称

2、和对象类型。实例化:使用关键字 new 来创建一个对象。初始化:使用 new 创建对象时 ,会调用构造方法初始化对象。 封装、继承、多态 封装的好处、实现方式好处:从设计上讲,为了实现模块化1. 以类为最小单元,减少修改带来的连锁效应; 2. 可以对成员变量进行更精确的控制(getter, setter); 从使用上讲,减少了复杂度1. 代码使用者无需考虑实现细节就能直接使用一个类;2. 更有效的协作;良好的封装能够减少代码的耦合,抵御变化实现:依靠 4 种关键字,可修饰类、属性及方法private: 只能被该类的对象访问。default: 即不加任何访问修饰符,只允许在同一个包中进行访问。p

3、rotected: 只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。public: 不仅可以跨类访问, 而且允许跨包(package)访问。理想的封装状态是:只有一些精心设计的、注释清晰的接口方法为 public;成员变量和其他的方法都是 private,它们组成了一个类的内部实现,与类的外部无关 继承的概念、好处、实现,super,重写,向上转型概念:继承是一种类和类之间的关系,是一种“is a kind of”的关系。好处: 在设计时,它允许创建分等级层次的类,思路更清晰, 减少了冗余代码, 易于修改; 定义新类时 ,可以以原来的类为基础,借助代码的重用,使系统变得容易扩展,

4、 提高了开发效率。 继承帮助我们 统一了函数的调用接口,在增加新类后减少对已有系统的修改。注:final 关键字声明类可以把类定义为不能继承的, 即最终类;向上转型:对象 a 是子类对象 b 的上转型对象,上转型对象可以操作被子类继承和重写的方法, 但不能操作子类新增的成员变量和方法。或者用于修饰方法,该方法不能被子类重写。尽量使用组合,慎用继承 多态的定义、分类、实现方法(继承、接口),如何使用定义:多态就是指一种名称定义不同的方法。1. 译时多态 - 方法的重载(overload)2. 运行时多态(runtime polymorphism)程序中定义的引用变量所指向的具体类型和通过该引用变

5、量发出的方法调用在编程时并不确定,而是在程序运行期间才确定, 即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。 抽象类和抽象方法 定义,格式, 使用情景概念:在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象, 这样的类就是抽象类。格式:抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。1) 抽象类中不一定包含抽象方法, 但是有抽象方法的类必定是抽象类。2) 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类

6、是抽象类。 静态方法和静态变量使用场合:1. 某个变量被该类所有变量需要,如定义常量、计数的变量、数组等;2. 只需访问静态变量的方法可定义为静态方法;3. 特殊类型的类,没有对应实例,其所需参数都是通过显式参数提供 ,比如 Math 类;静态变量在程序初始化时被创建,可被该类所有的实例使用和修改;4.静态类只能初始化一个实例。 接口(Java) 定义,调用, 特性, 功能,与类的比较,与抽象类的比较定义:软件项目通常由团队完成,各成员独立完成不同子模块后再进行组合为使组合顺利进行,开发成员之间需达成某种“ 协议”, 我们称之为接口。特性: 接口是隐式抽象的,当声明一个接口的时候, 不必使用

7、abstract 关键字 接口中可以含有变量,变量会被隐式的指定为 public static final(用 private 修饰会报编译错误) 接口中的方法会被隐式的指定为 public abstract功能:1. 接口提供了一组功能的命名集合2. 接口定义了不同类交互的标准日= 实现了“多继承”, 分离了方法的声明和方法的实现接口与类的区别:接口不能用于实例化对象。接口没有构造方法。接口中所有的方法必须是抽象方法。接口只能包含 static final 成员变量。接口不是被类继承了,而是要被类实现。接口支持多继承。 接口名作为类型,接口继承(+)接口无法被实例化,但是可以被实现。一个实现

8、接口的类,必须实现接口内所描述的所有方法,除非声明为抽象类。可以把使用实现了某一接口的类创建的对象的引用赋给该接口声明的接口变量,那么该接口变量就可以调用被类实现的接口的方法。 Java8 接口新特性(+)接口中也可以放入方法的实现,避免修改实现该接口的类的代码,但是无法像静态方法那样使用。接口中也可以放入静态方法,以增加一些帮助性质的工具函数。 类之间的关系 1+3+1,各种关系的定义、比较和选择继承+关联、聚合、组合 +依赖依赖:简单的理解,就是一个类 A 中的方法使用到了另一个类 B 。关联:一个类作为另一个类的成员变量出现。被关联类 B 以类属性的形式出现在关联类 A 中,就叫关联关系

9、。关联可以是单向(箭头指向被关联类 )、双向的(无箭头) 。注意一对多表示形式。聚合:聚合关系中,两个类是处在不同层次上的, 一个代表整体,另一个代表部分。虽然是整体和部分的关系,但是整体与部分之间是可分离的, 他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以被多个整体对象共享。聚合是关联关系的一种特例,它体现的是整体与部分的拥有关系,即 has-a 的关系;组合:整体与部分之间是不可分离的,整体的生命周期结束也就意味着部分的生命周期结束 - 同生共死。组合也是关联关系的一种特例, 他体现的是一种 contains-a 的关系,这种关系比聚合更强,也称为强聚合。 UML 关系画法

10、组合与继承 UML静态模型: 用例图(Use Case Diagram):从用户角度描述系统功能。以图形化的方式表示了:1) 系统内部的功能2) 系统外部的参与者3) 以及它们之间的交互关系录入订单 registerOrder 用例如下:简要说明:Salesman 根据客户的要求录入商 品订单到系统中。主事件流:Salesman 先查询有没有客户想订购的商品,如果有则输入客户姓名, 查询该客户是不是新客户,如果是则创建客户资料, 再为客户填写订单。其他事件流:无。前提条件:有客户要下订单。事后条件:无。类图(Class Diagram):描述对象模型中类与类之间的关系。组件图(Componen

11、t Diagram):描述系统中各个组件之间的依赖关系 ,还可以描述组件的源代码组织结构。部署图(Deployment Diagram):定义系统中软硬件的物理体系结构。动态模型:时序图(Sequence Diagram):显示对象之间的动态协作关系,强调对象之间消息发送的时间顺序。主要用来显示具体用例的详细动作或事件流程构成:对象生命线(垂直的虚线); 对象激活框(细长矩形); 消息(带箭头的水平线 + 消息名);o 调用:实线段, 实心箭头o 返回:虚线段, 枝状箭头 顶部方框表示类的对象或类,有 3 种写法o 对象名和类名间用冒号隔开, 如 c:Caro 省略对象名称,:Caro 只保留

12、对象名,c活动图(Activity Diagram):显示活动的顺序控制流。状态转换图(State Transition Diagram):描述对象所有可能的状态 ,以及导致状态转换的条件。 Java 面向对象编程(+) Java 标准库 package 的作用、命名和使用方式公司一般使用域名反转作为包名 = com.example.mypackage注意:域名 包名hyphenated-name.example.org org.example.hyphenated_nameexample.int int_ com.example._123name 包名的声明必须出现在第一行; 默认包没有名称

13、; 父包与子包:o 子包需要显式引用o 父包不包含子包 Java 基础类:Object,包装类,Math (+) Java 工具类:Random,Date,BigXXX (+) String(初始化、方法、类型转换)String str1 = new String(“ABC“);String str2 = new String(“ABC“);System.out.println(str1 = str2); / falseString str3 = “ABC“;String str4 = “ABC“;String str5 = “AB“ + “C“;System.out.println( str

14、3 = str4 ); / trueSystem.out.println(str3 = str5 ); / trueString a = “ABC“;String b = “AB“;String c = b + “C“;System.out.println( a = c ); / false常用方法:indexOf()charAt()contains()substring()split()replace()StringBuilder 和 String 类似,但不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改.append(xxx)insert(xxx

15、) Java IO Stream 的概念 ,IO 包的构成 (+) 控制台 IO,文件 IO,缓冲区 IO,Scanner 数据流与对象流 (+) 泛型 定义,好处, 格式, 通配符好处:减少了 cast 带来的运 时异常使算法和框架更为通 , 减少了冗余代码有界通配符:上界为 T下界为 T有界通配符T? super T 泛型类、泛型接口(+)51. 课程内容总结 Java 面向对象编程(+) 集合框架 集合框架定义(组成),好处 集合接口:Set、List、 Queue、Deque、Map 集合实现类:各种集合遍历方法,Hash 集合,动态数组, 有序集合 集合实用类:Collections

16、,Arrays (+)Set 和 Collection 功能基本一致,用于存放无重复的元素,类似数学意义上的集合,不保证存放顺序。 如:HashSet,TreeSetList 是一个有序的 Collection,List 为一个长度可变的数组,即动态数组,可包含重复元素,增加了按位置访问、查找和遍历功能。 如: ArrayList,LinkedListQueue: 队列, add(e) offer(e) remove() poll() element() peek()Dequeue: 双向队列, addFirst(e) offerFirst(e) addLast(e) offerLast(e)

17、 Remove removeFirst() pollFirst() removeLast() pollLast() getFirst() peekFirst() getLast() peekLast()Map Comparable (compareTo), Comparator (compare)使用:Set set = new TreeSet(new CustomerComparator(); 枚举(+)Enum (属性 public static final), EnumMap 集合的使用建议(+) 异常处理 异常的定义、分类、方法调用栈(+) 异常处理机制,try-catch-final

18、ly,throws 和 throw 异常类、自定义异常类,异常处理规则和原则61. 课程内容总结 Java 面向对象编程(+) 线程 (+)创建一个实现了 Runnable 接口的对象,该对象被用作 Thread 对象的参数。public class HelloRunnable implements Runnable Thread 类本身也实现了 Runnable 接口,我们可以创建 Thread 类的子类,重写其 run 方法。public class HelloThread extends Thread 定义,生命周期, 创建方法 线程的阻塞、中断、等待、同步 (+)Thread.slee

19、p() 暂停执行当前线程一段时间。t.join() 表示当前线程必须等 t 执行完毕后才能继续执行。synchronized 同步 图形编程 JFC 简介 (AWT,Swing) (+) Swing 组件的使用 布局器(常见种类 ,嵌套) 事件监听机制、接口(Action、Mouse 、Key)71. 课程内容总结 Java 面向对象编程(+) 数据库 数据库概念、分类(+) 关系数据库,SQL Java 数据库开发(JDBC) (+) ODBC,UCanAccess(+) 数据访问类 DA 的设计方法和使用流程 代码规范 代码风格:排版,命名 (+) Javadoc 常见标记81. 课程内容

20、总结 面向对象设计(+) OOD 原则(SOLID) OOD 设计模式(+) OOD 构架 (MVC、三层)102. 考试形式与安排 考试时间第 13 周 周二(2017 年 11 月 28 日) 晚上;时长:2 小时 (待定) 考试形式笔试闭卷:建议带铅笔、橡皮画图,不需要计算器、字典等任何工具112. 考试形式与安排 考试内容范围不超出课本和课件难度基本不超过上机和大作业侧重考概念的同时,也会考察重要的编程细节中文,但会考察英文术语 考试题型小题:单选、多选、填空 (50%)大题:简答、补充代码、UML 图和代码的相互转换、建模 (分析问题、画图、完成代码) (50%)所有画图的部分都只需画出核心的属性和方法;所有写代码的部分都不以简单的语法错误作为扣分点(语句甚至可用伪代码);会给出所用 Java 标准类的 API123. 复习建议结合课件去看课本(或者其他书籍、帖子等),不要放过细节;独立完成课件上的例题、所有上机内容、大作业;独立完成所有微助教上的题目;多动手,很多问题写代码一试就有答案。13 总结的总结合理运用抽象14 总结的总结Seize the day!

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报