第一講java概論課件_第1頁
第一講java概論課件_第2頁
第一講java概論課件_第3頁
第一講java概論課件_第4頁
第一講java概論課件_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第一講 概論本講要點(diǎn)計(jì)算機(jī)軟件的簡(jiǎn)史面向?qū)ο蠹夹g(shù)的基礎(chǔ)Java體系結(jié)構(gòu)最簡(jiǎn)單的Java實(shí)例解決問題的求解過程7/19/20221計(jì)算機(jī)軟件的簡(jiǎn)史計(jì)算機(jī)計(jì)算模式的三次浪潮分布式網(wǎng)絡(luò)計(jì)算模式對(duì)軟件開發(fā)技術(shù)的挑戰(zhàn)CORBA 標(biāo)準(zhǔn)對(duì)軟件業(yè)界的影響7/19/20222計(jì)算機(jī)軟件的簡(jiǎn)史計(jì)算機(jī)計(jì)算模式的三次浪潮基于主機(jī)的計(jì)算模式:特征:應(yīng)用程序,數(shù)據(jù), 界面集為一體。 在主機(jī)上運(yùn)行。7/19/20223計(jì)算機(jī)軟件的簡(jiǎn)史計(jì)算機(jī)計(jì)算模式的三次浪潮客戶機(jī)/服務(wù)器(C/S)的計(jì)算模式: 特征:C界面本地?cái)?shù)據(jù), S應(yīng)用邏輯共享數(shù)據(jù) 在客戶機(jī)和服務(wù)器上運(yùn)行。7/19/20224計(jì)算機(jī)軟件的簡(jiǎn)史計(jì)算機(jī)計(jì)算模式的三次浪潮分

2、布式網(wǎng)絡(luò)(B/S)計(jì)算模式 特征:B界面表示層, S業(yè)務(wù)邏輯層數(shù)據(jù)訪問層 存儲(chǔ)數(shù)據(jù)層 在異地、異構(gòu)機(jī)上運(yùn)行。7/19/20225計(jì)算機(jī)軟件的簡(jiǎn)史分布式網(wǎng)絡(luò)計(jì)算模式對(duì)軟件技術(shù)的挑戰(zhàn): 軟件開發(fā)的4A目標(biāo) 跨平臺(tái)的互操作性(CORBA標(biāo)準(zhǔn))7/19/20226計(jì)算機(jī)軟件的簡(jiǎn)史分布式網(wǎng)絡(luò)計(jì)算模式對(duì)軟件技術(shù)的挑戰(zhàn):軟件開發(fā)的4A目標(biāo) Any One Any While Any Time Any Device7/19/20227計(jì)算機(jī)軟件的簡(jiǎn)史分布式網(wǎng)絡(luò)計(jì)算模式對(duì)軟件開發(fā)技術(shù)的挑戰(zhàn):跨平臺(tái)的互操作性(CORBA標(biāo)準(zhǔn)出現(xiàn))7/19/20228CORBA標(biāo)準(zhǔn)模型:IDL應(yīng)用程序?qū)ο蠊迷O(shè)施(CORBAFAC

3、ILITIES)垂直公用設(shè)施水平公用設(shè)施對(duì)象請(qǐng)求中介(ORB)公用對(duì)象服務(wù)(CORBAservices) 金融 稅務(wù) 保險(xiǎn)命名集合計(jì)時(shí)安全性交易器特許查詢并發(fā)關(guān)系具體化持久性事件生命期事務(wù)處理屬性系統(tǒng)設(shè)施信息設(shè)施任務(wù)設(shè)施界面管理7/19/20229CORBA模型:四層:1.應(yīng)用程序?qū)ο髮邮桥c應(yīng)用程序接口. 2.水平公用設(shè)施層是各行各業(yè)的公共設(shè) 施服務(wù).如用戶管理,信息管理,系統(tǒng) 管理,ftp之類. 3.垂直公用設(shè)施層是專業(yè)公共設(shè)施服務(wù). 如金融業(yè)的清算系統(tǒng).電子商務(wù)的銀 行服務(wù).7/19/202210CORBA模型:4.CORBA服務(wù)層是軟件框架服務(wù). 如系統(tǒng)管理:命名,生命期,交易,許 可證

4、,安全,計(jì)時(shí)等服務(wù); 事物管理:事件,并發(fā),事務(wù)等; 信息管理:屬性,關(guān)系,查詢,持久性. 具體化,集合等服務(wù).7/19/202211CORBA模型: 服務(wù)層共15項(xiàng).目前還在不斷改進(jìn). 5.模型中的ORB主要負(fù)責(zé)CORBA四層 的通信.相當(dāng)于軟件總線的作用. 6.IDL(Interfaces Definttion Language)接口定義語言 參考書:周之英著“現(xiàn)代軟件工程(下)”.7/19/202212CORBA標(biāo)準(zhǔn):IDLIDL接口定義語言編譯器機(jī)制: 樁(stub)、 骨架(skeleton)7/19/202213IDL編譯器機(jī)制結(jié)構(gòu):ORB核心DII動(dòng)態(tài)調(diào)用IDL樁ORB接口靜態(tài)I

