Java基本功練習十二(對象和類[定義、實例化、對象數組、類應用開發])

        幾個基本的概念

        對象

        對象代表現實世界中可以明確標識的一個實體,包括狀態:state和行爲:behavior兩方面。使用一個通用類來定義同一類型的對象。

       

        類是一個模版、藍本或者說是合約,用來定義對象的數據域是什麼以及方法是做什麼的。一個對象是類的一個實例。創建實例的過程叫做:實例化。

        對象和類的區別

        術語“對象”和“實例”經常可以互換,類和對象之間的關係類似於蘋果派配方和蘋果派之間的關係。可以用一種配方做出任意多的蘋果派來。

        UML類圖

        類的模版和對象的圖解可以用統一建模語言(Unified Modeling Language,UML)的圖形化符號進行標準化。這種符號話的語言描述類,叫做UML類圖。

        在類圖中,數據域表示爲:

        dataFieldName:dataFieldType 數據域名:數據域類型

        構造方法可以表示爲:ClassName(parameterName:parameterType)類名(參數名:參數類型)

        方法可以表示爲:

        methodName(parameterName:parameterType):returnType方法名(參數名:參數類型):返回類型


        瞭解以上概念之後,來看下面的幾個示例。


        示例一:類的定義與實例化。

運行效果如圖:

實現的源代碼如下:

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;
	}
}

        示例二:對象數組的使用。

運行效果如圖:

實現源代碼如下:

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;
	}
}

        示例三:模擬銀行創建賬戶以及賬戶相關操作的類。

運行效果如圖:

實現源代碼如下:

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)使用類開發應用程序。

        使用面向對象的思想開發程序有諸多好處,可以用類來實現其三大特性,抽象、集成、封裝。這些對開發大型程序有其他方法不可替代的好處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章