Java程序設(shè)計(第一章)_第1頁
Java程序設(shè)計(第一章)_第2頁
Java程序設(shè)計(第一章)_第3頁
Java程序設(shè)計(第一章)_第4頁
Java程序設(shè)計(第一章)_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

Java程序設(shè)計Name:徐曉霞Room:Z323Telime:周一7-8(3206)

周三7-8(3206)課程安排授課學(xué)時——48學(xué)時上機(jī)實驗——16學(xué)時答疑及輔導(dǎo)時間:周一、周三7-8節(jié)地點:綜合樓3206考核方式實驗+平時(40%)+考試(60%)。作業(yè)提交方式網(wǎng)絡(luò)教學(xué)平臺教學(xué)用書教材:

《Java語言程序設(shè)計》

吳倩、林原、李麗霞,鐵道工業(yè)出版社,2015.2第1版參考書:

《Java編程思想(第三版)》

BruceEckel,機(jī)械工業(yè)出版社,2005.5

《設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》

ErichGamma,RichardHelm,Ralph Johnson,JohnVlissides,機(jī)械工業(yè)出版 社,2007.1學(xué)習(xí)目的Java語言通過本門課程的學(xué)習(xí)可以使學(xué)生掌握J(rèn)ava語言的基本語法和編程規(guī)范。面向?qū)ο蟪绦蛟O(shè)計方法Java語言是一種面向?qū)ο蟮恼Z言,通過學(xué)習(xí)使學(xué)生掌握用面向?qū)ο筮M(jìn)行編程的思想和實踐。培養(yǎng)實際開發(fā)能力,使學(xué)生成為一名合格的Java程序員。學(xué)會使用設(shè)計模式解決常用模塊設(shè)計問題。 設(shè)計模式是解決固定問題的固定的解決方法。第一章面向?qū)ο蟪绦蛟O(shè)計思想面向過程

面向?qū)ο竺嫦驅(qū)ο螅篊++、C#、Java、Objective-C(AppleHP)面向?qū)ο髮W(xué)習(xí)最重要的是:思想(不是語法),理解編程思想——掌握基礎(chǔ)語法——靈活運用工具和類——程序。核心概念:類和對象。面向?qū)ο蟮娜筇卣鳎悍庋b、繼承、多態(tài)。類、對象封裝、繼承、多態(tài)1.1類和對象物以類聚,人以群分。(分類)生活的類:具有相同特征及行為的一種群體?!叭恕鳖愂且粋€抽象的概念(不是實際存在的實體),真正的實體是所有具備“人類”這個群體的每一個具體的人,也就是“人類”這個類的對象。不同種類的對象構(gòu)成了現(xiàn)實世界。類描述了一組相同特性(屬性)和相同行為(方法)的對象。DogName(名字)Sex(性別)Age(年齡)Color(毛色)Weight(重量)Breed(品種)Numberofbarks#bark#kump數(shù)據(jù)方法現(xiàn)實世界的Dog類描述:程序中的Dog類描述:DogstringNameboolean

isMaleintAgestringColordoubleWeightstringBreedint

Numbarks#voidbark()#voidkump()程序中的Dog類描述:屬性行為例如:用來描述同一類事物的特征描述一類事物可做的操作用Java提供的一種抽象數(shù)據(jù)類型——類(class),可以定義Dog類:ClassDog{stringName;

boolean

isMale;

intAge;

stringColor;

doubleWeight;

stringBreed;

int

Numbarks;voidbark(){。。。}Voidkump(){。。。}}Note:面向過程的編程思想:

以過程劃分,注重過程。面向?qū)ο蟮木幊趟枷?

以類來劃分、以對象來考慮問題;例:用槍射擊鴨子如果用C語言來實現(xiàn),考慮實現(xiàn)步驟:舉槍、瞄準(zhǔn)、扳機(jī)、發(fā)射鴨子1、鴨子2……到鴨子10。出發(fā)點是射擊鴨子的過程。面向過程首先劃分類:鴨子類、槍類(獵槍、手槍、氣槍等)。槍類具有瞄準(zhǔn)、扳機(jī)、發(fā)射等功能。挑選一桿獵槍——也就是“槍”的這個類的一個對象來完成射擊任務(wù)。面向?qū)ο?*面向?qū)ο蟮乃季S方式更符合認(rèn)識世界的思維方式,而且代碼簡潔、可重用性強(qiáng)。思考:如果打10只老虎?1.2面向?qū)ο蟪绦蛟O(shè)計的三大特征BruceEckel《Thinkinginjava》三大特征:封裝、繼承、多態(tài)。事實上,封裝、繼承、多態(tài)是一種設(shè)計理念,一種程序藝術(shù),與程序設(shè)計沒有關(guān)系。面對一個項目。首先思考類與類之間的關(guān)聯(lián),怎樣用封裝、繼承、多態(tài)等機(jī)制畫出程序的基本架構(gòu)藍(lán)圖,以及優(yōu)化程序架構(gòu),至于細(xì)節(jié)問題,如采用什么語言,那都是次要的,畢竟語言不過是程序設(shè)計思想的一種表現(xiàn)形式而已。1.2.1封裝屬性可用來描述同一類事物的特征;方法可描述一類事物可做的操作。封裝就是把屬于同一類事物的共性(包括屬性與方法)歸到一個類中,以方便使用。

