劉妍東
摘 要 在面向?qū)ο蟮木幊趟枷胫校琷ava類的設(shè)計(jì)是學(xué)習(xí)中的難點(diǎn)也是重中之重,類能否設(shè)計(jì)好,也是能否學(xué)習(xí)好面向?qū)ο蟮木幊陶Z言。通過生活中的實(shí)例分析到最后java類代碼的完成,能給學(xué)習(xí)者啟發(fā)。
關(guān)鍵詞 抽象 java類 代碼
1抽象
現(xiàn)實(shí)生活中的事物隨處可見,例如,我們身邊的人、大街上的汽車、隨身攜帶的各種用途卡等都是看的見、摸得著的事物。我們把這些事物都稱之為對(duì)象。對(duì)象有很多都屬于相同的種類。如各種不同膚色、不同職業(yè)的人,都屬于人類。如各式各樣的車,都屬于車類。各種用途的卡,都屬于卡類。我們就可以說,類是對(duì)象的抽象,對(duì)象是類的實(shí)例化。
在面向?qū)ο蟪绦蛟O(shè)計(jì)中, 類是由屬性和行為組成的。上述這些對(duì)象都有屬性和行為。例如,人有年齡、身高、體重等屬性;跑、跳等行為。車有車牌、車型、顏色等屬性;行駛、停止等行為??ㄓ锌ㄌ?hào)、密碼等屬性;取款、存款等行為。屬性通過數(shù)據(jù)來體現(xiàn),行為通過具體功能來實(shí)現(xiàn)。
2轉(zhuǎn)換
銀行卡在我們生活中必不可少,據(jù)社會(huì)科學(xué)文獻(xiàn)出版社統(tǒng)計(jì),大學(xué)生平均擁有信用卡的數(shù)量已超過2張,如何將現(xiàn)實(shí)中的銀行卡變成計(jì)算機(jī)世界的類呢?接下來我們用java語言來實(shí)現(xiàn)卡類的設(shè)計(jì)。
首先我們要提取卡的共同點(diǎn),也就是卡具有的屬性。如發(fā)卡行、卡號(hào)、卡主名、有效日期、背后驗(yàn)證碼。還有我們看不到的屬性,如密碼、余額、卡主的電話號(hào)碼、身份證號(hào)、消費(fèi)記錄等。接下來提取卡具有的行為,包括存款、取款、刷卡消費(fèi)、轉(zhuǎn)賬、繳費(fèi)等等。其中,發(fā)卡行、卡號(hào)等能用具體的值來描述的屬性,在類里面將轉(zhuǎn)換為成員變量。存取款、轉(zhuǎn)賬等這些可執(zhí)行操作,在類里面轉(zhuǎn)換為成員方法。根據(jù)我們的需要可以只保留常用的成員變量和成員方法。我們給它們加上標(biāo)點(diǎn)符號(hào),看看是不是有些程序語言的結(jié)構(gòu)了。
銀行卡{
卡號(hào);
余額;
存款(){ }
取款(){ }
查詢余額(){ }
}
3生成java代碼
在轉(zhuǎn)化為java語言的類時(shí),我們還需要再考慮這些成員變量的取值,可以通過取值來決定成員變量的數(shù)據(jù)類型。如卡號(hào)。我們可以注意到,卡號(hào)是由長(zhǎng)長(zhǎng)的一串?dāng)?shù)字組成,而且不需要參與運(yùn)算,這樣我們就可以把卡號(hào)定義為“字符串”類型。余額,表示卡里存儲(chǔ)的錢,如66元6角8分。允許存在小數(shù)點(diǎn),這樣余額就可以定義為實(shí)型,如“雙精度”類型。存款、取款、查詢余額這些操作我們暫時(shí)先定義“無返回值”類型。最后,在“銀行卡”前面加一個(gè)“class”,class是定義類的關(guān)鍵字?,F(xiàn)在,這就是一個(gè)我們定義好的“銀行卡類”。
class 銀行卡{
String 卡號(hào);
double 余額;
void 存款(){ }
void取款(){ }
void查詢余額(){ }
}
中文呈現(xiàn)在源代碼中不太合適。下面我們用規(guī)范的命名方法來重新修改一下,一般采用見名知意原則來命名。如類,銀行卡,就可以命名為card。卡號(hào),命名為cardNo。余額用balance來表示。存款用deposit來表示。取款用withdraw表示,最后,查詢余額可以用getBalance表示。到此為止,我們的銀行卡類就設(shè)計(jì)完成,該類中包括2個(gè)成員變量,3個(gè)成員方法。我們?cè)侔?個(gè)成員方法加上方法體,一個(gè)簡(jiǎn)單的類完成了。
class Card{
String cardNo;
double balance;
void deposit(double d){
balance+=d;
System.out.println(“存款”+ d +”元 余額為 ”+balance+”元”);
}
void withdraw(double d){
balance-=d;
System.out.println(“取款”+ d +”元 余額為 ”+balance+”元”);}
}
void getBalance(){
System.out.println(“余額”+balance+“元”); }
}
}
類設(shè)計(jì)完成后,就可以通過這個(gè)類來生成一個(gè)個(gè)具體的銀行卡對(duì)象了。我們先試試生成一個(gè)簡(jiǎn)單的對(duì)象測(cè)試一下card類。首先定義一個(gè)測(cè)試類,Test,然后寫上標(biāo)準(zhǔn)的主方法。
public class Test {
public static void main(String[] args) {
Card debitCard=new Card();
debitCard.deposit(200);
}
}
在主方法中, 使用Card類生成debitCard對(duì)象,我們用new(閃爍)關(guān)鍵字調(diào)用默認(rèn)的構(gòu)造方法(Card()閃爍),這樣debitCard對(duì)象中的值都賦為默認(rèn)值,cardNo值為NULL,balance值為0.0。最后,使用debitCard.deposit來調(diào)用存款方法。參數(shù)200,代表存了200元。
由Card類實(shí)例化了一個(gè)名為debitCard的對(duì)象,初始值為0,我們往里面存了200元,現(xiàn)在卡里就有200元了。
4總結(jié)
最后,我們?cè)倩貞浺幌拢陬惖脑O(shè)計(jì)中,涉及到了幾個(gè)的概念。
類是封裝了一類對(duì)象的狀態(tài)和方法。是現(xiàn)實(shí)世界中事物的抽象集合。類具有完整的功能和相對(duì)的獨(dú)立性。對(duì)象:是現(xiàn)實(shí)世界中可以明確標(biāo)識(shí)的任何事物。在程序中,對(duì)象由類來創(chuàng)建。成員變量:是用來描述類的屬性,反映類的狀態(tài)和特征。成員方法:是用來說明類的行為,反映類中對(duì)數(shù)據(jù)的操作。
同學(xué)們,是不是設(shè)計(jì)一個(gè)類很簡(jiǎn)單,你們也來設(shè)計(jì)一個(gè)吧。