5、DL骨架動(dòng)態(tài)骨架對(duì)象適配器對(duì)象實(shí)現(xiàn)客戶7/19/202214IDL編譯器機(jī)制:DII動(dòng)態(tài)調(diào)用:運(yùn)行時(shí)的動(dòng)態(tài)接口在 客戶端接受靜態(tài)不能確定的請(qǐng)求.IDL樁(stub):靜態(tài)接口,接受本地請(qǐng) 求,向ORB提交請(qǐng)求.7/19/202215IDL編譯器機(jī)制:Skeleton骨架:用于遠(yuǎn)程客戶與ORB 通信.靜態(tài)骨架:IDL編譯時(shí)的骨架接口.動(dòng)態(tài)骨架:運(yùn)行時(shí)動(dòng)態(tài)骨架接口.7/19/202216IDL編譯器機(jī)制:ORB接口:不同ORB實(shí)現(xiàn)的連接接口.對(duì)象適配器:不同執(zhí)行對(duì)象共享ORB 服務(wù)的基本接口.7/19/202217CORBA標(biāo)準(zhǔn)對(duì)軟件業(yè)界的影響 觀念上的影響 應(yīng)用軟件體系結(jié)構(gòu)的影響 對(duì)軟件產(chǎn)業(yè)的影

6、響 對(duì)軟件開發(fā)方法的影響7/19/202218CORBA標(biāo)準(zhǔn)對(duì)象軟件業(yè)界的影響對(duì)觀念上的影響:4A目標(biāo),文檔按國際標(biāo)準(zhǔn)統(tǒng)一以“開發(fā)為主”轉(zhuǎn)向以“服務(wù)為主”利用第三方軟件集成企業(yè)文化:團(tuán)隊(duì)精神,和諧氛圍人才素質(zhì):創(chuàng)新,責(zé)任,協(xié)作,誠信7/19/202219CORBA標(biāo)準(zhǔn)對(duì)象軟件業(yè)界的影響應(yīng)用軟件體系結(jié)構(gòu)的影響多層應(yīng)用軟件體系結(jié)構(gòu)的誕生:界面層:瀏覽器表示層:Web服務(wù)器業(yè)務(wù)層,數(shù)據(jù)訪問層:應(yīng)用服務(wù)器存儲(chǔ)數(shù)據(jù)層(包括原來應(yīng)用系統(tǒng)):數(shù)據(jù) 庫服務(wù)器7/19/202220多層應(yīng)用軟件體系結(jié)構(gòu)的誕生 界面層 瀏覽器 分布邏輯層 客戶界面控件 表示層 (JSP,ASP,CGI等) 代理層 產(chǎn)生:HTML,

7、XML DHTML,WML等 業(yè)務(wù)層 業(yè)務(wù)對(duì)象和規(guī)則,數(shù)據(jù)操縱和信息轉(zhuǎn)換 數(shù)據(jù)訪 數(shù)據(jù)庫連接, 數(shù)據(jù)I/O接口 問層 存儲(chǔ)數(shù) 數(shù)據(jù)庫系統(tǒng),XML庫等 據(jù)層 查詢,存儲(chǔ)優(yōu)化和性能協(xié)調(diào)7/19/202221多層應(yīng)用軟件體系結(jié)構(gòu)的誕生界面層: HTML,Applet,Windows等. 客戶界面控件: WINDOWS窗口, Java AWT,Swing等7/19/202222CORBA標(biāo)準(zhǔn)對(duì)象軟件業(yè)界的影響對(duì)軟件產(chǎn)業(yè)的影響:軟件中間件提供商軟件平臺(tái)提供商服務(wù)器軟件提供商構(gòu)件提供商軟件服務(wù)(咨詢)7/19/202223CORBA標(biāo)準(zhǔn)對(duì)象軟件業(yè)界的影響對(duì)軟件開發(fā)方法的影響基于構(gòu)件的開發(fā)方法流行:構(gòu)件定義

8、構(gòu)件特征構(gòu)件優(yōu)勢(shì)7/19/202224構(gòu)件的定義1:構(gòu)件是一個(gè)幾乎獨(dú)立的可替換的系 統(tǒng)部件。它在有明確定義的體 系結(jié)構(gòu)上下文中,完成指定功 能。它提供一組接口作為構(gòu)件 與外界聯(lián)系的契約。7/19/202225構(gòu)件的定義2:軟件構(gòu)件是一個(gè)組合單位,它包 括合同聲明的接口及明確說 明的上下文相關(guān)性。它可以 被獨(dú)立部署且服務(wù)于第三方 所做的組合。7/19/202226構(gòu)件特征:有用性:構(gòu)件是將功能邏輯與實(shí)現(xiàn)封裝為一體的部件。對(duì)外界是透明不可視但功能明確的組件。獨(dú)立性:構(gòu)件相對(duì)于其他構(gòu)件是獨(dú)立的,但它又很少單個(gè)存在,它總是由第三方對(duì)它進(jìn)行組合,放到某個(gè)指定體系結(jié)構(gòu)的上下文中運(yùn)行。 7/19/20222

