Presentation is loading. Please wait.

Presentation is loading. Please wait.

项目4 员工和部门信息组织.

Similar presentations


Presentation on theme: "项目4 员工和部门信息组织."— Presentation transcript:

1 项目4 员工和部门信息组织

2 项目创设 本项目将通过三个任务向大家介绍Java强大的面向对象开发能力
任务 1 描述员工的基本信息 任务 2 描述部门经理和部门的信息 任务 3 输入规范的员工信息

3 本项目的技能目标 员工和部门 信息组织 类和对象的定义和使用 继承和多态的应用 抽象类与接口的理解 包的的定义与使用 常见异常 的处理

4 学习目标 了解OOP编程中类与对象的概念,并掌握其创建的方法。 一 理解并应用面向对象编程的三大特性:封装、继承和多态。 二
理解并应用抽象类与接口,掌握包的使用方法。 掌握Java基本的异常处理机制。

5 4.1 任务 1 描述员工的基本信息 目标效果 1 必备知识 2 拓展训练 3 实现机制 4

6 4.1.1 目标效果 AEMI系统的的一个基础且重要的功能是对于阿拉丁公司员工的信息管理。 系统对普通员工管理所涉及到的信息包括两个方面:
岗位信息:员工编号、员工姓名、所属部门和职务。 个人信息:手机号码、出生日期、籍贯、性别、QQ号码、邮件地址、照片和简介。 比如系统对于一位新员工的引进需要输入如图4-2所示的信息。 图4-2 新员工

7 4.1.1 目标效果 当管理员输入新员工的信息后,系统是如何有效地组织和处理员工信息的呢?这个问题涉及到如下几个方面。
5)如何利用已经定义好的员工信息类来指导描述某位员工的信息? 1)测试部的林欣、开发部的张俊、美工部的雷铭等普通员工都有哪些共同的属性(如都有姓名和员工编号等)和行为(如普通员工工龄长一年,其基本工资也相应长100元)呢? 4)如何理解一类事物(如员工)与某位员工(如林欣)之间的共性与个性的关系? 3)如何用代码的形式把同一类事物(如员工)的共同属性和行为准确且规范地描述出来? 2)可不可以把普通员工所有共同的属性和行为都找出来,并将其集合在一起?

8 4.1.2 必备知识 1 面向对象基础 必备知识 3 对象 2 类

9 4.1.2 必备知识 在软件编程的发展历程中有着两种典型的模式,即面向过程编程(Procedure Oriented Programming,POP)和面向对象编程(Object Oriented Programming,OOP)。 前者曾是90年代流行的编程模式,其代表语言是C语言,而后者则是当前主流的编程模式 。 缘何面向对象模式会在质上巨大地超越面向过程开发模式呢?关键的原因在于其代码的可重用能力得到显著地提升,这一特性非常符合当前软件代码规模呈级数膨胀的趋势。

10 4.1.2 必备知识 1 面向对象基础 1. 类的概念 2. 对象的概念 3.面向对象 的基本特征 4.面向对象 编程方法
4.1.2 必备知识 1 面向对象基础 1. 类的概念 2. 对象的概念 3.面向对象 的基本特征 4.面向对象 编程方法

11 4.1.2 必备知识 1 面向对象基础 面向对象编程采用了类的概念,把事物 编写成一个个“类”。在类中,用变量表示
4.1.2 必备知识 1 面向对象基础 面向对象编程采用了类的概念,把事物 编写成一个个“类”。在类中,用变量表示 事物的静态属性(状态),用方法实现事物的动态行为(动作) 。 描述一个类需要需要包括三方面的内容: 类标识:即类的名字,这是必不可少的。 属性说明:用来描述相同对象的静态特征。 方法说明:用来描述相同对象的动态特征。

12 4.1.2 必备知识 1 面向对象基础 1. 类的概念 例如,下面是对Cat(猫)类进行的描述:
4.1.2 必备知识 1 面向对象基础 例如,下面是对Cat(猫)类进行的描述: class Cat //class关键字 指出这是一个类,Cat是类名 { int weight; //类的成员变量1(静态属性) int height; //类的成员变量2(静态属性) public int move(int minute) //类的方法1(动态行为) { …… } public void eat(String food) //类的方法2(动态行为) }

13 4.1.2 必备知识 1 面向对象基础 类是一个抽象的概念 ;对象则是类的 具体实例。
2. 对象的概念 4.1.2 必备知识 1 面向对象基础 类是一个抽象的概念 ;对象则是类的 具体实例。 比如职员是一个类,美工部的张俊、财务部的李佳都是对象;首都是一个类,则北京、伦敦、华盛顿、莫斯科都是对象;动画猫是一个类,则Kitty、Garfield和Doraemon都是对象。 类与对象之间是抽象与具体的关系,是共性与个性的关系,如图4-3所示。 “对象”是一个很广义的概念,不只是一个看的见摸的着的实物,对象除了可以是一栋房子、一辆汽车,一个职员之外,还可以是一件事情,一种语言等等。

14 4.1.2 必备知识 1 面向对象基础 3.面向对象 的基本特征 多态 (Polymorphism) 继承 (Inheritance) 封装
4.1.2 必备知识 1 面向对象基础 多态 (Polymorphism) 继承 (Inheritance) 封装 (Encapsulation)

15 4.1.2 必备知识 1 面向对象基础 封装也称为信息隐藏。
封装机制 (Encapsulation) 4.1.2 必备知识 1 面向对象基础 封装也称为信息隐藏。 面向对象的封装性是指利用抽象数据类型,如类(class),将数据和基于数据的操作封装在一起,使其形成一个不可分割的独立实体。 数据(私有变量)被保护在类的内部以尽可能地隐藏相关细节,且只保留一些对外接口(公有方法)与外部发生联系。