1.概念:封裝:也稱為信息隱藏,是指利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,使其構(gòu)成一個不可分割的獨立實體,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類型的內(nèi)部,盡可能地隱藏內(nèi)部的細(xì)節(jié),只保留一些對外接口使之與外部發(fā)生聯(lián)系。系統(tǒng)的其他部分只有通過包裹在數(shù)據(jù)外面的被授權(quán)的操作來與這個抽象數(shù)據(jù)類型交流與交互。也就是說,用戶無需知道對象內(nèi)部方法的實現(xiàn)細(xì)節(jié),但可以根據(jù)對象提供的外部接口(對象名和參數(shù))訪問該對象。

2.好處:

(1)實現(xiàn)了專業(yè)的分工。將能實現(xiàn)某一特定功能的代碼封裝成一個獨立的實體后,各程序員可以在需要的時候調(diào)用,從而實現(xiàn)了專業(yè)的分工。

(2)隱藏信息,實現(xiàn)細(xì)節(jié)。通過控制訪問權(quán)限可以將可以將不想讓客戶端程序員看到的信息隱藏起來,如某客戶的銀行的密碼需要保密,只能對該客戶開發(fā)權(quán)限。銷售數(shù)據(jù)管理銷售管理本部門銷售部門人力資源數(shù)據(jù)管理人力資源管理本部門人力資源部財務(wù)數(shù)據(jù)管理財務(wù)管理本部門財務(wù)部對象的封裝示意圖對象屬性方法1.2.2繼承繼承:是個性對共性的屬性與方法的接受,并加入個性特有的屬性與方法1.概念:一個類繼承另一個類,則稱繼承的類為子類,被繼承的類為父類。2.目的:實現(xiàn)代碼的復(fù)用。3.理解:子類與父類的關(guān)系并不是日常生活中的父子關(guān)系,子類與父類而是一種特殊化與一般化的關(guān)系,是is-a的關(guān)系,子類是父類更加詳細(xì)的分類。如classdogextendsanimal,就可以理解為dogisaanimal.注意設(shè)計繼承的時候,若要讓某個類能繼承,父類需適當(dāng)開放訪問權(quán)限,遵循里氏代換原則,即向修改關(guān)閉對擴(kuò)展開放,也就是開-閉原則。4.結(jié)果:繼承后子類自動擁有了父類的屬性和方法,但特別注意的是,父類的私有屬性和構(gòu)造方法并不能被繼承。

另外子類可以寫自己特有的屬性和方法,目的是實現(xiàn)功能的擴(kuò)展,子類也可以復(fù)寫父類的方法即方法的重寫。ColorSizeBirdColorSizechirpJumpColorSizeBombAttackColorSizeSmileCrazyBirdKindBirdAngryBird類的繼承示意圖1.2.3多態(tài)多態(tài)是以封裝和繼承為基礎(chǔ)的。是在抽象的層面上實施一個統(tǒng)一的行為。

1.概念:相同的事物,調(diào)用其相同的方法,參數(shù)也相同時,但表現(xiàn)的行為卻不同。

