Java基本功练习十二(对象和类[定义、实例化、对象数组、类应用开发])

时间:2022-06-30 05:11:07

        几个基本的概念

        对象

        对象代表现实世界中可以明确标识的一个实体,包括状态:state和行为:behavior两方面。使用一个通用类来定义同一类型的对象。

       

        类是一个模版、蓝本或者说是合约,用来定义对象的数据域是什么以及方法是做什么的。一个对象是类的一个实例。创建实例的过程叫做:实例化。

        对象和类的区别

        术语“对象”和“实例”经常可以互换,类和对象之间的关系类似于苹果派配方和苹果派之间的关系。可以用一种配方做出任意多的苹果派来。

        UML类图

        类的模版和对象的图解可以用统一建模语言(Unified Modeling Language,UML)的图形化符号进行标准化。这种符号话的语言描述类,叫做UML类图。

        在类图中,数据域表示为:

        dataFieldName:dataFieldType 数据域名:数据域类型

        构造方法可以表示为:ClassName(parameterName:parameterType)类名(参数名:参数类型)

        方法可以表示为:

        methodName(parameterName:parameterType):returnType方法名(参数名:参数类型):返回类型


        了解以上概念之后,来看下面的几个示例。


        示例一:类的定义与实例化。

运行效果如图:Java基本功练习十二(对象和类[定义、实例化、对象数组、类应用开发])

实现的源代码如下:

package Blog;

import java.util.Scanner;

import javax.swing.*;

public class blogTryProject{
//圆类的定义与创建对象(实例化)
public static void main(String[] args) { Circle1 circle1 =
new Circle1(); System.out.println("The area of the circle of radiun " +
circle1.radius + " is " + circle1.getArea());

Circle1 circle2 = new Circle1(10);
System.out.println("The area of the circle of radiun " + circle2.radius +
" is " + circle2.getArea());

Circle1 circle3 = new Circle1(100);
System.out.println("The area of the circle of radiun " + circle3.radius +
" is " + circle3.getArea());

circle2.radius = 100; System.out.println("The area of the circle of radiun "
+ circle2.radius + " is " + circle2.getArea());

}
}

class Circle1 {
double radius;

Circle1() {
radius = 1.0;
}

Circle1(double newRadius) {
radius = newRadius;
}

double getArea() {
return radius * radius * Math.PI;
}
}

        示例二:对象数组的使用。

运行效果如图:Java基本功练习十二(对象和类[定义、实例化、对象数组、类应用开发])

实现源代码如下:

package oop;

import javax.swing.*;

public class oopAndObject {
//对象数组的使用示例
public static void main(String[]args){
Circle3[] circleArrary;

circleArrary = createCircleArrary();

printCircleArrary(circleArrary);
}
public static Circle3[] createCircleArrary(){
Circle3[] circleArrary = new Circle3[5];
for(int i = 0;i < circleArrary.length;i++){
circleArrary[i] = new Circle3(Math.random()*100);
}
return circleArrary;
}
public static void printCircleArrary(Circle3[] circleArrary){
System.out.printf("%-30s%-15s\n","Radius","Area");
for(int i = 0;i < circleArrary.length;i++){
System.out.printf("%-30s%-15s\n",circleArrary[i].getRadius(),
circleArrary[i].getArea());
}
System.out.println("----------------------------------------------------");
System.out.printf("%-30s%-15s\n","The total area of circles is ",sum(circleArrary));
}
public static double sum(Circle3[] circleArrary){
double sum = 0;
for(int i = 0;i < circleArrary.length;i++)
sum += circleArrary[i].getArea();
return sum;
}

}
class Circle3 {
private double radius;
private static int numberOfObjects = 0;

Circle3() {
radius = 1.0;
numberOfObjects++;
}

Circle3(double newRadius) {
radius = newRadius;
numberOfObjects++;
}

public double getRadius() {
return radius;
}

public void setRadius(double newRadius) {
radius = (newRadius >= 0) ? newRadius : 0;
}

public static int getNumberOfObjects() {
return numberOfObjects;
}

public double getArea() {
return radius * radius * Math.PI;
}
}

        示例三:模拟银行创建账户以及账户相关操作的类。

运行效果如图:Java基本功练习十二(对象和类[定义、实例化、对象数组、类应用开发])

实现源代码如下:

package Blog;

import java.util.Date;
import java.util.Scanner;

import javax.swing.*;

public class blogTryProject{
public static void main(String[]args){
Acount ac = new Acount(1122,20000);
System.out.println("创建账户后账户 "+ac.getId()+" 余额为:"+ac.getBalance());
ac.setAnnualInterestRate(0.045);
ac.withDraw(2500);
System.out.println("取款2500后账户 "+ac.getId()+" 余额为: "+ac.getBalance());
ac.deposit(3000);
System.out.println("存款3000后账户 "+ac.getId()+" 余额为: "+ac.getBalance());
System.out.println("月利息为: "+ac.getMonthlyInterestRate());
System.out.println("账户 "+ac.getId()+" 开户日期为: "+ac.getDateCreated());
}
}

class Acount{
private int id;
private double balance;
private double annualInterestRate;
private Date dateCreated;

Acount(){
id = 0;
balance = 0;
dateCreated = new Date();
}
Acount(int newID,double newBalance){
id = newID;
balance = newBalance;
dateCreated = new Date();
}
public int getId(){
return id;
}
public void setId(int newID){
id = newID;
}
public double getBalance(){
return balance;
}
public void setBalance(double newBalance){
balance = newBalance;
}
public double getAnnualInterestRate(){
return annualInterestRate;
}
public void setAnnualInterestRate(double newRate){
annualInterestRate = newRate;
}
public String getDateCreated(){
return dateCreated.toString();
}
public double getMonthlyInterestRate(){
return annualInterestRate / 12.0;
}
public void withDraw(double outBalance){
balance -= outBalance;
}
public void deposit(double inBalance){
balance += inBalance;
}
}

          总结:学习了对象和类之后,就要会做到以下三个方面: 1) 设计类并画出 UML 类图;

                                                                                                   2)实现UML中的类;

                                                                                                   3)使用类开发应用程序。

        使用面向对象的思想开发程序有诸多好处,可以用类来实现其三大特性,抽象、集成、封装。这些对开发大型程序有其他方法不可替代的好处。