Java面向对象程序设计第7章_面向对象的几个基本原则
Java面向对象程序设计案例教程(王贺) 第七章习题答案[5页]
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 调用方法
第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.什么是结构化程序设计方法?这种方法有哪些优点和缺点?【解答】结构化程序设计方法是指20世纪60年代开始出现的高级语言程序设计方法,由于采用了数据结构化、语句结构化、数据抽象和过程抽象等概念,使程序设计在符合客观事物与逻辑的基础上更进了一步。
结构化程序设计的思路是:自顶向下、逐步求精。
程序结构由具有一定功能的若干独立的基本模块(单元)组成,各模块之间形成一个树状结构,模块之间的关系比较简单,其功能相对独立,模块化通过子程序的方式实现。
结构化程序设计方法使高级语言程序设计开始变得普及,并促进了计算机技术的深入应用。
虽然结构化程序设计方法采用了功能抽象、模块分解与组合,以及自顶向下、逐步求精的方法,能有效地将各种复杂的任务分解为一系列相对容易实现的子任务,有利于软件开发和维护;但与面向对象程序设计方法相比,结构化程序设计存在的主要问题是,程序的数据和对数据的操作相互分离,若数据结构改变,程序的大部分甚至所有相关的处理过程都要进行修改。
因此,对于开发大型程序具有一定的难度,软件的可重用性差,维护工作量大,不完全符合人类认识世界的客观规律。
2.面向对象程序设计有哪些重要特点?【解答】软件设计的目的是为了解决日常生活中存在的各种实际问题,面向对象程序设计与以往各种程序设计方法的根本区别是程序设计的思维方法的不同。
它主要具有如下重要特点:(1)面向对象程序设计实现了较直接地描述客观世界中存在的事物(即对象)及事物之间的相互关系,它所强调的基本原则是直接面对客观事物本身进行抽象,并在此基础上进行软件开发,将人类的思维方式与表达方式直接应用在软件设计中。
(2)面向对象的程序设计将客观事物看作具有属性和行为的对象,通过对客观事物进行抽象来寻找同一类对象的共同属性(静态特征)和行为(动态特征),并在此基础上形成类。
(3)面向对象的程序设计将数据和对数据的操作封装在一起,提高了数据的安全性和隐蔽性。
第1章面向对象程序设计概述3(4)面向对象的程序设计通过类的继承与派生机制以及多态性特性,提高了软件代码的可重用性,因而大大缩减了软件开发的相关费用及软件开发周期,并有效地提高了软件产品的质量。
Java面向对象程序设计案例教程课件:图形用户界面开发与事件处理
《Java面向对象程序设计案例教程》
7.2 Swing基础
• Swing组件是Java语言提供的第二代GUI设计工 具包,它以AWT为基础,在AWT内容的基础上 新增或改进了一些GUI组件,使得GUI程序功能 更强大,设计更容易、更方便。
• Swing与AWT有以下不同。
• (1) Swing是完全用Java语言编写的,所以称 Swing组件是轻量级组件,没有本地代码,不依 赖操作系统的支持,比AWT构件具有更强的实 用性。Swing在不同的平台表现一致,并且有能 力提供本地窗口系统不支持的其他特性。
《Java面向对象程序设计案例教程》 • Swing的类层次结构如图所示:
《Java面向对象程序设计案例教程》
• 3. 简单的范例 • 一个简单的Swing GUI应用程序。该程序生成一个窗
口, • 窗口中有一个标签,用于显示输出。 • (1) 程序代码: • 1. import java.awt.* ; • 2. import javax.swing.* ; • 3. public class SwingDemo • 4. { • 5. public static void main(String args[]) • 6. { • 7. JFrame fm = new JFrame("第一个Windows程序") ; • 8. JLabel label = new JLabel("这是第一个GUI程序") ;
• 教材例题7-12 利用组合框显示、选取地名。
• 教材例题8.2 ,例题8.3用不同方法生成JFrame窗口
《Java面向对象程序设计案例教程》
• 7.3.2 面板容器JPanel
• 面板JPanel也是Java中常用到的容器之一,面板是一种透明 的容器,既没有标题,也没有边框,就像一块透明的玻璃。 与JFrame不同,它不能作为最外层的容器单独存在,它首 先必须作为一个构件放置到其他容器中,然后再把它作为容 器,把其他构件放到其中。
Java程序设计基础-面向对象
访问修饰符名称
说明
public
可以被任何类访问
可以被同一包中的所有
protected
类访问
可以被所有子类访问
private
只能够被当前类的方法 访问
default(无访问修饰符)
可以被同一包中的所有 类访问
备注
子类没有在同一包中也 可以访问
如果子类没有在同一个 包中,也不能访问
在继承的体系中,访问看类型,调用看对象,在案例56中,当一个Crucian对象的类型被定义成Fishes时,这个 对象只能访问Fishes所拥有的属性和方法,但是实际方法 调用则会到该对象的定义类中查找,如果该方法在这个对象 的类中定义了,则会调用这个方法,否则调用Fishes类中 定义的该方法。从案例5-6的toString()方法的输出就可以 得出该结论。
图5-2 文件中的包结构
在开发的过程中,使用恰当的包结构、包名称和类 名称,可以让自己和其他开发人员快速地了解项目并且 使用你的类。所以,平时要培养这种命名思想,合理地 命名包和类名。
2.访问修饰符
在Java中有4种访问修饰符:public、protected、 private和default,这4种访问修饰符的控制范围是不 同的,如表5-1所示。
通过表5-1可知,当访问修饰符是public的时候,所有 的类都可以访问,就是说这是完全公开的;当用protected 修饰的时候只能被同包下的类和子类所访问(子类的概念在 5.4节中会详细介绍);如果是使用private,则只有当前类 可以访问;对于没有修饰符限制的,我们称之为缺省修饰符, 这种方法或者属性只能被本包内的其他类所使用,如果其子 类不在本包内,也不可以使用。
第 7章 类和对象
char GetSex(); };
7.5 数据成员的初始化
1.在构造函数的函数体中进行初始化。 2.在构造函数的头部初始化。 3.混合初始化。 4.拷贝构造函数
1. 在构造函数的函数体中初始化
class Person { char m_strName[20]; int m_nAge; int m_nSex; Person(){ strcpy(m_strName,”XXX”); m_nAge=0; m_nSex=0; } Person(char *name, int age, char sex) public:
家庭情况
基本工资: double 岗位津贴: double 劳保福利: double 独生子女: double 房租: double 电费: double 水费: double 取暖费: double 保育费: double 实发工资: double
类(Class)----数据类型
<数据成员或成员函数表>;
例7-1 定义一个Person类,用来说明人员类对象
// Example 7-1:定义Person类 class Person {private: char m_strName[20]; int m_nAge; int m_nSex; public: void Register(char *name, int age, char sex); char * GetName(); int GetAge(); char GetSex(); void ShowMe(); };
3. 对象的引用
对象是包含现实世界物体特征的抽象实体,反映了系统为之保 存信息和(或)与之交互的能力。
java程序设计第二版课后答案
java程序设计第二版课后答案Java程序设计第二版课后答案涵盖了多个章节,每个章节都包含了不同的编程概念和练习题。
以下是一些常见章节的课后答案概要,以供参考:第1章:Java简介- 1.1 Java的起源和特点- 1.2 Java平台的组成- 1.3 Java开发环境的搭建第2章:基本语法- 2.1 数据类型- 2.2 变量声明- 2.3 运算符- 2.4 控制语句(if, switch, loop)第3章:控制流程- 3.1 条件语句(if-else, switch-case)- 3.2 循环语句(for, while, do-while)- 3.3 跳转语句(break, continue, return)第4章:数据结构- 4.1 数组的定义和使用- 4.2 字符串的处理- 4.3 集合框架简介第5章:面向对象编程- 5.1 类和对象- 5.2 构造方法- 5.3 继承- 5.4 封装和多态第6章:异常处理- 6.1 异常的概念- 6.2 异常的分类- 6.3 异常的处理方式(try-catch-finally)第7章:输入输出- 7.1 标准输入输出- 7.2 文件输入输出- 7.3 序列化第8章:Java集合框架- 8.1 集合的基本概念- 8.2 List接口及其实现- 8.3 Set接口及其实现- 8.4 Map接口及其实现第9章:泛型- 9.1 泛型的概念- 9.2 泛型的使用- 9.3 泛型的限制第10章:多线程- 10.1 线程的概念- 10.2 创建和启动线程- 10.3 线程的同步第11章:网络编程- 11.1 网络编程基础- 11.2 Socket编程- 11.3 URL和URLConnection第12章:图形用户界面- 12.1 AWT和Swing- 12.2 事件处理- 12.3 布局管理器第13章:Java数据库连接- 13.1 JDBC基础- 13.2 数据库连接和操作- 13.3 SQL语句的使用第14章:Java Web应用- 14.1 Servlet基础- 14.2 JSP技术- 14.3 MVC架构模式每个章节的课后答案通常包括理论问题和编程练习题的解答。
《面向对象程序设计》课程标准
《面向对象程序设计》课程标准1.课程说明《面向对象程序设计》课程标准课程编码〔 38321 〕承担单位〔计算机信息学院〕制定〔〕制定日期〔2022年11月16日〕审核〔专业指导委员会〕审核日期〔2022年11月20日〕批准〔二级学院(部)院长〕批准日期〔2022年11月28日〕(1)课程性质:本门课程是物联网应用技术专业的必修课程。
(2)课程任务:主要针对程序员、测试员等岗位开设,主要任务是培养学生在软件工程项目开发岗位上的程序设计能力,要求学生掌握面向对象程序设计方面的基本技能。
(3)课程衔接:在课程设置上,前导课程有《计算机应用基础》、《C语言程序设计》、《Java程序设计》,后续课程有《物联网应用系统开发》、《物联网综合项目实训2》。
2.学习目标通过本门课程的学习,使学生掌握面向对象的基本概念和使用面向对象技术进行程序设计的基本思想;掌握面向对象编程工具的使用方法;培养学生动手开发程序的能力,使学生养成善于观察、独立思考的习惯,同时通过教学过程中的实际开发环节强化学生的职业道德意识和素养,为学生以后从事专业化软件开发工作奠定坚实基础。
通过本门课程的学习,使学生熟练掌握C#程序设计开发运行的环境配置和使用方法,使学生能够应用C#程序设计语言进行程序编写和调试,进一步掌握面向对象程序设计的基本理念。
3.课程设计本课程以C#物联网实训系统项目为载体,与新大陆公司合作设计了若干个典型事例作为具体的学习情境;根据岗位要求,确定学习目标及学习任务;本课程采取项目教学和案例教学的教学模式,以学生为主体、以培养学生面向对象程序设计能力和提高团队合作意识为导向组织教学考核。
表1:学习领域的内容与学时分配表2:课程总体设计4.教学设计表3:学习情境设计5.课程考核本课程的考核主要由平时成绩、期末考试两部分组成。
其中:(1)平时成绩:平时成绩占总成绩的30%,主要考查指标有:平时上课出勤情况、课堂表现、作业完成情况、实训环节等。
JAVA语言与面向对象程序设计课后习题答案
JAVA语言与面向对象程序设计课后习题答案第1章面向对象软件开发概述1.简述面向过程问题求解和面向对象问题求解的异同。
试列举出面向对象和面向过程的编程语言各两种。
请问:面向过程问题解,以具体内容的解题过程为研究和同时实现的主体,其思维特点更吻合于计算机;面向对象的问题解,则就是以d对象‖为主体,d对象‖就是现实世界的实体或概念在计算机逻辑中的抽象化则表示,更吻合于人的思维特点。
面向过程的编程语言:c,pascal,foratn。
面向对象的编程语言:c++,java,c#。
2.详述对象、类和实体及它们之间的相互关系。
尝试从日常碰触至的人或物中抽象化出来对象的概念。
答:面向对象技术中的对象就是现实世界中某个具体的物理实体在计算机逻辑中的映射和体现。
类是同种对象的集合与抽象。
类是一种抽象的数据类型,它是所有具有一定共性的对象的抽象,而属于类的某一个对象则被称为是类的一个实例,是类的一次实例化的结果。
如果类是抽象的概念,如d电视机‖,那么对象就是某一个具体的电视机,如d我家那台电视机‖。
3.对象存有哪些属性?什么就是状态?什么就是犯罪行为?二者之间有何关系?建有对象d学生‖,精义这个对象设计状态与犯罪行为。
答:对象都具有状态和行为。
对象的状态又称作对象的静态属性,主要指对象内部所涵盖的各种信息,也就是变量。
每个对象个体都具备自己专有的内部变量,这些变量的值标明了对象所处的状态。
行为又称为对象的操作,它主要表述对象的动态属性,操作的作用是设置或改变对象的状态。
学生的状态:姓名、性别、年龄、所在学校、所在系别、通讯地址、电话号码、入学成绩等;学生的行为:自我介绍、入学注册、选课、参加比赛等。
4.对象间存有哪三种关系?对象d班级‖与对象d学生‖就是什么关系?对象d学生‖与对象d大学生‖就是什么关系?答:对象间可能存在的关系有三种:包含、继承和关联。
对象d班级‖与对象d学生‖是包含关系。
对象d学生‖与对象d大学生‖是继承关系。
第7章_面向对象系统设计用2
7.10
设计关联
7.10
设计关联
(2) 两个方向的关联都用属性实现。具体实现方 法已在前面讲过,如图7.9所示。这种方法能实 现快速访问,但是,如果修改了一个属性,则相 关的属性也必须随之修改,才能保持该关联链的 一致性。当访问次数远远多于修改次数时,这种 实现方法很有效。 (3) 用独立的关联对象实现双向关联。关联对 象不属于相互关联的任何一个类,它是独立的关 联类的实例,如图7.10所示。
用户界面类 输入界面
用户界面
输入、输出、 数据校验、 发送业务处理请求 输入输出元素 业务处理对象
数据校验() 业务处理()
输出界面
图7.3(a) 用户界面包
图7.3(b)用户界面包含的类
2)业务处理包
如图7.4(a)所示,业务处理层的职责是: (1)实现各种业务处理逻辑或处理算法; (2)验证请求者的权限; (3)向数据访问对象发送数据持久化操作的请求; (4)向用户界面层返回处理结果。 业务处理包含的类如图7.4(b)所示。
1.ห้องสมุดไป่ตู้
设计实现服务的算法
考虑的因素: (1)算法复杂度。 (2)容易理解与容易实现。 (3)易修改。
2.
选择数据结构 3. 定义内部类和内部操作
7.10 设计关联
1. 实现单向关联-- 用指针可以方便地实现单向关 联。如果关联的重数是一元的(如图7.8所示),则实现关
联的指针是一个简单指针;如果重数是多元的,则需要用一 个指针集合实现关联(参见图7.9)。
2.面向对象数据库管理系统
◆扩展的关系数据库途径:与使用关系 数据库管理系统时方法相同。 ◆扩展的面向对象程序设计语言途径: 无须增加服务,这种数据库管理系统 已经给每个对象提供了“存储自己” 的行为。只需给需要长期保存的对象 加个标记,然后由面向对象数据库管 理系统负责存储和恢复这类对象。
Java面向对象程序设计智慧树知到答案章节测试2023年陕西交通职业技术学院
第一章测试1.下列选项中,可以正确配置classpath的命令是()A:set classpath =C:Files.0_15 B:classpath set : C:Files.0_15 C:classpath set=C:Files.0_15 D:set classpath : C:Files.0_15 答案:A2.在JDK安装目录下,用于存放可执行程序的文件夹是()A:binB:dbC:jreD:lib答案:A3.下面关于Java程序的描述中,错误的是()A:不同操作系统上的Java虚拟机是相同的B:Java程序运行时,必须经过编译和运行两个步骤。
C:.class格式的文件是用来运行的D:.java格式的源文件是用来编译的答案:A4.下列选项中,哪些选项用于构成JDK开发环境()。
A:Java运行工具B:Java编译工具C:Java文档生成工具D:Java打包工具答案:ABCD5.下列关于使用Javac命令编译后生成文件的说法中,正确的是()A:编译后生成文件的后缀名为.classB:编译后生成的文件可以在Java虚拟机中运行C:编译后生成的文件为二进制文件D:编译后生成文件的后缀名为.java答案:ABC6.下列目录中,哪些属于JDK安装后的子目录()A:jre目录B:lib目录C:include目录D:demo目录答案:ABC7.lib是library的缩写,用于存放Java类库或库文件。
( )A:对B:错答案:A8.如果classpath环境变量没有进行设置,Java虚拟机会自动将其设置为“.”,也就是当前目录。
( )A:错B:对答案:B9.在任意命令行窗口中执行javac命令,如果都能正常地显示帮助信息,说明系统path环境变量配置成功。
( )A:对B:错答案:A10.Eclipse只是一个框架和一组服务,所有功能都是将插件组件加入到Eclipse框架中来实现的。
( )A:对B:错答案:A第二章测试1.下列关于注释作用的描述中,错误的是()A:可以对程序进行说明B:会参与编译C:帮助整理编程思路D:可以帮助调试程序答案:B2.下面关于整数类型的描述中,错误的是()A:int是java中的整数类型,它在内存中占4个字节。
Java面向对象设计的六大原则
Java⾯向对象设计的六⼤原则这是设计模式系列开篇的第⼀篇⽂章。
也是我学习设计模式过程中的总结。
这篇⽂章主要讲的是⾯向对象设计中,我们应该遵循的六⼤原则。
只有掌握了这些原则,我们才能更好的理解设计模式。
我们接下来要介绍以下6个内容。
单⼀职责原则——SRP开闭原则——OCP⾥式替换原则——LSP依赖倒置原则——DIP接⼝隔离原则——ISP迪⽶特原则——LOD单⼀职责原则单⼀职责原则的定义是就⼀个类⽽⾔,应该仅有⼀个引起他变化的原因。
也就是说⼀个类应该只负责⼀件事情。
如果⼀个类负责了⽅法M1,⽅法M2两个不同的事情,当M1⽅法发⽣变化的时候,我们需要修改这个类的M1⽅法,但是这个时候就有可能导致M2⽅法不能⼯作。
这个不是我们期待的,但是由于这种设计却很有可能发⽣。
所以这个时候,我们需要把M1⽅法,M2⽅法单独分离成两个类。
让每个类只专⼼处理⾃⼰的⽅法。
单⼀职责原则的好处如下:可以降低类的复杂度,⼀个类只负责⼀项职责,这样逻辑也简单很多提⾼类的可读性,和系统的维护性,因为不会有其他奇怪的⽅法来⼲扰我们理解这个类的含义当发⽣变化的时候,能将变化的影响降到最⼩,因为只会在这个类中做出修改。
开闭原则开闭原则和单⼀职责原则⼀样,是⾮常基础⽽且⼀般是常识的原则。
开闭原则的定义是软件中的对象(类,模块,函数等)应该对于扩展是开放的,但是对于修改是关闭的。
当需求发⽣改变的时候,我们需要对代码进⾏修改,这个时候我们应该尽量去扩展原来的代码,⽽不是去修改原来的代码,因为这样可能会引起更多的问题。
这个准则和单⼀职责原则⼀样,是⼀个⼤家都这样去认为但是⼜没规定具体该如何去做的⼀种原则。
开闭原则我们可以⽤⼀种⽅式来确保他,我们⽤抽象去构建框架,⽤实现扩展细节。
这样当发⽣修改的时候,我们就直接⽤抽象了派⽣⼀个具体类去实现修改。
⾥⽒替换原则⾥⽒替换原则是⼀个⾮常有⽤的⼀个概念。
他的定义如果对每⼀个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有对象o1都替换成o2的时候,程序P的⾏为都没有发⽣变化,那么类型T2是类型T1的⼦类型。
《实用软件工程》第7章 面向对象分析
21
划分主题
B.主题图 上述的主题划分的最终结果能够形成一个完整的对象类图和一个主题图。 主题图一般有如下3种表示方式。 • 展开方式
18
建立对象模型
复杂问题(大型系统)的对象模型 通常由下述5个层次组成:主题层(也称 为范畴层)、类与对象层、结构层、属 性层和服务层,如图所示。
上述5个层次对应着在面向对象分析 过程中建立对象模型的5项主要活动:划 分主题;找出类与对象;识别结构;定 义属性;定义服务。实际上五项活动没 有必要的完成顺序,设计时也不需要严 格遵守自顶向下原则。
12
面向对象分析原则
1.定义有实际意义的对象 特别要注意的是,一定要把在应用领域中有意义的、与所要解决的问题有关系的所有事物作为对象,
既不能遗漏,也不要定义无关对象。 2.模型的描述要规范、准确
强调实体的本质,忽略无关的属性。对象描述应尽量使用现在时态,陈述语句,以保证语义的清晰。 定义对象时还应该描述对象之间的关系及对象的背景信息 3.共享性
27
确定属性
例:多媒体商店销售系统
需要处理的文件:图像文件和声音文件,都拥有名称和唯一编码,作者信息和 格式信息,声音文件还包括文件时长(秒)。 功能:①添加新的媒体文件;
②通过编码查找需要的文件; ③删除指定文件; ④统计系统中文件的数量。
28
确定属性
分析过程:根据文件的信息,图像文件和声音文件的类都需要有属性:id-编码,author-作者, format-格式。为了方便处理,还可加入source-文件位置。由功能①③,应该有按参数构造和按编码 删除的两个方法。此外还有findByld-查找,count-查找两个方法。
面向对象分析第六章第七章
2019/10/15
共27页 第32页
一般/特殊结构表示法:
表示一般与 特殊结构
一般类 一般类 (父类、基类、超类)
继承
特殊类 ......
特殊类 特殊类 (子类)
子类的公共属性和操作归属于一般类
并被每一个子类共享,每一个子类都
继承了一般类的特征。
2019/10/15
共27页 第33页
一般/特殊结构举例(归纳关系):
2019/10/15
共27页 第9页
几个常用的术语
面向对象(OO) 面向对象方法(OOM) 面向对象分析(OOA) 面向对象设计(OOD) 面向对象程序设计(OOP) 面向对象测试(OOT) 面向对象需求分析(OORA) 面向对象领域分析(OODA) 面向对象数据库系统(OODBMS) 面向对象计算机辅助软件工程(OOCASE)
2019/10/15
共27页 第16页
对象模型化技术(三视点技术)
(Object Model Tech. OMT)
对象模型化技术用于把分析时收集的 信息构造在三类模型中,即对象模型、 功能模型和动态模型。
这个模型化的过程是一个迭代过程。
2019/10/15
共27页 第17页
分析模型
•对象模型: 描述静态结构, 定义做
象
可感知的物理实体 人或组织的角色 应该记忆的事件 两个多个事件的相互作用,通常具
有交易或接触性质 需要说明的概念
2019/10/15
共27页 第45页
建立对象模型
(2)筛选出正确的类-&-对象
冗余 无关 笼统 属性
操作 实现
2019/10/15
Java程序设计课件7第七章 JDBC
方法名 Statement createStatement() throws SQLException PreparedStatement prepareStatement(String sql) throws SQLException CallableStatement prepareCall(String sql)
(2)数据库的操作 import java.docx 7.2.3 项目实施 (1)通过分析题目可以得出以下信息: ①在6-1项目基础上,创建表userTable,包括userID,username,userPassword三个字段; ②利用JDBC的API完成数据库的操作。 (2)编码: import java.docx (3)调试运行,显示结果
《JAVA程序设计》课程
7 .1 JDBC连接
7.1.1 项目(7-1)描述 安装和配置一种数据库,在Eclipse下完成数据库的连接测试。
7.1.1 项目知识准备 (1)JDBC概述 之前所学的案例,都是通过控制台打印输出,数据无法保存,每次运行程序都需要重新输入,在JAVA中如何实现把各 种数据存入数据库,从而长久保存。JAVA是通过JDBC技术实现对各种数据库访问的,JDBC是应用程序与各种数据库之 间进行对话的媒介。 JDBC是JAVA数据库连接(JAVA DATABASE CONNECTIVITY)技术的简称,由一组使用JAVA语言编写的类和接口组成,使 得JAVA程序能够连接各种常用的数据库。Sun公司提供了JDBC的接口规范—JDBC API,而数据库厂商或第三方中间件厂 商根据该接口规范提供针对不同数据库的具体实现—JDBC 驱动。 (2)JDBC连接数据库的API
getConnection(String url, String user, String password)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象的几个基本原则
Power point 制作:耿祥义 张跃平
配合< Java面向对象程序设计>例子源代码一起使用
2010-1-10 1
导读
主要内容 • UML类图简介 • 面向抽象原则 • 开-闭原则 • 多用组合少用继承原则 • 高内聚-低耦合原则 难点 • 开-闭原则 本章给出面向对象设计的几个基本原则,了解这 些基本原则,有助于知道如何使用面向对象语言编写 出易维护、易扩展和易复用的程序代码。
§7.1.7 注释(Annotation) UML使用注释为类图提供附加的说明。 UML在一个带卷角的长方形中显示给出的注释, 并使用虚线将这个带卷角的长方形和所它所注释的 实体连接起来。
2010-1-10
10
§7.2 面向抽象原则
§7.2.1 抽象类和接口 在这里我们提炼一些抽象类和接口二者最重要的知 识点,以便使读者更加容易的理解面向抽象的原则。
◆Geometry.java,Pillar.java,Circle.java,Rectangle.java ,Application.java
2010-1-10
12
§7.3 开-闭原则 所 谓 “ 开 - 闭 原 则 ” ( Open-Closed Principle)就是让你的设计应当对扩展开放, 对修改关闭。
2010-1-10
13
§7.4 多用组合少用继承原则
方法复用的两种最常用的技术就是类继承和 对象组合。
2010-1-10
14
§7.4.1 继承与复用
子类继承父类的方法作为自己的一个方法, 就好像它们是在子类中直接声明一样,可以被子 类中自己声明的任何实例方法调用。也就是说, 父类的方法可以被子类以继承的方式复用。
1 抽象(abstract)类具有如下特点: ◆抽象类中可以有abstract方法,也可以有非abstract方法。 ◆抽象类不能用new运算符创建对象。 ◆如果一个非抽象类是某个抽象类的子类,那么它必须重写父类的 abstract方法。 ◆抽象类声明的对象做上转型对象。 A.java,B.java,Application.java 2.接口(interface)具有如下特点: ◆接口中只可以有public权限的abstract方法,不能有非abstract方法。 ◆接口由类去实现,即一个类如果实现一个接口,那么它必须重写接口中 的abstract方法。 ◆接口回调。
5
§7.1.3 泛化关系(Generalization) 对于面向对象语言 ,UML中 所说的泛化关系就是指类的 继承关系。 如果一个类是另一个类的 子类,那么UML通过使用一个 实线连接两个类的UML图来表 示二者之间的继承关系,实 线的起始端是子类的UML图, 终点端是父类的UML图,但终 点端使用一个空心的三角形 表示实线的结束。
2010-1-10 7
§7.1.5 依赖关系(Dependency) 如果A类中某个方法的参数用B类(接口)来声明的 变量或某个方法返回的数据类型是B类型的,那么A和 B的关系是依赖关系,称A依赖于B。如果A依赖于B, 那么UML通过使用一个虚线连A和B的UML图,虚线的起 始端是A的UML图,终点端是B的UML图,但终点端使用 一个指向B的UML图的方向箭头表示虚线的结束。
2010-1-10 2
§7.1 UML类图简介
UML(Unified Modeling Language)类图(Class Diagram)属 于结构图,常被用于描述一个系统的静态结构。
2010-1-10
3
§7.1.1 类的UML图 在类的UML图中,使用一 个长方形描述一个类的主要构 成,将长方形垂直地分为三层。 ◆第1层是名字层 ◆第2层是变量层,也称属性层, 列出类的成员变量及类型,格 式是“变量名字:类型”。 ◆第3层是方法层,也称操作层, 列出类的方法及返回类型,格 式是“方法名字(参数列表): 类型”。
2010-1-10 4
§7.1.2 接口(Interface) 表示接口的UML图使用一个长 方形描述一个接口的主要构成, 将长方形垂直地分为三层。 ◆顶部第1层是名字层,用 <<interface>>修饰名字。 ◆第2层是常量层,列出接口中 的常量及类型,格式是“常量名 字:类型”。 ◆第3层是方法层,也称操作层, 列出接口中的方法及返回类型, 格式是“方法名字(参数列表): 类型”。 2010-1-10
2010-1-10
15
§7.4.2 组合与复用
一个类可以把对象作为自己的成员变量,如 果用这样的类创建对象,那么该对象中就会有其 它对象,也就是说该对象将其他对象作为自己的 组成部分(这就是人们常说的Has-A),或者说 该对象是由几个对象组合而成。
2010-1-10
16
§7.4.3 多用组合
少用继承
2010-1-10
8
§7.1.6 实现关系(Realization) 如果一个类实现了 一个接口,那么类和 接口的关系是实现关 系,称类实现接口。 UML通过使用虚线连接 类和它所实现的接口, 虚线起始端是类,虚 线的终点端是它实现 的接口,但终点端使 用一个空心的三角形 表示虚线的结束。
2010-1-10 9
2010-1-10
ห้องสมุดไป่ตู้18
2010-1-10 6
§7.1.4 关联关系(Association) 如果A类中成员变量是用B 类(接口)来声明的变量, 那么A和B的关系是关联关系, 称A关联于B。 如果A关联于B,那么UML通 过使用一个实线连A和B的UML 图,实线的起始端是A的UML 图,终点端是B的UML图,但 终点端使用一个指向B的UML 图的方向箭头表示实线的结 束。
之所以提倡多用组合,少用继承,是因为在 许多设计中,人们希望系统的类之间尽量是低耦 合的关系,而不希望是强偶合关系。
2010-1-10
17
§7.5 高内聚-低耦合原则
如果类中的方法是一组相关的行为,则称该类是高 内聚的,反之称为低内聚的。 高内聚便于类的维护,而低内聚不利于类的维护。 低耦合就是尽量不要让一个类含有太多的其它类的 实例的引用,以避免修改系统的其中一部分会影响到其 它部分。
2010-1-10
Com.java,ComImp.java,Application.java
11
§7.2.2 面向抽象
所谓面向抽象编程,是指当设计一个类时,不 让该类面向具体的类,而是面向抽象类或接口, 即所设计类中的重要数据是抽象类或接口声明的 变量,而不是具体类声明的变量。
◆ Circle.java,Pillar.java