- 浏览: 151203 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
hx0637:
楼主!小弟要面临面试了,能否指导下小弟?
面试 深圳一家公司的 -
kljismi:
你好,我现在正在开这项目的代码,但是我不明白@Privileg ...
权限管理模块分析 -
yzhw:
终于找到了
ImageSizer.java -
sunloveny:
国
struts国际化 -
jackotty:
谢谢楼主的分享
struts validator验证框架
1.名词解释
答: JDO 是Java对象持久化的新的规范,为Java Data 0bject的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS) , JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。 JDO ( Java Data Object ) 是 SUN 为了在传统数据存储上存取 Java 对象而建立的一个标准。 使用 JDO,Java 开发人员开发程序时使用面向对象的观点来处理数据存储, 而不用花时间去学习和考虑不同数据库的细节。
JNDI: (Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
答:JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。
POJO: Plain Old Java Object
IOC: 依赖注入
答:IOC-全称Inversion of Control,中文解释:控制反转。另外,IOC又称DI(全称)Dependency Injection,中文解释:依赖注入。
ORM:答:ORM对象-关系映射(Object-Relation Mapping)模式是指在单个组件中负责所有实体域对象的持久化,封装数据访问细节
JDBC: (Java Database Connectivity) 是用于执行SQL 语句的Java 应用程序接口,由一组用Java 语言编写的类和接口组成。JDBC 是一种规范,他让各数据库厂商为Java 程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS 的Java 应用程序的开发工具和产品成为可能
2、j2ee常用的设计模式?说明工厂模式。
Java中的23种设计模式:
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
3、如果说有两个类 一个Student,一个Message如何在配置文件中写二者一对一的关系并设置及联关系(在删除学生的同时与之对应的信息也删掉)?(写出一种即可)应用UML画出Student和Message的类图和关系。
•动态代理
在JDK1.3之后加入了可协助开发动态代理功能的API,您不必为特定对象与方法编写特定的代理对象,使用动态代理,可以使得一个处理者(Handler)服务于各个对象。首先,一个处理者的类设计必须实现java.lang.reflect.InvocationHandler接口,以实例来进行说明,例如
主要的概念是使用Proxy .newProxyInstance ()静态方法建立一个代理对象,建立代理对象时必须告知所要代理的接口,之后您可以操作所建立的代理对象,在每次操作时会执行InvocationHandler的invoke()方法,invoke ()方法会传入被代理对象的方法名称与执行参数,实际上要执行的方法交由method.invoke(),您在method.invoke()前后加上记录动作,method.invoke ()传回的对象是实际方法执行过后的回传结果。要实现动态代理,同样必须定义所要代理的接口,例如:
•一个 Bean 从建立到销毁,如果是使用 BeanFactory来生成、管理 Bean 的话,会历经几个执行阶段。.–Bean 的建立•由 BeanFactory 读取 Bean 定义文件,并生成各个 Bean 实例。–属性注入•执行相关的 Bean 属性依赖注入。
–BeanNameAware 的setBeanName ( )
•如果 Bean 类有实现 org . springframework . beans . Factory. BeanNameAware 接口,则执行它的setBeanName ()方法。
–BeanFactoryAware 的 setBeanFactory()
•如果 Bean 类有实现 org .springgframework . beans . factory . BeanFactoryAware 接口,则执行它的SetBeanFactory ( )方法。–BeanPostProcessors 的 processBeforelnitialization ( )
–initializingBean 的 afterPropertiesSet ( )
•如果 Bean 类己实现 org.springframework . beans.factory.InitializingBean 接口,则执行它的 afterPropertiesSet ( )方法。
–Bean 定义文件中定义init-method
•可以在 Bean 定义文件使用” init-method“属性设定方法名称:
–BeanPostProcessors 的 processaAfterlriitialization ( )
•如果有任何的 BeanPostProcessors实例与 Bean 实例关联,则执行 PostProcessors 实例的 processaAfterlnitialization()方法。
–DisposableBean的destroy ( )
•在容器关闭时,DisposableBean 如果 Bean 类有实现 org. springframework.beans.factory接口,则执行它的 destroy ( ) 方法。
–Bean 定义文件中定义 destroy-method
•在容器关闭时,可以在 Bean 定义文件中使用” destroy-method”属性设定方法名称.
4.什么是UML,包括哪些?
标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。
5..解释下面关于J2EE的名词
(1)JNDI:Java Naming & Directory Interface,JAVA命名目录服务.主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能.
(2)JMS:Java Message Service,JAVA消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播.
(3)JTA:Java Transaction API,JAVA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可.
(4)JAF: Java Action FrameWork,JAVA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和自定义实现自己的个性安全控制策略.
(5)RMI:Remote Method Interface,远程方法调用
EJB:Enterprise JavaBeans 企业JavaBean组件
IDL:Interface Definition Language 接口定义语言
JTS:Java Transaction Service Java事务服务
Object Serialization:对象序列化
JavaMail:Java邮件服务
JDBC:数据库访问API
JSP:Java Server Pages
Servlet:
Session Bean(会话BEAN)
Entity Bean(实体BEAN)
Message Driver Bean(消息驱动BEAN)
Session Bean分为两种:
Stateless Session Bean(无状态会话Bean)
Statefull Session Bean(有状态会话Bean)
Entity Bean分为两种:
CMP:Container Manager Persistence(容器管理持久性)
BMP:Bean Manager Persistence(Bean管理持久性)
其他缩写名词:
DTO:Data Transport Object 数据传输对象
JDO:Java Data Object
DAO:Database Access Object 数据库访问对象
POJO:Proterozoic Java Object Java原生对象
VO:Value Object 值对象
SOAP:Simple Object Access Protocol 简单对象访问协议
6.什么是Web容器?
实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括:并发性,安全性,生命周期管理等等.
7.什么是Web Service?
Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。
Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
优势:
(1).跨平台。
(2).SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的支持。
(3).由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个“漏洞”。
(4).此外,WebService实现的技术难度要比CORBA和DCOM小得多。
(5).要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实现,小公司也可以用上。
(6).在C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。
缺点:
(1).WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。
(2).WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA。
选择题,编程题集锦
一、选择题(每题2分)
1.下列哪些情况可以终止当前线程的运行?
a. 抛出一个例外时。
b. 当该线程调用sleep()方法时。
c. 当创建一个新线程时。
d. 当一个优先级高的线程进入就绪状态时。
答案:ABD
2. 下面哪些为构造函数的特性定义
a. 在类中声明构造函数时,名称应该与类名相同
b. 具有重载特性,可以建立多个相同的名称
c. 使用类建立新对象时,会自动执行构造函数,因此在构造函数内设定变量的初值或进行内存分配
d. 以上都是
答案:ABCD
3. 关于异常处理机制的叙述哪些正确
a. catch部分捕捉到异常情况时,才会执行finally部分
b. 当try区段的程序发生异常时,才会执行catch区段的程序
c. 不论程序是否发生错误及捕捉到异常情况,都会执行finally部分
d. 以上都是
答案:BC
4. 下列关于接口的叙述中哪些是错误的
a. 接口中的数据必须设定初值
b. 接口中无法声明一般方法
c. 接口可以声明引用
d. 以上都正确
答案:BC
5. Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的?
A. 重写是父类与子类之间多态性的一种表现。
B. 重写是一个类中多态性的一种表现。
C. 重载是一个类中多态性的一种表现。
D. 重载是父类与子类之间多态性的一种表现。
6.在Struts应用的视图中包含哪些组件?
A. JSP
B. Servlet
C. ActionServlet
D. Action
E. 代表业务逻辑或业务数据的JavaBean
F. EJB
G. 客户化标签
答案:A,G
7. struts框架中,关于FormBean,下列哪些说法是正确的:
A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action
B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证
C 用户每次提交表单,都会产生一个新的FormBean实例
D 动态FormBean不能进行验证操作
答案:A
8.以下哪些不是Hibernate的检索方式:
A、导航对象图检索
B、OID检索
C、ORM检索
D、QBC检索
E、本地SQL检索
F、HQL检索
答案:C
9.以下代码定义了一个变量,如何输出这个变量的值?
<bean:define id="stringBean" value=“helloWorld“/>
(A)<bean:write name=“stringBean"/>
(B) <bean:write name=“helloWorld"/>
(C)<%= stringBean%>
(D)<% String myBean=(String)pageContext.getAttribute(“stringBean”,PageContext.PAGE_SCOPE);
%>
<%=myBean%>
答案: A,D
10.EJB有哪些对象?
A. Remote(Local)接口
B. Home(LocalHome)接口
C. Bean类
D. Enterprise Bean Provider
答案:A B C
11方法可以进行servlet的调试?(A B C D E)
A、使用打印语句; 在桌面计算机上运行服务器
B、使用Apache Log4J
C、使用IDE集成的调试器
D、直接查看HTML源码
E、返回错误页面给客户
12、下面关于servlet的功用说法正确的有哪些?(A B C D E)
A、读取客户程序发送来的显式数据
B、读取客户程序发送来的隐式数据
C、生成相应的结果
D、发送显式的数据给客户程序
E、发送隐式的数据给客户程序
13、下面关于session的用法哪些是错误的?(A B D)
A、HttpSession session = new HttpSession();
B、String haha = session.getParameter(“haha”);
C、session.removeAttribute(“haha”);
D、session. setAttribute(“haha”);
14、关于<jsp:include page="Relative URL" />说法正确的有哪些?(A B C)
A、URL的输出在请求时被插入到JSP页面中
B、不能含有影响整个页面的JSP内容
C、被包含文件改变后不需更改使用它的页面
D、被包含文件更改后,需要手动地更新使用它的页面
15、关于bean的说法正确的有哪些?(B D)
A、具备一个零参数(空)的构造函数(不是必须的)
B、不应该有公开的实例变量(字段)
C、所有的属性都必须通过getXxx和setXxx方法来访问
D、布尔型的属性使用isXxx,而非getXxx
16、下面关于MVC说法错误的有哪些?(A C)
A、必须使用复杂的框架
B、使用内建的RequestDispatcher能够很好地实现MVC
C、MVC影响整个系统的设计
D、我们可以用MVC来处理单个请求
17、下面的标签中哪些是JSTL标签?(A B C)
A、<c:out…/>
B、<c:set…/>
C、<c:if…/>
D、<c:errors…/>
18、使用Junit测试equals()必须根据哪些属性来进行?(A B C)
A、反身性
B、对称性
C、传递性
D、一致性
19、以下哪些说法是正确的?C
(A)每个HTTP请求对应一个单独的ActionServlet实例
(B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。
(C)每个子应用对应一个单独的RequestProcessor实例
(D)每个子应用对应一个单独的web.xml文件
20、ActionForm Bean对象是由谁创建的?C
(A) <html:form>标签处理类
(B) ActionServlet
(C) RequestProcessor
(D) Action
21、struts框架,错误的是,面那些说法正确?
A Struts中无法完成上传功能
B Struts框架基于MVC模式
C Struts框架容易引起流程复杂、结构不清晰等问题
D Struts可以有效地降低项目的类文件数目
答案:C
四、编程题(1、2题各15分,3题20分)
1、利用异常处理机制的方法来制作一个代码程序段。输入“I am 007”时,打印“亲爱的007,您好”;输入其他字符串时,打印“对不起,请下次进入”,然后程序结束
import java.io.*;
public class KB
{
public static String scan()
{
String str="";
try
{
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
str=buf.readLine();
}
catch(Exception e){}
return str;
}
}
public class MyExceptionTest {
public static void exceptionThrow() throws MyException1 {
throw new MyException1();
}
public static void anotherThrow() throws MyException2 {
throw new MyException2();
}
public static void main(String args[]) {
try {
String str=KB.scan();
if(str.equals("I am 007"))
exceptionThrow();
else
anotherThrow();
} catch (MyException1 e1) {
e1.printStackTrace();
} catch (MyException2 e2) {
e2.printStackTrace();
}
}
}
class MyException1 extends Exception {
MyException1() {
super("亲爱的007,您好");
}
}
class MyException2 extends Exception {
MyException2() {
super("对不起,请下次进入");
}
}
2、使用同步函数实现卖100张票。要求写两个类(主函数类:MainTest,线程类:ThreadTest),线程类实现Runnable接口。
public class MainTest {
public static void main(String args[])
{
Thread t=new Thread(new ThreadTest());
t.start();
}
}
class ThreadTest implements Runnable{
private int tickets = 100;
public void run() {
while(true)
{
sale();
}
}
public synchronized void sale()
{
if(tickets>0)
{
try{
Thread.sleep(10);
}catch(Exception e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" is saling ticket "+tickets--);
}
}
}
3、请完成一个选课系统里注册模块的程序设计:
条件:
学生的持久化类的属性有:id,username,password,sex,major,class,
课程的持久化类的属性有:id,coursename,classroom,coursetime,
JSP页面为:reg.jsp,regok.jsp,regbad.jsp;
完成学生与课程的持久化类的映射文件,设置成级连保存,延迟检索;
写出与注册页面相对应的的Action和ActionForm;要求ActionForm要对表单中的数据格式进行验证;Action要对学生的用户名进行唯一验证;如果没有重复的用户名就可以注册成功,否则失败;
写出检测用户名是否存在的方法;
根据session接口写出相应的方法;
Course.hbm.xml
<hibernate-mapping>
<class name="com.hibernate.Course" table="COURSES">
<id name="id" type="integer">
<column name="ID" />
<generator class="increment" />
</id>
<property name="coursename" type="string">
<column name="COURSENAME" length="45" not-null="true" />
</property>
<property name="coursetime" type="string">
<column name="COURSETIME" length="45" not-null="true" />
</property>
<property name="classroom" type="string">
<column name="CLASSROOM" length="45" not-null="true" />
</property>
<set name="stu_cou" cascade="save-update" lazy="true" inverse="true">
<key>
<column name="COU_ID" not-null="true" />
</key>
<one-to-many class="com.hibernate.StudentCourse" />
</set>
</class>
</hibernate-mapping>
Student.hbm.xml
<hibernate-mapping>
<class name="com.hibernate.Student" table="STUDENTS">
<id name="id" type="integer">
<column name="ID" />
<generator class="increment" />
</id>
<property name="username" type="string">
<column name="username" length="45" not-null="true" />
</property>
<property name="password" type="string">
<column name="password" length="45" not-null="true" />
</property>
<property name="sex" type="string">
<column name="SEX" length="45" not-null="true" />
</property>
<property name="stuclass" type="string">
<column name="STUCLASS" not-null="true" />
</property>
<property name="major" type="string">
<column name="major" length="45" not-null="true" />
</property>
<set name="stu_cou" cascade="save-update" lazy="true" inverse="true">
<key>
<column name="STU_ID" not-null="true" />
</key>
<one-to-many class="com.hibernate.StudentCourse" />
</set>
</class>
</hibernate-mapping>
StudentCourse.hbm.xml
<hibernate-mapping>
<class name="com.hibernate.StudentCourse" table="student_course">
<id name="id" type="integer">
<column name="ID" />
<generator class="increment" />
</id>
<many-to-one name="course" class="com.hibernate.Course">
<column name="COU_ID" not-null="true" />
</many-to-one>
<many-to-one name="student" class="com.hibernate.Student">
<column name="STU_ID" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
struts-config.xml
<struts-config>
<data-sources />
<form-beans>
<form-bean name="RegFormBean"
type="com.formbean.RegFormBean"/>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/actions/reg"
type="com.action.RegAction"
name="RegFormBean"
input="/reg.jsp">
<forward name="bad"
path="/regbad.jsp" />
<forward name="success"
path="/regok.jsp" />
</action>
</action-mappings>
<message-resources parameter="MessageResource"
null="false"/>
</struts-config>
4.Java编程,打印昨天的当前时刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
5.文件读写,实现一个计数器
public int getNum(){
int i = -1;
try{
String stri="";
BufferedReader in = new BufferedReader(new FileReader(f));
while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
return i;
}
public void setNum(){
int i = getNum();
i++;
try{
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false)));
out.write(String.valueOf(i)); //可能是编码的原因,如果直接写入int的话,将出现java编码和windows编码的混乱,因此此处写入的是String
out.close() ;
}catch(Exception e){
e.printStackTrace();
}
}
6. 指出下面程序的运行结果:
class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B(); //执行到此处,结果: 1a2b
ab = new B(); //执行到此处,结果: 1a2bab
}
}
注:类的static 代码段,可以看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其本身的构造
7.写一个Singleton模式的例子
public class Singleton{
private static Singleton single = new Singleton();
private Singleton(){}
public Singleton getInstance(){
return single;
}
}
8 删除表的重复记录
如果记录完全相同才算重复记录,那么: (sql server2000下测试通过)
select distinct * into #tmpp from tid
delete from tid
insert into tid select * from #tmpp
drop table #tmpp
如果有id主键(数字,自增1的那种),那么:(sql server2000下测试通过)
delete from tableA where id not in
(select id = min(id) from tableA group by name)
答: JDO 是Java对象持久化的新的规范,为Java Data 0bject的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS) , JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。 JDO ( Java Data Object ) 是 SUN 为了在传统数据存储上存取 Java 对象而建立的一个标准。 使用 JDO,Java 开发人员开发程序时使用面向对象的观点来处理数据存储, 而不用花时间去学习和考虑不同数据库的细节。
JNDI: (Java Naming & Directory Interface)JAVA命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能。
答:JNDI(The Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。
POJO: Plain Old Java Object
IOC: 依赖注入
答:IOC-全称Inversion of Control,中文解释:控制反转。另外,IOC又称DI(全称)Dependency Injection,中文解释:依赖注入。
ORM:答:ORM对象-关系映射(Object-Relation Mapping)模式是指在单个组件中负责所有实体域对象的持久化,封装数据访问细节
JDBC: (Java Database Connectivity) 是用于执行SQL 语句的Java 应用程序接口,由一组用Java 语言编写的类和接口组成。JDBC 是一种规范,他让各数据库厂商为Java 程序员提供标准的数据库访问类和接口,这样就使得独立于DBMS 的Java 应用程序的开发工具和产品成为可能
2、j2ee常用的设计模式?说明工厂模式。
Java中的23种设计模式:
Factory(工厂模式), Builder(建造模式), Factory Method(工厂方法模式),
Prototype(原始模型模式),Singleton(单例模式), Facade(门面模式),
Adapter(适配器模式), Bridge(桥梁模式), Composite(合成模式),
Decorator(装饰模式), Flyweight(享元模式), Proxy(代理模式),
Command(命令模式), Interpreter(解释器模式), Visitor(访问者模式),
Iterator(迭代子模式), Mediator(调停者模式), Memento(备忘录模式),
Observer(观察者模式), State(状态模式), Strategy(策略模式),
Template Method(模板方法模式), Chain Of Responsibleity(责任链模式)
工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
3、如果说有两个类 一个Student,一个Message如何在配置文件中写二者一对一的关系并设置及联关系(在删除学生的同时与之对应的信息也删掉)?(写出一种即可)应用UML画出Student和Message的类图和关系。
•动态代理
在JDK1.3之后加入了可协助开发动态代理功能的API,您不必为特定对象与方法编写特定的代理对象,使用动态代理,可以使得一个处理者(Handler)服务于各个对象。首先,一个处理者的类设计必须实现java.lang.reflect.InvocationHandler接口,以实例来进行说明,例如
主要的概念是使用Proxy .newProxyInstance ()静态方法建立一个代理对象,建立代理对象时必须告知所要代理的接口,之后您可以操作所建立的代理对象,在每次操作时会执行InvocationHandler的invoke()方法,invoke ()方法会传入被代理对象的方法名称与执行参数,实际上要执行的方法交由method.invoke(),您在method.invoke()前后加上记录动作,method.invoke ()传回的对象是实际方法执行过后的回传结果。要实现动态代理,同样必须定义所要代理的接口,例如:
•一个 Bean 从建立到销毁,如果是使用 BeanFactory来生成、管理 Bean 的话,会历经几个执行阶段。.–Bean 的建立•由 BeanFactory 读取 Bean 定义文件,并生成各个 Bean 实例。–属性注入•执行相关的 Bean 属性依赖注入。
–BeanNameAware 的setBeanName ( )
•如果 Bean 类有实现 org . springframework . beans . Factory. BeanNameAware 接口,则执行它的setBeanName ()方法。
–BeanFactoryAware 的 setBeanFactory()
•如果 Bean 类有实现 org .springgframework . beans . factory . BeanFactoryAware 接口,则执行它的SetBeanFactory ( )方法。–BeanPostProcessors 的 processBeforelnitialization ( )
–initializingBean 的 afterPropertiesSet ( )
•如果 Bean 类己实现 org.springframework . beans.factory.InitializingBean 接口,则执行它的 afterPropertiesSet ( )方法。
–Bean 定义文件中定义init-method
•可以在 Bean 定义文件使用” init-method“属性设定方法名称:
–BeanPostProcessors 的 processaAfterlriitialization ( )
•如果有任何的 BeanPostProcessors实例与 Bean 实例关联,则执行 PostProcessors 实例的 processaAfterlnitialization()方法。
–DisposableBean的destroy ( )
•在容器关闭时,DisposableBean 如果 Bean 类有实现 org. springframework.beans.factory接口,则执行它的 destroy ( ) 方法。
–Bean 定义文件中定义 destroy-method
•在容器关闭时,可以在 Bean 定义文件中使用” destroy-method”属性设定方法名称.
4.什么是UML,包括哪些?
标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图。
5..解释下面关于J2EE的名词
(1)JNDI:Java Naming & Directory Interface,JAVA命名目录服务.主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留下自己的索引,从而满足快速查找和定位分布式应用程序的功能.
(2)JMS:Java Message Service,JAVA消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播.
(3)JTA:Java Transaction API,JAVA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可.
(4)JAF: Java Action FrameWork,JAVA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和自定义实现自己的个性安全控制策略.
(5)RMI:Remote Method Interface,远程方法调用
EJB:Enterprise JavaBeans 企业JavaBean组件
IDL:Interface Definition Language 接口定义语言
JTS:Java Transaction Service Java事务服务
Object Serialization:对象序列化
JavaMail:Java邮件服务
JDBC:数据库访问API
JSP:Java Server Pages
Servlet:
Session Bean(会话BEAN)
Entity Bean(实体BEAN)
Message Driver Bean(消息驱动BEAN)
Session Bean分为两种:
Stateless Session Bean(无状态会话Bean)
Statefull Session Bean(有状态会话Bean)
Entity Bean分为两种:
CMP:Container Manager Persistence(容器管理持久性)
BMP:Bean Manager Persistence(Bean管理持久性)
其他缩写名词:
DTO:Data Transport Object 数据传输对象
JDO:Java Data Object
DAO:Database Access Object 数据库访问对象
POJO:Proterozoic Java Object Java原生对象
VO:Value Object 值对象
SOAP:Simple Object Access Protocol 简单对象访问协议
6.什么是Web容器?
实现J2EE规范中web协议的应用.该协议定义了web程序的运行时环境,包括:并发性,安全性,生命周期管理等等.
7.什么是Web Service?
Web Service就是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。
Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。
注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
优势:
(1).跨平台。
(2).SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的支持。
(3).由于使用了SOAP,数据是以ASCII文本的方式而非二进制传输,调试很方便;并且由于这样,它的数据容易通过防火墙,不需要防火墙为了程序而单独开一个“漏洞”。
(4).此外,WebService实现的技术难度要比CORBA和DCOM小得多。
(5).要实现B2B集成,EDI比较完善与比较复杂;而用WebService则可以低成本的实现,小公司也可以用上。
(6).在C/S的程序中,WebService可以实现网页无整体刷新的与服务器打交道并取数。
缺点:
(1).WebService使用了XML对数据封装,会造成大量的数据要在网络中传输。
(2).WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语言,这一点,它不如CORBA。
选择题,编程题集锦
一、选择题(每题2分)
1.下列哪些情况可以终止当前线程的运行?
a. 抛出一个例外时。
b. 当该线程调用sleep()方法时。
c. 当创建一个新线程时。
d. 当一个优先级高的线程进入就绪状态时。
答案:ABD
2. 下面哪些为构造函数的特性定义
a. 在类中声明构造函数时,名称应该与类名相同
b. 具有重载特性,可以建立多个相同的名称
c. 使用类建立新对象时,会自动执行构造函数,因此在构造函数内设定变量的初值或进行内存分配
d. 以上都是
答案:ABCD
3. 关于异常处理机制的叙述哪些正确
a. catch部分捕捉到异常情况时,才会执行finally部分
b. 当try区段的程序发生异常时,才会执行catch区段的程序
c. 不论程序是否发生错误及捕捉到异常情况,都会执行finally部分
d. 以上都是
答案:BC
4. 下列关于接口的叙述中哪些是错误的
a. 接口中的数据必须设定初值
b. 接口中无法声明一般方法
c. 接口可以声明引用
d. 以上都正确
答案:BC
5. Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的?
A. 重写是父类与子类之间多态性的一种表现。
B. 重写是一个类中多态性的一种表现。
C. 重载是一个类中多态性的一种表现。
D. 重载是父类与子类之间多态性的一种表现。
6.在Struts应用的视图中包含哪些组件?
A. JSP
B. Servlet
C. ActionServlet
D. Action
E. 代表业务逻辑或业务数据的JavaBean
F. EJB
G. 客户化标签
答案:A,G
7. struts框架中,关于FormBean,下列哪些说法是正确的:
A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action
B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证
C 用户每次提交表单,都会产生一个新的FormBean实例
D 动态FormBean不能进行验证操作
答案:A
8.以下哪些不是Hibernate的检索方式:
A、导航对象图检索
B、OID检索
C、ORM检索
D、QBC检索
E、本地SQL检索
F、HQL检索
答案:C
9.以下代码定义了一个变量,如何输出这个变量的值?
<bean:define id="stringBean" value=“helloWorld“/>
(A)<bean:write name=“stringBean"/>
(B) <bean:write name=“helloWorld"/>
(C)<%= stringBean%>
(D)<% String myBean=(String)pageContext.getAttribute(“stringBean”,PageContext.PAGE_SCOPE);
%>
<%=myBean%>
答案: A,D
10.EJB有哪些对象?
A. Remote(Local)接口
B. Home(LocalHome)接口
C. Bean类
D. Enterprise Bean Provider
答案:A B C
11方法可以进行servlet的调试?(A B C D E)
A、使用打印语句; 在桌面计算机上运行服务器
B、使用Apache Log4J
C、使用IDE集成的调试器
D、直接查看HTML源码
E、返回错误页面给客户
12、下面关于servlet的功用说法正确的有哪些?(A B C D E)
A、读取客户程序发送来的显式数据
B、读取客户程序发送来的隐式数据
C、生成相应的结果
D、发送显式的数据给客户程序
E、发送隐式的数据给客户程序
13、下面关于session的用法哪些是错误的?(A B D)
A、HttpSession session = new HttpSession();
B、String haha = session.getParameter(“haha”);
C、session.removeAttribute(“haha”);
D、session. setAttribute(“haha”);
14、关于<jsp:include page="Relative URL" />说法正确的有哪些?(A B C)
A、URL的输出在请求时被插入到JSP页面中
B、不能含有影响整个页面的JSP内容
C、被包含文件改变后不需更改使用它的页面
D、被包含文件更改后,需要手动地更新使用它的页面
15、关于bean的说法正确的有哪些?(B D)
A、具备一个零参数(空)的构造函数(不是必须的)
B、不应该有公开的实例变量(字段)
C、所有的属性都必须通过getXxx和setXxx方法来访问
D、布尔型的属性使用isXxx,而非getXxx
16、下面关于MVC说法错误的有哪些?(A C)
A、必须使用复杂的框架
B、使用内建的RequestDispatcher能够很好地实现MVC
C、MVC影响整个系统的设计
D、我们可以用MVC来处理单个请求
17、下面的标签中哪些是JSTL标签?(A B C)
A、<c:out…/>
B、<c:set…/>
C、<c:if…/>
D、<c:errors…/>
18、使用Junit测试equals()必须根据哪些属性来进行?(A B C)
A、反身性
B、对称性
C、传递性
D、一致性
19、以下哪些说法是正确的?C
(A)每个HTTP请求对应一个单独的ActionServlet实例
(B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。
(C)每个子应用对应一个单独的RequestProcessor实例
(D)每个子应用对应一个单独的web.xml文件
20、ActionForm Bean对象是由谁创建的?C
(A) <html:form>标签处理类
(B) ActionServlet
(C) RequestProcessor
(D) Action
21、struts框架,错误的是,面那些说法正确?
A Struts中无法完成上传功能
B Struts框架基于MVC模式
C Struts框架容易引起流程复杂、结构不清晰等问题
D Struts可以有效地降低项目的类文件数目
答案:C
四、编程题(1、2题各15分,3题20分)
1、利用异常处理机制的方法来制作一个代码程序段。输入“I am 007”时,打印“亲爱的007,您好”;输入其他字符串时,打印“对不起,请下次进入”,然后程序结束
import java.io.*;
public class KB
{
public static String scan()
{
String str="";
try
{
BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));
str=buf.readLine();
}
catch(Exception e){}
return str;
}
}
public class MyExceptionTest {
public static void exceptionThrow() throws MyException1 {
throw new MyException1();
}
public static void anotherThrow() throws MyException2 {
throw new MyException2();
}
public static void main(String args[]) {
try {
String str=KB.scan();
if(str.equals("I am 007"))
exceptionThrow();
else
anotherThrow();
} catch (MyException1 e1) {
e1.printStackTrace();
} catch (MyException2 e2) {
e2.printStackTrace();
}
}
}
class MyException1 extends Exception {
MyException1() {
super("亲爱的007,您好");
}
}
class MyException2 extends Exception {
MyException2() {
super("对不起,请下次进入");
}
}
2、使用同步函数实现卖100张票。要求写两个类(主函数类:MainTest,线程类:ThreadTest),线程类实现Runnable接口。
public class MainTest {
public static void main(String args[])
{
Thread t=new Thread(new ThreadTest());
t.start();
}
}
class ThreadTest implements Runnable{
private int tickets = 100;
public void run() {
while(true)
{
sale();
}
}
public synchronized void sale()
{
if(tickets>0)
{
try{
Thread.sleep(10);
}catch(Exception e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+" is saling ticket "+tickets--);
}
}
}
3、请完成一个选课系统里注册模块的程序设计:
条件:
学生的持久化类的属性有:id,username,password,sex,major,class,
课程的持久化类的属性有:id,coursename,classroom,coursetime,
JSP页面为:reg.jsp,regok.jsp,regbad.jsp;
完成学生与课程的持久化类的映射文件,设置成级连保存,延迟检索;
写出与注册页面相对应的的Action和ActionForm;要求ActionForm要对表单中的数据格式进行验证;Action要对学生的用户名进行唯一验证;如果没有重复的用户名就可以注册成功,否则失败;
写出检测用户名是否存在的方法;
根据session接口写出相应的方法;
Course.hbm.xml
<hibernate-mapping>
<class name="com.hibernate.Course" table="COURSES">
<id name="id" type="integer">
<column name="ID" />
<generator class="increment" />
</id>
<property name="coursename" type="string">
<column name="COURSENAME" length="45" not-null="true" />
</property>
<property name="coursetime" type="string">
<column name="COURSETIME" length="45" not-null="true" />
</property>
<property name="classroom" type="string">
<column name="CLASSROOM" length="45" not-null="true" />
</property>
<set name="stu_cou" cascade="save-update" lazy="true" inverse="true">
<key>
<column name="COU_ID" not-null="true" />
</key>
<one-to-many class="com.hibernate.StudentCourse" />
</set>
</class>
</hibernate-mapping>
Student.hbm.xml
<hibernate-mapping>
<class name="com.hibernate.Student" table="STUDENTS">
<id name="id" type="integer">
<column name="ID" />
<generator class="increment" />
</id>
<property name="username" type="string">
<column name="username" length="45" not-null="true" />
</property>
<property name="password" type="string">
<column name="password" length="45" not-null="true" />
</property>
<property name="sex" type="string">
<column name="SEX" length="45" not-null="true" />
</property>
<property name="stuclass" type="string">
<column name="STUCLASS" not-null="true" />
</property>
<property name="major" type="string">
<column name="major" length="45" not-null="true" />
</property>
<set name="stu_cou" cascade="save-update" lazy="true" inverse="true">
<key>
<column name="STU_ID" not-null="true" />
</key>
<one-to-many class="com.hibernate.StudentCourse" />
</set>
</class>
</hibernate-mapping>
StudentCourse.hbm.xml
<hibernate-mapping>
<class name="com.hibernate.StudentCourse" table="student_course">
<id name="id" type="integer">
<column name="ID" />
<generator class="increment" />
</id>
<many-to-one name="course" class="com.hibernate.Course">
<column name="COU_ID" not-null="true" />
</many-to-one>
<many-to-one name="student" class="com.hibernate.Student">
<column name="STU_ID" not-null="true" />
</many-to-one>
</class>
</hibernate-mapping>
struts-config.xml
<struts-config>
<data-sources />
<form-beans>
<form-bean name="RegFormBean"
type="com.formbean.RegFormBean"/>
</form-beans>
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/actions/reg"
type="com.action.RegAction"
name="RegFormBean"
input="/reg.jsp">
<forward name="bad"
path="/regbad.jsp" />
<forward name="success"
path="/regok.jsp" />
</action>
</action-mappings>
<message-resources parameter="MessageResource"
null="false"/>
</struts-config>
4.Java编程,打印昨天的当前时刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(cal.getTime());
}
}
5.文件读写,实现一个计数器
public int getNum(){
int i = -1;
try{
String stri="";
BufferedReader in = new BufferedReader(new FileReader(f));
while((stri=in.readLine())!=null){
i = Integer.parseInt(stri.trim());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
return i;
}
public void setNum(){
int i = getNum();
i++;
try{
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(f,false)));
out.write(String.valueOf(i)); //可能是编码的原因,如果直接写入int的话,将出现java编码和windows编码的混乱,因此此处写入的是String
out.close() ;
}catch(Exception e){
e.printStackTrace();
}
}
6. 指出下面程序的运行结果:
class A{
static{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B(); //执行到此处,结果: 1a2b
ab = new B(); //执行到此处,结果: 1a2bab
}
}
注:类的static 代码段,可以看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其本身的构造
7.写一个Singleton模式的例子
public class Singleton{
private static Singleton single = new Singleton();
private Singleton(){}
public Singleton getInstance(){
return single;
}
}
8 删除表的重复记录
如果记录完全相同才算重复记录,那么: (sql server2000下测试通过)
select distinct * into #tmpp from tid
delete from tid
insert into tid select * from #tmpp
drop table #tmpp
如果有id主键(数字,自增1的那种),那么:(sql server2000下测试通过)
delete from tableA where id not in
(select id = min(id) from tableA group by name)
发表评论
-
面试题库
2009-02-14 17:45 982j2ee 面试题库 -
连接池的基本工作原理
2009-02-14 17:30 1057连接池的基本工作原理 1、基本概念及原理 由上面的分析 ... -
数据库
2009-02-14 17:29 1251在实际应用中,我们经常遇到需要转换数据的显示方式,比如将横表转 ... -
61条面向对象设计的经验原则
2009-02-14 17:25 612你不必严格遵守这些原 ... -
面试和笔试大全
2009-02-14 17:15 999[size=large]2、String是最基 ... -
jdbc+struts
2009-02-14 17:08 19561 JDBC连接数据库6步 1. Load the JDBC ... -
Jsp&servlet
2009-02-14 17:06 14941 三个Statment区别,用法 Statment,基本的 ... -
Hibernate
2009-02-14 17:04 10751.Hibernate的检索方式 ... -
EJB
2009-02-14 16:51 13061:EJB: 答: Enterprise Ja ...
相关推荐
#### 二、UML其他重要概念 **2.1 UML视图** UML提供了多种视图来描述系统,包括但不限于: - **用例视图:** 描述了系统的功能需求,即系统应该做什么。 - **逻辑视图:** 关注系统的逻辑结构,如类图和对象图。 ...
它为开发者提供了一套图形化的工具,用于描述系统的需求、设计、实现以及系统的其他方面。UML通过不同的图表类型,如用例图、类图、序列图、状态图和活动图等,帮助团队成员之间沟通和理解项目。 1. **用例图(Use ...
6. **扩展性**:Visio允许通过VBA或其他插件进行扩展,以满足特定的UML建模需求。 **使用指南** 1. **VisioUML2.2Tips.pdf**:这份文档可能包含了使用Visio 2003和2007创建UML 2.2模型的最佳实践和技巧,包括如何...
UML(Unified Modeling Language),即统一建模语言,是一种在软件工程领域广泛使用的可视化建模工具,它为系统分析、设计及项目管理提供了统一的标准语言。本篇文章将围绕"UML网络教学系统"这一主题,深入探讨UML在...
UML精華前兩版嘉惠了30萬名以上的開發人員。第三版同樣也是UML 2.0版與1.x版的...其他人則希望把本書當作手邊方便好用的參考書,快速找到UML中最常用的部分。本書作者以簡短、扼要、專注的呈現方式,達到上述兩項要求。
这两个文件可能是使用某种建模工具创建的模型文件,例如IBM的Rational Rose或其他UML建模软件。".mdl"通常用于存储建模数据,而".md~"可能是该文件的一个临时版本。打开这些文件,你可以看到具体的类、用例或者其他...
此外,部署图可以帮助我们理解系统在硬件上的布局,展示服务器、数据库和其他物理组件如何部署,以及它们之间的连接。 总结来说,通过UML的各种图形,我们可以全面地了解和设计超市管理系统,包括其功能、流程、...
**ArgoUML:强大的UML建模工具** 在软件开发过程中,UML(统一建模语言)是一种标准的建模方法,它提供了一种可视化的方式来描述系统的设计、结构和行为。ArgoUML,作为一款开源的UML工具,为开发者提供了便捷的...
UML(统一建模语言)是一种标准化的图形建模语言,用于软件工程和其他领域,用于描述系统的设计和结构。在C# WinForm环境下开发这样的应用程序,可以提供用户友好的界面,使得非技术背景的人员也能轻松地理解和创建...
3. **便携性**:UML PAD支持便携式应用模式,可以存放在USB驱动器或其他移动存储设备中,随时随地使用,无需在每台电脑上安装。 4. **全面的UML支持**:尽管小巧,但UML PAD支持多种UML图,包括但不限于用例图、...
UML软件建模教程课后习题及标准答案.pdf 本资源摘要信息涵盖了UML软件建模的基础知识和技术要点,包括模型的概念、软件模型的特征、软件建模技术、软件模型的分类、软件建模工具、UML的发展过程、UML的组成部分、元...
代理模式为其他对象提供一种代理以控制对该对象的访问。它可以用于远程代理、虚拟代理、保护代理等场景。 软件设计是一个从单一程序设计到构建整体体系结构的过程。UML作为建模工具,帮助我们可视化和理解系统,而...
UML考试题及答案参考 UML(Unified Modeling Language),即统一建模语言,是一种标准化的建模语言,用于描述软件系统的结构、行为和其他方面。下面是对UML考试题及答案参考的知识点总结: 一、UML基本概念 * UML...
**UML(统一建模语言)**是一种标准的图形化建模语言,广泛应用于软件工程领域,用于系统分析、设计和沟通。它提供了一种可视化的方式来描述软件系统的静态结构和动态行为,使得开发者、分析师和项目团队能更清晰地...
**UML基础及Visio建模** UML(Unified Modeling Language),统一建模语言,是软件工程领域一种广泛使用的建模工具,它提供了一种图形化的方式来描述、可视化、构造和文档化软件系统。UML作为一种标准建模语言,...
1. **参与者(Actor)**:通常代表系统外的用户、设备或其他系统,它们与系统有交互但不包含在系统内。 2. **用例(Use Case)**:描述了系统为参与者提供的一种服务或功能,它是一个可观察的系统行为。 3. **关系**...
org.eclipse.uml2.uml:这是Eclipse UML插件的核心库,提供了UML类图的...例如,它可以将Java代码转换为UML类图,或者将UML类图转换为其他表示形式。此外,它还包含了一些实用程序方法,用于处理UML图中的属性和操作。
以上只是UML学习的基础部分,实际上,UML还包括了许多其他复杂的概念,如接口、抽象类、继承、复合、依赖等,以及动态建模的活动图、序列图等。深入理解和掌握UML,对于提升软件设计的质量和效率具有显著作用。通过...
**UML(统一建模语言)**是一种标准的图形化建模语言,用于软件工程和其他领域,特别是系统分析和设计。它提供了一种可视化的方式来描述软件系统的结构和行为,使得团队成员之间能够更好地理解和交流设计理念。 **...
UML作为面向对象技术领域内主导标准建模语言的地位,在全球范围内预计将持续至少十年,其影响力不仅限于软件开发,还延伸至商业建模和其他类型的系统。 #### UML的关键价值与特征 UML的出现,综合并体现了面向对象...