第七章 面向对象
Java面向对象程序设计案例教程(王贺) 第七章习题答案[5页]
![Java面向对象程序设计案例教程(王贺) 第七章习题答案[5页]](https://img.taocdn.com/s3/m/7f6f032cf68a6529647d27284b73f242336c31ea.png)
1.选择题(1)下列说法中错误的是()A.对Swing构件只能设置一个边框B.Swing构件能建立组合边框或自己设计边框C.在Swing构件中,按钮可以使用图标修饰D.Swing构件支持键盘代替鼠标的操作(2)向容器添加新构件的方法是(A)A. add( )B. insert( )C. fill( )D. set( )(3)关于布局管理器LayoutManager,下列说法中正确的是(D)A.布局管理器是用来部署Java应用程序的网上发布的youtManager本身不是接口C.布局管理器是用来管理构件放置在容器中的位置和大小的D.以上说法都不对(4)JTextField类提供的GUI功能是(A)A.文本区域 B.按钮 C.文本字段 D.菜单(5)将GUI窗口划分为东、西、南、北、中五个部分的布局管理器是(D)A.FlowLayout B.GridLayout C. BoxLayout D. BorderLayout(6)关于Panel,下列说法中错误的是(D)A. Panel可以作为最外层的容器单独存在B. Panel必须作为一个构件放置在其他容器中C. Panel可以是透明的,没有边框和标题D. Panel是一种构件,也是一种容器2.填空题(1)( BorderLayout )包括5个明显的区域:东、南、西、北、中。
(2)Java的图形界面技术经历了两个发展阶段,分别通过提供AWT开发包和(Swing)开发包来体现。
(3)可以使用setLoaction( )、setSize( )或(setBounds( ) )中的任何一种方法设置组件的大小或位置。
(4)( GridLayout )布局管理器使容器中各个构件呈网格布局,平均占据容器空间。
(5)框架的默认布局管理器( BorderLayout)。
3.编程题(1)制作如图7-20所示的登录界面。
图7-20package com.zhouzhou;import java.awt.*;import javax.swing.*;public class Demo11 extends JFrame {// 定义组件JPanel jp1, jp2, jp3;JLabel jlb1, jlb2;JButton jb1, jb2;JTextField jtf1;JPasswordField jpf1;public static void main(String[] args) {// TODO Auto-generated method stubDemo11 d1 = new Demo11();}// 构造函数public Demo11() {jp1 = new JPanel();jp2 = new JPanel();jp3 = new JPanel();jlb1 = new JLabel("用户名");jlb2 = new JLabel("密码");jb1 = new JButton("登录");jb2 = new JButton("取消");jtf1 = new JTextField(10);jpf1 = new JPasswordField(10);// 设置布局管理(上面忘记:extends JFrame,这里出错了) this.setLayout(new GridLayout(3, 1));// 加入各个组件jp1.add(jlb1);jp1.add(jtf1);jp2.add(jlb2);jp2.add(jpf1);jp3.add(jb1);jp3.add(jb2);// 加入到JFramethis.add(jp1);this.add(jp2);this.add(jp3);this.setSize(250, 150);this.setTitle("登录");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}(2)制作如图7-21所示的选择界面。
Visual FoxPro 9.0 基础教程第7章 面向对象程序设计基础

类的事件和方法的定义
类的属性的定义
对象的操作
由类创建对象 objectname =createobject(classname) 设置对象的属性 父类.对象.属性=值 mand1.Caption=“退出” 调用对象的方法和触发对象的事件 Parent.Object.Method Parent.Object.Event 对象触发则执行事件的对应代码
7.1.2 类的概念
类(Class) 所谓类,就是一组对象的属性和行为特征的抽象描述。或者说,类是具有共同属性、共同操作性质的对象的集合。 类是对象的抽象描述;对象是类的实例。类是抽象的,对象是具体的。
7.2.1 基类
基类又可以分成容器类和控件类: 容器类(Containers class)可以容纳其它对象,并允许访问所包含的对象。如表单,自身是一个对象,它又可以把按钮、编辑框、文本框等放在表单中。 控件类不能容纳其它对象,它没有容器类灵活。如文本框,自身是一个对象,在文本框中不可放其它对象。由控件类创造的对象,是不能单独使用和修改的,它只能做为容器类中的一个元素,通过由容器类创造的对象修改或使用。
面向对象的可视化程序设计方法举例
7.1.1 对象的概念
对象(Object) 对象是反映客观事物属性及行为特征的描述。 对象是面向对象编程的基本元素,是“类”的具体实例。 属性(Properties) 对象的属性特征标识了对象的物理性质;对象的行为特征描述了对象可执行的行为动作。 对象的每一种属性,都是与其它对象加以区别的特性,都具有一定的含义,并赋予一定的值。
设计对象的两种方式
用编程方式设计对象 用面向对象方式设计对象
对象设计实例:编程方式
form1.SHOW 调用方法
第七章 面向对象的Java实现-继承和多态

Java教员
.NET教员
10
为什么需要继承 4-4
public class JavaTeacher2 extends Teacher { public JavaTeacher2(String myName, String mySchool) { super(myName, mySchool); 子类自动继承父类的属 } 性和方法,子类中不再 public void giveLesson(){ 存在重复代码 System.out.println("启动 Eclipse"); super.giveLesson(); } } public class DotNetTeacher2 extends Teacher { public DotNetTeacher2(String myName, String mySchool) { super(myName, mySchool); } public void giveLesson(){ System.out.println("启动 Visual Studio .NET"); super.giveLesson(); } } 使用继承,可以有效实现代码复用
4
本章目标
掌握继承 掌握super关键字 掌握多态
5
生活中的继承 2-1
生活中,继承的例子随处可见
动物 谁是父类? 谁是子类? 能说出继承的特点吗?
食草动物
食肉动物
继承需要符合的关系:is-a,父类更通用、子类更具体
6
生活中的继承 2-2
子类具有父类的一般特性(包括属性和行为), 以及自身特殊的特性
可以接收子类类型 public class HQ3 { public void judge(Teacher t){ t.introduction(); t.giveLesson(); 根据实际创建的对象 } 类型调用相应方法 大家好!我是北京中心的李明. 启动 Eclipse 知识点讲解 总结提问
什么是面向对象「什么是面向对象分析方法」

什么是面向对象「什么是面向对象分析方法」面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。
面向对象其实是现实世界模型的自然延伸现实世界中任何实体都可以看作是对象对象之间通过消息相互作用另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例如果说传统的面向过程式编程语言是以过程。
在我理解,面向对象是向现实世界模型的自然延伸,这是一种“万物皆对象”的编程思想在现实生活中的任何物体都可以归为一类事物,而每一个个体都是一类事物的实例面向对象的编程是以对象为中心,以消息为驱动,所以程序=对。
面向对象是指一种程序设计范型,同时也是一种程序开发的方法对象指的是类的集合它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性灵活性和扩展性起初,“面向对象”是专指在程序设计中采用封装。
面向对象相比于面向过程,是两种不同的处理问题的角度面向过程更注重事情的每一个步骤和以及顺序,面向对象更注重事件有哪些参与者,以及各自需要什么比如洗衣机洗衣服,面向过程将会把任务解析成一系列步骤,打开洗衣机放。
面向对象Object Oriented,OO是当前计算机界关心的重点,它是90年代软件开发方法的主流面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围如数据库系统交互式界面应用结构应用平台分布式系统网络管理结构CAD。
你好面向对象就是指把一个应用程序看成是由许多“对象object”组成的,然后去对这些对象编程,让它们具有一定的功能类是具有相同或相似性质的对象的抽象就是类因此,对象的抽象是类,类的具体化就是对象,也可以说。
面向对象如果我没记错的话应该是一门Java语言吧,我记得上大学学计算机的时候学过一点,当然不是计算机专业的,学的水过地皮湿,都是点皮毛而已,具体的你可以找一下计算机相关方面的书来看一下。
面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在。
第七章 包图-UML面向对象分析、建模与设计-吕云翔-清华大学出版社

包图的基本概念
包图是用来描述模型中的包和所包含元素的组织方式的图,是维护 和控制系统总体结构的重要内容。包图能够组织许多UML中的元素, 不过其最常用的用途是用来组织用例图和类图。
在UML 1.X规范中,虽然没有明确规定包图属于一种图类型,却可以 使用包及包的关系来表示系统的结构,包图作为实际上存在并经常被 使用的一种图出现在UML中。最新的UML 2规范中已经明确定义了包 图。
元素的分包原则
元素不能“狡兔三窟”:树形结构的一个节点不能同时拥有两个父 节点,一个元素也不允许在两个包中重复出现。
相同包内元素不能重名:包所具有的命名空间的作用要求用一个包 中的同种类元素名称必须是唯一的。
包内元素要紧密联系:分在同一个包中的元素应该具有某些相同的 性质,即包的高内聚性。
包与包尽可能保持独立:包和包之间需要尽可能减少耦合度,要求 包内元素与外部元素有尽可能少的依赖关系。
DataType
+ Intege 元素的分包原则
包的概念
pkg Logical View
包是用于把模型本身组织成层次结构的通用机制, PackageName 它不能执行。
PackageName
+ ContentA + ContentB
包名:与类图相似,包有简单名与路径名两种命 pkg Logical View
PackageB
包的依赖关系
容易出现的问题:循环依赖
pkg Logical View PackageA
循环依赖的出现是令人困惑、也是非常容易
产生错误的。尤其是当依赖关系表示包的引 pkg Logical View PackageA
入时,循环依赖会导致将模型转化成代码后
第七章 面向对象的程序设计

第七章面向对象的程序设计本章是面向对象的程序设计。
与第五章介绍的面向过程的结构化程序设计不同,主要介绍面向对象程序设计的基础知识,包括面向对象的基本概念以及Visual FoxPro支持的面向对象的编程技术,详尽介绍了对各类控件的选择与使用方法。
在对诸如表单等各类控件对象的设计、操作上,面向对象的编程技术有自己的独特之处,但在所有对象的各种事件和方法的程序代码设计中,仍然使用到结构化的程序设计方法。
本章的主要内容是面向对象程序设计的理论基础,其程序设计的基本目标是设计出能在可视化环境下运行的应用程序窗口界面—表单。
7.1 学习提要1.学习目标与要求通过本章学习,读者应达到以下要求:⑴了解对象、类等基本概念;⑵理解对象的属性、方法和事件;⑶熟练掌握表单的基本设计、操作和应用;⑷掌握常用控件的设计与使用。
⑸熟练掌握常用事件、方法的过程代码的设计方法。
⑹了解自定义类的创建和使用方法。
2.重点与难点:⑴本章重点:对象与类以及属性、方法和事件等基本概念;表单的设计与应用;常用控件属性、事件和方法的选择与运用。
⑵本章难点:本章的重点即为本章的难点3.主要知识点⑴面向对象的概念①对象、类②属性、方法、事件③Visual FoxPro 中的基类⑵表单的创建与基本操作①表单的创建使用“窗体设计器”或“表单向导”创建表单。
②表单的修改、运行使用“窗体设计器”编辑修改表单。
使用菜单或命令方式运行表单。
③表单的属性、事件和方法表单常用属性的设置,表单的常用事件、常用方法。
④设置表单的数据环境数据环境的概念,数据环境的设置。
⑶表单常用控件①表单常用控件的基本操作控件对象的选定,移动位置,改变大小,剪切、复制与粘贴,删除,布局设置。
②常用控件对象标签控件,命令按钮与命令按钮组控件,文本框与编辑框控件,选项组和复选框控件,列表框和组合框控件,容器与表格控件,页框控件,计时器与微调控件,图像控件等。
③控件对象的常用属性设置Caption属性,Name属性,Alignment属性,ButtonCount属性,BackColor属性,BorderColor属性,BorderStyle属性,Enabled属性,ForeColor属性,InputMask属性,PasswordChar属性,Picture属性,Height属性,Width属性,Left属性,Top属性,Value属性,Visible属性,FontName属性,FontSize属性,ControlSource属性。
面向对象分析与设计课件第7章 状态图与活动图建模

7.1 状态图的构成元素
统一建模语言中,状态图主要由状态和迁移两大类模型元素组成。对于图中 的每个状态,还定义了状态图主体对象在该状态下需要完成的各个动作及其触发 原因或机制。对于每个迁移,状态图还定义了迁移的触发事件、迁移条件以及迁 移时所要完成的动作。
状态图还对状态进行了多种分类,同时也为这些分类提供了必要的支持。如 把状态按照时间顺序分为初态、终态和中间态。按照状态的层次结构划分为简单 状态、复合状态和子状态。对于子状态,还可以根据它们是否参与了并发活动而 划分为串行子状态和并发子状态。另外,为简单地表达某种复杂语义,状态图中 还定义了历史子状态等这样的特殊模型元素。为了表示不同状态与其行为之间的 关系,UML还为每个状态和迁移定义了若干种相关的动作。
状态名可以是任何一个满足UML命名规则的字符串,其内容 可以由用户指定。
每个动作中,则包含了触发动作的事件、事件参数、守卫 条件以及伴发的动作序列。
7.1.1 状态
所有这些动作可分成入口动作(on Entry)、出口动作(On Exit)、 事件动作(On Event)和动作(Do)等四种类型。
其中,入口动作(on Entry)和出口动作(On Exit)分别指对象在 进入和离开当前状态时需要完成的动作。
7.1.2 转换与事件
例如,在Java语言中,事件处理机制的主要内容如下: 1)事件:一种用于封装事件属性(事件相关信息)的对象,其内容还应 包括为事件响应者提供的服务。 2)事件源:即产生事件的对象。当事件发生时,它负责创建事件信号并 调用事件激活程序,向事件订阅者们发出事件信号(事件对象)。 3)事件响应者:需要对事件做出相应的对象。一个事件可以有多个事件 响应者。
对于任何对象来说,对象的状态取决于它的各种行为不断积累所 产生的结果。在任何给定的时间点,对象的当前状态就包括它所具有 的所有特性、所处的具体情形、满足的条件以及其属性的当前值。
第7、8章 深入面向对象练习题

