UML图
UML(Unified Modeling Language Diagram,UML),它是一个结构图,用来描述一个系统的静态结构。一个UML中通常包含类(class)的UML图,接口(Interface)的UML图以及泛化关系(Generalizaiton)的UML图、关联关系(Association)的UML图、依赖关系(Dependency)的UML图和实现关系(Realization)的UML图。
第一层是名字层,如果类的名字是常规字形,表明该类是具体类,
如果类的名字是斜体字形,表明该类是抽象类(后续会讲到抽象类)。
第二层是变量层,也称属性层,列出类的成员变量及类型。格式是“变量名:类型”。
第三层是方法层,列出类中的方法。格式是“方法名字:类型”。
构造方法
构造方法用于对对象中的所有成员变量进行初始化。
构造方法是一种特殊的方法,它的名字必须与它所在类的名字完全相同,并且没有返回值,也不需要使用关键字void进行标识。
public class Apple {
public Apple() { // 构造方法
}
}
构造方法用于对对象中的所有成员变量进行初始化,在创建对象时立即被调用。
对象
对象是对类的一个具体描述,是一个客观存在的实体。万物皆对象,也就是说任何事物都可看做对象,如一个人、一个动物,或者没有生命体的轮船、汽车、飞机,甚至概念性的抽象,如公司业绩等等。
对象的创建
对象的声明
声明对象的一般格式如下:
类名 对象名;
类名:必选,用于指定一个已经定义的类。
对象名:必选,用于指定对象名称,对象名必须是合法的Java标识符。
声明Apple类的一个对象redApple的代码如下:
Apple redApple;
实例化对象
在声明对象时,只是在内存中为其建立一个引用,并置初值为null,表示不指向任何内存空间。
声明对象以后,需要为对象分配内存,这个过程也称为实例化对象。在Java中使用关键字new来实例化对象,具体语法格式如下:
对象名=new
构造方法名([参数列表]);
对象名:必选,用于指定已经声明的对象名。
类名:必选,用于指定构造方法名,即类名,因为构造方法与类名相同。
参数列表:可选参数,用于指定构造方法的入口参数。如果构造方法无参数,则可以省略。
在声明Apple类的一个对象redApple后,可以通过以下代码为对象redApple分配内存(即创建该对象):
redApple=new Apple();//由于Apple类的构造方法无入口参数,所以省略了参数列表
在声明对象时,也可以直接实例化该对象:
Apple redApple=new Apple();
对象的使用
通过使用运算符“.”实现对成员变量的访问和成员方法的调用。
语法格式为:
对象.成员变量
对象.成员方法()
对象的销毁
在Java中则不需要手动完成这项工作。
Java提供的垃圾回收机制可以自动判断对象是否还在使用,并能够自动销毁不再使用的对象,收回对象所占用的资源。
类与程序的基本结构
一个Java应用程序是由若干个类组成,这些类可以在一个源文件中,也可以分布在若干个源文件中,如图所示。
在Java应用程序中有一个主类,即含有main方法的类,main方法是程序执行的入口,也就是说想要执行一个Java应用程序必须从main方法开始执行。在编写一个Java应用程序时,可以编写若干个Java源文件,每个源文件编译后产生若干个类的字节码文件。
当解释器运行一个Java应用程序时,Java虚拟机将Java应用程序的字节码文件加载到内存中,然后再由Java的虚拟机解释执行。
Java程序以类为“基本单位”,从编译的角度看,每个源文件都是一个独立编译单位,当程序需要修改某个类时,只需要重新编译该类所在的源文件即可,不必重新编译其他类所在的源文件,这样非常有利系统的维护。从软件设计角度看,Java语言中的类是可复用的,编写具有一定功能的可复用代码在软件设计中非常重要。
参数传值
在Java程序中,如果声明方法时包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传递给形参的参数值被称为实参。
传值机制
Java方法中的参数传递方式只有一种,也就是值传递。
对于基本数据类型的参数,向该参数传递值的级别不能高于该参数的级别,比如,不能想int型参数传递一个float值,但可以向double型参数传递一个float值。
当参数是引用类型时,传递的值是变量中存放的“引用”,而不是变量所引用的实体。当两个相同类型的引用型变量,如果具有同样的引用,就会用同样的实体,因此,如果该表参数变量所引用的实体,就会导致原变量的实体发生同样的变化;
类的关联关系和依赖关系的UML图
如果A类中成员变量是用B类声明的对象,那么A和B的关联是关联关系,称A类的对象关联于B类的对象或A类的对象组合了B类的对象。
如果A关联于B,那么UML图通过一条实线连接A和B的UML图,实线的起始端是A的UML图,终点端是B的UML图,但终点端使用一个指向B的UML图的方向箭头表示实线的结束。
依赖关系
如果A类中某个方法的参数是用B类声明的对象或某个方法返回的数据类型是B类对象,那么A和B的关系是依赖关系,称A依赖于B。如果A依赖于B,那么UML通过使用一个虚线连A和B的UML图,虚线的起始端是A的UML图,终点端是B的UML图,但终点端使用一个指向B的UML图的方向箭头表示虚线的结束。
果类的名字是常规字形,表明该类是具体类,
如果类的名字是斜体字形,表明该类是抽象类(后续会讲到抽象类)。
第二层是变量层,也称属性层,列出类的成员变量及类型。格式是“变量名:类型”。
第三层是方法层,列出类中的方法。格式是“方法名字:类型”。
构造方法
构造方法用于对对象中的所有成员变量进行初始化。
构造方法是一种特殊的方法,它的名字必须与它所在类的名字完全相同,并且没有返回值,也不需要使用关键字void进行标识。
public class Apple {
public Apple() { // 构造方法
}
}
构造方法用于对对象中的所有成员变量进行初始化,在创建对象时立即被调用。
对象
对象是对类的一个具体描述,是一个客观存在的实体。万物皆对象,也就是说任何事物都可看做对象,如一个人、一个动物,或者没有生命体的轮船、汽车、飞机,甚至概念性的抽象,如公司业绩等等。
对象的创建
对象的声明
声明对象的一般格式如下:
类名 对象名;
类名:必选,用于指定一个已经定义的类。
对象名:必选,用于指定对象名称,对象名必须是合法的Java标识符。
声明Apple类的一个对象redApple的代码如下:
Apple redApple;
实例化对象
在声明对象时,只是在内存中为其建立一个引用,并置初值为null,表示不指向任何内存空间。
声明对象以后,需要为对象分配内存,这个过程也称为实例化对象。在Java中使用关键字new来实例化对象,具体语法格式如下:
对象名=new
构造方法名([参数列表]);
对象名:必选,用于指定已经声明的对象名。
类名:必选,用于指定构造方法名,即类名,因为构造方法与类名相同。
参数列表:可选参数,用于指定构造方法的入口参数。如果构造方法无参数,则可以省略。
在声明Apple类的一个对象redApple后,可以通过以下代码为对象redApple分配内存(即创建该对象):
redApple=new Apple();//由于Apple类的构造方法无入口参数,所以省略了参数列表
在声明对象时,也可以直接实例化该对象:
Apple redApple=new Apple();
对象的使用
通过使用运算符“.”实现对成员变量的访问和成员方法的调用。
语法格式为:
对象.成员变量
对象.成员方法()
对象的销毁
在Java中则不需要手动完成这项工作。
Java提供的垃圾回收机制可以自动判断对象是否还在使用,并能够自动销毁不再使用的对象,收回对象所占用的资源。
类与程序的基本结构
一个Java应用程序是由若干个类组成,这些类可以在一个源文件中,也可以分布在若干个源文件中,如图所示。
在Java应用程序中有一个主类,即含有main方法的类,main方法是程序执行的入口,也就是说想要执行一个Java应用程序必须从main方法开始执行。在编写一个Java应用程序时,可以编写若干个Java源文件,每个源文件编译后产生若干个类的字节码文件。
当解释器运行一个Java应用程序时,Java虚拟机将Java应用程序的字节码文件加载到内存中,然后再由Java的虚拟机解释执行。
Java程序以类为“基本单位”,从编译的角度看,每个源文件都是一个独立编译单位,当程序需要修改某个类时,只需要重新编译该类所在的源文件即可,不必重新编译其他类所在的源文件,这样非常有利系统的维护。从软件设计角度看,Java语言中的类是可复用的,编写具有一定功能的可复用代码在软件设计中非常重要。
参数传值
在Java程序中,如果声明方法时包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传递给形参的参数值被称为实参。
传值机制
Java方法中的参数传递方式只有一种,也就是值传递。
对于基本数据类型的参数,向该参数传递值的级别不能高于该参数的级别,比如,不能想int型参数传递一个float值,但可以向double型参数传递一个float值。
当参数是引用类型时,传递的值是变量中存放的“引用”,而不是变量所引用的实体。当两个相同类型的引用型变量,如果具有同样的引用,就会用同样的实体,因此,如果该表参数变量所引用的实体,就会导致原变量的实体发生同样的变化;
类的关联关系和依赖关系的UML图
如果A类中成员变量是用B类声明的对象,那么A和B的关联是关联关系,称A类的对象关联于B类的对象或A类的对象组合了B类的对象。
如果A关联于B,那么UML图通过一条实线连接A和B的UML图,实线的起始端是A的UML图,终点端是B的UML图,但终点端使用一个指向B的UML图的方向箭头表示实线的结束。
依赖关系
如果A类中某个方法的参数是用B类声明的对象或某个方法返回的数据类型是B类对象,那么A和B的关系是依赖关系,称A依赖于B。如果A依赖于B,那么UML通过使用一个虚线连A和B的UML图,虚线的起始端是A的UML图,终点端是B的UML图,但终点端使用一个指向B的UML图的方向箭头表示虚线的结束。