9、7構(gòu)件特征:適應(yīng)性:構(gòu)件是一個(gè)可替換的單元,它通過契約式接口與外界聯(lián)系.只要接口相同,就可以相互替換。易用性:構(gòu)件是即插即用的部件,無需做任何加工就可以組合運(yùn)行. 7/19/202228構(gòu)件特征:商業(yè)性:構(gòu)件接口按國際標(biāo)準(zhǔn)定義, 可由開發(fā)商開發(fā),通過市場(chǎng)發(fā)行銷售.遞歸性:構(gòu)件可以自包含,因此構(gòu)件定義實(shí)際上具有遞歸性,即組合好的構(gòu)件本身,還可以作為構(gòu)件元素與其他構(gòu)件組合。這種構(gòu)件稱為容器。 (參考書:王克宏主編“電子商務(wù)軟件技術(shù)教程” 清華出版社)7/19/202229構(gòu)件優(yōu)勢(shì):縮短開發(fā)周期,提高軟件生產(chǎn)率提高軟件靈活性和可靠性降低軟件開發(fā)成本和維護(hù)費(fèi)用有利于軟件生產(chǎn)工業(yè)化7/19/202230

10、計(jì)算機(jī)軟件簡(jiǎn)史小結(jié)認(rèn)識(shí)到軟件的本質(zhì)特性是構(gòu)造性和演化性:軟件是人對(duì)知識(shí)的提煉、知識(shí)的固化、是人類知識(shí)和經(jīng)驗(yàn)的抽象。為使軟件能簡(jiǎn)潔、精確的描述客觀事務(wù),軟件的多層應(yīng)用建立在公共的體系結(jié)構(gòu)上是構(gòu)件技術(shù)的基本出發(fā)點(diǎn),構(gòu)件體系結(jié)構(gòu)是構(gòu)造軟件的基石,它體現(xiàn)了軟件的構(gòu)造性本質(zhì)。所有軟件都可用構(gòu)件集成而得.7/19/202231計(jì)算機(jī)軟件簡(jiǎn)史小結(jié)軟件是對(duì)客觀世界中問題求解的具體描述。而客觀世界是在不斷發(fā)展,不斷地變化。軟件系統(tǒng)也不可能一成不變,新需求、新技術(shù)不斷的出現(xiàn),要求軟件系統(tǒng)不斷升級(jí)。這就是軟件的演化性本質(zhì)。7/19/202232計(jì)算機(jī)軟件簡(jiǎn)史小結(jié)引來新的軟件技術(shù):Java語言、XML 語言、Web

11、Services、SOA開發(fā)軟件: 強(qiáng)調(diào)集成、部署 強(qiáng)調(diào)面向Web應(yīng)用 強(qiáng)調(diào)個(gè)性化服務(wù)7/19/202233面向?qū)ο蠹夹g(shù)的基礎(chǔ) 面向?qū)ο蠓椒ǖ幕靖拍?面向?qū)ο蠓椒ǖ幕咎匦?面向?qū)ο蟮某绦蛟O(shè)計(jì)7/19/202234面向?qū)ο蠹夹g(shù)的基礎(chǔ)面向?qū)ο蠓椒ǖ幕靖拍顚?duì)象類接口方法與消息7/19/202235對(duì)象定義:對(duì)象是從客觀事物中抽象出與系統(tǒng)相關(guān)的,能反映事物本質(zhì)的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的基本單位; 如:一個(gè)手機(jī)、一輛自行車、一臺(tái)電視機(jī)、一本書等.也可以是一些抽象的概念:銀行賬號(hào)、郵政編碼、電話號(hào)碼等 7/19/202236對(duì)象特征對(duì)象具備兩個(gè)特征:狀態(tài)和行為。如手機(jī)狀態(tài)有品牌、顏色、號(hào)碼、價(jià)格等;

12、行為有打電話、接電話、發(fā)短信、設(shè)鬧鐘、設(shè)音樂等。對(duì)象所包含本質(zhì)的特征稱為屬性,對(duì)象的行為描述稱為方法。 7/19/202237對(duì)象特征對(duì)象是問題域中事物的抽象.它反映了事物在系統(tǒng)中要保存的信息和所發(fā)揮的作用.系統(tǒng)中的一個(gè)對(duì)象在軟件生命周期的各個(gè)階段可以有不同的形式.它要經(jīng)歷若干演化階段.7/19/202238對(duì)象特征對(duì)象只描述客觀事物本質(zhì)的,與系統(tǒng)目標(biāo)相關(guān)的特征;對(duì)象將屬性和方法封裝為一體.屬性值只能由方法訪問和修改.它被隱藏在封裝體內(nèi).使軟件體系結(jié)構(gòu)的復(fù)雜本質(zhì)可隱藏于對(duì)象的單純性中.7/19/202239對(duì)象在程序中定義:一個(gè)對(duì)象是變量和相關(guān)方法的軟件封裝包: 存款帳目余額計(jì)算余額 取款帳目