2.理解:子類以父類的身份出現(xiàn),但做事情時還是以自己的方法實現(xiàn)。子類以父類的身份出現(xiàn)需要向上轉(zhuǎn)型(upcast),其中向上轉(zhuǎn)型是由JVM自動實現(xiàn)的,是安全的,但向下轉(zhuǎn)型(downcast)是不安全的,需要強(qiáng)制轉(zhuǎn)換。子類以父類的身份出現(xiàn)時自己特有的屬性和方法將不能使用。ColorSizeBirdColorSizechirpJumpColorSizeAttackColorSizeSmileCrazyBirdKindBirdAngryBird多態(tài)示意圖ShootSpawnShootBomb1.3面向?qū)ο蟮某绦蛟O(shè)計第一階段:OOA——面向?qū)ο笮枨蠓治觥5诙A段:OOD——面向?qū)ο笤O(shè)計第三階段:OOP——面向?qū)ο缶幊痰谒碾A段:OOT——面向?qū)ο鬁y試面向?qū)ο筌浖_發(fā)的幾個基本流程1.3.1類的建模UnifiedModelingLanguage(UML)又稱統(tǒng)一建模語言或標(biāo)準(zhǔn)建模語言,是始于1997年一個OMG標(biāo)準(zhǔn),它是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,為軟件開發(fā)的所有階段提供模型化和可視化支持,包括由需求分析到規(guī)格,到構(gòu)造和配置。面向?qū)ο蟮姆治雠c設(shè)計(OOA&D,OOAD)方法的發(fā)展在80年代末至90年代中出現(xiàn)了一個高潮,UML是這個高潮的產(chǎn)物。它不僅統(tǒng)一了Booch、Rumbaugh和Jacobson的表示方法,而且對其作了進(jìn)一步的發(fā)展,并最終統(tǒng)一為大眾所接受的標(biāo)準(zhǔn)建模語言。建模——勾畫出工程的藍(lán)圖軟件工程“建?!本褪窃诳紤]實際的代碼細(xì)節(jié)之前,用UML圖示將程序結(jié)構(gòu)在很高的層次上表示出來。建模工具:RationRose(IBM)、Together(Borland公司)、MyEclipse等。MSoffice‘sVisio也可以使用(簡單)。UML2套建模機(jī)制:靜態(tài)建模機(jī)制和動態(tài)建模機(jī)制。圖名說明類圖(ClassDiagram)表示類之間的關(guān)系對象圖(ObjectDiagram)表示特定對象之間的關(guān)系時序圖(SequenceDiagram)表示對象之間在時間上的通信協(xié)作圖(CollaborationDiagram)按照時間和空間順序表示對象之間的交互和它們之間的關(guān)系狀態(tài)圖(StateDiagram)表示對象的狀態(tài)和響應(yīng)用例圖(UseCaseDiagram)表示用戶如何與程序交互活動圖(ActiveDiagram)表示系統(tǒng)元素的活動組件圖(ComponentDiagram)表示實現(xiàn)系統(tǒng)的組件的組織配置圖(DeploymentDiagram)表示環(huán)境的配置UML的主要類圖1.3.2類的層次結(jié)構(gòu)設(shè)計類的層次結(jié)構(gòu)代表了類與類之間的關(guān)系,包括有多少個類、它們之間的關(guān)系是什么、如何關(guān)聯(lián)等。憤怒的小鳥——“小鳥”類和“綠豬”類。“小鳥”類的子類——白鳥類、藍(lán)鳥類、紅鳥類?!靶▲B”類的行為又影響“綠豬”類。這就是經(jīng)過面向?qū)ο笤O(shè)計初步得出類的層次結(jié)構(gòu)。從程序設(shè)計角度分析:類之間的關(guān)系包括泛化、依賴、關(guān)聯(lián)、聚合、組合。1.

泛化(Generalization)

【泛化關(guān)系】:是一種繼承關(guān)系,表示一般與特殊的關(guān)系,它指定了子類如何特化父類的所有特征和行為。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。

【箭頭指向】:帶三角箭頭的實線,箭頭指向父類2.

依賴(Dependency)

【依賴關(guān)系】:是一種使用的關(guān)系,即一個類的實現(xiàn)需要另一個類的協(xié)助,所以要盡量不使用雙向的互相依賴.

【代碼表現(xiàn)】:局部變量、方法的參數(shù)或者對靜態(tài)方法的調(diào)用

【箭頭及指向】:帶箭頭的虛線,指向被使用者3.

關(guān)聯(lián)(Association)

【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系,它使一個類知道另一個類的屬性和方法;如:老師與學(xué)生,丈夫與妻子關(guān)聯(lián)可以是雙向的,也可以是單向的。雙向的關(guān)聯(lián)可以有兩個箭頭或者沒有箭頭,單向的關(guān)聯(lián)有一個箭頭。

【代碼體現(xiàn)】:成員變量

【箭頭及指向】:帶普通箭頭的實心線,指向被擁有者上圖中,老師與學(xué)生是雙向關(guān)聯(lián),老師有多名學(xué)生,學(xué)生也可能有多名老師。但學(xué)生與某課程間的關(guān)系為單向關(guān)聯(lián),一名學(xué)生可能要上多門課程,課程是個抽象的東西他不擁有學(xué)生。

