网站首页 > 文章中心 > 其它

介绍java代码结构的图

作者:小编 更新时间:2023-09-05 10:47:18 浏览量:388人看过

怎么用visio画Java代码中类之间的关系图

怎么用visio画Java代码中类之间的关系图

依赖 --- 两个事物间的语义关系,对于两个对象X、Y,如果对象X发生变化,可能会引起对另一个对象Y的变化,则称Y依赖于X.

介绍java代码结构的图-图1

关联 --- 是一种结构关系,指一种对象和另一种对象有联系.给定关联的两个类,可以从其中的一个类的对象访问到另一个类的相关对象.

泛化 --- 一般/特殊关系

关于JAVA内库的基础知识

我提供一个java.util类库,其他的自己去找找吧

java.util包

本章介绍Java的实用工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构.

图1.1给出了java.util包的基本层次结构图.下面我们将具体介绍其中几个重要的类.

┌java.util.BitSet

│java.util.Calendar

介绍java代码结构的图-图2

│ └java.util.GregorianCalendar

│java.util.Date

│java.util.Dictionary

│ └java.util.Hashtable

│ └java.util.Properties

│java.util.EventObject

│java.util.ResourceBundle

┌普通类┤ ├java.util.ListResourceBundle

│ │ └java.util.PropertyResourceBundle

│ │java.util.Local

│ │java.util.Observable

│ │java.util.Random

│ │java.util.StringTokenizer

│ │java.util.Vector

│ │ └java.util.Stack

Java.util┤ └java.util.TimeZone

│ └java.util.SimpleTimeZone

│ ┌java.util.Enumeration

├接 口┤java.util.EventListener

│ └java.util.Observer

│ ┌java.util.EmptyStackException

└异常类┤java.util.MissingResourceException

│java.util.NoSuchElementException

└java.util.TooManyListenersException

图1.1 java.util包的基本层次结构

在日期类中共定义了六种构造函数.

(1)public Date()

创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间.

例 Date today=new Date();//today被设置成创建时刻相对应的日期时间.

long 型的参数date可以通过调用Date类中的static方法parse(String s)来获得.

Date day=new Date(l);

按字符串s产生一日期对象.s的格式与方法parse中字符串参数的模式相同.

按给定的参数创建一日期对象.

参数说明:

另外,还可以给出不正确的参数.

System.out.println("Day's date is:"+day);

下面我们给出一些Date类中常用方法.

(1)public static long UTC(int year,int month,int date,int hrs. int min,int sec)

该方法将利用给定参数计算UTC值.UTC是一种计时体制,与GMT(格林威治时间)的计时体系略有差别.UTC计时体系是基于原子时钟的,而GTMT计时体系是基于天文学观测的.计算中使用的一般为GMT计时体系.

该方法将字符串s转换成一个long型的日期.在介绍构造方法Date(long date)时曾使用过这个方法.

字符串s有一定的格式,一般为:

(星期 日 年 时间GMT+时区)

若不注明时区,则为本地时区.

这两个方法分别为设定和获取月份值.

该方法用于获取日期对象的时区偏移量.

例1.1 DateApp.java

import java.lang.System;

import java.util.Date;