13、余額存款計(jì)算余額取款消息消息 消息7/19/202240類定義類是具有相同屬性和方法的一組對(duì)象的集合,它的作用是定義對(duì)象.類是對(duì)象的抽象定義,對(duì)象是類的實(shí)例。類允許用其他類來定義而形成樹結(jié)構(gòu).類的嵌套關(guān)系分為一般類(父類)和特殊類(子類).7/19/202241類的特征類的繼承是面向?qū)ο蠓椒ǖ睦^承性體現(xiàn).它給軟件開發(fā)帶來的優(yōu)勢(shì)是:利用類繼承,程序可實(shí)現(xiàn)代碼重用。利用抽象類定義普通行為,無需編寫實(shí)現(xiàn)代碼。其實(shí)現(xiàn)代碼由它的子類編寫。7/19/202242類的特征面向?qū)ο蟪绦蚴且唤M對(duì)象類組成.對(duì)象之間通過接口請(qǐng)求與其他對(duì)象協(xié)同工作,通過類確定傳遞消息去調(diào)用方法,實(shí)現(xiàn)一定的功能. Java編程注重于類

14、和接口,程序的開發(fā)實(shí)質(zhì)上就是將問題明確分成多個(gè)類,再從這些類中創(chuàng)建對(duì)象。利用類來實(shí)現(xiàn)程序代碼的重用,這是面向?qū)ο缶幊套钣绪攘Φ某删汀?7/19/202243接口的定義接口是對(duì)象所能接收請(qǐng)求內(nèi)容的規(guī)范.接口由類定義.接口是一種抽象類,只定義了變量和方法,沒有規(guī)定方法的具體實(shí)現(xiàn)。7/19/202244接口的特征接口給軟件開發(fā)帶來的好處是:接口可以實(shí)現(xiàn)不相關(guān)類有相同的行為.接口可指明多個(gè)類需要實(shí)現(xiàn)的方法.接口可了解對(duì)象的交互界面,而不需要了解對(duì)象所對(duì)應(yīng)的類.7/19/202245消息定義向?qū)ο蟀l(fā)出方法請(qǐng)求稱為消息.對(duì)象通過消息進(jìn)行通信.類定義了對(duì)象的所有消息模式,也定義了該對(duì)象的所有方法.消息包含信

15、息有:提供方法的對(duì)象名,方法名,輸入信息和應(yīng)答信息.7/19/202246消息特征使用對(duì)象只需了解其消息格式.消息給軟件開發(fā)帶來的好處是:消息將程序的數(shù)據(jù)流和控制流統(tǒng)一. 可用消息實(shí)現(xiàn)數(shù)據(jù)傳遞.相同處理的對(duì)象之間,無需消息傳遞. 7/19/202247面向?qū)ο蠓椒ǖ幕咎匦?封裝性(encapsulation)繼承性(inheritance)多態(tài)性(polymorphism) 7/19/202248封裝性對(duì)象的封裝有兩個(gè)方面:一方面表示對(duì)象的屬性和方法是不可分隔的結(jié)合體.一方面表示對(duì)象內(nèi)部細(xì)節(jié)的隱蔽性.描述客觀事務(wù)對(duì)象的獨(dú)立單元.外界只能與方法聯(lián)系.屬性只能被對(duì)象的方法訪問.7/19/2022

16、49封裝性的優(yōu)勢(shì)對(duì)象的屬性和方法封裝為一體,意味著對(duì)象確實(shí)反映了客觀事物的靜態(tài)特征和動(dòng)態(tài)特征融為一體的普遍規(guī)律.把對(duì)象的屬性和行為結(jié)合產(chǎn)生新的數(shù)據(jù)類型.實(shí)現(xiàn)細(xì)節(jié)隱蔽,接口與實(shí)現(xiàn)的分離.使對(duì)象的使用者和設(shè)計(jì)者分離 7/19/202250封裝性的優(yōu)勢(shì)既可以防止外界的干擾,又可以簡(jiǎn)化復(fù)雜性。在Java語言中,對(duì)象、類和包是不同層次上的封裝,為管理大量的對(duì)象和類提供了方便,也增強(qiáng)了語言的安全性.封裝也符合軟件工程的模塊化原則,滿足軟件重用的策略,降低了軟件開發(fā)成本,縮短開發(fā)周期,使軟件的開發(fā)和維護(hù)得到根本性的改善. 7/19/202251繼承性繼承性是面向?qū)ο蠹夹g(shù)賦予類的一種特征,即先定義一個(gè)具有一定

17、意義的類(父類),再給此類添加一些特性以派生出一個(gè)新類(子類).子類對(duì)象重復(fù)運(yùn)用其父類的接口繼承可實(shí)現(xiàn)子類重用繼續(xù)可建立新類庫7/19/202252繼承性將多個(gè)類型視為同類型.同一份程序代碼可作用于多個(gè)類型上.可提高系統(tǒng)的可重用性和可擴(kuò)性.一個(gè)類是多個(gè)父類的子類,這種繼承被稱為多重繼承. Java語言可利用接口實(shí)現(xiàn)類的多重繼承。 7/19/202253多態(tài)性對(duì)象的多態(tài)性,是同一個(gè)屬性名或方法名在父類,及其子類中具有不同語義.相同類名可引用不同的方法定義子類方法的覆蓋可實(shí)現(xiàn)多態(tài).方法的重載可在同類中定義多個(gè)同名的參數(shù)不同的方法來實(shí)現(xiàn)多態(tài).7/19/202254多態(tài)性多態(tài)也稱為動(dòng)態(tài)綁定或后期綁定.