16 封装机制 (Encapsulation) 4.1.2 必备知识 1 面向对象基础 通常,一个类的数据包含两种:公有数据(public型)和私有数据(private型),公有数据允许被外部环境直接访问,而私有数据则不允许与外部环境直接发生联系,它只能被本类的方法所访问和修改。如: 私有数据 方 法 数 据 A B 公有数据

17 继承机制 (Inheritance) 4.1.2 必备知识 1 面向对象基础 继承是存在在于面向对象编程中的两个类之间的一种关系。当一个类具有另一个类的所有数据和方法的时候,就称这两个类之间具有继承关系。 被继承的类称为父类或超类,继承了父类或超类数据和方法的类称为子类。 客机 父类 子类 飞机 汽车 轮船 货轮 客轮 运输工具 战斗机 公共汽车 载重汽车

18 4.1.2 必备知识 1 面向对象基础 继承具有下述特点: 继承关系是传递的。 提供软件复用功能。
继承机制 (Inheritance) 4.1.2 必备知识 1 面向对象基础 继承具有下述特点: 继承关系是传递的。 提供软件复用功能。 通过增强一致性来减少模块间的接口和界面,大大增加程序的易维护性。 单一继承机制。Java出于安全性和可靠性的考虑,仅支持单继承,但可实现多接口。

19 4.1.2 必备知识 1 面向对象基础 多态是面向对象编程中的又一重要特性。 在OOP中,多态性是指一个程序中同名的不同方法共存的情况。
多态机制 (Polymorphism) 4.1.2 必备知识 1 面向对象基础 多态是面向对象编程中的又一重要特性。 在OOP中,多态性是指一个程序中同名的不同方法共存的情况。 这些方法同名的原因是它们的最终功能和目的都相同,但是由于在完成同一功能时,可能遇到不同的具体情况,所以需要定义包含不同内容的方法,来代表多种具体实现形式。

20 4.1.2 必备知识 1 面向对象基础 如对两个数作加法操作,现有两种情况:一是两个整数做加法;二是两个浮点数做加法。
多态机制 (Polymorphism) 4.1.2 必备知识 1 面向对象基础 如对两个数作加法操作,现有两种情况:一是两个整数做加法;二是两个浮点数做加法。 Java中提供了两种多态机制:重载与覆盖。 方法重载 在同一类中定义了多个同名而不同内容的成员方法时,我们称这些方法是重载(overload)的方法。重载的方法主要通过形式参数列表中参数的个数、参数的数据类型和参数的顺序等方面的不同来区分。 int add(int a,int b); float add(float c, float d);

21 多态机制 (Polymorphism) 4.1.2 必备知识 1 面向对象基础 方法覆盖 由于面向对象系统中的继承机制,子类可以继承父类的方法。但是,子类的某些特征可能与从父类中继承来的特征有所不同,为了体现子类的这种个性,Java允许子类对父类的同名方法重新进行定义,即在子类中定义与父类中已定义的相同名字而内容不同的方法。这种多态被称为覆盖(override)。

22 确定编程需要的解决的一类事物(若干对象); 对该类事务进行分析,抽取它们共同的特征(属性);
4.面向对象 编程方法 4.1.2 必备知识 1 面向对象基础 面向对象编程的基本步骤 确定编程需要的解决的一类事物(若干对象); 对该类事务进行分析,抽取它们共同的特征(属性); 把这些属性集合在一起,就形成一个类,并用代码class 描述;

23 用已经定义好的 class 来 定义一个个该类的对象; 对定义好的一个个的对象进行各类法则的运算;
4.面向对象 编程方法 4.1.2 必备知识 1 面向对象基础 用已经定义好的 class 来 定义一个个该类的对象; 对定义好的一个个的对象进行各类法则的运算;

24 4.1.2 必备知识 2 类 1. 类的定义 2. 变量 3. 方法 4. 构造方法

25 4.1.2 必备知识 2 类 一个类的定义应包含两部分: 类的声明 类的实体 类的各部分组成如图4-8所示。 1. 类的定义
4.1.2 必备知识 2 类 一个类的定义应包含两部分: 类的声明 类的实体 类的各部分组成如图4-8所示。

26 1. 类的定义 4.1.2 必备知识 2 类 (1)类的声明 [public/private ] [abstract/final] class className [extends superclassName] [implements interfaceNameList] {...} public(公有):可以被所有的类访问。 private(私有):修饰的类只能被同一包名中的类所访问,这是Java的默认方式。 abstract:声明该类不能被实例化。 final:声明该类不能被继承,即没有子类。 class className:关键字class告诉编译器表示类的声明以及类名是className。 extends super className:extends 语句扩展super className为本类的父类。 implements interface NameList:声明类可实现一个或多个接口,可使用关键字implements并在其后面给出由本类实现的多个接口名字列表,各接口间以逗号分隔。