public class DateApp{

public static void main(String args[]){

Date today=new Date();

System.out.println("Today's date is "+today);

//返回一般的时间表示法,本例中结果为

System.out.println("Today's date(Internet GMT)is:"

+today.toGMTString());

//返回结果为GMT时间表示法,本例中结果为

System.out.println("Today's date(Locale) is:"

+today.toLocaleString());

//返回结果为本地习惯的时间表示法,结果为

System.out.println("Today's year is: "+today.getYear());

System.out.println("Today's month is: "+(today.getMonth()+1));

System.out.println("Today's date is: "+today.getDate());

//调用Date类中方法,获取年月日的值.

//下面调用了不同的构造方法来创建Date类的对象.

System.out.println("Day1's date is: "+day1);

}

E:\java\tutorial\java01java DateApp

Today's year is: 101

E:\java\tutorial\java01

类Calendar是一个抽象类,它完成日期(Date)类和普通日期表示法(即用一组整型域如YEAR,MONTH,DAY,HOUR表示日期)之间的转换.

由于所使用的规则不同,不同的日历系统对同一个日期的解释有所不同.在JDK1.1中提供了Calendar类一个子类GregorianCalendar?它实现了世界上普遍使用的公历系统.当然用户也可以通过继承Calendar类,并增加所需规则,以实现不同的日历系统.

第GregorianCalendar继承了Calendar类.本节将在介绍类GregorianCalendar的同时顺带介绍Calendar类中的相关方法.

类GregorianCalendar提供了七种构造函数:

(1)public GregorianCalendar()

创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间.

创建的对象中的相关值被设置成指定时区zone,缺省地点的当前时间.

创建的对象中的相关值被设置成缺省时区,指定地点aLocale的当前时间.

创建的对象中的相关值被设置成指定时区,指定地点的当前时间.

上面使用到的类TimeZone的性质如下:

TimeZone是java.util包中的一个类,其中封装了有关时区的信息.每一个时区对应一组ID.类TimeZone提供了一些方法完成时区与对应ID两者之间的转换.

(Ⅰ)已知某个特定的ID,可以调用方法

public static synchronized TimeZone getTimeZone(String ID)

来获取对应的时区对象.

例 太平洋时区的ID为PST,用下面的方法可获取对应于太平洋时区的时区对象:

TimeZone tz=TimeZone.getTimeZone("PST");

调用方法getDefault()可以获取主机所处时区的对象.

TimeZone tz=TimeZone.getDefault();

(Ⅱ)调用以下方法可以获取时区的ID

■public static synchronized String[] getavailableIDs(int rawOffset)

根据给定时区偏移值获取ID数组.同一时区的不同地区的ID可能不同,这是由于不同地区对是否实施夏时制意见不统一而造成的.

打印s,结果为s[0]=PNT,s[1]=MST

■public static synchronized String[] getAvailableIDs()

获取提供的所有支持的ID.

■public String getID()

获取特定时区对象的ID.

例 TimeZone tz=TimeZone.getDefault();

String s=tz.getID();

打印s,结果为s=CTT.

上面使用类的对象代表了一个特定的地理、政治或文化区域.Locale只是一种机制,它用来标识一类对象,Local本身并不包含此类对象.

要获取一个Locale的对象有两种方法:

(Ⅰ)调用Locale类的构造方法

Locale(String language,String country)

Locale(String language,String country,String variant)

variant?售货商以及特定浏览器的代码,例如使用WIN代表Windows.

(Ⅱ)调用Locale类中定义的常量

Local类提供了大量的常量供用户创建Locale对象.

例 Locale.CHINA

为中国创建一个Locale的对象.

类TimeZone和类Locale中的其它方法,读者可查阅API.

用给定的日期和时间创建一个GregorianCalendar的对象.

year-设定日历对象的变量YEAR;month-设定日历对象的变量MONTH;

date-设定日历对象的变量DATE;hour-设定日历对象的变量HOUR_OF_DAY;

minute-设定日历对象的变量MINUTE;second-设定日历对象的变量SECOND.

当信息不实时,Calendar将按下面的次序优先选择相应的Calendar的变量组合,并将其它有冲突的信息丢弃.

MONTH+DAY_OF_MONTH

MONTH+WEEK_OF_MONTH+DAY_OF_WEEK

MONTH+DAY_OF_WEEK_OF_MONTH+DAY_OF_WEEK

DAY_OF+YEAR

DAY_OF_WEEK_WEEK_OF_YEAR

HOUR_OF_DAY

Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法.它可以产生int、long、float、double以及Goussian等类型的随机数.这也是它与java.lang.Math中的方法Random()最大的不同之处,后者只产生double型的随机数.

类Random中的方法十分简单,它只有两个构造方法和六个普通方法.

构造方法:

(1)public Random()

Java产生随机数需要有一个基值seed,在第一种方法中基值缺省,则将系统时间作为seed.

普通方法:

(1)public synonronized void setSeed(long seed)

该方法是设定基值seed.

该方法是产生一个整型随机数.

该方法是产生一个long型随机数.

该方法是产生一个Float型随机数.

该方法是产生一个Double型随机数.

该方法是产生一个double型的Goussian随机数.

//import java.lang.*;

import java.util.Random;

public class RandomApp{

Random ran1=new Random();

//创建了两个类Random的对象.

System.out.println("The 1st set of random numbers:");

System.out.println("\t Integer:"+ran1.nextInt());

System.out.println("\t Long:"+ran1.nextLong());

System.out.println("\t Float:"+ran1.nextFloat());

System.out.println("\t Double:"+ran1.nextDouble());

System.out.println("\t Gaussian:"+ran1.nextGaussian());

//产生各种类型的随机数

//产生同种类型的不同的随机数.

System.out.println();//原文如此

运行结果:

E:\java01java RandomApp

The 1st set of random numbers:

E:\java01

Java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能.在Java语言中.正如在一开始就提到过,是没有指针概念的,但如果能正确灵活地使用指针又确实可以大大提高程序的质量,比如在C、C++中所谓"动态数组"一般都由指针来实现.为了弥补这点缺陷,Java提供了丰富的类库来方便编程者使用,Vector类便是其中之一.事实上,灵活使用数组也可完成向量类的功能,但向量类中提供的大量方法大大方便了用户的使用.

创建了一个向量类的对象后,可以往其中随意地插入不同的类的对象,既不需顾及类型也不需预先选定向量的容量,并可方便地进行查找.对于预先不知或不愿预先定义数组大小,并需频繁进行查找、插入和删除工作的情况,可以考虑使用向量类.

向量类提供了三种构造方法:

public vector()

public vector(int initialcapacity,int capacityIncrement)

public vector(int initialcapacity)

使用第一种方法,系统会自动对向量对象进行管理.若使用后两种方法,则系统将根据参数initialcapacity设定向量对象的容量(即向量对象可存储数据的大小),当真正存放的数据个数超过容量时,系统会扩充向量对象的存储容量.参数capacityIncrement给定了每次扩充的扩充值.当capacityIncrement为0时,则每次扩充一倍.利用这个功能可以优化存储.

在Vector类中提供了各种方法方便用户使用:

■插入功能

(1)public final synchronized void addElement(Object obj)

将obj插入向量的尾部.obj可以是任何类的对象.对同一个向量对象,可在其中插入不同类的对象.但插入的应是对象而不是数值,所以插入数值时要注意将数值转换成相应的对象.

例 要插入一个整数1时,不要直接调用v1.addElement(1),正确的方法为:

Vector v1=new Vector();

Integer integer1=new Integer(1);

v1.addElement(integer1);

将index处的对象设成obj,原来的对象将被覆盖.

在index指定的位置插入obj,原来对象以及此后的对象依次往后顺延.

■删除功能

(1)public final synchronized void removeElement(Object obj)

从向量中删除obj.若有多个存在,则从向量头开始试,删除找到的第一个与obj相同的向量成员.

删除向量中所有的对象.

删除index所指的地方的对象.

■查询搜索功能

(1)public final int indexOf(Object obj)

从向量头开始搜索obj ,返回所遇到的第一个obj对应的下标,若不存在此obj,返回-1.

从index所表示的下标处开始搜索obj.

从向量尾部开始逆向搜索obj.

从index所表示的下标处由尾至头逆向搜索obj.

获取向量对象中的首个obj.

获取向量对象中的最后一个obj.

import java.util.Vector;

import java.lang.*;//这一句不应该要,但原文如此

import java.util.Enumeration;

public class VectorApp{

public static void main(String[] args){

v1.addElement("one");

//加入的为字符串对象

//加入的为Integer的对象

v1.addElement("two");

System.out.println("The vector v1 is:\n\t"+v1);

//将v1转换成字符串并打印

System.out.println("The vector v1(used method insertElementAt()) is:\n\t "+v1);

//往指定位置插入新的对象,指定位置后的对象依次往后顺延

System.out.println("The vector v1(used method setElementAt()) is:\n\t "+v1);

//将指定位置的对象设置为新的对象

v1.removeElement(integer1);

//从向量对象v1中删除对象integer1由于存在多个integer1所以从头开始

//找,删除找到的第一个integer1

Enumeration enum=v1.elements();

System.out.print("The vector v1(used method removeElement())is:");

while(enum.hasMoreElements())

System.out.print(enum.nextElement()+" ");

System.out.println();

//使用枚举类(Enumeration)的方法来获取向量对象的每个元素

System.out.println("The position of object 1(top-to-bottom):"

+ v1.indexOf(integer1));

System.out.println("The position of object 1(tottom-to-top):"

+v1.lastIndexOf(integer1));

//按不同的方向查找对象integer1所处的位置

System.out.println("The new vector(resized the vector)is:"+v1);

//重新设置v1的大小,多余的元素被行弃

E:\java01java VectorApp

The vector v1 is:

The vector v1(used method insertElementAt()) is:

The vector v1(used method setElementAt()) is:

(1)类Vector定义了方法

public final int size()

此方法用于获取向量元素的个数.它的返回值是向是中实际存在的元素个数,而非向量容量.可以调用方法capactly()来获取容量值.

方法:

public final synchronized void setsize(int newsize)

此方法用来定义向量大小.若向量对象现有成员个数已超过了newsize的值,则超过部分的多余元素会丢失.

Enumeration是java.util中的一个接口类,在Enumeration中封装了有关枚举数据集合的方法.

在Enumeration中提供了方法hawMoreElement()来判断集合中是束还有其它元素和方法nextElement()来获取下一个元素.利用这两个方法可以依次获得集合中元素.

Vector中提供方法:

public final synchronized Enumeration elements()

此方法将向量对象对应到一个枚举类型.java.util包中的其它类中也大都有这类方法,以便于用户获取对应的枚举类型.

Stack类是Vector类的子类.它向用户提供了堆栈这种高级的数据结构.栈的基本特性就是先进后出.即先放入栈中的元素将后被推出.Stack类中提供了相应方法完成栈的有关操作.

基本方法:

public Object push(Object Hem)

将Hem压入栈中,Hem可以是任何类的对象.

public Object pop()

弹出一个对象.

public Object peek()

返回栈顶元素,但不弹出此元素.

public int search(Object obj)

搜索对象obj,返回它所处的位置.

public boolean empty()

判别栈是否为空.

import java.lang.*;

import java.util.*;

public class StackApp{

Stack sta=new Stack();

sta.push("Apple");

sta.push("banana");

sta.push("Cherry");

//压入的为字符串对象

//压入的为Integer的对

介绍下Java程序的结构

Java语言是面向对象的程序设计语言,Java程序的基本组成单元是类,类体中又可包括属性与方法两部分.而每一个应用程序都必须包含一个main()方法,含有main()方法的类称之为主类.

一: Java程序的主类及其格式

作为一个可以独立运行的Java程序,在它的众多类中必须要有一个类作为程序的起始类,为了方便,本书把这个类称为主类.当需要执行一个程序时,人们在java命令后面输入的便是这个主类的文件名(也是主类名),所以呢主类文件是Java运行环境建立起来之后第一个被装入虚拟机的用户文件.为了使虚拟机可以找到程序运行的起始入口,主类必须为public类,并含有一个在格式上符合约定的入口方法main(),其格式如下:

public static void main(String[] args){

...

其中各参数含义如下.

main:入口方法名称.

args:命令行参数,这是一个String对象数组.

static:修饰字,说明main()是一个静态方法(类方法).

public:修饰字,说明main()具有公有访问属性.

于是,主类框架的源代码如下:

public class 主类名{

Java程序的主类常常使熟悉C/C++的读者感到迷惑:main()方法不就相当于C/C++程序中的主函数吗,为什么非得把它放到一个类里,难道它有什么不同吗?

①.)Java既然把所有事物都看成了对象,那么就没有理由不把程序也看成对象,因为程序也是一种事物.既然是对象,那么它就应该属于某个类并以程序名来命名.既然程序是一种类,那么main()就应该是这个类的一个方法,只不过它有些特殊,它是一个入口方法,并且对它有些特殊规定,例如其名称必须为main(),必须是公有静态方法,有命令行参数等.

二: JAVA源程序在命令行下的运行

class?Bank{

public?void?init(){

System.out.println("Yes,I?can");

public?static?void?main(String?args[]){

BankAccount?ba1?=?new?BankAccount(100.00);

System.out.print("Before?transactions,?");

System.out.print("After?transactions,?");

Bank?b?=?new?Bank();

b.init();

class?BankAccount{

private?double?balance;

public?BankAccount(double?openingBalance){

介绍java代码结构的图-图3

balance?=?openingBalance;

public?void?deposit(double?amount){

balance?+=?amount;

public?void?withdraw(double?amount){

balance?-=?amount;

System.out.println("balance?=?"?+?balance);

三:完整的java源程序应该包括下列部分

package语句;

import语句;

public classDefinition; // 公共的类定义部分,至多只有一个公共类的定义

// java语言规定该java源程序的文件名必须与该公共类名完全一致

classDefinition; // 类定义部分,可以有0个或多个

interfaceDefinition; // 接口定义部分,可以有0个或多个

package:java编译器为每个类生成一个字节码文件,且文件名与类名相同,这就会带来一个问题:同名的类会发生冲突.package便可管理类命名空间.

一般地,具有相同功能的类放在一个package中.

一个java源程序至多只能有一个公共类的定义.

若java源程序有一个公共类的定义,则该源文件名字必须与该公共类的名字完全相同.

若源程序中不包含公共类的定义,则该文件名可以任意取名.

若一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件.

三.java编程规范

包名:全小写的名词,中间可由点分割,eg:java.awt.event

类名:首字母大写,多个单词合成,每个单词首字母也要大写,eg: class HelloWorldApp

接口名: 同类名,eg: interface Collection

方法名: 由多个单词合成,第一个单词通常为动词,首字母小写,中间的每个单词的首字母都要大写,eg: balanceAccount, isButtonPressed

变量名: 全小写,一般为名词,eg: length

常量名: 基本数据类型的常量名为全大写,如果由多个单词构成,可以用下划线隔开,eg: int YEAR, int WEEK_OF_MONTH

对象类型的常量,则是小写混合,由大写字母把单词隔开

在java中为什么要使用类图

其实也不是一定要使用类图的,使用类图就是为了让你清楚的理解类之间的关系,比如A类继承了B类,同时又实现了C接口,等等这样的关系用类图来表示的话一目了然.

使用类图还有一个好处,就是在软件工程中讲的一个软件开发的"详细设计"阶段,用类图表示出系统的结构后好多工具支持自动生成代码,就是从类图直接生成代码的基本结构,自己只要在生成的代码中加入具体的业务逻辑就可以了,这样比较方便.

以上就是土嘎嘎小编为大家整理的介绍java代码结构的图相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章