俗話說的好,實踐出真知,所以除了理論知識掌握扎實以外,更重要的是要多加操練,這樣才能掌握核心科技。
今天我們就用剛學會的類來實踐一下,目標便是完成上一篇中的剁手任務(wù)。
我們的商品類已經(jīng)準備好了,代碼重新羅列一次,這里增加了一個重載方法,關(guān)于重載這里不過多介紹,以后會專門文章介紹,這里把它當成一個普通方法就好了,主要用來比較兩個商品是否相等,如果對代碼不熟悉的話可以再返回去看一下上一篇文章。
這里順便介紹一下Java注釋的正確使用姿勢。注釋是插在源代碼中間用于對代碼進行說明的文字,不會被編譯和執(zhí)行。代碼不僅僅是用來編譯的,更是用來閱讀的,因此寫上足夠多的注釋是有必要的,這樣可以保證自己在以后回過頭來看自己寫的破代碼的時候?qū)懙氖鞘裁垂?,如果將自己寫代碼的思路也記錄下來的話,那就更方便自己以后的對比提升了。
Java中的注釋方法主要有三種:
1.單行注釋,使用//
2.多行注釋,使用/ 代碼 /
3.文檔注釋,使用/* 代碼 / 這種格式是為了便于javadoc程序自動生成文檔。這里先不做介紹,之后會又專門一篇來做講解。
/*GOODS類
主要用于記錄商品信息,并提供商品信息的訪問方法
*/
public class Goods{
//實例域,用于存儲商品信息
private String title="";
private double price=0.0;
private String link = "";
//構(gòu)造器1
public Goods(String aTitle,double aPrice,String aLink){
title = aTitle;
price = aPrice;
link = aLink;
}
//構(gòu)造器2
public Goods(String aTitle,double aPrice){
title = aTitle;
price = aPrice;
link = "www.baidu.com";
}
//構(gòu)造器3
public Goods(double aPrice){
price = aPrice;
title = "Goods";
link = "www.baidu.com";
}
//取商品標題
public String getTitle(){
return title;
}
//取商品價格
public double getPrice(){
return price;
}
//取商品鏈接
public String getLink() {
return link;
}
//設(shè)置商品標題
public void setTitle(String aTitle){
title = aTitle;
}
//設(shè)置商品價格
public void setPrice(double aPrice){
price = aPrice;
}
//設(shè)置商品鏈接
public void setLink(String aLink){
link = aLink;
}
//輸出商品信息
public void print(){
System.out.println("title:"+title+" price:"+price+" link:"+link);
}
//重載equals判斷方法
@Override
public boolean equals(Object obj) {
return super.equals(obj);
}
}
這樣一注釋,這個類的功能就很清晰了,人家一看就知道你要做什么瞎操作了,當然,如果每次使用類都要上類的源碼查看的話,也確實不方便,所以才有了Javadoc這樣的工具,這里因為還沒有介紹,所以先不使用。
接下來,我們需要一個購物車來存放商品。因為只需要管理一個購物車,所以預(yù)算類就先不寫了,不然也有些太小題大做了。
package pers.frank.test;
/**
* Cart類
* 購物車類用于管理商品和預(yù)算信息
* 提供添加商品,獲取預(yù)算,修改預(yù)算等方法
*/
public class Cart {
//實例域
Goods[] goodsList = new Goods[20];//商品列表,因為還沒有介紹列表跟集合,所以先使用數(shù)組存儲,先假設(shè)你不會買超過20件商品
int goodsNum = 0;//商品數(shù)量
double budget = 0.0;//預(yù)算
double totalPrices = 0.0;//當前商品總價
//構(gòu)造函數(shù)
public Cart(double aBudget){
budget = aBudget;
}
//獲取商品總價
public double getTotalPrices() {
return totalPrices;
}
//獲取預(yù)算
public double getBudget() {
return budget;
}
//修改預(yù)算
public void setBudget(double aBudget) {
budget = aBudget;
}
//添加商品,預(yù)算足夠則返回真,不夠則返回假
public boolean addGoods(Goods aGoods){
//先判斷預(yù)算
if(totalPrices + aGoods.getPrice() > budget){
return false;
}
//預(yù)算足夠則添加
//遍歷數(shù)組,尋找元素為null的位置
int i = 0;
for(; i < goodsList.length; i++){
if(goodsList[i] == null) {
goodsList[i] = aGoods;
break;
}
}
if(i == goodsList.length)
return false;
totalPrices = totalPrices + aGoods.getPrice();
goodsNum++;
return true;
}
//遍歷輸出購物車中的商品信息
public void showGoodsList(){
System.out.println("購物車內(nèi)商品數(shù)量:" + goodsNum + " 商品總價:" + totalPrices);
for( Goods a: goodsList){
if (a == null) continue;
a.print();
}
}
}
這里的代碼沒有太多需要介紹的東西,注釋里已經(jīng)寫的很詳細了。關(guān)于數(shù)據(jù)描述和使用的類已經(jīng)構(gòu)建好了,接下來只需要使用它們就可以了。
public class Test{
public static void main(String[] args) {
double budget = 20000;//預(yù)算
Cart myCart = new Cart(budget);//實例化一個購物車對象
//創(chuàng)建商品對象數(shù)組
Goods[] goodsList = new Goods[3];
goodsList[0] = new Goods("goodsA",10000,"link1");
goodsList[1] = new Goods("goodsB",6000,"link2");
goodsList[2] = new Goods("goodsC",6000,"link3");
//循環(huán)添加商品
for (int i = 0; i < goodsList.length; i++){
if (myCart.addGoods(goodsList[i]) == true){
//添加成功
System.out.println("商品添加成功!標題:" + goodsList[i].getTitle() + " 價格:" + goodsList[i].getPrice() + " 鏈接:"+ goodsList[i].getLink());
}else {
//添加失敗
System.out.println("商品添加失??!當前預(yù)算:" + myCart.getBudget() + " 當前商品總價:"+ myCart.getTotalPrices()+" 要添加的商品價格:" + goodsList[i].getPrice());
break;
}
}
//打印購物車內(nèi)所有商品信息
myCart.showGoodsList();
}
}
輸出如下:
商品添加成功!標題:goodsA 價格:10000.0 鏈接:link1
商品添加成功!標題:goodsB 價格:6000.0 鏈接:link2
商品添加失??!當前預(yù)算:20000.0 當前商品總價:16000.0 要添加的商品價格:6000.0
購物車內(nèi)商品數(shù)量:2 商品總價:16000.0
title:goodsA price:10000.0 link:link1
title:goodsB price:6000.0 link:link2
我們的類的簡單應(yīng)用就編寫完成了,當然這個類并不完善,有些更復雜的概念還沒有介紹,這里只是為了演示類的正確使用姿勢而設(shè)計的,不要過于糾結(jié)于細節(jié)。
我們可以看出,測試用的主要代碼其實很少,因為我們把具體實現(xiàn)都封裝在了類里,只需要按規(guī)則使用類中的方法就可以了。這就好比蓋房子,不是直接用石頭木材堆出來的,而是先加工成磚瓦門窗,然后再搭建。使用這些磚瓦門窗當然要比直接使用石頭木材方便得多。使用類的便利性也在于此。我們把商品跟購物車類構(gòu)建好之后,如果某些地方需要修改,只需要在相應(yīng)的類中進行修改即可,只要對外提供的方法沒有改變,那么調(diào)用這些代碼的其他代碼就不需要進行修改,這樣就能降低代碼的耦合度。
至此,本篇就結(jié)束了,之后會介紹關(guān)于類的更多內(nèi)容,歡迎大家繼續(xù)關(guān)注!
真正重要的東西,用眼睛是看不見的。