18、利用多態(tài)性提高了程序的抽象程度和簡(jiǎn)潔性.減少類和程序模塊之間的耦合性,可實(shí)現(xiàn)程序良好的擴(kuò)展性.動(dòng)態(tài)多態(tài)性體現(xiàn)了面向?qū)ο缶幊讨写a的重用和健壯性。Java是強(qiáng)類型語言,運(yùn)行時(shí)對(duì)動(dòng)態(tài)類型自動(dòng)保留全部多態(tài)引用的標(biāo)記,并在運(yùn)行時(shí)對(duì)動(dòng)態(tài)類型進(jìn)行檢查。7/19/202255面向?qū)ο蟮某绦蛟O(shè)計(jì):面向?qū)ο蟪绦蛟O(shè)計(jì)包括兩大任務(wù):一是考慮客觀問題中的哪些數(shù)據(jù)與操作進(jìn)行封裝,即將客觀實(shí)體與程序的對(duì)象、類進(jìn)行對(duì)應(yīng)。二是考慮對(duì)象間需要哪些消息傳遞才能完成需求的功能。 7/19/202256面向?qū)ο蟮某绦蛟O(shè)計(jì):在編程之前,對(duì)問題進(jìn)行面向?qū)ο蟮姆治?,要與客戶進(jìn)行很好的溝通,努力了解問題域中所涉及的對(duì)象、對(duì)象之間的關(guān)系以及對(duì)

19、象需要完成哪些操作.再利用抽象原則,尋找對(duì)象共同特性創(chuàng)建出該問題的若干個(gè)類,由對(duì)象之間的關(guān)系定義出類的消息和方法。利用消息建立問題的模型,使模型盡可能接近問題的原意。 7/19/202257面向?qū)ο蟮某绦蛟O(shè)計(jì):具體建模過程中通過對(duì)問題做不同層次的抽象。利用類的繼承性,將類進(jìn)行改造,定義出父類和子類。使問題中類的總數(shù)目不要太多。 編程單元是類, Java中,注意力放在構(gòu)造新類和復(fù)用已有類上,而不是方法上.7/19/202258面向?qū)ο蟮某绦蛟O(shè)計(jì)“引用”是操縱對(duì)象的鑰匙對(duì)象需要編程者創(chuàng)建建立新類都從類庫中的類繼承方法,參數(shù),返回值7/19/202259Java的體系結(jié)構(gòu)Java的體系結(jié)構(gòu)Java的

20、實(shí)現(xiàn)機(jī)制JDK的下載和使用7/19/202260Java的體系結(jié)構(gòu)應(yīng)用程序(Applection&Applet),編譯器 Java基本API Java標(biāo)準(zhǔn)擴(kuò)展API Java基本類 Java標(biāo)準(zhǔn)擴(kuò)展類 Java虛擬機(jī),解釋器 移植接口 操作系統(tǒng) 7/19/202261Java的體系結(jié)構(gòu)最上一層是應(yīng)用程序和Applet小程序.它們通過編譯器完成程序到字節(jié)代碼的轉(zhuǎn)換.下一層是基本API和標(biāo)準(zhǔn)擴(kuò)展API.它們都是為應(yīng)用程序和編譯器服務(wù).下層是Java基本類和Java標(biāo)準(zhǔn)擴(kuò)展類.最下層是移植接口,由適配器和Java OS組成.保證Java體系結(jié)構(gòu)可跨平臺(tái).與各種操作系統(tǒng)連接. 7/19/202262J

21、ava的體系結(jié)構(gòu)核心:虛擬機(jī)解釋執(zhí)行字節(jié)代碼.可以用軟件系統(tǒng)模擬實(shí)現(xiàn),也可用硬件芯片實(shí)現(xiàn).虛擬機(jī)把字節(jié)代碼程序與各操作系統(tǒng)和硬件分開,使Java程序獨(dú)立于平臺(tái).字節(jié)代碼也是一種二進(jìn)制文件,但不能直接在操作系統(tǒng)上運(yùn)行,它可看作為虛擬機(jī)的機(jī)器碼7/19/202263Java的實(shí)現(xiàn)機(jī)制Java虛擬機(jī) 垃圾回收機(jī)制 代碼安全檢測(cè)7/19/202264Java的實(shí)現(xiàn)機(jī)制垃圾回收機(jī)制:Java用一個(gè)垃圾收集線程對(duì)內(nèi)存的使用進(jìn)行跟蹤, 該線程能在虛擬機(jī)空閑周期時(shí),檢查并釋放那些不用的內(nèi)存。在Java程序的生命周期中自動(dòng)進(jìn)行,這使編程者不要求考慮分配存儲(chǔ)器,避免了存儲(chǔ)器引起的漏洞。7/19/202265Jav