一、选择题(1)下列构造方法的调用方式中,正确的是()A.按照一般方法调用B.由用户直接调用C.只能通过new自动调用D.被系统调用(2)下列叙述中,正确的是( )A. 声明变量时必须指定一个类型B. Java认为变量number与Number相同C. Java中唯一的注释方式是"//"D. 源文件中public类可以有0或多个(3)下列叙述中,错误的是( )A. 父类不能替代子类B. 子类能够替代父类C. 子类继承父类D. 父类包含子类(4)下列关于继承的哪项叙述是正确的?A.在java中允许多重继承B.在java中一个类只能实现一个接口C.在java中一个类不能同时继承一个类和实现一个接口D.java的单一继承使代码更可靠(5)下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问?( )A.private B.无修饰符C.public D.protected(6)给出下列代码,如何使成员变量m 被方法fun()直接访问?class Test{ private intm;public static void fun(){ ... }}A.将private int m 改为protected int mB.将private int m 改为public int mC.将private int m 改为static int mD.将private int m 改为int m(7)下列关于内部类的说法不正确的是( )A.内部类的类名只能在定义它的类或程序段中或在表达式内部匿名使用B.内部类可以使用它所在类的静态成员变量和实例成员变量C.内部类不可以用abstract修饰符定义为抽象类D.内部类可作为其他类的成员,而且可访问它所在类的成员(8)在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。
这种面向对象程序特性称为()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
../案例/Animal.java ../案例/Food.java ../案例/Rabbit.java、Dog.java ../案例/Carrot.java、Bone.java
多态的作用
提高代码的可重用性 降低模块之间的耦合度
抽象类和抽象方法
形状类Shape需要提供用于计算面积和周长的方法, 但是形状本身没有被确定,那么计算周长和面积的 方法就无法确定,此时我们就需要使用抽象类和抽 象方法。 由于Shape类计算周长和面积的方法无法确定,那么 就可以将这样的方法声明为抽象的,以便在具体的 子类中进行实现。 抽象方法的声明
作业
作业四:
某公司的雇员分为以下若干类:
Employee:这是所有员工总的父类,属性:员工的姓名,员工的生日 月份。方法:getSalary(int month) 根据参数月份来确定工资,如果 该月员工过生日,则公司会额外奖励100元。 SalariedEmployee:Employee的子类,拿固定工资的员工。属性: 月薪 HourlyEmployee:Employee的子类,按小时拿工资的员工,每月工 作超出160小时的部分按照1.5倍工资发放。属性:每小时的工资、 每月工作的小时数 SalesEmployee:Employee的子类,销售人员,工资由月销售额和 提成率决定。属性:月销售额、提成率 BasePlusSalesEmployee:SalesEmployee的子类,有固定底薪的销售 人员,工资由底薪加上销售提成部分。属性:底薪。 写一个程序,把若干各种类型的员工放在一个Employee数组里,写 一个方法,打印出某月每个员工的工资数额。注意:要求把每个类 都做成完全封装,不允许非私有化属性。
[修饰符] abstract class 类名 [extends 父类名]{类体} 抽象类和普通类除了使用abstract修饰外和普通的类相 似 抽象类中可以没有抽象方法 但是一旦某个有抽象方法,那么这个类必须被声明为 抽象类
抽象类
抽象类
因为抽象类不是一个具体的类,所以无法实例化, 但是抽象类可以用于声明对象
接口的定义
在Java中接口不仅仅是程序开发过程中“约定”, 更是更加抽象化的抽象类 接口的定义
[修饰符] interface 接口名{[常量];[抽象方法];}
接口的实现
接口的实现
定义类时通过implements关键字实现接口
接口实现的语法
[修饰符] class 类名 [extends 父类名] [implements 接口 1,接口2,……]{类体部分}
用于判断一个对象是不是某个类的实例
本章总结
多态 包的使用 抽象类 接口
package 关键字 import 关键字 abstract关键字 final 关键字 interface关键字 implements关键字
作业
作业一
设计一个台灯类Lamp其中台灯有灯泡这个属性,还有 开灯(on)这个方法,设计一个灯泡类 其中有红灯泡 (RedBuble) 和绿灯泡(GreenBuble) 他们都有一个发亮 的方法,请设计出一段代码可以使台灯开启灯泡发亮, 并且保证替换不同种类的灯泡台灯类代码不被修改。
什么是多态
多态顾名思义即为多种形态的意思 Java中多态的含义
发送消息给某个对象,让这个对象自行决定采用哪种行为响 应这个消息 子类对象的引用赋值给父类引用变量来实现动态的方法调用
Java中形成多态的前提
继承 重写 向上转型
多态的应用
多态的应用
动物园有这些动物:狗、兔子等,饲养员每天都会 给这些动物喂食,狗喜欢吃骨头、而兔子喜欢吃胡 萝卜,通过Java程序模拟饲养员喂食 参考代码:
作业二:
设计一个继承关系其中存在动物类Animal、狗类Dog和 猫类Cat,对于猫类和狗类都有一个吃eat方法,但是猫 和狗的吃eat方法的实现不同,请合理的设计出Animal Dog Cat这3个类关系
作业
作业三:
设计一个形状类(接口)Shape,方法:求周长和求面积 形状类(接口)的子类(实现类):Rect(矩形),Circle(圆形) Rect类的子类:Square(正方形) 不同的子类会有不同的计算周长和面积的方法 创建三个不同的形状对象,放在Shape类型的数组里,分 别打印出每个对象的周长和面积
声明包
包的导入
一旦需要使用另外一个包中的类时,需要将该类导 入到当前类中,如需要在程序中使用java.util包下的 Scanner类,需要将给类先导入到使用的类中 类导入的语法
import 包名.类名; 或者 import 包名.*;
导入类
instanceof运算符
instanceof运算符的使用
抽象类
抽象类可以被继承,在子类中实现抽象类的所有抽 象方法,以达到抽象类的具体化
抽象类
具体化后的子类方法就可以用来创建对象了
接口
在软件工程中,经常将一个大的项目分由不同的开 发小组共同开发,各个小组的开发工作是并行的。 在很多时候,对于不同小组的程序员来说,清楚地 说明各自的软件如何相互作用,并就此达成统一 “约定”是很重要的。这种情况下,每一小组都可 以在对其他小组怎么编写代码一无所知的情况下, 就能编写自己的代码,并且各自小组编写的代码能 很好的协同工作。接口就是这样的“约定”。
[修饰符] abstract 返回值类型 方法名([参数列表]); 注意:因为抽象方法无法确定具体执行的功能,所有 抽象方法没有方法体,需要在小括号后加上分号
抽Hale Waihona Puke 方法抽象类 如果一个类的某些功能比较抽象或者无法在本类中 具体实现,可以将这个类声明为抽象的,那么这些 抽象或者无法具体实现的功能可以在子类中完成。 抽象类的语法
接口的实现
一个类可以实现多个接口,从而解决了Java单继承 的缺点。
接口的继承
在Java中类之间的继承关系是单继承,也就是说一 个类有且只能有一个父类。 而Java中的接口实现了多继承,也就是说一个接口 可以有多个父接口
接口的作用
提高程序的重用性 提高程序的可扩展性 降低程序的耦合度 实现了多继承
Java语言基础 第七章 面向对象
上章内容
static关键字 封装 继承
extends 方法重写 super关键字 向上转型 向下转型
本章内容
多态 包的使用
package 关键字 import 关键字
抽象类
abstract关键字
接口
多态的概念
接口的作用
实现多继承
接口的作用
实现了多继承
接口的作用
降低程序耦合度
接口的作用
降低耦合度
包的使用
什么是包
包是Java用于提供访问保护和命名空间管理的方式
简单的理解,包就是用来将Java中类和接口等进 行分类管理的工具,类似于操作系统中的目录 包的声明
package 包名; 包名的前半部分一般使用倒置的域名,后半部分一般 采用该包下类分类名(或者功能名),如:package com.bochy.util; 包的声明必须是整个类文件的第一行语句