Java中,java构造方法实例和实例化对象之间的关系

&Java子类对象实例化过程
Java子类对象实例化过程
视频太卡?试试切换线路
是否提供源码:否课程等级:初级课程适合人群:有一定Java基础的开发者
java继承的实现视频教程,主讲java继承实现,java多继承,java继承扩展父类功能,java中使用extends关键字完成继承,class子类extends父类,java子类继承父类,学习java继承的实现
java继承限制视频教程,通过java实例讲解java继承限制,java单继承,java继承,java 继承,java子类访问父类私有成员的方法,学习实现java继承限制
java子类对象实例化过程视频教程,通过java代码演示讲解java子类对象实例化过程,java子类,java 子类,java子类对象,java 类对象,java类的实例化,java构造方法,java父类构造方法,java子类构造方法
java方法重写与super关键字视频教程,详解java方法重写,java方法的重写,java重写限制,java重写访问权限private,及java super关键字,掌握java重写方法和super关键字使用
java重写与重载的区别视频教程,主讲java重写,java 重写,java重载,java方法重载,java重写和重载的区别
只有成为VIP会员才能提问&回复,快吧!如果你还没有账号你可以一个账号。
添加新技术问题
课程 [Java子类对象实例化过程]
中已存在问题
添加新技术问题
问题描述越详细,被解答的速度越快
有新回答时请邮件提醒我
着急,拜托快点
不急,慢慢解决
关联课程 [Java子类对象实例化过程]posts - 14,&
comments - 7,&
trackbacks - 0
&&&&&&&&&&我相信大多说人都对构造方法、方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望大家多多讨论。
&&&&&&&&&&构造方法和方法的区别:&&&&&&&&&
&&&& 构造方法要与类名相同,无返回类型,在类初始化的时候调用。&
&&&&&方法最好与类名不同,对象调用,静态方法可用类名.方法().
&&&& 构造器和方法在下面三个方面区别:修饰符,返回值,命名。
&&&&&& 1。和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用). 不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。
&&&&&&& 2。返回类型也是非常重要的。方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。
&&&&&&& 3。两者的命名。构造器使用和类相同的名字,而方法则不同。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。
&&&&构造方法和方法中this和supper的用法区别:&
&& &"this"的用法&
&&& 构造器和方法使用关键字this有很大的区别。方法引用this指向正在执行方法的类的实例。静态方法不能使用this关键字,因为静态方法不属于类的实& 例,所以this也就没有什么东西去指向。构造器的this指向同一个类中,不同参数列表的另外一个构造器,我们看看下面的代码:&
package&com.dr.
public&class&Platypus&{
&&&&String&
&&&&Platypus(String&input)&{
&&&&&&&&name&=&
&&&&Platypus()&{
&&&&&&&&this("John/Mary&Doe");
&&&&public&static&void&main(String&args[])&{
&&&&&&&&Platypus&p1&=&new&Platypus("digger");
&&&&&&&&Platypus&p2&=&new&Platypus();
&&&&&&&&System.out.println(p1.name&+&"----"&+&p2.name);
在上面的代码中,有2个不同参数列表的构造器。第一个构造器,给类的成员name赋值,第二个构造器,调用第一个构造器,给成员变量name一个初始值 "John/Mary Doe".
在构造器中,如果要使用关键字this,那么,必须放在第一行,如果不这样,将导致一个编译错误。
在一个构造方法中只能调用一次其它的构造方法,并且调用构造方法的语句必须是第一条语句。
&& "super"的用法
&& 构造器和方法,都用关键字super指向超类,但是用的方法不一样。方法用这个关键字去执行被重载的超类中的方法。看下面的例子:
package&com.dr.
class&Mammal&{
&&&&void&getBirthInfo()&{
&&&&&&&&System.out.println("born&alive.");
class&Platypus1&extends&Mammal&{
&&&&void&getBirthInfo()&{
&&&&&&&&System.out.println("hatch&from&eggs");
&&&&&&&&System.out.print("a&mammal&normally&is&");
&&&&&&&&super.getBirthInfo();
在上面的例子中,使用super.getBirthInfo()去调用超类Mammal中被重载的方法。
构造器使用super去调用超类中的构造器。而且这行代码必须放在第一行,否则编译将出错。看下面的例子:
public&class&SuperClassDemo&{
&&&&SuperClassDemo()&{
class&Child&extends&SuperClassDemo&{
&&&&Child()&{
&&&&&&&&super();
在上面这个没有什么实际意义的例子中,构造器 Child()包含了 super,它的作用就是将超类中的构造器SuperClassDemo实例化,并加到 Child类中。
编译器自动加入代码 ,当我们写一个没有构造器的类,编译的时候,编译器会自动加上一个不带参数的构造器。
现在具体介绍一下构造方法的几种用法:
类的继承机制使得子类可以使用父类的功能(即代码),并且子类也具有父类的类型。下面介绍类在继承关系上的初始化的顺序问题。
class&SuperClass&
SuperClass()&
System.out.println("SuperClass&constructor");&
public&class&SubClass&extends&SuperClass&
SubClass()&
System.out.println("SubClass&constructor");&
public&static&void&main(String[]&args)&
SubClass&sub&=&new&SubClass();&
输出结果: SuperClass&constructor
&&&&&&&&&&& SubClass constructor
  在子类中只实例化了一个子类对象。从输出结果上看,程序并不是一开始就运行自己的构造方法,而是先运行其父类的默认构造方法。注意:程序自动调用其父类的默认构造方法。
class&SuperClass&
SuperClass(String&str)&
System.out.println("Super&with&a&string.");&
public&class&SubClass&extends&SuperClass&
SubClass(String&str)&
System.out.println("Sub&with&a&string.");&
public&static&void&main(String[]&args)&
SubClass&sub&=&new&SubClass("sub");&
在JDK下编译此程序不能成功。正如上例中说的:程序在初始化子类时先要寻找其父类的默认构造方法,结果没找到,那么编译自然不能通过。
  解决这个问题有两个办法:
  1.在父类中增加一个默认构造方法。
  2.在子类的构造方法中增加一条语句:super(str); 且必须在第一句。
  这两种方法都能使此程序通过编译,但就本程序来说运行结果却不相同。
  第1种方法的运行结果是:
  Sub with a string.
  第2种方法的运行结果是:
&&& Super with a string.&
&&&&Sub with a string.
  第2种解决方法实际上是指定编译器不要寻找父类的默认构造方法,而是去寻找带一个字符串为参数的构造方法。
  下面介绍对象的初始化顺序问题。
  示例3:
class&One&
One(String&str)&
System.out.println(str);&
class&Two&
One&one_1&=&new&One("one-1");&
One&one_2&=&new&One("one-2");&
One&one_3&=&new&One("one-3");&
Two(String&str)&
System.out.println(str);&
public&class&Test&
public&static&void&main(String[]&args)&
System.out.println("Test&main()&start");&
Two&two&=&new&Two("two");&
输出结果:
Test main() start...
  在main()方法中实例化了一个Two类的对象。但程序在初始化Two类的对象时,并非先调用Two类的构造方法,而是先初始化Two类的成员变量。这里Two类有3个成员变量,它们都是One类的对象,所以要先调用3次One类的相应的构造方法。最后在初始化Two类的对象。
&即在创建对象时,对象所在类的所有数据成员会首先进行初始化,如果其中的成员变量有对象,那么它们也会按照顺序执行初始化工作。在所有类成员初始化完成后,才调用对象所在类的构造方法创建对象。构造方法作用就是初始化。
  示例4:
class&One&
One(String&str)&
System.out.println(str);&
class&Two&
One&one_1&=&new&One("one-1");&
One&one_2&=&new&One("one-2");&
static&One&one_3&=&new&One("one-3");&
Two(String&str)&
System.out.println(str);&
public&class&Test&
public&static&void&main(String[]&args)&
System.out.println("Test&main()&start");&
Two&two_1&=&new&Two("two-1");&
System.out.println("------------");&
Two&two_2&=&new&Two("two-2");&
输出结果:
Test main() start...
------------
  如果一个类中有静态对象,那么它会在非静态对象前初始化,但只初始化一次。非静态对象每次调用时都要初始化。
class&One&
One(String&str)&
System.out.println(str);&
class&Two&
One&one_1&=&new&One("one-1");&
One&one_2&=&new&One("one-2");&
static&One&one_3&=&new&One("one-3");&
Two(String&str)&
System.out.println(str);&
<span style="color: #&
public&class&Test&
static&Two&two_3&=&new&Two("two-3");&
public&static&void&main(String[]&args)&
System.out.println("Test&main()&start");&
Two&two_1&=&new&Two("two-1");&
System.out.println("------------");&
Two&two_2&=&new&Two("two-2");&
输出结果:
Test main() start...
------------
  程序中主类的静态变量会在main()方法执行前初始化。结果中只输出了一次one-3,这也说明:如果一个类中有静态对象,那么它会在非静态对象前初始化,但只初始化一次。非静态对象每次调用时都要初始化。
class&One&
One(String&str)&
System.out.println(str);&
class&Two&
static&int&i&=&<span style="color: #;&
One&one_1&=&new&One("one-1");&
static&One&one_2&=&new&One("one-2");&
static&One&one_3&=&new&One("one-3");&
Two(String&str)&
System.out.println(str);&
public&class&Test&
public&static&void&main(String[]&args)&
System.out.println("Test&main()&start");&
System.out.println("Two.i&=&"&&Two.i);&
输出结果:
Test main() start...
  不仅第1次创建对象时,类中所有的静态变量要初始化,第1次访问类中的静态变量(没有创建对象)时,该类中所有的静态变量也要按照它们在类中排列的顺序初始化。
初始化的顺序包括构造方法调用的顺序如下:
  1.主类的静态成员首先初始化。
  2.主类的超类的构造方法按照从最高到最低的顺序被调用。
  3.主类的非静态对象(变量)初始化。
  4.调用主类的构造方法。
阅读(34707)
&re: java中构造方法和方法全面解析
为什么非要调用父类的构造方法&&&&&&
2010年11月
313456789111314151617181920212223242526272829301234567891011
留言簿(13)
阅读排行榜
评论排行榜java中构造方法和方法全面解析_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
java中构造方法和方法全面解析
上传于|0|0|文档简介
&&java中构造方法和方法全面解析
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢java中类与对象,实例化三者之间的关系
我想知道它们三者之间的关系,最好有一段有说服力的代码
08-12-12 &
实例化是 用类或方法创建一个该类的实例 如 Date date=new Date();就是用日期类创建了一个日期的对象,就叫对象的实例化 引用和c里面的指针类似 是引用的内存地址 过程化与对象化相对 过程化是面向过程的 如c语言 对象化是指面向对象的 如java的面向对象
请登录后再发表评论!
你有其他语言基础吗? 类型--顾名思义,就是一个类别,比如说数值型包括int,float等等,int 就是整型,就是没有小数点.FLOAT呢就是浮点型,就是有小数点.还有其他类型,在这只做简单的说明. 对象--就是把具有相同部分的物体,抽象出一个概念.比如:车模型-就是一个对象,依据这个对象我创建了一个事实在在的轿车,那这个轿车就是一个实例.而这个过程就叫做实例化. 如果想学JAVA,建议你参加一个培训班,这样会有个方向. 回答
请登录后再发表评论!
用一个例子给你说明一下: 比如“人类”就是一个类,那么具体的某个人“张三”就是“人类”这个类的对象,而“名字、年龄”等信息就是对象的属性,人的动作比如“吃饭、穿衣”等就是对象的方法。总之类就是有相同特征的事物的集合,而对象就是类的一个具体实例。同时类有多态和继承,例如“人类”可以分为“男人、女人”,“老人、小孩”那么“男人、女人”就是“人类”的子类等等。一楼的说“轿车”是一个实例化,我觉得有点不妥,“轿车”应该是“车”的一个子类,例如“车牌号是***的轿车”才是一个对象。方法是被对象调用的比如“张三.穿衣()”,用static修饰的方法是静态的方法或称为共享方法,一般用类名直接调用。
请登录后再发表评论!
第4章 类 与 对 象4.1类与对象的概念4.2封装机制4.3数据成员4.4成员方法第4章 类 与 对 象4.1类与对象的概念程序设计所面对的问题域——客观世界,是由许多事物构成的,这些事物既可以是有形的(比如一辆汽车),也可以是无形的(比如一次会议)。把客观世界中的事物映射到面向对象的程序设计中就是对象。对象是面向对象程序设计中用来描述客观事物的程序单位。客观世界中的许多对象,无论其属性还是其行为常常有许多共同性,抽象出这些对象的共同性便可以构成类。所以,类是对象的抽象和归纳,对象是类的实例。第4章 类 与 对 象4.1.1抽象原则所谓抽象(abstraction),就是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研究工作有关的实质性内容加以考察,形成对所研究问题正确的、简明扼要的认识。例如,“马”就是一个抽象的概念,实际上没有任何两匹马是完全相同的,但是我们舍弃了每匹马个体之间的差异,抽取其共同的、本质性的特征,就形成了“马”这个概念。抽象是科学研究中经常使用的一种方法,是形成概念的必要手段。在计算机软件开发领域,抽象原则的运用非常广泛,概括起来,可分为过程抽象和数据抽象两类。第4章 类 与 对 象1.过程抽象过程抽象是指:软件开发者可以把任何一个完成确定功能的操作序列都看作是一个单一的实体,尽管它实际上可能是由一系列更低级的操作完成的。运用过程抽象,软件开发者可以把一个复杂的功能分解为一些子功能(模块),如果子功能仍比较复杂,则可以进一步分解。这使得开发者可以在不同的抽象层次上考虑问题,在较高层次上思考时可以不关心较低层次的实现细节。面向过程的程序设计采用的是过程抽象方法。使用过程抽象有利于控制、降低整个程序的复杂度,但是,这种方法允许在全系统的范围内进行功能的描述,本身自由度大,难于规范化和标准化,不易保证软件的质量,而且操作起来也有一定难度。第4章 类 与 对 象2.数据抽象数据抽象把系统中需要处理的数据和施加于这些数据之上的操作结合在一起,根据功能、性质、作用等因素抽象成不同的抽象数据类型。每个抽象数据类型既包含了数据,也包含了针对这些数据的授权操作,并限定数据的值只能由这些操作来观察和修改。因此,数据抽象是相对于过程抽象更为严格、更为合理的抽象方法。面向对象的程序设计就是采用数据抽象这一方法来构建程序中的类和对象的。它强调把数据和操作结合为一个不可分的系统单位——对象,对象的外部只需要知道这个对象能做什么,而不必知道它是如何做的。第4章 类 与 对 象4.1.2对象只要仔细研究程序设计所面对的问题域——客观世界,我们就可以看到:客观世界是由一些具体的事物构成的,每个事物都具有自己的一组静态特征(属性)和一组动态特征(行为)。例如,一辆汽车有颜色、型号、马力、生产厂家等静态特征,又具有行驶、转弯、停车等动态特征。把客观世界的这一事实映射到面向对象的程序设计中,则把问题域中的事物抽象成了对象(Object),事物的静态特征(属性)用一组数据来描述,事物的动态特征(行为)则用一组方法来刻画。因此,对象具有下述特征:第4章 类 与 对 象(1) 对象标识:即对象的名字,是用户和系统识别它的唯一标志。例如,汽车的牌照可作为每一辆汽车对象的标识。对象标识有“外部标识”和“内部标识”之分。外部标识供对象的定义者或使用者用,内部标识供系统内部唯一地识别每一个对象。在计算机世界中,我们可以把对象看成计算机存储器中一块可标识的区域,它能保存固定或可变数目的数据(或数据的集合)。(2) 属性:即一组数据,用来描述对象的静态特征。例如,汽车的颜色、型号、马力、生产厂家等。在Java程序中,把这一组数据称为数据成员。第4章 类 与 对 象(3) 方法:也称为服务或操作,它是对象动态特征(行为)的描述。每一个方法确定对象的一种行为或功能。例如,汽车的行驶、转弯、停车等动作可分别用move( )、rotate( )、stop( )等方法来描述。为避免混淆,本书中把方法称为成员方法。在Java程序中,类是创建对象的模板,对象是类的实例,任何一个对象都是隶属于某个类的。Java程序设计是从类的设计开始的,所以,在进一步讲述对象的知识之前,必须先掌握类的概念。第4章 类 与 对 象4.1.3类对象是对事物的抽象,而类是对对象的抽象和归纳。人类在认识客观世界时经常采用的思维方法就是把众多的事物归纳成一些类。分类所依据的原则是抽象,即抽象出与当前目标有关的本质特征,而忽略那些与当前目标无关的非本质特征,从而找出事物的共性,把具有共同性质的事物归结为一类,得出一个抽象的概念——类。在面向对象的编程语言中,类是一个独立的程序单位,是具有相同属性和方法的一组对象的集合。类的概念使我们能对属于该类的全部对象进行统一的描述。例如,“树具有树根、树干、树枝和树叶,它能进行光合作用”。这个描述适合于所有的树,从而不必对每棵具体的树都进行一次这样的描述。因此,在定义对象之前应先定义类。描述一个类需要指明下述三个方面内容:第4章 类 与 对 象(1)类标识:类的一个有别于其他类的名字,这是必不可少的。(2)属性说明:用来描述相同对象的静态特征。(3)方法说明:用来描述相同对象的动态特征。第4章 类 与 对 象例如,下面是对dog类进行的描述:class dog // class指出这是一个类,dog是类标识{Sint AverageW 类的属性(静态特征)int AverageHpublic void move( ){ …… } 类的方法(动态特征)public void ShowDog( ){ …… }}dog类第4章 类 与 对 象4.1.4类与对象的关系类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。类与对象之间的关系就如同一个模具与用这个模具铸造出来的铸件之间的关系一样。也就是说,我们可以把类与对象之间的关系看成是抽象与具体的关系。在面向对象的程序设计中,对象被称作类的一个实例(instance),而类是对象的模板(temp1ate)。类是多个实例的综合抽象,而实例又是类的个体实物。如图4.1所示为类与对象的关系。第4章 类 与 对 象图4.1 类与对象的关系抽象实例化对象:刘丽静态特征:刘丽女讲师890.00动态特征:授课评职称调工资数据值执行的操作方法名数据结构类:教师属性:姓名性别职称工资服务:授课评职称调工资第4章 类 与 对 象4.1.5定义类的一般格式(1) 系统定义的类,即Java类库,它是系统定义好的类。类库是Java语言的重要组成部分。Java语言由语法规则和类库两部分组成,语法规则确定Java程序的书写规范;类库则提供了Java程序与运行它的系统软件(Java虚拟机)之间的接口。Java类库是一组由它的发明者SUN公司以及其他软件开发商编写好的Java程序模块,每个模块通常对应一种特定的基本功能和任务,且这些模块都是经过严格测试的,因而也总是正确有效的。当自己编写的Java程序需要完成其中某一功能的时候,就可以直接利用这些现成的类库,而不需要一切从头编写,这样不仅可以提高编程效率,也可以保证软件的质量。第4章 类 与 对 象(2) 用户自己定义的类。系统定义的类虽然实现了许多常见的功能,但是用户程序仍然需要针对特定问题的特定逻辑来定义自己的类。用户按照Java的语法规则,把所研究的问题描述成Java程序中的类,以解决特定问题。进行Java程序设计,首先应学会怎样定义类。在Java程序中,用户自己定义类的一般格式如下:class 类名{数据成员成员方法}第4章 类 与 对 象图4.2类的图形表示类名数据成员成员方法第4章 类 与 对 象可以看出,类的结构是由类说明和类体两部分组成的。类的说明部分由关键字class与类名组成,类名的命名遵循Java标识符的定义规则;类体是类声明中花括号所包括的全部内容,它又由数据成员(属性)和成员方法(方法)两部分组成。数据成员描述对象的属性;成员方法刻画对象的行为或动作,每一个成员方法确定一个功能或操作。图4.2为类的图形表示。第4章 类 与 对 象【示例程序c4_1.java】import java.awt.*; //引用系统类库中的awt包import java.applet.*; //引用系统类库中的applet包public class c4_1 extends Applet // 由applet类派生的c4_1类{ int a=5; //数据成员adouble b=23.4; //数据成员bpublic void paint(Graphics g) //成员方法paint{ //以下使用g对象的drawString方法g.drawString(&a=&+a,25,25);g.drawString(&b=&+b,25,35);}}第4章 类 与 对 象图4.3 程序c4_1的运行结果第4章 类 与 对 象4.1.6 Java类库要想掌握好Java的面向对象编程技术,编写出高质量的程序,必须对Java的类库有足够的了解。Java的类库是系统提供的已实现的标准类的集合,是Java编程的API(Application ProgramInterface),它可以帮助开发者方便、快捷地开发Java程序。Java类库的主要部分是由它的发明者SUN公司提供的,这些类库称为基础类库(JFC),也有少量则是由其他软件开发商以商品形式提供的。有了类库中的系统类,编写Java程序时就不必一切从头做起,避免了代码的重复和可能的错误,也提高了编程的效率。一个用户程序中系统标准类使用得越多、越全面、越准确,这个程序的质量就越高;相反,离开了系统标准类和类库,Java程序几乎寸步难行。第4章 类 与 对 象所以,学习Java语言程序设计,一是要学习其语法规则,即第2~3章中的基本数据类型、基本运算和基本语句等,这是编写Java程序的基本功;二是要学习使用类库,这是提高编程效率和质量的必由之路,甚至从一定程度上来说,能否熟练自如地掌握尽可能多的Java类库,决定了一个Java程序员编程能力的高低。我从第7章起主要讲述类库的使用。第4章 类 与 对 象在Java系统中,系统定义好的类根据实现的功能不同,可以划分成不同的集合。每个集合称为一个包,所有包合称为类库。根据功能的不同,Java类库的每个包中都有若干个具有特定功能和相互关系的类和接口。例如,java.lang包中包含了运行Java程序必不可少的系统类,
请登录后再发表评论!
摘  要:在分析国内外CSCW研究和发展的基础上,通过比较C/S和B/S的优缺点,提出了基于集群服务器的硬件平台,利用智能体Agent代理,采用B/S模式,并将Applet嵌入到浏览器中的CSCW系统,实现基于集群服务器的网络CSCW系统。CSCW与CAD如何结合众所周知,传统的产品设计是在图纸上手工设计为主,设计周期长,质量不能保证,设计成本高,CAD技术的的出现和发展大大改变了这种情况,产品设计有了质的飞跃,随着CAD系统的广泛使用与计算机支持的协同工作(CSCW)领域研究的迅速进展,人们正在寻求将CAD技术与CSCW技术结合起来,以开发出计算机支持的协同设计系统(CSCD)。 &#160; &#160;计算机支持的协同设计(CSCD)是CSCW的概念和技术在制造业产品开发过程中的有效应用。在信息化和数字化时代里,面对激烈的市场竞争环境,一个企业如何以团队精神和信息技术缩短其产品的开发周期,提高产品质量,降低成本和加强销售服务是其自身生存和发展的关键之一。这已经超越了设计人员个人的能力和单机的CAD系统的功能。发展计算机支持的协同设计(CSCD)工具和系统已成为一种必然的需求。众所周知,传统的产品设计是在图纸上手工设计为主,设计周期长,质量不能保证,设计成本高,CAD技术的的出现和发展大大改变了这种情况,产品设计有了质的飞跃,随着CAD系统的广泛使用与计算机支持的协同工作(CSCW)领域研究的迅速进展,人们正在寻求将CAD技术与CSCW技术结合起来,以开发出计算机支持的协同设计系统(CSCD)。这对于大型设备的联合数字化设计、数字化装配等设计过程特别有效,对于计算机集成制造系统(CMIS)和平行工程协同工作系统(CECWS)的进一步发展具有重要作用,将是CMIS和CECWS的重要组成部分。 &#160;
&#160; &#160;CIMS有计算机网络和数据库两个支持系统,它由管理信息系统(MIS)、工程设计系统(CAD/CAPP/CAM)、质量保证系统、制造自动化系统等部分组成。如果将工程设计系统扩展成为在Extranet/Intranet支持下与CSCW的概念相结合的协同设计系统,就将构成比工程设计系统功能更强的CSCD系统。当然,如果制造自动化系统不局限于机械类制造业,也可以是其他工程建设,如建筑、水利等,那么CSCD和CIMS的系统概念就更加扩大了,乃至现代城市建设规划中都用得上计算机支持的协同设计这一概念和技术,进行所谓“虚拟城市”或“未来城市”的协同规划设计。 &#160;
&#160; &#160;CSCD具有分布式的信息集成、过程集成和组织集成的特征,它以“产品”(广义的概念)为核心,不同学科和不同技术领域的人员可以进行分布式协同设计。这种产品设计开发的新型模式,把以信息的采集、传输与交换、加工处理、信息管理等为核心的协同数据库作为“信息集成”的基础,把基于工作流系统(WFMS)的协调和控制作为“过程集成”的方法,它基于团队并强调人与人之间的交互,有多方参与协同设计,体现出“组织集成”。CSCD系统的体系结构 &#160; &#160;通过上面介绍,可以看出,一个CSCD系统远比一个单纯CAD系统复杂。首先,它应该是运行在网络环境下; 其次,各CAD系统是自治的、任务是分工的; 第三,各CAD系统之间围绕设计而进行交互和协同; 第四,设计过程或进程要有协调控制; 第五,对设计数据、版本和结果要进行协同控制。因此,要考虑对各子系统的数据库进行协同控制与管理,即建立一种“数据库的协同管理系统”或简称“协同数据库”。这样,可以建立如图11所示的体系结构。根据这种体系结构结合实际任务与需求组建CSCD系统。一般地讲,组建的CSCD系统应具备下列集成的技术特性: &#160;
&#160; &#160;1.高速宽带网络,保证三维的、多媒体信息数据的正确可靠传输; &#160;
&#160; &#160;2.三维高性能CAD 工作站,能进行异地数字化设计和数字化装配; &#160;
&#160; &#160;3.提供进行实时交互的计算机多媒体会议系统,具有音频、视频、白板、共享应用功能; &#160;
&#160; &#160;4.以具有智能和动态特性的工作流管理系统来实现设计过程或进程的协调控制和管理; &#160;
&#160; &#160;5.建立一种“数据库的协同管理系统”对分布式异构数据库、设计数据、版本和结果进行协同控制和管理。 &#160;
&#160; &#160;CSCD的协同工作模式 &#160;
&#160; &#160;在CSCD系统中,分布在不同地点承担不同子任务的设计者之间的交互、通信和协商要贯穿在整个设计过程中,产品的需求分析、子任务的分配和设计执行过程、工程设计的完成等各个阶段都需在并行工程环境协同技术的支持下实现不同级别的通信和协商。一般地,我们可以根据各子任务和子系统在各个不同设计阶段相互关系耦合的紧密程度,把协同分成三种: 松散耦合、中度耦合及紧密耦合等三类。 &#160;
&#160; &#160;1.松散耦合协同设计模式 &#160;
&#160; &#160;各子任务之间的耦合比较松散,如果用“通信阻抗”这一概念来描述它们之间的通信耦合松紧程度的话,那么,在这种情况下,比较高的“通信阻抗”是可以接受的。所谓“通信阻抗”是指网络延迟、协议差别、格式变换等造成的通信困难程度。因为,各子任务之间的信息交换往往是只在问题求解的开始和结束阶段进行数据流的输入输出,重覆一次的通信周期又比较长,通信带宽比较低。松散耦合协同设计的一种最基本的方式,往往只要求设计者从一个软件程序中获取数据信息,然后作为另一个软件程序的输入,相互之间的交互较少或没有,最高级的方式只不过是要求这个过程是自动进行的。松散耦合协同设计模式是走向并行工程的最初一步。从技术上讲它可以直接从现有的分布式工程环境中获得,它可用于那些不需要进行大量的通信但相互相关的工程设计任务中。 &#160;
&#160; &#160;2.中度耦合协同设计模式 &#160;
&#160; &#160;各子任务之间有中等程度的耦合,“通信阻抗”不能太大。因为,在解决问题过程中各子任务之间要进行信息交换,而不只是在开始或结束的时候进行,通信耦合相对来说比较紧密。计算机支持工具要用来自动地管理各方之间的信息转换和传输: 如交互大多数是隐藏在接口程序里,网络的位置对用户是不大可见的,虽然接口工具必须感知它的存在; 在各方进行通信时,肯定会有许多变换,但都隐藏在计算机工具里等。然而仍然还存在着冗余和数据一致性问题,以及用户在某种程度上感知到网络的延迟。在中度耦合协同设计系统中可用一个共享数据库作为各子任务间的通信媒体,但需要解决好数据库访问的冲突问题。 &#160;
&#160; &#160;3.紧密耦合协同设计模式 &#160;
&#160; &#160;在这种模式中,一个设计任务往往是按层次结构划分成许多相互间关系密切的子任务,它们在并行工程的环境中执行。层与层之间通过接口或代理(Agents)进行交互,各子任务之间不仅有频繁的信息交换,而且结果也相互有影响,因此这是一种耦合很紧密的协同设计,要求其“通信阻抗”很小,特别是对那些进行实时协同设计的系统来说更是如此。 &#160;
&#160; &#160;协同设计中的对象描述模型 &#160;
&#160; &#160;前面论述了了协同设计中执行设计的各子任务之间的交互或通信问题。而在协同设计中另一个需要解决的问题则是关于设计对象的描述。因为参加协同设计的设计者会来自不同的学科、技术部门、承担不同的任务和担当不同的角色。因此。对于同一产品的描述,会从不同的角度和观念及其作用去考虑。这如同在房屋建筑设计中,对于墙、地板、门、窗这些基本构件,建筑设计师、结构工程师、制造与施工者会有不同的观念,会从不同的各个角度去描述和进行设计。这样,同一对象,就有多个不同的描述模型(组成、参数、功能、性能等)。单一描述模型在协同设计中就不是很方便了。例如,我们不能简单地只用“尺寸大小”或“一张蓝图”来描述一个“窗户”的设计,建筑设计师要从窗户的形状、美观、采光量等角度来进行设计,而结构工程师则会从结构强度、几何尺寸等方面加以设计,而制造与施工者也许会从材料、加工难易程度、完成时间等方面来考虑。他们既有自己的设计方案,也会向对方提出建议,或根据对方的意见来修改自己的设计,即相应的对象描述,这也是协同设计中的一种协调。 &#160;
&#160; &#160;但在协同设计中,往往也可以通过以某种基于基本模型表示的方法来获得各种不同描述模型。这种基本模型表示了任何一个设计对象的功能特性和结构特性,它可以包括目的(purpose)、功能(function)、性能(behavior)和结构(structure)等。各种对象描述模型就可以根据其相应学科观念选择或强调相应的方面或参数,用此基本模型把设计对象表示出来。 &#160;
&#160; &#160;基于互联网的协同设计 &#160;
&#160; &#160;基于互联网开展分布式异构平台下的协同设计对于企业或企业集团来讲都具有很强的吸引力。这样的协同设计环境具有下列特性: &#160;
&#160; &#160;● 在Extranet/Intranet乃至Internet环境,可以形成动态的随“产品”而转移的“虚拟设计组织”,支持同步或异步协同设计; &#160;
&#160; &#160;● 基于互联网和C/S结构; &#160;
&#160; &#160;● 支持HTTP超文本和3D技术; &#160;
&#160; &#160;● 具有协同工作描述语言或CORBA技术以提供在异构分布环境下的各对象系统之间的无缝连接和互操作; &#160;
&#160; &#160;● 至少应具有数据库协同管理功能,以解决设计过程中“产品”数据的一致性、安全性、版本管理等问题。
请登录后再发表评论!
摘  要:在分析国内外CSCW研究和发展的基础上,通过比较C/S和B/S的优缺点,提出了基于集群服务器的硬件平台,利用智能体Agent代理,采用B/S模式,并将Applet嵌入到浏览器中的CSCW系统,实现基于集群服务器的网络CSCW系统。CSCW与CAD如何结合众所周知,传统的产品设计是在图纸上手工设计为主,设计周期长,质量不能保证,设计成本高,CAD技术的的出现和发展大大改变了这种情况,产品设计有了质的飞跃,随着CAD系统的广泛使用与计算机支持的协同工作(CSCW)领域研究的迅速进展,人们正在寻求将CAD技术与CSCW技术结合起来,以开发出计算机支持的协同设计系统(CSCD)。 &#160;计算机支持的协同设计(CSCD)是CSCW的概念和技术在制造业产品开发过程中的有效应用。在信息化和数字化时代里,面对激烈的市场竞争环境,一个企业如何以团队精神和信息技术缩短其产品的开发周期,提高产品质量,降低成本和加强销售服务是其自身生存和发展的关键之一。这已经超越了设计人员个人的能力和单机的CAD系统的功能。发展计算机支持的协同设计(CSCD)工具和系统已成为一种必然的需求。众所周知,传统的产品设计是在图纸上手工设计为主,设计周期长,质量不能保证,设计成本高,CAD技术的的出现和发展大大改变了这种情况,产品设计有了质的飞跃,随着CAD系统的广泛使用与计算机支持的协同工作(CSCW)领域研究的迅速进展,人们正在寻求将CAD技术与CSCW技术结合起来,以开发出计算机支持的协同设计系统(CSCD)。这对于大型设备的联合数字化设计、数字化装配等设计过程特别有效,对于计算机集成制造系统(CMIS)和平行工程协同工作系统(CECWS)的进一步发展具有重要作用,将是CMIS和CECWS的重要组成部分。
&#160;CIMS有计算机网络和数据库两个支持系统,它由管理信息系统(MIS)、工程设计系统(CAD/CAPP/CAM)、质量保证系统、制造自动化系统等部分组成。如果将工程设计系统扩展成为在Extranet/Intranet支持下与CSCW的概念相结合的协同设计系统,就将构成比工程设计系统功能更强的CSCD系统。当然,如果制造自动化系统不局限于机械类制造业,也可以是其他工程建设,如建筑、水利等,那么CSCD和CIMS的系统概念就更加扩大了,乃至现代城市建设规划中都用得上计算机支持的协同设计这一概念和技术,进行所谓“虚拟城市”或“未来城市”的协同规划设计。
&#160;CSCD具有分布式的信息集成、过程集成和组织集成的特征,它以“产品”(广义的概念)为核心,不同学科和不同技术领域的人员可以进行分布式协同设计。这种产品设计开发的新型模式,把以信息的采集、传输与交换、加工处理、信息管理等为核心的协同数据库作为“信息集成”的基础,把基于工作流系统(WFMS)的协调和控制作为“过程集成”的方法,它基于团队并强调人与人之间的交互,有多方参与协同设计,体现出“组织集成”。CSCD系统的体系结构 &#160;通过上面介绍,可以看出,一个CSCD系统远比一个单纯CAD系统复杂。首先,它应该是运行在网络环境下; 其次,各CAD系统是自治的、任务是分工的; 第三,各CAD系统之间围绕设计而进行交互和协同; 第四,设计过程或进程要有协调控制; 第五,对设计数据、版本和结果要进行协同控制。因此,要考虑对各子系统的数据库进行协同控制与管理,即建立一种“数据库的协同管理系统”或简称“协同数据库”。这样,可以建立如图11所示的体系结构。根据这种体系结构结合实际任务与需求组建CSCD系统。一般地讲,组建的CSCD系统应具备下列集成的技术特性:
&#160;1.高速宽带网络,保证三维的、多媒体信息数据的正确可靠传输;
&#160;2.三维高性能CAD 工作站,能进行异地数字化设计和数字化装配;
&#160;3.提供进行实时交互的计算机多媒体会议系统,具有音频、视频、白板、共享应用功能;
&#160;4.以具有智能和动态特性的工作流管理系统来实现设计过程或进程的协调控制和管理;
&#160;5.建立一种“数据库的协同管理系统”对分布式异构数据库、设计数据、版本和结果进行协同控制和管理。
&#160;CSCD的协同工作模式
&#160;在CSCD系统中,分布在不同地点承担不同子任务的设计者之间的交互、通信和协商要贯穿在整个设计过程中,产品的需求分析、子任务的分配和设计执行过程、工程设计的完成等各个阶段都需在并行工程环境协同技术的支持下实现不同级别的通信和协商。一般地,我们可以根据各子任务和子系统在各个不同设计阶段相互关系耦合的紧密程度,把协同分成三种: 松散耦合、中度耦合及紧密耦合等三类。
&#160;1.松散耦合协同设计模式
&#160;各子任务之间的耦合比较松散,如果用“通信阻抗”这一概念来描述它们之间的通信耦合松紧程度的话,那么,在这种情况下,比较高的“通信阻抗”是可以接受的。所谓“通信阻抗”是指网络延迟、协议差别、格式变换等造成的通信困难程度。因为,各子任务之间的信息交换往往是只在问题求解的开始和结束阶段进行数据流的输入输出,重覆一次的通信周期又比较长,通信带宽比较低。松散耦合协同设计的一种最基本的方式,往往只要求设计者从一个软件程序中获取数据信息,然后作为另一个软件程序的输入,相互之间的交互较少或没有,最高级的方式只不过是要求这个过程是自动进行的。松散耦合协同设计模式是走向并行工程的最初一步。从技术上讲它可以直接从现有的分布式工程环境中获得,它可用于那些不需要进行大量的通信但相互相关的工程设计任务中。
&#160;2.中度耦合协同设计模式
&#160;各子任务之间有中等程度的耦合,“通信阻抗”不能太大。因为,在解决问题过程中各子任务之间要进行信息交换,而不只是在开始或结束的时候进行,通信耦合相对来说比较紧密。计算机支持工具要用来自动地管理各方之间的信息转换和传输: 如交互大多数是隐藏在接口程序里,网络的位置对用户是不大可见的,虽然接口工具必须感知它的存在; 在各方进行通信时,肯定会有许多变换,但都隐藏在计算机工具里等。然而仍然还存在着冗余和数据一致性问题,以及用户在某种程度上感知到网络的延迟。在中度耦合协同设计系统中可用一个共享数据库作为各子任务间的通信媒体,但需要解决好数据库访问的冲突问题。
&#160;3.紧密耦合协同设计模式
&#160;在这种模式中,一个设计任务往往是按层次结构划分成许多相互间关系密切的子任务,它们在并行工程的环境中执行。层与层之间通过接口或代理(Agents)进行交互,各子任务之间不仅有频繁的信息交换,而且结果也相互有影响,因此这是一种耦合很紧密的协同设计,要求其“通信阻抗”很小,特别是对那些进行实时协同设计的系统来说更是如此。
&#160;协同设计中的对象描述模型
&#160;前面论述了了协同设计中执行设计的各子任务之间的交互或通信问题。而在协同设计中另一个需要解决的问题则是关于设计对象的描述。因为参加协同设计的设计者会来自不同的学科、技术部门、承担不同的任务和担当不同的角色。因此。对于同一产品的描述,会从不同的角度和观念及其作用去考虑。这如同在房屋建筑设计中,对于墙、地板、门、窗这些基本构件,建筑设计师、结构工程师、制造与施工者会有不同的观念,会从不同的各个角度去描述和进行设计。这样,同一对象,就有多个不同的描述模型(组成、参数、功能、性能等)。单一描述模型在协同设计中就不是很方便了。例如,我们不能简单地只用“尺寸大小”或“一张蓝图”来描述一个“窗户”的设计,建筑设计师要从窗户的形状、美观、采光量等角度来进行设计,而结构工程师则会从结构强度、几何尺寸等方面加以设计,而制造与施工者也许会从材料、加工难易程度、完成时间等方面来考虑。他们既有自己的设计方案,也会向对方提出建议,或根据对方的意见来修改自己的设计,即相应的对象描述,这也是协同设计中的一种协调。
&#160;但在协同设计中,往往也可以通过以某种基于基本模型表示的方法来获得各种不同描述模型。这种基本模型表示了任何一个设计对象的功能特性和结构特性,它可以包括目的(purpose)、功能(function)、性能(behavior)和结构(structure)等。各种对象描述模型就可以根据其相应学科观念选择或强调相应的方面或参数,用此基本模型把设计对象表示出来。
&#160;基于互联网的协同设计
&#160;基于互联网开展分布式异构平台下的协同设计对于企业或企业集团来讲都具有很强的吸引力。这样的协同设计环境具有下列特性:
&#160;● 在Extranet/Intranet乃至Internet环境,可以形成动态的随“产品”而转移的“虚拟设计组织”,支持同步或异步协同设计;
&#160;● 基于互联网和C/S结构;
&#160;● 支持HTTP超文本和3D技术;
&#160;● 具有协同工作描述语言或CORBA技术以提供在异构分布环境下的各对象系统之间的无缝连接和互操作;
&#160;● 至少应具有数据库协同管理功能,以解决设计过程中“产品”数据的一致性、安全性、版本管理等问题。 个人观点,供参考:行 18: string userName = Request.Form[&userName&].ToString();行 19: string userPwd = Request.Form.Get(&userPwd&).ToString();Request.Form[&userName&] 或 Request.Form.Get(&userPwd&) 为 null &#160;此时你再调用 .ToString() 方法自然会报此错..建议 在行18处加入断点进行调试..
请登录后再发表评论!

我要回帖

更多关于 java构造方法实例 的文章

 

随机推荐