22、a的實(shí)現(xiàn)機(jī)制代碼安全檢測(cè):在編譯層:有語法檢查在解釋層:有字節(jié)碼校驗(yàn)器,測(cè)試代碼段格式 和規(guī)則檢查; 訪問權(quán)限和類型轉(zhuǎn)換合法性檢查; 操作數(shù)堆棧的上溢或下溢; 代碼參數(shù)類型合法性.在平臺(tái)層上:通過配置策略,設(shè)定訪問資源域.無需區(qū)分本地或遠(yuǎn)程. 7/19/202266JDK的下載和使用 JDK的下載 JDK的命令 JDK目錄結(jié)構(gòu) Java的API結(jié)構(gòu) 7/19/202267JDK的下載進(jìn)入點(diǎn)擊左側(cè)“Download”連接,進(jìn)入下載頁面點(diǎn)擊頁面中間的“Java 2 Platform, Standard Edition (J2SE)for Windows”連接,進(jìn)入J2SE頁面 點(diǎn)擊頁面右側(cè)“J2S

23、E 1.5”連接,進(jìn)入J2SE 1.5頁面 7/19/202268 JDK的下載選擇“Download JDK”欄目點(diǎn)擊,進(jìn)入“l(fā)icense agreement”文件的下載頁面選擇“accept”,接受Sun的協(xié)議點(diǎn)擊頁面中的“Download jdk-1_5_0-windows-i586.exe .”下載鏈接,自 動(dòng)進(jìn)行瀏覽器下載,也可使用下載工具進(jìn)行下載 7/19/202269JDK命令Java語言的編譯器。命令語法: javac 選項(xiàng) 源文件名Java語言的解釋器,命令語法是: java 選項(xiàng) class 命令行參數(shù) . Java API文檔生成器,命令語法: javadoc 選項(xiàng) 包

24、名/文件名Java applet 瀏覽器,命令語法: appletviewer -debug URLJava程序的調(diào)試器,命令語法: jdb 選項(xiàng) 類名7/19/202270JDK目錄Bin:編譯器、解釋器和工具 Demo:各種演示例子 Docs:文檔Include:本地方法文件 Jre:Java程序運(yùn)行用環(huán)境的根目錄 Lib:庫文件 7/19/202271JDK的API結(jié)構(gòu)java.lang包 :基本類java.awt包:是封裝抽象窗口工具包 java.applet包:為Applet提供的所有類 java.io包:程序輸入/輸出文件操作的類. java.util包:提供實(shí)用程序類和集合類 j

25、avax.swing包:提供構(gòu)建和管理應(yīng)用程序的圖形界面的輕量級(jí)的構(gòu)件 7/19/202272最簡(jiǎn)單的Java實(shí)例:1 /例1.1 DisplayWindom.java2 /*目的:鄧小平的一句名言的顯示*/34 public class DisplayWindom 5 /main():應(yīng)用程序入口7/19/202273最簡(jiǎn)單的Java實(shí)例:6 public static void main(String args) 7 System.out.print(鄧小平說:);8 System.out.println(“不管白貓、黑貓,能捉老鼠的就是 好貓.);9 10 7/19/202274例題說明

26、注釋:Java語言有3種注釋語句,其形式為:雙斜杠分隔符“/”表示本行是單行注釋。 “/”可出現(xiàn)在一行的開始或中間.“/* */”表示是多行注釋。多行注釋以“/*”和“*/”為界限符。這二個(gè)界限符必須成對(duì)出現(xiàn)。文檔注釋以“/*”和“*/”為界限符。文檔注釋語句是為文檔工具Javadoc生成API文檔時(shí),使文檔和程序同步實(shí)現(xiàn)。程序java的第1、2 、5都是注釋語句.7/19/202275例題說明類定義:關(guān)鍵詞class指明了類定義的開始,后跟類名,然后是一對(duì)花括號(hào),用來劃定類體范圍.對(duì)于本例,行410包含了DisplayWindom類的類體.Java允許在關(guān)鍵詞class之前加修飾符,用來對(duì)所

27、定義類的性質(zhì)加以限定。類名DisplayWindom是Java的合法標(biāo)識(shí)符,并要求首字母大寫. 在一個(gè).java文件中最多只能有一個(gè)public類。public后緊跟的是所定義類的名稱。Java要求public類的名稱與程序文件名一致,因此,本例為DisplayWindom.java文件。7/19/202276例題說明Java的Application必須要求有main()方法,該方法要求一個(gè)String類型的單一參數(shù),類型String是字符串列表的數(shù)組。圓括號(hào)后面的一對(duì)花括號(hào)是方法體。在本例的main()方法中,第6,7,8,9行的語句代碼段構(gòu)成方法體。分號(hào)(;)是Java語言的語句結(jié)束符。當(dāng)