27 4.1.2 必备知识 2 类 1. 类的定义 (2)类的实体 class className {
4.1.2 必备知识 2 类 (2)类的实体 class className { member variable Declaration // 成员变量(属性)的定义 member method Declaration // 成员方法(行为)的定义 }

28 4.1.2 必备知识 2 类 1. 类的定义 成员变量(属性)定义:
4.1.2 必备知识 2 类 成员变量(属性)定义: [public/protected/private] [static][final] type variableName static(静态的):说明该类型的变量为静态变量,或者称之为类变量。说明静态变 量类型后则该类的所有实例对象都可以对其共享,而且访问静态变量无须事先初始化它所在的类。 final(最终的):常量声明修饰符,用该符号声明后,在程序的运行过程中不能再改变它的值。 public(公有):公有变量,可以被项目文件中的任何方法所访问,由于访问不受限制所以建议成员变量尽量不要用public修饰,以免破坏数据的封装性。 protected(受保护的):保护型成员变量,可以被本类及其子类所访问。 private(私有):私有型成员变量,只有本类的方法可以访问。

29 4.1.2 必备知识 2 类 1. 类的定义 成员方法(行为)定义:
4.1.2 必备知识 2 类 成员方法(行为)定义: [public/protected/private] [static][final/abstract] returnType methodName([param List]) [throws exceptionList] {...} static :静态方法 (也称作类方法 ),与之对应,其他的方法就为实例方法。只要对类作了声明,就可以调用该类的静态方法。 abstract :抽象方法,即该方法只有方法说明而没有方法体。如果一个类包含一个或多个抽象方法,则该类必须为抽象类。抽象类不能被实例化。 final :该方法为终极方法,即它不能被子类覆盖。

30 4.1.2 必备知识 2 类 2. 变量 (1)从变量的作用范围分类 局部变量 全局变量
4.1.2 必备知识 2 类 (1)从变量的作用范围分类 局部变量 全局变量 定义在类中某一方法的内部,其作用范围为该变量定义的地方开始,至所属方法结束的地方为止。 定义在类中任何方法的外部,其作用范围为该变量所属的整个类。 GlobalVar.java LocalVar.java

31 4.1.2 必备知识 2 类 2. 变量 (2)从变量的数据类型分类 对象类型变量 基本类型变量 8种基本数据类型,如int、double等
4.1.2 必备知识 2 类 (2)从变量的数据类型分类 对象类型变量 基本类型变量 8种基本数据类型,如int、double等 由系统类或自定义类定义的变量 ObjectVarTest.java

32 4.1.2 必备知识 2 类 2. 变量 (3)从变量的性质分类 成员变量 类变量
4.1.2 必备知识 2 类 (3)从变量的性质分类 成员变量 类变量 与类变量相对的,没有用static声明的其他变量,它是与具体对象相关的,保持对象的状态。 就是用关键字static声明的全局变量,它是属于类本身的,不代表任何对象的状态。 类变量与成员变量的通用调用格式为: 类变量:  类名.类变量名 成员变量: 对象名.成员变量名 StaticVarTest.java

33 4.1.2 必备知识 2 类 从OOP的封装性角度考虑,通常一个类的成员
3. 方法 4.1.2 必备知识 2 类 从OOP的封装性角度考虑,通常一个类的成员 变量应尽量被修饰为private型,则其他的类和对象将无法调用该变量 ,使得数据的安全性比较高 。 有get和set方法,这两个方法一般设置为public,在其他的类中通过对象调用set或get方法即可操作私有型变量,增强程序的安全性,set为给对象赋值的方法,而get则是取得变量值的方法。 class Student { private String strName ; //定义一个私有变量 public String getName( ) //定义访问器 { return strName ; } public void setName(String name) //定义设置器 {strName = name; } }

34 4.1.2 必备知识 2 类 方法的参数包括形式参数(形参)和实际参数(实参)。 形参被用在方法定义时的参数列表中。
3. 方法 4.1.2 必备知识 2 类 方法的参数包括形式参数(形参)和实际参数(实参)。 形参被用在方法定义时的参数列表中。 实参则被用于方法调用的时候。

35 4.1.2 必备知识 2 类 关于方法的参数需注意如下几点: 对于无参成员方法来说,是没有实参列表的,但方法后的括弧不能省略。
3. 方法 4.1.2 必备知识 2 类 关于方法的参数需注意如下几点: 对于无参成员方法来说,是没有实参列表的,但方法后的括弧不能省略。 对于带参数的成员方法来说,实参的个数、顺序以及它们的数据类型必须与形式参数的个数、顺序以及它们的数据类型保持一致,各个实参间用逗号分隔。实参名与形参名可以相同也可以不同。 实参也可以是表达式,此时一定要注意使表达式的数据类型与形参的数据类型相同,或者使表达式的类型按Java类型转换规则达到形参指明的数据类型。

36 4.1.2 必备知识 2 类 在类的构造中有一种特殊的成员方法,被成为构造方法。
4.1.2 必备知识 2 类 在类的构造中有一种特殊的成员方法,被成为构造方法。 构造方法的应用通常具有明确的目的:给对象进行初始化,即对类中的成员变量赋值。 初始化动作在new 返回新创建对象的句柄前完成。

37 4.1.2 必备知识 2 类 构造方法具有如下的明显特点: 构造方法的名字与其所属类的类名相同 构造方法是给对象赋初值,没有返回值
4.1.2 必备知识 2 类 构造方法具有如下的明显特点: 构造方法的名字与其所属类的类名相同 构造方法是给对象赋初值,没有返回值 构造方法不能被程序显式调用,而是在new 构造对象时系统自动调用 构造方法可以有零个或多个形式参数 构造方法可在类中由用户定义,若用户没有定义,系统将自动生成一个空构造方法 构造方法可以通过重载实现不同的初始化方法 ConstructorTest.java

38 4.1.2 必备知识 3 对象 1.对象的创建 声明对象 建立对象 初始化对象

39 4.1.2 必备知识 3 对象 (1)声明对象 类名是指对象所属类的名字,它是在声明类时定义的;
4.1.2 必备知识 3 对象 (1)声明对象 类名 对象名表; 类名是指对象所属类的名字,它是在声明类时定义的; 对象名表是指一个或多个对象名,若为多个对象名时,用逗号进行分隔。 声明对象的作用是创建对象空间的管理者,即对象名,也称为对象句柄。例如: Cat catA, catB; catA和catB只是两个Cat类的句柄,还没有真正地关联到对象内存空间。

40 4.1.2 必备知识 3 对象 在声明对象时,只确定了对象的句柄和它所属的类,并没有为对象分配存储空间,此时对象还不是类的实例。
4.1.2 必备知识 3 对象 在声明对象时,只确定了对象的句柄和它所属的类,并没有为对象分配存储空间,此时对象还不是类的实例。 new关键字为对象分配内存空间。 也可以在声明对象的同时建立对象,这称为创建一个对象。 (2)建立对象 对象句柄 = new 构造方法(); 例如: catA = new Cat(); 类名 对象句柄 = new 构造方法(); 例如: Cat catA = new Cat();

41 4.1.2 必备知识 3 对象 (3)初始化对象 初始化对象,是指由一个类生成一个对象时,为这个对象确定初始的状态,即给它的成员变量赋初值的过程。 如: dogA.weight=20; dogA.height=30; 由于初始化操作是最常用的操作之一,因此Java提供了专门的构造方法来处理。

42 4.1.2 必备知识 3 对象 总之,对象创建具有三个步骤,与之相适应的内存变化如表4-1所示:

43 4.1.2 必备知识 3 对象 2.传值引用与传址引用(变量间发生赋值动作 )
4.1.2 必备知识 3 对象 2.传值引用与传址引用(变量间发生赋值动作 ) 传值引用 即指“=”号两端变量各自具有独立的存放值的内存空间,右端变量把自身的变量值复制给左端变量,这种方式发生在基本数据类型变量间的赋值操作。 传址 引用 即右端变量把自身引用(管理)的内存空间的首地址复制给左端变量,这样“=”号两端变量共同引用(管理)一个内存空间,这种方式发生在对象变量间的赋值操作及数组间的赋值操作。

44 4.1.2 必备知识 3 对象 传值引用与传址引用操作相应的内存变化状况如下表所示: ValueReference.java
4.1.2 必备知识 3 对象 传值引用与传址引用操作相应的内存变化状况如下表所示: ValueReference.java Student.java

45 4.1.3 拓展训练 定义一个规范的类及并正确地使用它来定义对象 RectangleTest.java

46 4.1.4 实现机制 1 描述员工的基本信息任务程序结构 本任务的实现包括2个源文件:Employee.java和EmployeeInput.java。 它们在Eclipse的包(package)视图中的位置如图4-16所示。

47 4.1.4 实现机制 2 系统登录界面任务程序剖析 系统登录界面 任务程序 代码分析 1. Employee.java
4.1.4 实现机制 2 系统登录界面任务程序剖析 系统登录界面 任务程序 代码分析 1. Employee.java

48 4.2 任务 2 描述部门经理和部门的信息 目标效果 1 必备知识 2 拓展训练 3 实现机制 4

49 4.2.1 目标效果 本任务的目标包含两点:一是描述公司部门经理的信息;二是描述公司各部门的信息。
部门经理的信息由两部分组成,一部分是与普通员工一样的信息,另一部分是部门经理所特有的信息,如图4-17所示:

50 4.2.1 目标效果 公司部门的信息比较简单,包括部门编号、部门名称、部门经理和部门员工人数,如图4-18所示。

51 4.2.1 目标效果 在着手写代码前我们有必要思考如下几个问题: 1 2 3 4
分析部门与部门经理间的关系,设计的部门类(Department)中是否涉及部门经理类? 分析经理与普通员工的关系以及他们各自个人信息的异同之处? 编写一个独立的经理类(Manager),是否需要完全从头开始编写? 可否利用前一任务中编写好的普通员工类来简化经理类的定义?

52 4.2.2 必备知识 2.子类的 构造方法 1.继 承 4.访问控制 符与修饰符 必备知识 6.抽象类 和抽象方法 5.接口 7. 包
必备知识 2.子类的 构造方法 1.继 承 4.访问控制 符与修饰符 3.多态性 必备知识 6.抽象类 和抽象方法 5.接口 7. 包

53 4.2.2 必备知识 1 继 承 继承(Inheritance)是面向对象编程中的重要特性之一。
必备知识 1 继 承 继承(Inheritance)是面向对象编程中的重要特性之一。 继承允许我们创建一个通用类,它具有同类事务的一般特征。 该类可以被更具体的类所继承,每个具体类都可以添加自己有特色的属性。 Java中被继承的类,称为父类(或超类),继承父类属性及方法而又有自身新属性或方法的类,则称为子类(或派生类)。

54 4.2.2 必备知识 1 继 承 1. 创建子类 class subClass_name extends superClass_name
必备知识 1 继 承 1. 创建子类 class subClass_name extends superClass_name { ……} Java中继承关系是通过extends关键字来实现的。在定义类时使用extends关键字指明新定义类的父类,新定义的类称为指定父类的子类

55 4.2.2 必备知识 1 继 承 2. 属性的继承 父类的属性(包括所有成员变量和方法)都将被子类所继承,但被继承并不等于就一定能被访问。
必备知识 1 继 承 2. 属性的继承 父类的属性(包括所有成员变量和方法)都将被子类所继承,但被继承并不等于就一定能被访问。 在Java中,只有非私有型(public型、或缺省型)的变量和方法能被子类所继承并直接访问。 对于父类中私有型(private型)的属性,子类将无权直接访问。 可以通过子类继承一个父类的公有方法去访问父类的私有成员变量。

56 必备知识 2 子类的构造方法 Java中的构造方法一般在new关键字定义新对象的时候由系统自动调用,而当定义子类对象的时候,系统除了执行子类本身的构造方法,在默认情况下还会自动地执行父类的构造方法 。 Java规定子类构造方法在真正被执行之前,需回溯执行父类的构造方法。

57 4.2.2 必备知识 3 多态性 多态的概念,通俗讲,就是系统自动识别当前对象的类型(子类还是父类),并访问其相应的属性或方法。
必备知识 3 多态性 多态的概念,通俗讲,就是系统自动识别当前对象的类型(子类还是父类),并访问其相应的属性或方法。 在java语言中,多态性体现在两个方面: 由方法重载所实现的静态多态性(编译时多态) 由方法覆盖所实现的动态多态性(运行时多态)

58 必备知识 3 多态性 1. 方法重载 重载,是指同一个类中允许存在多个同名方法,但这些方法的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)的现象。 在编译阶段,具体调用哪个被重载的方法,编译器会根据参数的不同来静态确定调用相应的方法。

59 必备知识 3 多态性 2. 方法覆盖 覆盖,也称为重写,是指子类中定义了一个与父类某一方法具有相同型构(即同方法的返回类型,同方法名,同方法参数列表)的方法。 具体调用哪个覆盖方法,系统会根据该方法调用者类型的不同(父类还是子类),来决定调用哪个方法。

60 必备知识 3 多态性 3. 重载与覆盖的区别 方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系。 覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。 覆盖要求参数列表相同;重载要求参数列表不同 。

61 必备知识 4 访问控制符与修饰符 1. 访问控制符 Java语言规定类中的成员变量或方法具有四种不同的访问控制符,对应于四种不同的访问权限,具体如下: Public:类中被public关键词修饰的成员,可以被所有的类访问。 Protected:类中被protected关键词修饰的成员变量或方法,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。

62 必备知识 4 访问控制符与修饰符 private :类中被private关键词修饰的成员变量或方法,只能在这个类本身的方法内部被访问。如果一个类的被声明为private,则该类通常为另一个类的内部类(项目5中绍)。 Default:类中不被任何访问控制符修饰的成员变量或方法属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。

63 4.2.2 必备知识 4 访问控制符与修饰符 表4-3列出了这些访问控制符的访问范围。 访问控制符 同一个类 同一个包 不同包的子类
必备知识 4 访问控制符与修饰符 表4-3列出了这些访问控制符的访问范围。 访问控制符 同一个类 同一个包 不同包的子类 不同包非子类 private * default protected public

64 4.2.2 必备知识 4 访问控制符与修饰符 2. Java修饰符(1)static修饰符 ① static 型变量
必备知识 4 访问控制符与修饰符 2. Java修饰符(1)static修饰符 ① static 型变量 即静态型变量,全局型的静态变量通常用来描述属于类的变量 。 ② static型方法 用static修饰符修饰的方法被称为静态方法,它是属于整个类的类方法。

65 4.2.2 必备知识 4 访问控制符与修饰符 static方法使用特点如下:
必备知识 4 访问控制符与修饰符 static方法使用特点如下: static方法是属于整个类的,它在内存中的代码段将随着类的定义而分配和装载。而非static的方法是属于某个对象的方法,当这个对象创建时,在对象的内存中拥有这个方法的专用代码段。 引用静态方法时,可以使用对象名做引用者,也可以使用类名做引用者(推荐); static方法只能访问static数据成员,不能访问非static数据成员,但非static型方法可以访问static数据成员。

66 必备知识 4 访问控制符与修饰符 static方法只能访问static方法,不能访问非static方法,但非static方法可以访问static方法。 staatic方法不能被覆盖,也就是说,子类中不能有与父类中的static方法具有相同名、相同参数的方法。 main 方法是静态方法。在Java的每个Application程序中,都必须有且只能有一个mian方法,它是Application程序运行的入口点。

67 4.2.2 必备知识 4 访问控制符与修饰符 2. Java修饰符(1)final修饰符 ① final型变量
必备知识 4 访问控制符与修饰符 2. Java修饰符(1)final修饰符 ① final型变量 基本类型变量被修饰为final,则它成为常量。想改变final变量的值会导致一个编译错误。 ② final型方法 Java语言提供了final修饰符来保证系统的安全。用final修饰符修饰的方法称为最终方法,不能被子类覆盖,而仅能使用从父类继承来的该方法。 ③ final 型类 当用final修饰类时,所有包含在final类中的方法,都自动成为final方法。final类本身是不允许被任何类继承的。

68 必备知识 5 接口 概念 接口 定义 实现

69 4.2.2 必备知识 5 接口 在Java中,接口是一个比类更加抽象的概念。
必备知识 5 接口 在Java中,接口是一个比类更加抽象的概念。 一个类通常规定了同一类事物应有的静态属性和动态行为,而一个接口则规定了一系列类应有的共同的属性和行为。 Java中接口的功能主要体现在以下几点: 通过接口可以实现不相关类的相同行为,不需要考虑这些类层次之间的关系。 通过接口可以指明多个类需要实现的方法。 通过接口可以在运行时动态地定位类所调用的方法

70 修饰为public的接口可以被不同包内的接口或类使用,没有public修饰的接口只能被其所在包中的成员访问。
定义 必备知识 5 接口 接口也有继承性,定义接口时也可以通过extends声明它们父接口并继承父接口的所有属性和方法,与类的继承性不同的是一个接口可有多个父接口,这些父接口之间用逗号隔开,形成父接口名列表。 修饰为public的接口可以被不同包内的接口或类使用,没有public修饰的接口只能被其所在包中的成员访问。 我们可以把接口理解为一个特殊的类:由常量和抽象方法组成的类。 接口定义的常用格式 : [public] interface 接口名 [extends 父接口名列表] //接口声明 { [public][static][final] 类型 常量名=值;//常量声明 [public][abstract] 返回类型 方法名(参列表) [throws 异常类型列表]; //上面一行是抽象方法声明 }

71 4.2.2 必备知识 5 接口 实现 由于接口的声明仅仅给出了抽象的方法 ,因此,要具体地实现接口所规定的功能就必须
必备知识 5 接口 由于接口的声明仅仅给出了抽象的方法 ,因此,要具体地实现接口所规定的功能就必须 在某个类中为接口写出具体的方法体。 class 类名 implements 接口名列表 说明:(1)一个类能实现多个接口,多个接口之间用逗号隔开。 (2)如果某个类实现了接口,这个类就可以访问接口中的常量,就如同它们是声明在类中的常量一样。 (3)类在实现接口的方法时,必须显式地使用访问控制符public,因为接口的方法都是public类型的,否则系统会警告缩小了接口中定义的访问控制范围。

72 4.2.2 必备知识 6 抽象类和抽象方法 面向对象程序设计的一个特别有用的特点是抽象类(abstract class)。
必备知识 6 抽象类和抽象方法 面向对象程序设计的一个特别有用的特点是抽象类(abstract class)。 抽象类提取了所有子类的公共属性和方法,对某些属性或方法仅提供一种形式化的定义 ,这些属性的初始化或方法的实现要在子类中才能进行。 抽象类在抽象层次上介于接口(所有方法为抽象方法)和具体类(所有方法为具体方法)之间,通常抽象类含有一个或一个以上的抽象方法。

73 4.2.2 必备知识 6 抽象类和抽象方法 1. 抽象类的定义 任何含有一个或多个抽象方法的类都必须声明为抽象类。
必备知识 6 抽象类和抽象方法 1. 抽象类的定义 任何含有一个或多个抽象方法的类都必须声明为抽象类。 抽象方法用关键字abstract 修饰: abstract void fn(); //fn()方法不存在方法体 abstract class 类名称 { 成员变量; 方法(){……}; //一般方法 abstract 方法(); //抽象方法 }

74 必备知识 6 抽象类和抽象方法 2. 抽象类的实现 抽象类的实现是指具体化抽象类中的所有抽象方法,这一任务通常交给抽象类的子类去完成 。

75 必备知识 7 包 所谓包就是一组相关类的集合。 同一个包中的类是可见的。如果一个类没有访问控制符,说明它具有缺省的访问控制符特性。此时,这个类只能被同一个包中的类访问或引用。这一访问特性又称为包访问性。

76 4.2.2 必备知识 7 包 1. 系统的包 Java提供了大量的系统类,为方便管理和使用,分为若干个程序包。
必备知识 7 包 1. 系统的包 Java提供了大量的系统类,为方便管理和使用,分为若干个程序包。 程序包又称为类库或API(应用程序接口)。 Java API包一般都以“java”或“javax”开头,以区别于用户所创建的包。 Java中常用的一些程序包: ① java.lang包;② java.io包;③ java.util包;④ java.awt包 ;⑤ java.applet包;⑥ java.net包 ;⑦ java.rmi包、java.rmi.registry包和java.rmi.server包;⑧ java.security包;⑨ java.util.zip包;⑩ java.sql包。

77 4.2.2 必备知识 7 包 2. 创建自定义包 package 包名; 如: package com.mycompany;
必备知识 7 包 2. 创建自定义包 package 包名; 如: package com.mycompany; public class NewClass{ 。。。。。。 }

78 4.2.2 必备知识 7 包 3. 引用包 通常一个类只能引用与它在同一个包中的类。
必备知识 7 包 3. 引用包 通常一个类只能引用与它在同一个包中的类。 如果需要使用其它包中的public类,则可以使用如下几种方法: 使用包名、类名前缀 如:java.util.ArrayList a = new java.util.ArrayList();

79 4.2.2 必备知识 7 包 加载需要使用的类 如:import java.util.ArrayList;//写于程序开始处
必备知识 7 包 加载需要使用的类 如:import java.util.ArrayList;//写于程序开始处 ArrayList a = new ArrayList(); 加载整个包 如:import java.util.*; //写于程序开始处

80 4.2.3 拓展训练 一个综合的例子 : 使用到类、对象、属性、方法、封装、继承、多态、接口、抽象类、抽象方法和包等 概念。

81 4.2.4 实现机制 1 描述部门经理和部门信息的任务程序结构
4.2.4 实现机制 描述部门经理和部门信息的任务程序结构 本任务的实现主要依赖于4个源文件:Department.java、Employee.java、Manager.java和Staff.java。 它们在Eclipse的包(package)视图中的位置如图4-32所示:

82 4.2.4 实现机制 2 描述部门经理和部门的信息程序剖析
4.2.4 实现机制 描述部门经理和部门的信息程序剖析 1. Staff . java 2. Employee . java 描述部门经理和 部门的信息 任务程序 代码分析 3. Manager . java 4. Department . java

83 4.3 任务 3 输入规范的部门信息 目标效果 1 必备知识 2 拓展训练 3 实现机制 4

84 4.3.1 目标效果 本任务的目标是当用户进入查询部门信息的界面,该界面除了允许用户查询公司现有的所有部门信息之外,还允许用户在部门信息维护区域添加新的部门 。 如图4-33所示:

85 4.3.1 目标效果 那么如何确保输入规范的部门信息任务呢?解决的措施需要从下面的问题中寻找: 1 2 如何监控用户输入的信息进行检查?
目标效果 那么如何确保输入规范的部门信息任务呢?解决的措施需要从下面的问题中寻找: 1 2 如何监控用户输入的信息进行检查? 若检查出新输入的部门名称已经存在,则如何友好地提示用户?

86 4.3.2 必备知识 1 异常的概念 3 自定义异常类 必备知识 2 异常处理机制

87 Java中,对于类似于上述的错误,称为异常。
4.3.2 必备知识 1 异常的概念 在程序运行的时候,我们可能会遇到的错误通常来源于以下三种: 设备错误 与硬件有关的不可预料的错误 ,如:网络突然中断,打印的时候突然没纸等。 物理限制 由于本身容量的问题而引发的错误 ,如硬盘已满,发送邮件容量过大等。. 代码错误 由于本身代码的原因使程序存在某种Bug ,通常系统会返回运行时的错误代码 Java中,对于类似于上述的错误,称为异常。

88 4.3.2 必备知识 2 异常处理机制 Java针对可预见的错误发生时,所采用的一种错误捕获并处理的方法,称为Java异常处理机制。
4.3.2 必备知识 2 异常处理机制 Java针对可预见的错误发生时,所采用的一种错误捕获并处理的方法,称为Java异常处理机制。 作为一个性能良好的软件系统,运行时保证不遇到错误是不可能的,但是如果遇到错误,最起码应该做到: 通知用户错误产生; 保存用户的全部工作; 允许用户退出程序;

89 4.3.2 必备知识 2 异常处理机制 Throwable类主要包含两个子类:即Error类和Exception类。 其中 Error类属于不可处理的异常,而Exception类则属于可以处理的异常,是我们讨论的重点。 对于Exception类,它的子类可以分为两个部分:非受检异常和受检异常。 1. 异常类的层次 在Java中,所有的异常类都直接或间接地继承于Throwable类,其继承关系如图4-34所示。

90 4.3.2 必备知识 2 异常处理机制 非受检(unchecked)异常是指编译器不要求程序员在代码中强制监控及处理的异常。
4.3.2 必备知识 2 异常处理机制 这些异常主要因编程不当而产生 。系统对于这类异常,有缺省的异常处理机制,因此允许程序员不监控这类异常。 非受检(unchecked)异常是指编译器不要求程序员在代码中强制监控及处理的异常。 java.lang.RuntimeException类及其子类都是非受检异常。 错误的类型转换异常:java.lang.ClassCastException。 数组下标越界异常:java.lang.ArrayIndexOutOfBoundsException 空指针访问异常:java.lang.NullPointerException。 除零溢出异常:java.lang.ArithmeticException。

91 4.3.2 必备知识 2 异常处理机制 受检(checked)异常是指编译器要求程序员在代码中必须监控和处理的异常。如:
4.3.2 必备知识 2 异常处理机制 受检(checked)异常是指编译器要求程序员在代码中必须监控和处理的异常。如: 访问不存在的文件异常:java.io.FileNotFoundException。 操作文件时发生的异常: java.io.IOException。 操作数据库时发生的异常:java.sql.SQLException。

92 4.3.2 必备知识 2 异常处理机制 2. 异常处理方式 (1)捕获异常 (2)声明抛弃异常 (3)主动抛出异常
4.3.2 必备知识 2 异常处理机制 2. 异常处理方式 (1)捕获异常 (2)声明抛弃异常 (3)主动抛出异常

93 4.3.2 必备知识 2 异常处理机制 try子句后的{}内的装载的是受监控的代码;只能有一个try子句 。 Java程序对有可能出现异常的代码进行监控,一旦出现特定类型的异常情况,系统则捕获该异常,并交由早已准备好的特定方法处理。这一过程称为捕获(catch)异常,这是积极的异常处理机制。 catch子句的()内的参数表示可捕获的异常对象e,其后{}内装载的是针对异常对象e所采取的措施;至少有一个catch子句。 finally子句后的{}内装载的是不管程序是否有捕获到任何异常而都需要执行的代码;finally子句可有可无,根据需要而定。 try { 受监控代码 } catch( ExceptionType1 e ) { 针对特定异常的处理代码...... } catch( ExceptionType2 e ) //可以有多个catch子句 finally{ ...... } (1)捕获异常

94 4.3.2 必备知识 2 异常处理机制 如果一个方法不知道如何处理所出现的异常,则可在方法声明时,声明抛弃(throws)异常,被抛弃的异常将交给当前方法的调用者处理,而main()方法所抛弃的异常将由运行环境来处理。这是一种消极的异常处理机制。 异常抛弃throws子句中同时可以指明多个异常,之间由逗号隔开。如: public int methodname ( ) throws ExceptionType {  } public static void main(String args[]) throws IOException, ArrayIndexOutOfBoundsException { … } (2)声明抛弃异常

95 4.3.2 必备知识 2 异常处理机制 前面所述的关于异常的产生都是在代码中隐涵的,运行时由JVM产生并被程序或JVM所捕获的。
4.3.2 必备知识 2 异常处理机制 前面所述的关于异常的产生都是在代码中隐涵的,运行时由JVM产生并被程序或JVM所捕获的。 异常也可以是由某些异常类生成并主动抛出的,用到throw 语句,格式如下: throw 异常对象; 如: IOException e=new IOException(); // 生成一个IO异常对象 throw e ; // 主动抛出该异常对象 (3)主动抛出异常

96 4.3.2 必备知识 3 自定义异常类 在程序运行中可能出现两种问题:
4.3.2 必备知识 3 自定义异常类 在程序运行中可能出现两种问题: 一种是由硬件系统或JVM导致的故障, Java 定义该故障为 Error类,这类问题用户程序不能够处理的。 另外一种问题是程序运行错误 ,Java 定义为 Exception 类。可以通过程序设计的调整来实现异常处理。

97 4.3.2 必备知识 3 自定义异常类 Java 推荐用户的异常类型以 Exception 类为直接父类。
4.3.2 必备知识 3 自定义异常类 Java 推荐用户的异常类型以 Exception 类为直接父类。 自定义异常类,在实际的编程中,我们经常使用,恰当地应用异常处理,有利于提高人机交互性,利于程序调试。 自定义异常的方法如下: class UserException extends Exception { UserException() { super(); //其它语句…… }

98 4.3.2 拓展训练 在实际的Java编程中,自定义异常类是通常每一个窗体界面都有特定的标题元素、界面背景,有必要的话则可加载状态栏,典型的应用如下:

99 4.3.2 实现机制 1 输入规范的部门信息任务程序结构 本任务的实现主要依赖于1个源文件: DepartmentSearch.java。
4.3.2 实现机制 1 输入规范的部门信息任务程序结构 本任务的实现主要依赖于1个源文件: DepartmentSearch.java。 它在Eclipse的包(package)视图中的位置如图4-38所示:

100 1. DepartmentSearch.java
4.3.2 实现机制 2 系统主界面设计任务程序剖析 系统主界面设计 任务程序 代码分析 1. DepartmentSearch.java

101 项目实训 1.实训目标 1.理解OOP的核心概念:类和对象,并掌握类和对象 创建及使用的方法。 2.理解OOP的三大特性:封装、继承和多态。
项目实训 1.实训目标 1.理解OOP的核心概念:类和对象,并掌握类和对象 创建及使用的方法。 2.理解OOP的三大特性:封装、继承和多态。 3.掌握子类的定义与使用,掌握多态机制的应用方法。 4.理解接口和抽象类的概念,并掌握接口的应用方法。 5.理解异常的概念,掌握应用系统异常类的方法和自定义 异常类的方法。

102 项目实训 2. 编程要求 用Eclipse编写Java程序代码,实现应用程序指定的功能,程序代码格式整齐规范、便于阅读,程序注释规范、简明易懂。

103 项目实训 3. 实训内容 1)编程创建一个Point类,在其中定义两个变量表示一个 点的坐标值,再定义构造函数初始化为坐标原点,然后定
项目实训 3. 实训内容 1)编程创建一个Point类,在其中定义两个变量表示一个 点的坐标值,再定义构造函数初始化为坐标原点,然后定 义一个方法实现点的移动,再定义一个方法打印当前点的 坐标。并创建一个对象验证。 2) 定义一个类实现银行帐户的概念,包括的变量有“帐 号”和“存款余额”,包括的方法有“存款”,“取款”和“查询 余额”。定义主类,创建帐户类的对象,并完成相应操作。

104 项目实训 3. 实训内容 3) 编程实现矩形类Rectangle,属性包括长和宽,成员 方法包括计算矩形周长和面积的方法。如何使你的定义更
项目实训 3. 实训内容 3) 编程实现矩形类Rectangle,属性包括长和宽,成员 方法包括计算矩形周长和面积的方法。如何使你的定义更 好的满足面向对象程序设计中信息隐藏和封装的原则?对 于这个类,你计划定义几个构造方法? 4)为3)中定义的Rectangle类派生一个子类:正方形类 Square。正方形类的操作同样是求周长和面积,在Square 类中定义关于求周长和面积的覆盖方法。列出正方形类的所 有属性与方法,编程检查、运行所编写的正方形类。

