第一篇:java面向?qū)ο蟮膶W(xué)習(xí)心得
Java面向?qū)ο蟮膶W(xué)習(xí)心得
大三的時(shí)候?qū)W校組織我們?nèi)ヌK州NIIT參加四個(gè)月的java實(shí)訓(xùn),我開始系統(tǒng)的學(xué)習(xí)期java,之前大學(xué)的時(shí)候?qū)W的比較寬泛,沒(méi)有專門的正對(duì)java的學(xué)習(xí)。
首先我是從學(xué)習(xí)Java編程開始接觸OOP(面向?qū)ο缶幊?,剛開始使用Java編寫程序的時(shí)候感覺很別扭,因?yàn)槲以缫粤?xí)慣用C來(lái)編寫程序,很欣賞C的簡(jiǎn)潔性和高效性,喜歡C簡(jiǎn)練而表達(dá)能力豐富的風(fēng)格,特別忍受不了Java運(yùn)行起來(lái)慢吞吞的速度,相對(duì)冗長(zhǎng)的代碼,而且一個(gè)很簡(jiǎn)單的事情,要寫好多類,一個(gè)類調(diào)用一個(gè)類,心里的抵觸情緒很強(qiáng)。
我對(duì)Java的面向?qū)ο蟮奶匦宰聊チ季?,自認(rèn)為有所領(lǐng)悟,也開始有意識(shí)的運(yùn)用OOP風(fēng)格來(lái)寫程序,然而還是經(jīng)常會(huì)覺得不知道應(yīng)該怎樣提煉類,面對(duì)一個(gè)具體的問(wèn)題的時(shí)候,會(huì)覺得腦子里千頭萬(wàn)緒的,不知道怎么下手,一不小心,又會(huì)回到原來(lái)的思路上去。
舉個(gè)例子,要發(fā)廣告郵件,廣告郵件列表存在數(shù)據(jù)庫(kù)里面。倘若用C來(lái)寫的話,一般會(huì)這樣思考,先把郵件內(nèi)容讀入,然后連接數(shù)據(jù)庫(kù),循環(huán)取郵件地址,調(diào)用本機(jī)的qmail的sendmail命令發(fā)送。
然后考慮用Java來(lái)實(shí)現(xiàn),既然是OOP,就不能什么代碼都塞到main過(guò)程里面,于是就設(shè)計(jì)了三個(gè)類:
一個(gè)類是負(fù)責(zé)讀取數(shù)據(jù)庫(kù),取郵件地址,調(diào)用qmail的sendmail命令發(fā)送; 一個(gè)類是讀郵件內(nèi)容,MIME編碼成HTML格式的,再加上郵件頭;
一個(gè)主類負(fù)責(zé)從命令讀參數(shù),處理命令行參數(shù),調(diào)用發(fā)email的類。
把一件工作按照功能劃分為3個(gè)模塊分別處理,每個(gè)類完成一件模塊任務(wù)。
仔細(xì)的分析一下,就會(huì)發(fā)現(xiàn)這樣的設(shè)計(jì)完全是從程序員實(shí)現(xiàn)程序功能的角度來(lái)設(shè)計(jì)的,或者說(shuō),設(shè)計(jì)類的時(shí)候,是自低向上的,從機(jī)器的角度到現(xiàn)實(shí)世界的角度來(lái)分析問(wèn)題的。因此在設(shè)計(jì)的時(shí)候,就已經(jīng)把程序編程實(shí)現(xiàn)的細(xì)節(jié)都考慮進(jìn)去了,企圖從底層實(shí)現(xiàn)程序這樣的出發(fā)點(diǎn)來(lái)達(dá)到滿足現(xiàn)實(shí)世界的軟件需求的目標(biāo)。
這樣的分析方法其實(shí)是不適用于Java這樣面向?qū)ο蟮木幊陶Z(yǔ)言,因?yàn)?,如果改用C語(yǔ)言,封裝兩個(gè)C函數(shù),都會(huì)比Java實(shí)現(xiàn)起來(lái)輕松的多,邏輯上也清楚的多。
我覺得面向?qū)ο蟮木柙谟诳紤]問(wèn)題的思路是從現(xiàn)實(shí)世界的人類思維習(xí)慣出發(fā)的,只要領(lǐng)會(huì)了這一點(diǎn),就領(lǐng)會(huì)了面向?qū)ο蟮乃季S方法。
舉一個(gè)非常簡(jiǎn)單的例子:假使現(xiàn)在需要寫一個(gè)網(wǎng)頁(yè)計(jì)數(shù)器,客戶訪問(wèn)一次頁(yè)面,網(wǎng)頁(yè)計(jì)數(shù)器加1,計(jì)數(shù)器是這樣來(lái)訪問(wèn)的后臺(tái)有一個(gè)數(shù)據(jù)庫(kù)表,保存每個(gè)id(一個(gè)id對(duì)應(yīng)一個(gè)被統(tǒng)計(jì)訪問(wèn)次數(shù)的頁(yè)面)的計(jì)數(shù)器當(dāng)前值,請(qǐng)求頁(yè)面一次,對(duì)應(yīng)id的計(jì)數(shù)器的字段加1(這里我們忽略并發(fā)更新數(shù)據(jù)庫(kù)
表,出現(xiàn)的表鎖定的問(wèn)題)。
如果按照一般從程序?qū)崿F(xiàn)的角度來(lái)分析,我們會(huì)這樣考慮:首先是從HTTP GET請(qǐng)求取到id,然后按照id查數(shù)據(jù)庫(kù)表,獲得某id對(duì)應(yīng)的訪問(wèn)計(jì)數(shù)值,然后加1,更新數(shù)據(jù)庫(kù),最后向頁(yè)面顯示訪問(wèn)計(jì)數(shù)。
現(xiàn)在假設(shè)一個(gè)沒(méi)有程序設(shè)計(jì)經(jīng)驗(yàn)的人,他會(huì)怎樣來(lái)思考這個(gè)問(wèn)題的呢?他會(huì)提出什么樣的需求呢?他很可能會(huì)這樣想:
我需要有一個(gè)計(jì)數(shù)器,這個(gè)計(jì)數(shù)器應(yīng)該有這樣的功能,刷新一次頁(yè)面,訪問(wèn)量就會(huì)加1,另外最好還有一個(gè)計(jì)數(shù)器清0的功能,當(dāng)然計(jì)數(shù)器如果有一個(gè)可以設(shè)為任意值的功能的話,我就可以作弊了。
做為一個(gè)沒(méi)有程序設(shè)計(jì)經(jīng)驗(yàn)的人來(lái)說(shuō),他完全不會(huì)想到對(duì)數(shù)據(jù)庫(kù)應(yīng)該如何操作,對(duì)于HTTP變量該如何傳遞,他考慮問(wèn)題的角度就是我有什么需求,我的業(yè)務(wù)邏輯是什么,軟件應(yīng)該有什么功能。
按照這樣的思路(請(qǐng)注意,他的思路其實(shí)就是我們平時(shí)在生活中習(xí)慣的思維方式),我們知道需要有一個(gè)計(jì)數(shù)器類 Counter,有一個(gè)必須的和兩個(gè)可選的方法:
getCount()// 取計(jì)數(shù)器值方法
resetCounter()// 計(jì)數(shù)器清0方法
setCount()// 設(shè)計(jì)數(shù)器為相應(yīng)的值方法
把Counter類完整的定義如下:
public class Counter {
public int getCount(int id){}
public void resetCounter(int id){}
public void setCount(int id, int currentCount){}
}
解決問(wèn)題的框架已經(jīng)有了,來(lái)看一下如何使用Counter。在count.cgi里面調(diào)用Counter來(lái)計(jì)數(shù),程序片斷如下:
// 這里從HTTP環(huán)境里面取id值
...Counter myCounter = new Counter();// 獲得計(jì)數(shù)器
int currentCount = myCounter.getCount(id);// 從計(jì)數(shù)器中取計(jì)數(shù)
// 這里向客戶瀏覽器輸出
...程序的框架全都寫好了,剩下的就是實(shí)現(xiàn)Counter類方法里面具體的代碼了,此時(shí)才去考慮具體的程序語(yǔ)言實(shí)現(xiàn)的細(xì)節(jié),比如,在getCount()方法里面訪問(wèn)數(shù)據(jù)庫(kù),更新計(jì)數(shù)
值。
從上面的例子中看到,面向?qū)ο蟮乃季S方法其實(shí)就是我們?cè)诂F(xiàn)實(shí)生活中習(xí)慣的思維方式,是從人類考慮問(wèn)題的角度出發(fā),把人類解決問(wèn)題的思維方式逐步翻譯成程序能夠理解的思維方式的過(guò)程,在這個(gè)翻譯的過(guò)程中,軟件也就逐步被設(shè)計(jì)好了。
在運(yùn)用面向?qū)ο蟮乃季S方法進(jìn)行軟件設(shè)計(jì)的過(guò)程中,最容易犯的錯(cuò)誤就是開始分析的時(shí)候,就想到了程序代碼實(shí)現(xiàn)的細(xì)節(jié),因此封裝的類完全是基于程序?qū)崿F(xiàn)邏輯,而不是基于解決問(wèn)題的業(yè)務(wù)邏輯。
學(xué)習(xí)JDBC編程的經(jīng)典錯(cuò)誤問(wèn)法是:“我怎樣封裝對(duì)數(shù)據(jù)庫(kù)的select操作?”
面向?qū)ο蟮脑O(shè)計(jì)是基于解決業(yè)務(wù)問(wèn)題的設(shè)計(jì),而不是基于具體編程技術(shù)的設(shè)計(jì)。我不會(huì)去封裝select語(yǔ)句的,我只封裝解決問(wèn)題的業(yè)務(wù)邏輯,對(duì)數(shù)據(jù)庫(kù)的讀取是在業(yè)務(wù)邏輯的編碼實(shí)現(xiàn)階段才去考慮的問(wèn)題。
回過(guò)頭看上面那個(gè)發(fā)廣告郵件的例子,應(yīng)該如何應(yīng)用面向?qū)ο蟮乃季S方法呢?
對(duì)于一個(gè)郵件來(lái)說(shuō),有郵件頭,郵件體,和郵件地址這三個(gè)屬性,發(fā)送郵件,需要一個(gè)發(fā)送的方法,另外還需要一個(gè)能把所有郵件地址列出來(lái)的方法。所以應(yīng)該如下設(shè)計(jì):
類JunkMail
屬性:
head
body
address
方法:
sendMail()// 發(fā)送郵件
listAllMail()// 列郵件地址
用Java來(lái)表示:
public class JunkMail {
private String head;
private String body;
private String address;
public JunkMain(){ // 默認(rèn)的類構(gòu)造器
// 從外部配置文件讀郵件頭和郵件體
this.head=...;
this.body=...;
}
public static boolean sendMail(String address){
// 調(diào)用qmail,發(fā)送email
}
public static Collection listAllMail(){
// 訪問(wèn)數(shù)據(jù)庫(kù),返回一個(gè)郵件地址集合}
}
當(dāng)把JunkMail設(shè)計(jì)好了以后,再調(diào)用JunkMail類完成郵件的發(fā)送,將是非常輕松的事情。
如果說(shuō)傳統(tǒng)的面向過(guò)程的編程是符合機(jī)器運(yùn)行指令的流程的話,那么面向?qū)ο蟮乃季S方法就是符合現(xiàn)實(shí)生活中人類解決問(wèn)題的思維過(guò)程。
在面向?qū)ο蟮能浖治龊驮O(shè)計(jì)的時(shí)候,要提醒自己,不要一上來(lái)就去想程序代碼的實(shí)現(xiàn),應(yīng)該拋開具體編程語(yǔ)言的束縛,集中精力分析我們要實(shí)現(xiàn)的軟件的業(yè)務(wù)邏輯,分析軟件的業(yè)務(wù)流程,思考應(yīng)該如何去描述和實(shí)現(xiàn)軟件的業(yè)務(wù)。畢竟軟件只是一個(gè)載體,業(yè)務(wù)才是我們真正要實(shí)現(xiàn)的目標(biāo)。
但是在設(shè)計(jì)過(guò)程中,心里卻往往在擔(dān)心,如果我完全不去考慮程序代碼的實(shí)現(xiàn)的話,那么我怎么知道我的設(shè)計(jì)一定合理呢?我怎么知道我設(shè)計(jì)的類、接口一定可以實(shí)現(xiàn)呢?所以經(jīng)??梢钥吹降默F(xiàn)象就是:
在設(shè)計(jì)過(guò)程中,雖然知道不能過(guò)早考慮代碼實(shí)現(xiàn),但是每設(shè)計(jì)一個(gè)類,一個(gè)接口,心里都要不知不覺的用自己熟悉的編程語(yǔ)言大概的評(píng)估一下,看看能否編出來(lái),因此,一不小心,就會(huì)又回到按照程序功能實(shí)現(xiàn)的思路進(jìn)行設(shè)計(jì)的老路上去了。
舉個(gè)例子來(lái)說(shuō)明,在做Web程序設(shè)計(jì)的時(shí)候,經(jīng)常要遇到分頁(yè)顯示數(shù)據(jù)的情況。比如說(shuō)需要把系統(tǒng)中所有的用戶都列出來(lái)這樣的功能。假設(shè)使用User類來(lái)表示用戶,增加用戶addUser(),刪除用戶deleteUser(),查詢所有用戶listUsers()方法。而數(shù)據(jù)庫(kù)中有一個(gè)user表,一條記錄是一個(gè)用戶的信息。下面考慮一下User類的方法的實(shí)現(xiàn):
addUser()和deleteUser()方法都好實(shí)現(xiàn),就是對(duì)數(shù)據(jù)庫(kù)增加記錄和刪除記錄。對(duì)于listUsers()方法,其實(shí)就是對(duì)user表的select,取出一個(gè)記錄集。但是該怎么從listUsers()方法中得到所有用戶的列表呢?
一個(gè)方法調(diào)用的返回值只有一個(gè),沒(méi)有多個(gè),所以很多情況下采用的辦法就是返回值定義為集合類型,比如Vector。這樣就可以在listUsers()方法的具體代碼實(shí)現(xiàn)的時(shí)候,從數(shù)據(jù)庫(kù)依次取出一個(gè)個(gè)記錄,插入到Vector里面來(lái)。在主程序里面,調(diào)用listUsers()方法可以返回一個(gè)Vector,然后再對(duì)Vector遍歷操作,就可以得到用戶列表了。
public class User {
public static void addUser(...){
// 數(shù)據(jù)庫(kù)insert一條記錄
}
public static void deleteUser(...){
// 數(shù)據(jù)庫(kù)delete一條記錄
}
public Vector listUsers(...){
// 數(shù)據(jù)庫(kù)select結(jié)果放到一個(gè)集合里面
}
}
這樣的設(shè)計(jì)基本合理,但是仍然有點(diǎn)小問(wèn)題。因?yàn)樵谠O(shè)計(jì)的時(shí)候,就考慮到了用Java的集合類Vector來(lái)實(shí)現(xiàn)對(duì)不定長(zhǎng)數(shù)據(jù)集的存放,因而違反了面向?qū)ο笤O(shè)計(jì)的一個(gè)原則:在設(shè)計(jì)的時(shí)候不應(yīng)過(guò)早的考慮具體程序語(yǔ)言的實(shí)現(xiàn)。所以必須用抽象的方法,和具體實(shí)現(xiàn)無(wú)關(guān)的方法來(lái)表達(dá)業(yè)務(wù)邏輯。
我們知道,通常對(duì)具有集合特征的數(shù)據(jù)結(jié)構(gòu)進(jìn)行遍歷通??梢允褂胣ext和hasNext方法,next實(shí)現(xiàn)取下一個(gè)用戶,hasNext判斷是否還有元素。因此我們定義一個(gè)接口Iterator,這個(gè)接口中定義兩個(gè)方法next和hasNext:
public interface Iterator {
public boolean hasNext(){}
public Object next(){}
}
而User類的listUses方法返回值改為Iterator接口的實(shí)現(xiàn)類:
public class User {
...public Iterator listUsers(){
}
...}
這樣就把User類的設(shè)計(jì)和具體的實(shí)現(xiàn)方法分離開了,因?yàn)榇藭r(shí)任何實(shí)現(xiàn)了next()和hasNext()方法的類都可以做為listUsers的返回值,都可以被用來(lái)表達(dá)“用戶列表”,而不僅僅可以使用Vector而已。比如,我可以用ArrayList來(lái)表達(dá)用戶列表,因?yàn)锳rrayList也實(shí)現(xiàn)了Iterator,當(dāng)然我也可以自己專門寫一個(gè)類來(lái)存放用戶列表,只要實(shí)現(xiàn)next()和hasNext()方法就行了。
這樣在具體的編寫代碼的時(shí)候,程序員具有了最大的靈活性,可以根據(jù)具體的情況,采用不同的編程方法來(lái)存放用戶列表。特別是降低了程序的耦合度,提高了程序的可移植性。對(duì)于上面那個(gè)JunkMail的listAllMail()方法也同樣應(yīng)該改為接口類型。
然后,在主程序里面就這樣來(lái)使用User類的listUsers方法:
User myUser = new User();
Iterator iterator = myUser.listUsers();
while(iterator.hasNext()){
iterator.next();
}
這樣就可以完全不用考慮程序代碼實(shí)現(xiàn)了,從高層次上把功能抽象出來(lái),定義成為接口,同時(shí)又可以把系統(tǒng)設(shè)計(jì)的很合理,完全根據(jù)業(yè)務(wù)的需求來(lái)進(jìn)行設(shè)計(jì)。
結(jié)語(yǔ)
通過(guò)上面的幾個(gè)例子的設(shè)計(jì)說(shuō)明,使用面向?qū)ο蟮乃季S方法,其實(shí)是一個(gè)把業(yè)務(wù)邏輯從具體的編程技術(shù)當(dāng)中抽象出來(lái)的過(guò)程,而這個(gè)抽象的過(guò)程是自上而下的,非常符合人類的思維習(xí)慣,也就是先不考慮問(wèn)題解決的細(xì)節(jié),把問(wèn)題的最主要的方面抽象成為一個(gè)簡(jiǎn)單的框架,集中精力思考如何解決主要矛盾,然后在解決問(wèn)題的過(guò)程中,再把問(wèn)題的細(xì)節(jié)分割成一個(gè)一個(gè)小問(wèn)題,再專門去解決細(xì)節(jié)問(wèn)題。
因而一旦牢牢的抓住了這一點(diǎn),你就會(huì)發(fā)現(xiàn)在軟件設(shè)計(jì)和開發(fā)過(guò)程中,你自己總是會(huì)不知不覺的運(yùn)用面向?qū)ο蟮乃季S方法來(lái)設(shè)計(jì)和編寫程序,并且程序的設(shè)計(jì)和開發(fā)也變得不再那么枯燥,而一個(gè)合理運(yùn)用面向?qū)ο蠹夹g(shù)進(jìn)行設(shè)計(jì)和架構(gòu)的軟件,更是具備了思維的藝術(shù)美感。
最后,愿面向?qū)ο蟮乃季S方法也能給您的程序設(shè)計(jì)之路帶來(lái)創(chuàng)作的樂(lè)趣。
第二篇:學(xué)習(xí)心得《面向?qū)ο蟆?/a>
面向?qū)ο笳n程學(xué)習(xí)心得
這學(xué)期的面向?qū)ο笳n程對(duì)我來(lái)說(shuō)是收獲匪淺的一門課。通過(guò)老師課件的講解,自己一些相關(guān)書籍的閱讀和實(shí)踐作業(yè)的完成,逐步對(duì)課程有了由淺及深的認(rèn)識(shí)。
面向?qū)ο?Object Oriented,OO)是一門以實(shí)踐為主課程,課程中可以分開兩塊OOA(面向?qū)ο笙到y(tǒng)分析)和OOD(面向?qū)ο笙到y(tǒng)設(shè)計(jì))。OOA(面向?qū)ο笙到y(tǒng)分析)主要內(nèi)容: 研究問(wèn)題域和用戶需求,運(yùn)用面向?qū)ο蟮挠^點(diǎn)和原則發(fā)現(xiàn)問(wèn)題域中與系統(tǒng)責(zé)任有關(guān)的對(duì)象,以及對(duì)象的特征和相互關(guān)系.OOA不涉及針對(duì)具體實(shí)現(xiàn)采取的設(shè)計(jì)決策和有關(guān)細(xì)節(jié),獨(dú)立于具體實(shí)現(xiàn)的系統(tǒng)模型。是一個(gè)完整確切反映問(wèn)題域和用戶需求的系統(tǒng)模型。OOA的優(yōu)勢(shì):復(fù)用、可擴(kuò)展、可維護(hù)性、彈性。
OOD(面向?qū)ο笙到y(tǒng)設(shè)計(jì)):以O(shè)OA模型為基礎(chǔ),按照實(shí)現(xiàn)的要求進(jìn)行設(shè)計(jì)決策,包括全局性的決策和局部細(xì)節(jié)的設(shè)計(jì),與具體的實(shí)現(xiàn)條件相關(guān)。OOD的步驟:細(xì)化重組類→細(xì)化和實(shí)現(xiàn)類之間的關(guān)系,明確其可見性→增加屬性,指定屬性的類型和可見性→分配職責(zé),定義執(zhí)行每個(gè)職責(zé)的方法→對(duì)消息驅(qū)動(dòng)的系統(tǒng),明確消息傳遞的方式→利用設(shè)計(jì)模式進(jìn)行局部設(shè)計(jì)→畫出詳細(xì)的類圖和時(shí)序圖。
面向?qū)ο蟮姆治雠c設(shè)計(jì)方法將致力于解決傳統(tǒng)軟件研發(fā)過(guò)程中由于軟件模塊化結(jié)構(gòu)化程度不高帶來(lái)的軟件重用性差、軟件可維護(hù)性差、開發(fā)出的軟件不能滿足用戶需要等方面問(wèn)題。面向?qū)ο蟮母拍畎ǎ簩?duì)象、對(duì)象的狀態(tài)和行為、類、類的結(jié)構(gòu)、消息和方法。對(duì)象概念將包含對(duì)象唯一性、抽象性、繼承性、多態(tài)性的重要特征。面向?qū)ο蟮囊匕撼橄?、封裝性、共享性三方面。
在設(shè)計(jì)模式的研究過(guò)程中,我們組選擇的是迭代器(Iterator)的設(shè)計(jì)模式研究。完成設(shè)計(jì)研究后,我對(duì)迭代器的設(shè)計(jì)模式有了更為深刻的理解。迭代器(Iterator)提供一個(gè)方法順序訪問(wèn)一個(gè)聚合對(duì)象的各個(gè)元素,而又不暴露該對(duì)象的內(nèi)部表示。并了解到迭代器設(shè)計(jì)模式一般在以下三類場(chǎng)合使用較多。
? 訪問(wèn)一個(gè)聚合對(duì)象的內(nèi)容而無(wú)需暴露它的內(nèi)部表示。? 支持對(duì)聚合對(duì)象的多種遍歷。因?yàn)楸闅v狀態(tài)是保存在每一個(gè)迭代器對(duì)象中的。
? 為遍歷不同的聚合結(jié)構(gòu)提供一個(gè)統(tǒng)一的接口。根據(jù)實(shí)現(xiàn)方式的不同,效果上會(huì)有差別。同時(shí)還簡(jiǎn)化了容器的接口。但是在java Collection中為了提高可擴(kuò)展性,容器還是提供了遍歷的接口。在面向?qū)ο蟮能浖O(shè)計(jì)中,我們經(jīng)常會(huì)遇到一類集合對(duì)象,這類集合對(duì)象的內(nèi)部結(jié)構(gòu)可能有著各種各樣的實(shí)現(xiàn),但是歸結(jié)起來(lái),無(wú)非有兩點(diǎn)是需要我們?nèi)リP(guān)心的:一是集合內(nèi)部的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),二是遍歷集合內(nèi)部的數(shù)據(jù)。面向?qū)ο笤O(shè)計(jì)原則中有一條是類的單一職責(zé)原則,所以我們要盡可能的去分解這些職責(zé),用不同的類去承擔(dān)不同的職責(zé)。Iterator模式就是分離了集合對(duì)象的遍歷行為,抽象出一個(gè)迭代器類來(lái)負(fù)責(zé),這樣既可以做到不暴露集合的內(nèi)部結(jié)構(gòu),又可讓外部代碼透明的訪問(wèn)集合內(nèi)部的數(shù)據(jù)。
在Java Collection的應(yīng)用中,提供的具體迭代器角色是定義在容器角色中的內(nèi)部類。這樣便保護(hù)了容器的封裝。但是同時(shí)容器也提供了遍歷算法接口,你可以擴(kuò)展自己的迭代器。至于迭代器模式的使用。客戶程序要先得到具體容器角色,然后再通過(guò)具體容器角色得到具體迭代器角色。這樣便可以使用具體迭代器角色來(lái)遍歷容器了。
OOA和OOD之間沒(méi)有明顯的界限。OOA與OOD的不可分割性正好說(shuō)明了OO思想的強(qiáng)大,即軟件過(guò)程階段的無(wú)縫連接,在交流與溝通中不會(huì)產(chǎn)生鴻溝,這是相對(duì)結(jié)構(gòu)化思想的好處,因?yàn)閺墓δ苣K到某塊詳細(xì)控制邏輯設(shè)計(jì)兩者之間的聯(lián)系不是十分緊密,需要分析人員與設(shè)計(jì)人員的再溝通。
通過(guò)課程的學(xué)習(xí)與實(shí)踐,對(duì)面向?qū)ο蟮睦砟?,以及相關(guān)方法,設(shè)計(jì)模式有了更為深刻的理解與掌握。針對(duì)面向?qū)ο蟮姆治雠c設(shè)計(jì)課程的授課內(nèi)容及方法,我個(gè)人覺得對(duì)我還是有不少的幫助和 提高。結(jié)合自己的工作,雖然與開發(fā)接觸的比較少,但是在運(yùn)維過(guò)程中,如果能了解開發(fā)原理,結(jié)合實(shí)際的工作,會(huì)對(duì)一些源代碼的分析能力以及工作效率的提高起到明顯的幫助作用。
第三篇:java面向?qū)ο蟪绦蛟O(shè)計(jì)教案
武漢大學(xué)珞珈學(xué)院 系/教研室 Java 面 向 對(duì) 象 程 序 設(shè) 計(jì) 課 教 案
主講教師:熊春秀 編寫時(shí)間:2011-4-30
第一章:概述
第 1、2 節(jié):面向?qū)ο蟮幕靖拍?、面向?qū)ο蟪绦蛟O(shè)計(jì)概述 授課時(shí)間:2011-2-
22、23
計(jì)劃學(xué)時(shí)數(shù):1 教學(xué)任務(wù)與目的:讓學(xué)生理解面向?qū)ο蟮幕靖拍?教學(xué)重點(diǎn):掌握面向?qū)ο蟮幕靖拍?教學(xué)難點(diǎn):理解面向?qū)ο蟪绦蛟O(shè)計(jì)的方法 教學(xué)方法:多媒體+板書 參考書目:《面向?qū)ο蟪绦蛟O(shè)計(jì)導(dǎo)論》,[美]C.Thomas wu著,電子工業(yè)出版社 專業(yè)詞匯:Java虛擬機(jī)、Applet程序 備注
第二章:Java特點(diǎn)及運(yùn)行環(huán)境
第 1、2、3 節(jié):Java語(yǔ)言特點(diǎn)、Java應(yīng)用程序及運(yùn)行環(huán)境、Java Applet程序及運(yùn)行環(huán)境 授課時(shí)間:2011-2-
22、23
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)JDK的下載、安裝與環(huán)境配置。教學(xué)重點(diǎn):掌握編譯和執(zhí)行Java程序的基本步驟
教學(xué)難點(diǎn):理解Java程序的入口并能夠通過(guò)命令行傳遞參數(shù) 教學(xué)方法:多媒體+板書 參考書目:《面向?qū)ο蟪绦蛟O(shè)計(jì)導(dǎo)論》,[美]C.Thomas wu著,電子工業(yè)出版社 專業(yè)詞匯:JDK、lib、bin 備注 第三章:Java語(yǔ)言基礎(chǔ)
第 1、2 節(jié):Java程序的構(gòu)成、數(shù)據(jù)類型、表達(dá)式以及流程控制語(yǔ)句 授課時(shí)間:2011-3-
1、2
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)Java基本的數(shù)據(jù)類型和表示方法、數(shù)值類型的運(yùn)算、邏輯運(yùn)算和比較、條件執(zhí)行語(yǔ)句(包括三種條件語(yǔ)句和switch語(yǔ)句)、循環(huán)控制語(yǔ)句(包括for、while、do while循環(huán)及相應(yīng)的輔助語(yǔ)句)、字符串類String和BufferString以及數(shù)組的聲明及使用。
教學(xué)重點(diǎn):掌握J(rèn)ava基本的數(shù)據(jù)類型和表示方法
教學(xué)難點(diǎn):理解Java程序的循環(huán)控制語(yǔ)句(包括for、while、do while循環(huán)及相應(yīng)的輔助語(yǔ)句)
教學(xué)方法:多媒體+板書 參考書目:《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社 專業(yè)詞匯:變量、數(shù)據(jù)類型、循環(huán)控制語(yǔ)句 備注 第三章:Java語(yǔ)言基礎(chǔ) 第 3 節(jié):Java與C比較
授課時(shí)間:2011-3-
8、9
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生在C語(yǔ)言的基本上進(jìn)一步學(xué)習(xí)Java語(yǔ)言。教學(xué)重點(diǎn):掌握J(rèn)ava語(yǔ)言與C語(yǔ)言的區(qū)別與聯(lián)系。教學(xué)難點(diǎn):理解Java語(yǔ)言在C語(yǔ)言上的改進(jìn)。教學(xué)方法:多媒體+板書 參考書目:《Java2參考大全(第四版)》,[美]Herbert Schildt著,張玉清、吳浦峰、尚勇等譯,清華大學(xué)出版社。專業(yè)詞匯:Java、C 備注 第四章:抽象、封裝與類
第 1 節(jié):抽象、封裝與Java類的概念
授課時(shí)間:2011-3-
15、16
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)面向?qū)ο蟮幕咎卣鳌⒄莆杖绾味x一個(gè)類以及如何生成對(duì)象、深入掌握方法的定義及技巧、深入掌握類的訪問(wèn)權(quán)限與封裝機(jī)制、深入掌握包的定義與包的使用方法。
教學(xué)重點(diǎn):掌握類的定義與對(duì)象的生成。教學(xué)難點(diǎn):理解類的抽象與封裝機(jī)制。教學(xué)方法:多媒體+板書 參考書目:《Java2 實(shí)用教程》,耿祥義、張躍平編著,清華大學(xué)出版社。專業(yè)詞匯:抽象、封裝、類 備注 第四章:抽象、封裝與類 第 2 節(jié):系統(tǒng)定義的類
授課時(shí)間:2011-3-
22、23
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)使用系統(tǒng)定義的類,并掌握與用戶自定義類的區(qū)別。教學(xué)重點(diǎn):掌握如何定義所需要的類。
教學(xué)難點(diǎn):熟悉Java平臺(tái)定義了哪些經(jīng)常要用到、而且滿足我們需要的類。教學(xué)方法:多媒體+板書 參考書目:《Java2 實(shí)用教程》,耿祥義、張躍平編著,清華大學(xué)出版社。專業(yè)詞匯:系統(tǒng)定義的類、用戶自定義類 備注 第四章:抽象、封裝與類
第 3 節(jié):類、域和方法的修飾符
授課時(shí)間:2011-3-
29、30
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)類的聲明。
教學(xué)重點(diǎn):掌握如何定義類的修飾和方法的修飾符。教學(xué)難點(diǎn):熟悉類的變量的定義與使用方法。教學(xué)方法:多媒體+板書 參考書目:《Java2 實(shí)用教程》,耿祥義、張躍平編著,清華大學(xué)出版社。專業(yè)詞匯:成員變量、類變量、成員方法、類方法 備注 第五章:繼承與多態(tài)
第 1、2 節(jié):Java的繼承與派生、域的繼承與隱藏 授課時(shí)間:2011-4-
5、6
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生全面掌握面向?qū)ο蟮幕咎卣?、掌握如何使用繼承性來(lái)到達(dá)軟件的重用、深入掌握繼承過(guò)程中域的隱藏和方法的覆蓋技巧。教學(xué)重點(diǎn):掌握如何使用繼承性來(lái)到達(dá)軟件的重用。教學(xué)難點(diǎn):熟悉繼承過(guò)程中域的隱藏和方法的覆蓋技巧。教學(xué)方法:多媒體+板書 參考書目:《Java2 實(shí)用教程》,耿祥義、張躍平編著,清華大學(xué)出版社。專業(yè)詞匯:繼承派生、域、隱藏 備注 第五章:繼承與多態(tài)
第 3、4 節(jié):方法的繼承、重載與覆蓋、this與super、構(gòu)造函數(shù)的繼承與重載 授課時(shí)間:2011-4-
12、13
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生通過(guò)繼承可以更有效地組織程序結(jié)構(gòu),明確類之間的關(guān)系,并充分利用已有的類來(lái)創(chuàng)建新類,通過(guò)繼承可以實(shí)現(xiàn)代碼的重用,以完成更復(fù)雜的設(shè)計(jì)、開發(fā)。教學(xué)重點(diǎn):掌握類的重載與覆蓋的區(qū)別與聯(lián)系。教學(xué)難點(diǎn):熟悉類的重載與覆蓋使用方法。教學(xué)方法:多媒體+板書 參考書目:《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:繼承、重載、覆蓋、this、super 備注 第五章:繼承與多態(tài)
第 5、6 節(jié):多態(tài)性的實(shí)現(xiàn)、接口聲明與實(shí)現(xiàn) 授課時(shí)間:2011-4-
19、20
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生深入掌握抽象類和抽象方法的定義,掌握多態(tài)通過(guò)統(tǒng)一多個(gè)相關(guān)類的對(duì)外接口,在運(yùn)行時(shí)根據(jù)不同的情況執(zhí)行不同的操作,提高類的抽象度和靈活性,深入掌握接口的定義和使用技巧。
教學(xué)重點(diǎn):熟悉多態(tài)性實(shí)現(xiàn)的兩種方式以及接口的實(shí)現(xiàn)。教學(xué)難點(diǎn):熟悉多態(tài)性與接口的實(shí)現(xiàn)方法。教學(xué)方法:多媒體+板書 參考書目:《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:多態(tài)性、接口 備注 第六章:工具類與算法
第 1、2 節(jié):語(yǔ)言基礎(chǔ)類庫(kù)、Applet類與小程序的基本原理 授課時(shí)間:2011-4-
26、27
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:深入了解Applet生命周期的主要方法和特點(diǎn)、熟練掌握Applet程序的編寫方法、深入了解Applet的安全機(jī)制及其合理運(yùn)用。教學(xué)重點(diǎn):熟練掌握Applet程序的編寫方法。
教學(xué)難點(diǎn):深入了解Applet的安全機(jī)制及其合理運(yùn)用。教學(xué)方法:多媒體+板書 參考書目:《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:Applet、生命周期 備注 第六章:工具類與算法
第 3、4 節(jié):數(shù)組、字符串、常用算法
授課時(shí)間:2011-5-
3、4
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)字符串類String和BufferString、數(shù)組的聲明及使用。教學(xué)重點(diǎn):熟練掌握字符串與數(shù)組的使用方法。教學(xué)難點(diǎn):深入了解數(shù)組的使用方法。教學(xué)方法:多媒體+板書 參考書目:《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:數(shù)組、字符串 備注 第七章:用戶圖形界面的設(shè)計(jì)
第 1、2 節(jié):用戶自定義成分、事件驅(qū)動(dòng)設(shè)計(jì) 授課時(shí)間:2011-5-
10、11
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生學(xué)會(huì)使用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法構(gòu)建圖形用戶界面、深入了解抽象窗口工具包(AWT)、掌握事件處理基本原理和方法。教學(xué)重點(diǎn):熟練掌握?qǐng)D形用戶界面的開發(fā)方法。教學(xué)難點(diǎn):深入了解圖形界面的各種事件。教學(xué)方法:多媒體+板書 參考書目:《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:AWT、GUI 備注 第七章:用戶圖形界面的設(shè)計(jì)
第 3、4 節(jié):GUI對(duì)象,包括:按鈕、文本框、鼠標(biāo)、鍵盤等事件的處理、布局設(shè)計(jì) 授課時(shí)間:2011-5-
17、18
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生深入了解GUI構(gòu)件及掌握布局控制方法、熟練掌握菜單和對(duì)話框、掌握簡(jiǎn)單繪圖方法。
教學(xué)重點(diǎn):熟練使用Java語(yǔ)言提供的布局管理器來(lái)管理組件在容器中的布局。教學(xué)難點(diǎn):深入了解組件在程序中安排中位置和大小使用方法。教學(xué)方法:多媒體+板書 參考書目:《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:布局管理器、容器 備注 第八章:Java高級(jí)編程
第 1、2、3節(jié):異常處理、多線程機(jī)制、Java程序?qū)W(wǎng)上資源的訪問(wèn) 授課時(shí)間:2011-5-
24、25
計(jì)劃學(xué)時(shí)數(shù):3 教學(xué)任務(wù)與目的:讓學(xué)生深入理解多線程的基本概念、熟練掌握創(chuàng)建線程的兩種基本方法、熟練處理線程的同步問(wèn)題和死鎖問(wèn)題、深入理解異常的基本概念、熟悉和掌握J(rèn)ava平臺(tái)定義異常類、熟練掌握創(chuàng)建自定義異常類的方法。教學(xué)重點(diǎn):熟練掌握創(chuàng)建線程的兩種基本方法。教學(xué)難點(diǎn):深入了解線程的同步問(wèn)題和死鎖問(wèn)題。教學(xué)方法:多媒體+板書 參考書目:《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,印旻編著,清華大學(xué)出版社。專業(yè)詞匯:同步、死鎖、多線程、異常
第四篇:Java面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)大綱
Java面向?qū)ο蟪绦蛟O(shè)計(jì)課程教學(xué)大綱
Object-Oriented Programming with Java Syllabus
課程名稱 課程類別 建設(shè)單位/教研室 前后課程 適用專業(yè)、層次 Java面向?qū)ο蟪绦蛟O(shè)課程英文名Object-Oriented Programming with Java 計(jì) 稱 專業(yè)必修課 學(xué)分/學(xué)時(shí) 4.0/42+42 計(jì)算機(jī)系/軟件工程教研室 考核方式 考試 C語(yǔ)言程序設(shè)計(jì)
軟件工程、計(jì)算機(jī)科學(xué)與技術(shù)、網(wǎng)絡(luò)工程
Upon completion of this course, students should master the basic knowledge of Java language, understand and grasp the basic object-oriented programming design ideas and skillfully use Java language to write, compile and debug programs.These would lay a good foundation for students on independently finish the work of program development with Java in the future.教學(xué)目的
The emphasis: 1.The origin of Java, Why should we learn Java language, Java cross-platform principle analysis(JVM)and Java Environment variable configuration.2.Data and Expressions: including Character Strings, Variables and Assignment, Primitive Data Types, Expressions, Data Conversion, Interactive Programs.3.Oriented object programming ideas: including Class, Object, Variables, Methods, Encapsulation, Inheritance, Polymorphism, Interface and so on.4.Java statements: including conditionals and loops statements.5.Arrays: Declaring and using one-dimensional arrays and two-dimensional arrays.6.Exceptions: including exception handling, uncaught exceptions, and try-catch statement and so on.7.GUI: including event handling and graphics user interface.The difficulty:
Object-oriented concept and idea, establishing application model and algorithm of description, the algorithm optimization of program and so on.教材和主要參考資料: Text and references Text :
John Lewis “Java程序設(shè)計(jì)教程(第六版)英文版” 電子工業(yè)出版社 ISBN-978-7-121-08808-7 References:
1.《Java編程思想(英文版 第3版)》,(美)Bruce Eckel編,機(jī)械工業(yè)出版社出版社; 2.Java程序設(shè)計(jì)基礎(chǔ)》,(美)Gary J.Bronson編, 趙德奎 林仕平譯,北京大學(xué)出版社。
3.Cay S.Horstmann, Gary Cornell.Java 2核心技術(shù) 卷I:基礎(chǔ)知識(shí).機(jī)械工業(yè)出版社, 2001.4.Cay S.Horstmann, Gary Cornell.Java 2核心技術(shù) 卷II:高級(jí)特性.機(jī)械工業(yè)出版社, 2001.教學(xué)內(nèi)容 學(xué)時(shí) 基本要求
按章、節(jié)具體列出
教學(xué)內(nèi)容 Topic 具體列出教學(xué)的基本要求,如了解、理解、掌握及應(yīng)用等。
By the end of chapter ,students should understand Chapter 1 Introduction
Chapter 2 Data and ExpressionsChapter 3 Using Classes and Objects Chapter 4 Writing Classes 3+3 To be able to have a fundamental understanding of software role in a computer system.? To know components of a computer ? To understand how those components interact ? To grasp how computers store and manipulate information ? To know how computers are connected into networks to share information.? To profile programming and programming languages ? To profile an introduction to Java ? To grasp object-oriented concepts 3+6 Explore some of the basic types of data used in a Java program and the use of expressions to perform calculations.? To understand character strings, concatenation, and escape sequences.? To grasp the declaration and use of variables.? To be familiar with Java primitive data types.? To understand expressions and operator precedence.? To grasp the syntax and processing of expressions.? To understand the types of data conversions and the mechanisms for
accomplishing them.? To know how to create interactive programs.? To understand the basic graphic concepts and the techniques for drawing
shapes.? To know the concept of a Java applet.4+4 Use the predefined classes in the Java class library that are provided to us to make the process of writing programs easier.? To grasp the creation of objects and the use of object reference variables.? To be familiar with the services provided by the String class.? To know how the java standard class library is organized into packages.? To be familiar with the services provided by the Random and Math class.? To grasp ways to format output using the NumberFormat and DecimalFormat
classes.? To be familiar with enumerated types.? To understand wrapper classes and the concept of autoboxing.? To understand components and containers used in graphics user interfaces.? To know a label component and the use of images.6+6 We've been using predefined classes.Now we will learn to write our own classes to define objects.? To grasp the structure and content of a class definition.? To understand the concept of object state using instance data.? To know the effect of visibility modifiers on methods and data.? To grasp the structure of a method definition, including parameters and return
values.? To grasp the structure and purpose of a constructor.? To grasp the creation of graphical objects.? To understand the concepts needed to create an interactive graphical user
interface.Chapter 5 Conditionals and Loops
Chapter 6 OBJECT-ORIENTED DESIGN
Chapter 7 Arrays
Chapter 8 Inheritance ? To know some basic GUI components and events.4+4 Now we will examine programming statements that allow us to make decisions and repeat processing steps in a loop.? To know the flow of control through a method.? To understand Boolean expressions that can be used to make decisions.? To grasp to perform basic decision making using if and switch statements.? To understand issues pertaining to the comparison of certain types of data.? To grasp familiarly to execute statements repetitively using while, do, and for
loops.? To understand the concept of an iterator object and use one to read a text file.? To know how to draw with the aid of conditionals and loops.? To know more GUI components and events.4+4 Now we can extend our discussion of the design of classes and objects ? To know key issues related to the design of object-oriented software.? To techniques for identifying the classes and objects needed in a program.? To understand the relationships among classes.? To understand the effect on the static modifier on methods and data.? To grasp the creation of a formal object interface.? Further grasp the definition of enumerated type classes.? To grasp issues related to the design of methods, including method
overloading.? To know issues related to the design of graphics user interface, including
layout managers.6+3 Arrays are objects that help us organize large amounts of information ? Define and use arrays for basic data organization.? To know bounds checking and techniques for managing capacity.? To learn to compare the issues related to arrays as objects and arrays of
objects.? To grasp the use of command-line arguments.? To grasp the syntax and use of variable-length parameter lists.? To be familiar with the creation and use of multidimensional arrays.? To be familiar with the ArrayList class and its generic parameter.? To know more mouse and keyboard events.6+6 Inheritance is a fundamental object-oriented design technique used to create and organize reusable classes.? To know the derivation of new classes from existing ones.? To understand the concept and purpose of method overriding.? To grasp the design of class hierarchies.? To grasp the issue of visibility as it relates to inheritance.? To have the ability to derive on interface from another.? To grasp object-oriented design in the context of inheritance.? To know the inheritance structure for GUI components.? To explore the creation of listeners by extending adaptor classes.Chapter 9 Polymorphism 3+3 Chapter 10 Exceptions 3+3 有關(guān)說(shuō)明:
擬稿(簽名):謝彥麒 Polymorphism is an object-oriented concept that allows us to create versatile software designs ? To understand polymorphism and explore its benefits.? To understand the concept of dynamic binding.? To grasp to use inheritance relationships to create polymorphic references.? To grasp to use interfaces to create polymorphic references.? To grasp sorting and searching using polymorphic implementations.? To be familiar with object-oriented design in the context of polymorphism.? To know the processing of events as an example of polymorphism.? To know more GUI components.Exception handling is an important aspect of object-oriented design ? To know the purpose of exceptions.? To know exception messages and the call stack trace.?
To be familiar with the usage of the try-catch statement for handling exception.? To understand the concept of exception propagation.?
To be familiar with the exception class hierarchy in the Java standard class library.? To be familiar with I/O exception and the ability to write text files.? To know how to create GUI using mnemonics and tool tips.?
To know additional GUI components and containers.核稿(簽名): 審批(簽名): 年 月 日
第五篇:JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)教學(xué)大綱
《JAVA面向?qū)ο蟪绦蛟O(shè)計(jì)》課程教學(xué)大綱
Oriented object Programming in JAVA 編號(hào): 08065121
適用專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)、網(wǎng)絡(luò)工程 學(xué)時(shí)數(shù):32 學(xué)分?jǐn)?shù):2 執(zhí)筆者:田小玲 編寫日期:2009年11月
一、課程的性質(zhì)和目的
本課程是為計(jì)算機(jī)科學(xué)與技術(shù)以及網(wǎng)絡(luò)工程專業(yè)本科生開設(shè)的專業(yè)選修課,是一門面向?qū)ο蟮木幊陶Z(yǔ)言,通過(guò)本課程的學(xué)習(xí),培養(yǎng)和提高學(xué)生面向?qū)ο蟪绦蛟O(shè)計(jì)的能力和Java語(yǔ)言在web開發(fā)中的應(yīng)用能力。
二、課程教學(xué)內(nèi)容
第一章 面向?qū)ο筌浖_發(fā)概述(2學(xué)時(shí))1.內(nèi)容
面向?qū)ο髥?wèn)題求解的提出、面向?qū)ο髥?wèn)題求解的概述、對(duì)象、類與實(shí)體、對(duì)象的屬性與相互關(guān)系、面向?qū)ο蟮能浖_發(fā)過(guò)程、面向?qū)ο蟪绦蛟O(shè)計(jì)方法的優(yōu)點(diǎn)、開發(fā)環(huán)境設(shè)置及開發(fā)工具簡(jiǎn)介。
2.要求
(1)了解:面向?qū)ο筌浖_發(fā)概述,面向?qū)ο蟮能浖_發(fā)過(guò)程及面向?qū)ο蟪绦蛟O(shè)計(jì) 方法的優(yōu)點(diǎn)。
(2)掌握:對(duì)象的屬性與相互關(guān)系,對(duì)象、類與實(shí)體的基本概念。(3)熟練掌握:開發(fā)環(huán)境設(shè)置及開發(fā)工具簡(jiǎn)介(補(bǔ)充)。3.重點(diǎn)
對(duì)象、類與實(shí)體的基本概念。
4.難點(diǎn)
面向?qū)ο蟪绦蛟O(shè)計(jì)方法的理解。第二章 Java概述(2學(xué)時(shí))1.內(nèi)容
Java語(yǔ)言的特點(diǎn)、Java虛擬機(jī)及垃圾回收機(jī)制、JDK目錄結(jié)構(gòu)、Java 的API結(jié)構(gòu)及Java程序結(jié)構(gòu)、第一個(gè)Java Application程序、第一個(gè)Java Applet程序、圖形界面的輸入輸出、字符界面的輸入輸出。
2.要求
(1)了解:Java語(yǔ)言的發(fā)展歷史及特點(diǎn),Java Application程序及Java Applet程 序,圖形界面的輸入輸出,字符界面的輸入輸出。
(2)掌握:Java語(yǔ)言實(shí)現(xiàn)機(jī)制(補(bǔ)充),Java體系結(jié)構(gòu)(補(bǔ)充)。(3)熟練掌握:Java Application程序的結(jié)構(gòu)。3.重點(diǎn)
Java Application程序的結(jié)構(gòu)。
4.難點(diǎn)
Java語(yǔ)言實(shí)現(xiàn)機(jī)制。
第三章 Java語(yǔ)言基礎(chǔ)(2學(xué)時(shí))1.內(nèi)容
數(shù)據(jù)類型、變量與常量、表達(dá)式、流程控制語(yǔ)句。2.要求
(1)了解:java語(yǔ)言的發(fā)展。
(2)掌握:數(shù)據(jù)類型、變量與常量的定義及使用。(3)熟練掌握:表達(dá)式的使用,流程控制語(yǔ)句。3.重點(diǎn)
表達(dá)式的使用,流程控制語(yǔ)句。
4.難點(diǎn)
流程控制語(yǔ)句的運(yùn)用。
第四章 抽象、封裝與類(6學(xué)時(shí))
1.內(nèi)容
抽象與封裝、Java的類、類的修飾符、域、方法、訪問(wèn)控制符。2.要求
(1)了解:抽象、封裝概念,系統(tǒng)定義的類。
(2)掌握:類的修飾符(abstract和final),域(包括靜態(tài)域、靜態(tài)初始化器、最終域和易失域),方法(包括抽象方法、靜態(tài)方法、最終方法)。
(3)熟練掌握:用戶程序自定義類及創(chuàng)建對(duì)象與定義構(gòu)造函數(shù),訪問(wèn)控制符(包括public、缺省訪問(wèn)控制符、private、protected)的運(yùn)用。
3.重點(diǎn)
自定義類、創(chuàng)建對(duì)象與定義構(gòu)造函數(shù)。
4.難點(diǎn)
四種訪問(wèn)控制符的運(yùn)用。第五章 繼承與多態(tài)(4學(xué)時(shí))1.內(nèi)容
Java的繼承、多態(tài)、Java的重載、構(gòu)造函數(shù)的繼承與重載、包及接口的概念。2.要求
(1)了解:繼承及多態(tài)的概念,Java接口的概念。(2)掌握:Java的方法重載,包的創(chuàng)建及引用。(3)熟練掌握:構(gòu)造函數(shù)的繼承與重載。
3.重點(diǎn)
方法的重載、類的繼承。4.難點(diǎn)
屬性的隱藏、方法的覆蓋。第六章 工具類與算法(2學(xué)時(shí))
1.內(nèi)容
語(yǔ)言基礎(chǔ)類庫(kù)(包括Object類、數(shù)據(jù)類型類、Math類及System類)、Applet類與Applet小程序、數(shù)組。
2.要求
(1)了解:Applet類與Applet小程序。(2)掌握:Java語(yǔ)言基礎(chǔ)類庫(kù)。(3)熟練掌握:數(shù)組的聲明及初始化。3.重點(diǎn)
數(shù)組的聲明及初始化、數(shù)組的應(yīng)用。4.難點(diǎn)
編寫Applet小程序。
第七章 圖形用戶界面的設(shè)計(jì)與實(shí)現(xiàn)(8學(xué)時(shí))
1.內(nèi)容
圖形用戶界面概述、GUI標(biāo)準(zhǔn)組件概述及布局設(shè)計(jì)、Java的事件處理機(jī)制。2.要求
(1)了解:圖形界面組件之間的層次關(guān)系、容器的概念和作用。(2)掌握:圖形用戶界面程序的基本結(jié)構(gòu)。(3)熟練掌握:事件監(jiān)聽機(jī)制。3.重點(diǎn)
圖形用戶界面程序的基本結(jié)構(gòu)。4.難點(diǎn)
Java的事件處理機(jī)制。
第八章 Java高級(jí)編程(6學(xué)時(shí))
1.內(nèi)容
異常處理、Java多線程機(jī)制、Swing GUI 組件、流式輸入輸出與文件處理、用Java實(shí)現(xiàn)底層網(wǎng)絡(luò)通信、Java程序?qū)W(wǎng)上資源的訪問(wèn)。
2.要求
(1)了解:例外的概念、Java中線程的基本概念、Java的線程類與Runnable接口及如何在程序中實(shí)現(xiàn)多線程、Java輸入輸出類庫(kù)及文件的處理與隨機(jī)訪問(wèn)、使用Java實(shí)現(xiàn)底層網(wǎng)絡(luò)通信、Java程序?qū)W(wǎng)上資源的訪問(wèn)。
3(2)掌握:例外處理機(jī)制。
(3)熟練掌握:Swing GUI組件的運(yùn)用。3.重點(diǎn)
例外處理機(jī)制、Swing GUI組件的創(chuàng)建。
4.難點(diǎn)
自定義異常類。
三、課程教學(xué)的基本要求
課程教學(xué)的基本要求包含三項(xiàng):上機(jī)環(huán)節(jié)、作業(yè)要求、考試方式。1.上機(jī)環(huán)節(jié)
根據(jù)課堂講授的理論,并結(jié)合上機(jī)操作讓學(xué)生及時(shí)掌握每章節(jié)所學(xué)的知識(shí),通過(guò)實(shí)操可加深學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)的思想及Java程序設(shè)計(jì)的領(lǐng)會(huì)。
2.作業(yè)要求
(1)作業(yè)要求:獨(dú)立思考完成、書寫工整、按時(shí)交(2)作業(yè)量:每次課均布置作業(yè),作業(yè)量約2~3題(3)總作業(yè)量:約30~40道題 3.考試方式
(1)考試方式:閉卷筆試(2)評(píng)定成績(jī)要求:
總成績(jī)=平時(shí)成績(jī)×30%+考試成績(jī)×70%
四、本課程與其它課程的聯(lián)系與分工
1.前期課程:
程序設(shè)計(jì)基礎(chǔ)、計(jì)算機(jī)網(wǎng)絡(luò)、C語(yǔ)言程序設(shè)計(jì)、C++程序設(shè)計(jì) 2.后續(xù)課程:
軟件工程、Web應(yīng)用程序開發(fā)
五、建議教材與教學(xué)參考書
[1] 印旻.《Java語(yǔ)言與面向?qū)ο蟪绦蛟O(shè)計(jì)》,清華大學(xué)出版社 [2] 於東軍,楊靜宇.《Java程序設(shè)計(jì)與應(yīng)用開發(fā)》,清華大學(xué)出版社 [3] 辛運(yùn)幃.《Java程序設(shè)計(jì)》,清華大學(xué)出版社 [4] 姜?jiǎng)?《Java語(yǔ)言程序設(shè)計(jì)》,人民郵電出版社 [5] 閻菲.《Java程序設(shè)計(jì)教程》,中國(guó)水利水電出版社