28、Java解釋器開始運(yùn)行Application程序時(shí),流程控制管理器就轉(zhuǎn)向執(zhí)行應(yīng)用程序的main()方法,而main()中的語句是按順序執(zhí)行。因此,當(dāng)程序DisplayWindom運(yùn)行時(shí),首先執(zhí)行第6行的語句,然后執(zhí)行第7行和第8行的語句。7/19/202277例題說明本例第7行和第8行是利用System.out表示從System類中選出out變量值。通過這個(gè)值,程序可以訪問顯示窗口的文字對(duì)象。這個(gè)對(duì)象被稱為輸出流.訪問System的一個(gè)成員out,程序使用點(diǎn)(.)把它從System中選出來,點(diǎn)是Java的選擇器機(jī)制。System是是java.lang包中的標(biāo)準(zhǔn)I/O類,它提供許多系統(tǒng)信息。用它

29、編程者在與設(shè)備打交道的時(shí),不用關(guān)心設(shè)備的底層操作細(xì)節(jié)7/19/202278Java語言的特點(diǎn)簡(jiǎn)單易學(xué) 面向?qū)ο笾С址植际接?jì)算 跨平臺(tái)健壯性 安全性強(qiáng)可移植 解釋執(zhí)行高性能 多線程Applet的特殊用途 動(dòng)態(tài)性7/19/202279解決問題的求解過程軟件工程原理面向?qū)ο缶幊陶Z言的步驟7/19/202280解決問題的求解過程軟件工程原理 分析 設(shè)計(jì) 編程 測(cè)試 維護(hù)7/19/202281解決問題的求解過程軟件工程原理:分析:與用戶交流,了解問題領(lǐng)域知 識(shí).并確定用戶的需求和目標(biāo)。 (做什么)設(shè)計(jì):描述解決問題所需要的信息和 方法。(怎樣做)7/19/202282解決問題的求解過程軟件工程原理:編程

30、:寫出實(shí)現(xiàn)解決問題的程序代碼。(具體實(shí)現(xiàn))測(cè)試:對(duì)程序代碼,進(jìn)行單元測(cè)試和集成測(cè)試。(實(shí)現(xiàn)周期)維護(hù): 交付使用后的不斷改錯(cuò),改進(jìn)和完善.(終身服務(wù)) (反復(fù)迭代過程!)7/19/202283解決問題的求解過程面向?qū)ο缶幊陶Z言的步驟由用戶、業(yè)務(wù)專家和軟件開發(fā)者組成 團(tuán)隊(duì)問題的需求的描述確定類確定變量和方法確定系統(tǒng)的體系結(jié)構(gòu)確定開發(fā)工具并編寫程序7/19/202284解決問題的求解過程自動(dòng)取款機(jī)(ATM)軟件求解過程:需求描述確定類確定業(yè)務(wù)流程(變量和方法)確定用戶界面確定軟件最終的體系結(jié)構(gòu)7/19/202285解決問題的求解過程ATM軟件求解過程:需求描述: 顧客持卡取款. 對(duì)使用ATM的事務(wù)

31、都留記錄,每天報(bào)告. 軟件有適當(dāng)?shù)陌踩胧?暫時(shí)不考慮支付 每個(gè)賬戶能同時(shí)在多個(gè)ATM上查詢和取款 考慮未來擴(kuò)展,增加出納點(diǎn)和網(wǎng)絡(luò)客戶機(jī)7/19/202286ATM軟件求解過程:需求描述限制: ATM軟件由銀行擁有 ATM軟件在服務(wù)器中運(yùn)行 卡由銀行發(fā)行,并保留客戶信息 ATM界面由銀行確定 所有ATM的用戶界面相同7/19/202287ATM軟件求解過程:確定候選對(duì)象類: Transaction事務(wù)(查賬,取款等) Session使用期 Card取款卡 DailyLog日志,ATM自動(dòng)取款機(jī)7/19/202288ATM軟件求解過程:確定候選對(duì)象類: Cashier出納點(diǎn) NetCleint網(wǎng)

32、絡(luò)客戶機(jī) ATMManager 管理ATM軟件 BankInfo銀行資料7/19/202289ATM軟件求解過程:確定對(duì)象類BankInfo ATMManagerDailyLogSession Card Agent ATMCashies Net客戶Transaction111*1*1*11*7/19/202290ATM軟件求解過程:確定對(duì)象類屬性:ATMManager類屬性:adminPassword:String /系統(tǒng)管理員口令bankInfos:Container /銀行信息庫sessions:Container /使用期容器dailyLogs:Container /日志容器agents

33、:Container /代理容器7/19/202291ATM軟件求解過程:確定對(duì)象類屬性:BankInfo類屬性:name:String /名字prefix:Integer /前綴serverName:String /服務(wù)器名字cards:Container /取款卡7/19/202292ATM軟件求解過程:確定對(duì)象類屬性:Card類屬性:number:Integer /編號(hào)name:String /名字accountName:Integer /賬號(hào)sessions:Session* /使用期變數(shù)據(jù)7/19/202293ATM軟件求解過程:確定對(duì)象類屬性:Session類屬性:startTim

