UML笔记2010-05-07
1、UML(Unified Modeling Language)主要包含:
l 用例图(Use Case Diagram):从用户角度描述系统功能。
l 类框图(Class Diagram):描述对象模型中类与类之间的关系。
l 时序图(Sequence Diagram)和协作图(Cooperation Diagram):描述对象间的交互关系。其中时序图显示对象之间的对象协作关系,它强调对象之间消息发送的时间顺序,同时显示对象之间的交互;协作图能直观地显示对象间的协作关系。这两种图合成为交互图。
l 状态转换图(State Transition Diagram):描述对象所有可能的状态及导致状态转换的转移条件。只需要为个别具有复杂的状态转换过程的类提供状态转换图。
l 组件图(Component Diagram):描述系统中各个软件组件之间的依赖关系,还可以描述软件组件的源代码的组织结构。
l 部署图(Deployment Diagram):定义系统中软硬件的物理体系结构。
2、类之间的关系
l 关联(Association):类A与类B的实例之间存在特定的对应关系。
即类对象之间的关系。用带实线的箭头表示。
l 依赖(Dependency):类A访问类B提供的服务。
类之间的调用关系。用带虚线的箭头表示。
l 聚集(Aggregation):类A为整体类,类B为局部类,类A的对象由类B的对象组合而成
指的是整体和部分之间的关系。带实线的菱形箭头表示。强聚合关系带实线的实心菱形箭头
l 泛化(Generalization):类A继承类B。
类之间的继承关系。用带实线的三角形箭头表示。
l 实现(Realization):类A实现了B接口。
类与接口之间的关系。用带虚线的三角形箭头表示。
面向对象编程OOP2010-05-07
1、>jar –cvf C:/package.jar *.* C盘(包括子目录)下所以类文件打包为package.jar
>jar -xvf C:/package.jar 展开jar包
2、JavaDoc标记
Ø @version :版本信息
Ø @since :最早出现在哪个版本
Ø @author :作者
Ø @see :生成参考其他JavaDoc文档的链接
Ø @link :同上;区别在于@link能嵌入到注释语句,为特定词汇生成链接
Ø @deprecated :被标注的类、变量、方法已不提倡使用,可能废弃
Ø @param :方法的参数
Ø @return :方法的返回值
Ø @throws :方法抛出的异常,指明抛出异常的条件
>javadoc [options] [packagenames] [sourcefiles]
3、Java虚拟机运行时数据区
4、基本数据类型
数据类型 | 关键字 | 在内存中占用的字节数 | 取值范围 | 默认值 |
布尔型 | boolean | 1个字节(8位) | true,false | false |
字节型 | Byte | 1个字节(8位) | -128~127 | 0 |
短整型 | short | 2个字节(16位) | -215~215-1 | 0 |
整 型 | int | 4个字节(32位) | -231~231-1 | 0 |
长整型 | long | 8个字节(64位) | -263~263-1 | 0 |
字符型 | char | 2个字节(16位) | 0~216-1 | ‘/u0000’ |
单精度浮点型 | float | 4个字节(32位) | 1.4013E-45~3.4028E+38 | 0.0F |
双精度浮点型 | double | 8个字节(64位) | 4.9E-324~1.7977E+308 | 0.0D |
5、变量的作用域
Ø 成员变量:类中声明,作用域是整个类
Ø 局部变量:在一个方法的内部或方法的一个代码块的内部声明。作用域是方法或代码块内
Ø 方法参数:方法或者构造方法的参数,作用域是整个方法或构造方法
Ø 异常处理参数:作用域是紧跟catch(Exception e)的代码块。
6、操作符“==”,instanceof
当==两边都是引用类型变量,且都指向同一个对象,结果为true。
instanceof用于判断一个引用类型所引用的对象是否是一个类的实例。
7、方法重载(Overload)
Ø 方法名相同
Ø 方法的参数类型、个数、顺序至少有一项不相同
Ø 方法的返回类型可以不相同
Ø 方法的修饰符可以不相同
8、方法覆盖(Override)
Ø 子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回类型一致
Ø 子类方法不能缩小父类方法的访问权限
Ø 子类方法不能抛出比父类方法更多的异常
Ø 方法覆盖只存在于子类和父类(包括直接父类和间接父类)
Ø 父类的静态方法不能被子类覆盖为非静态方法
Ø 子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法
Ø 父类的非静态方法不能被子类覆盖为静态方法
Ø 父类的私有方法不能被子类覆盖
Ø 父类的抽象方法可以被子类通过两种途径覆盖:1、实现父类的抽象方法;2、子类重新声明
Ø 父类的非抽象方法可以被覆盖为抽象方法
9、super关键字(父类方法非private)
Ø 在类的构造方法中,通过super调用其父类的构造方法
Ø 在子类中访问父类的被屏蔽的方法和属性
Ø 在静态方法和静态代码块内不能使用super
10、多态(Polymorphism)
实现多态性的手段又叫称动态绑定(dynamic binding)
Ø 对于一个引用类型的变量,编译器按照它声明的类型处理
Ø 对于一个引用类型的变量,运行时Java虚拟机按照它实际引用的对象处理
Ø 在运行时环境中,通过引用类型变量来访问所引用变量实际引用的对象的方法和属性时,Java虚拟机采用以下绑定原则:实例方法与引用变量实际引用对象的方法绑定;静态方法与引用变量所声明的类型的方法绑定;成员变量(包括静态变量和实例变量)与引用变量所声明的类型的成员变量绑定。
11、访问控制修饰符
访问级别 | 修饰符 | 同类 | 同包 | 子类 | 不同的包 |
公 开 | public | √ | √ | √ | √ |
受保护 | protected | √ | √ | √ |
|
默 认 | 无 | √ | √ |
|
|
私 有 | private | √ |
|
|
|
12、final修饰符
Ø final修饰的类不能被继承,没有子类
Ø final修饰的方法不能被子类方法覆盖
Ø final休息的变量表示常量,只能被赋值一次
13、static修饰符
Ø static修饰的成员变量表示静态变量,可以直接通过类名来访问
Ø static休息的成员方法表示静态方法,可以直接通过类型来访问
Ø static休息的程序代码块表示静态代码块,Java虚拟机加载类时,就会执行
Ø 静态代码块与静态方法一样,必须通过实例的引用来访问类的实例方法和实例变量