下圖為自身關(guān)聯(lián):

4.

聚合(Aggregation)

【聚合關(guān)系】:是整體與部分的關(guān)系,且部分可以離開整體而單獨存在。如車和輪胎是整體和部分的關(guān)系,輪胎離開車仍然可以存在。

聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是強(qiáng)的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語法上無法區(qū)分,必須考察具體的邏輯關(guān)系。

【代碼體現(xiàn)】:成員變量

【箭頭及指向】:帶空心菱形的實心線,菱形指向整體5.

組合(Composition)

【組合關(guān)系】:是整體與部分的關(guān)系,但部分不能離開整體而單獨存在。如公司和部門是整體和部分的關(guān)系,沒有公司就不存在部門。

組合關(guān)系是關(guān)聯(lián)關(guān)系的一種,是比聚合關(guān)系還要強(qiáng)的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對象負(fù)責(zé)代表部分的對象的生命周期?!敬a體現(xiàn)】:成員變量【箭頭及指向】:帶實心菱形的實線,菱形指向整體6.

實現(xiàn)(Realization)

【實現(xiàn)關(guān)系】:是一種類與接口的關(guān)系,表示類是接口所有特征和行為的實現(xiàn).

【箭頭指向】:帶三角箭頭的虛線,箭頭指向接口各種關(guān)系的強(qiáng)弱順序:

泛化

=

實現(xiàn)

>

組合

>

聚合

>

關(guān)聯(lián)

>

依賴

下面這張UML圖,比較形象地展示了各種類圖關(guān)系:1.3.3面向?qū)ο蟪绦蛟O(shè)計原則單一責(zé)任原則開放——封閉原則依賴倒轉(zhuǎn)原則李氏代換原則面向?qū)ο蟪绦蛟O(shè)計主要遵循以下4個原則1.4Java語言Java簡史前身:Oak(JamesGosling1990)Java大事記90年,Sun公司開始Green工程93年,WWW席卷全球94年,開始定位于Internet95.1,Java命名HotJava,第一個支持Java的瀏覽器

Netscape2.01995.5.23Java誕生(Java1.0.2API)1997.2.18JDK1.1(java1.1API)1998.12JDK1.22000.5JDK1.32002.2JDK1.42004.10JDK1.5(JDK5.0)最新版JDK:JDK7.0網(wǎng)址(查詢新動向)http://Java簡史續(xù)j2sej2mej2eeJava大家庭中的三個主要成員1.簡單:simpleandsmall2.面向?qū)ο笸耆陬?、對象:OOA,OOD,OOP以類的形式組織代碼,數(shù)據(jù)類型封裝、繼承、多態(tài)3.分布式字節(jié)碼可來源于網(wǎng)絡(luò)Java具有豐富的網(wǎng)絡(luò)編程功能1.4Java的特點:4.穩(wěn)定性檢查數(shù)據(jù)類型的匹配,數(shù)組下標(biāo)越界不支持指針,保護(hù)內(nèi)存數(shù)據(jù)、程序自動內(nèi)存管理,碎片收集例外控制機(jī)制,正確處理運行時錯誤5.安全性字節(jié)碼加密傳輸,客戶端校驗解釋器在client端臨時分配、布置內(nèi)存Java的特點(續(xù))6.結(jié)構(gòu)中立、可移植:字節(jié)碼與計算機(jī)結(jié)構(gòu)無關(guān)。

對于不同平臺,有不同的虛擬機(jī)。

JVM屏蔽了底層平臺差異,實現(xiàn)了“一次編譯,隨處運行”。

[Return]Java的特點(續(xù))Importjava.io.*;classtest{….}源程序(*.java文件)DFBA0988……..字節(jié)碼(*.class文件)LinuxOSJVMforLinuxWindowsOSJVMforWindowsMacOSJVMforMac編譯1.4.1Java程序的開發(fā)環(huán)境Java語言的平臺無關(guān)性——任意OS。程序經(jīng)JVM編譯——生成字節(jié)碼——可以運行于任意OS上。設(shè)置開發(fā)環(huán)境。下載:http://

安裝配置path&classpathpath:windows系統(tǒng)執(zhí)行命令時要搜索的路徑。classpath:java在編譯和運行時要找的class所在的路徑。運行javac編譯java程序java運行java程序2、設(shè)置環(huán)境變量1、下載并安裝開發(fā)工具包1.4.1Java程序的開發(fā)環(huán)境3、安裝集成開發(fā)環(huán)境NetBeansJCreatorLeBorlandJBuilderMicroSoftVisualJ++VisualAgeforjava(IBM)SunONEstudioBEAworkshopStudioEclipse(MyEclipse

)1.4.2Java程序的編寫開發(fā)工具