105 项目实训 3. 实训内容 5) 定义接口Printable,其中包括一个方法printItMyWay() ,这个方法没有形参,返回值为空。
项目实训 3. 实训内容 5) 定义接口Printable,其中包括一个方法printItMyWay() ,这个方法没有形参,返回值为空。 6)改写矩形类,使之实现Printable接口,用 printItMyWay()方法矩形的相关信息(长、宽、高、面积) 打印在屏幕上。

106 项目实训 3. 实训内容 7) 【学生信息管理系统】: 根据项目2中对学生信息管理系统的需求分析 ,创建接口和类(至少满足以下要求):
项目实训 3. 实训内容 7) 【学生信息管理系统】: 根据项目2中对学生信息管理系统的需求分析 ,创建接口和类(至少满足以下要求): ① 接口:Student(学生接口),包含一个抽象方法,即信息打印printInfo()。 ② 类1:InfoStudent(信息系学生类),该类实现(implements)于接口 Student,另根据需求分析为该类设置相应的属性和方法,且至少新增 一个抽象方法:doPractice(); ③ 类2: SoftwareStudent(软件专业学生类),该类继承于InfoStu dent 类,并实现了抽象方法doPractice();有一个设置学生名字的方法 setName(String name),由于学生名字中不允许包含数字,所以该方法 实现过程中需要对用户输入的信息进行检验,若有数字字符出现,则进 行友好地的错误信息提示(以自定义异常类的形式实现)。 ④ 类3: Class(班级类),该类有一个成员是SoftwareStudent类数组, 另一成员是班级学生个数stuCount,另根据需求分析为该类设置相应的 属性和方法。

107 Thank You !


Download ppt "项目4 员工和部门信息组织."

Similar presentations


Ads by Google