34、e:Time /起始時(shí)間 endTime:Time /結(jié)束時(shí)間card:Card /取款卡agent:Agent /代理/事務(wù)可變數(shù)組transactions:Transaction*7/19/202294ATM軟件求解過程:確定對(duì)象類屬性:Transaction類屬性:time:Time /時(shí)間content:String /內(nèi)容7/19/202295ATM軟件求解過程:確定對(duì)象類屬性:DailyLog類屬性:date:Date /日期sessions:Container /使用期容器7/19/202296ATM軟件求解過程:確定對(duì)象類屬性:Agent類屬性:id:String /標(biāo)識(shí)符na

35、me:String /名字sessions:Container /使用期容器7/19/202297ATM軟件求解過程:確定對(duì)象類屬性:ATM類屬性:location:String /地點(diǎn)Cashier類屬性:String /分店名NetClient類屬性: url:URL /網(wǎng)站7/19/202298ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:涉及對(duì)象: 顧客(取款卡),ATM客戶機(jī),ATM管理器,銀行.兩對(duì)C/S: ATM客戶機(jī)/ATM管理器 ATM管理器/銀行銀行界面ATM管理器界面 7/19/202299ATM軟件求解過程:涉及到的變量:cardInfor卡信息 account賬

36、戶 amount金額accountName賬戶名 accountInfor賬戶信息receiver收款人7/19/2022100ATM軟件取款過程序列圖插入卡問口令鍵入口令選擇事務(wù) 問金額輸入金額提供現(xiàn)金ATM查證命令檢查賬號(hào)資料口令正確口令正確請(qǐng)求處理事務(wù)處理銀行事務(wù)事務(wù)完成數(shù)據(jù)記錄確認(rèn)事務(wù)已完成 ATMManagerBank7/19/2022101ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:ATMManager類中的方法:/構(gòu)造方法 ATMManager() ATMManager(adminiPassword String)7/19/2022102ATM軟件求解過程:確定對(duì)象類屬性

37、:確定變量和方法:ATMManager類中的方法:/注冊(cè)系統(tǒng)方法login(cardInfo:CardInfo)logout()7/19/2022103ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:ATMManager類中的方法:/訪問方法: getBankInfos():BankInfo* getSessions():Session* getDailyLogs():DailyLog*7/19/2022104ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:ATMManager類中的方法: getAgents():Agent* addBankInfo(name:String):Bank

38、Info removeBankInfo(name:String):BankInfo addSession(startTime,card,agent) removeSession(session):Session7/19/2022105ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:ATMManager類中的方法: addDailyLog(date):DailyLog removeDailyLog(date) addAgent(agent) removeAgent(id) 7/19/2022106ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:BankInfo類中的方法: BankInf

39、o(name,prefix,serverName) getName():String getServerName():String7/19/2022107ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:BankInfo類中的方法:getCard():Card*addCard(number,name,accountNumberremoveCard(number)7/19/2022108ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:BankInfo類中的方法: Card(number,name,accountNumber) getNumber() getName()7/19/202210

40、9ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:BankInfo類中的方法: getAccountNumber() getSessions() addSessions(session)7/19/2022110ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:Session類中的方法: Session(startTime,card,agent) getStartTime() getEndTime() getCard()7/19/2022111ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:Session類中的方法: getAgent() getTransactions:Transac

41、tion* addSession(endTime) addTransaction(time,content)7/19/2022112ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:Transaction類中的方法: Transaction(time,content) getTime():Time getContent():String7/19/2022113ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:DailyLog類中的方法: DailyLog(date) /構(gòu)造方法 getDate() getSessions() addSession()7/19/2022114ATM軟件求解過

42、程:確定對(duì)象類屬性:確定變量和方法:Agent類中的方法:(抽象類無構(gòu)造方法) getId() getName() getSessions() addSession()7/19/2022115ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:ATM類中的方法: ATM(id,name,location) /構(gòu)造方法 getLocation():String7/19/2022116ATM軟件求解過程:確定對(duì)象類屬性:確定變量和方法:Cashier類中的方法: Cashier(id,name,branch)/構(gòu)造方法 getBranch():String /獲取分店名7/19/2022117AT

43、M軟件求解過程:確定用戶界面:銀行用戶界面:AccountMgrInf 接口AccountInf 接口AccountMgrImplAccountImpl管理實(shí)施實(shí)施1*7/19/2022118ATM軟件求解過程:確定用戶界面:銀行用戶界面AccountIF接口定義方法: getBalance():Float /提取結(jié)余/提取帳戶信息 getAccountInfo():AccountInfo/提取賬戶歷史 getHistory():String7/19/2022119ATM軟件求解過程:確定用戶界面:銀行用戶界面AccountIF接口定義方法:deposit(amount:Float):Float /存入金額withdraw(amount:Float):Float /提取金額transferTo(amountNameString,amount:Float) Float /轉(zhuǎn)賬payBill(receiver:String,amount:Float): Float/付款7/19/2022120ATM軟件求解過程:確定用戶界面:銀行用戶界面A

溫馨提示

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

評(píng)論

0/150

提交評(píng)論