Java程序的編寫開發(fā)工具。簡單程序的編寫,幾乎使用任何文本編輯器都可以進(jìn)行。例如:記事本、寫字板等。比較復(fù)雜的Java應(yīng)用系統(tǒng)開發(fā):專門的集成開發(fā)工具:如JBuilder、VisualJ++、VisualAge、JCreator等。其中優(yōu)秀的開發(fā)工具支持與應(yīng)用服務(wù)如BEAWebLogic、IBMWebSphere的集成。具體選用哪種開發(fā)工具要視項目的具體情況而定。JDK實用程序

編譯:

javac:java編譯器,將Java源程序編譯成字節(jié)碼(.class)運行:1>java:Java解釋器,直接從類文件執(zhí)行Java應(yīng)用程序,即運行application;

2>appletviewer:小程序瀏覽器,執(zhí)行html文件上的Java小程序,即運行Applet。publicclassHelloWorldApp{publicstaticvoidmain(Stringargs[]){

system.out.println(“HelloWorld!”);}}publicclassHelloWorldAppextendsApplet{publicvoidpaint(Graphicsg){g.drawString(“HelloWorld!”,25,50);}}配置path&classpath右擊——我的電腦——屬性——高級——環(huán)境變量——在系統(tǒng)變量里點擊path——編輯。這里在前面加上JDK的安裝路徑下的bin的路徑,例如JDK裝在了c:\ProgramFiles\Java下,那就在前面添上(里面已經(jīng)有的變量值不要刪掉,直接在前面另外添上)c:\ProgramFiles\Java\jdk1.6.0_01\bin;記得不要把最后面那個“;”丟了。

然后新建系統(tǒng)變量,變量名稱為“classpath”(不加雙引號),變量值為“.;c:\ProgramFiles\Java\jdk1.6.0_01\lib\dt.jar;c:\ProgramFiles\Java\jdk1.6.0_01\lib\tools.jar;”前面是一個“.”和一個“;”,不要丟掉.查找路徑的設(shè)置:在dos提示符下輸入:path路徑類路徑的設(shè)置:

setclasspath=.;java路徑\lib\dt.jar;java路徑\lib\tools.jar編寫第一個Java程序Java源文件以"java"作為擴(kuò)展名。源文件的基本組成部分是類(class),本例中的HelloWorldApp類。一個源文件中最多只能有一個public類。其他類的個數(shù)不限,如果源文件包含一個public類,該文件必須按該類名命名。Java應(yīng)用程序的執(zhí)行入口是main()方法。它有固定的書寫格式:publicstaticvoidmain(String[]args){…}Java嚴(yán)格區(qū)分大小寫。Java方法由語句構(gòu)成,每條語句以分號結(jié)束。Java注釋方式://用于單行注/*用于多行注釋*//**用于多行注釋*/publicclassHelloWorldApp{publicstaticvoidmain(Stringargs[]){System.out.println(“HelloWorld!”);}}publicclassHelloWorldAppextendsApplet{publicvoidpaint(Graphicsg){g.drawString(“HelloWorld!”,25,50);}}文件名:HelloWorldApp.javaJava程序的編譯及運行注意:文件名應(yīng)該與類名相同,因為Java解釋器要求公共類必須放在與其同名的文件中。編譯:

c:\java>javac

HelloWorldApp.java

編譯的結(jié)果是生成字節(jié)碼文件HelloWorldApp.class。運行:

C:\Java>java

HelloWorldApp

其結(jié)果就是在顯示器上顯示出“HelloWorld!”這行文字。

創(chuàng)建Applet例:HelloWorldApplet.javaimportjava.awt.*;importjava.applet.*;publicclassHelloWorldAppletextendsApplet{//Thisisanapplet.publicvoidpaint(Graphicsg){g.drawString(“HelloWorld!”,30,30);}}創(chuàng)建Applet(續(xù))使用appletviewer

appletviewerindex.html使用常規(guī)的瀏覽器該HTML文件如下。<HTML><HEAD><TITLE>AnApplet</TITLE></HEAD><BODY><appletcode=″HelloWorldApplet.class″width=240height=50></applet></BODY></HTML>其中,使用<applet>標(biāo)記來啟動HelloWorldApplet,code屬性指明字節(jié)碼所在的文件,width和height屬性指明applet所占區(qū)域范圍??偨Y(jié):在Java中可以編寫兩類程序:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論