




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第一講 概論本講要點(diǎn)計(jì)算機(jī)軟件的簡史面向?qū)ο蠹夹g(shù)的基礎(chǔ)Java體系結(jié)構(gòu)最簡單的Java實(shí)例解決問題的求解過程第1頁,共133頁。8/4/20221計(jì)算機(jī)軟件的簡史計(jì)算機(jī)計(jì)算模式的三次浪潮分布式網(wǎng)絡(luò)計(jì)算模式對軟件開發(fā)技術(shù)的挑戰(zhàn)CORBA 標(biāo)準(zhǔn)對軟件業(yè)界的影響第2頁,共133頁。8/4/20222計(jì)算機(jī)軟件的簡史計(jì)算機(jī)計(jì)算模式的三次浪潮基于主機(jī)的計(jì)算模式:特征:應(yīng)用程序,數(shù)據(jù), 界面集為一體。 在主機(jī)上運(yùn)行。第3頁,共133頁。8/4/20223計(jì)算機(jī)軟件的簡史計(jì)算機(jī)計(jì)算模式的三次浪潮客戶機(jī)/服務(wù)器(C/S)的計(jì)算模式: 特征:C界面本地?cái)?shù)據(jù), S應(yīng)用邏輯共享數(shù)據(jù) 在客戶機(jī)和服務(wù)器上運(yùn)行。第4頁,
2、共133頁。8/4/20224計(jì)算機(jī)軟件的簡史計(jì)算機(jī)計(jì)算模式的三次浪潮分布式網(wǎng)絡(luò)(B/S)計(jì)算模式 特征:B界面表示層, S業(yè)務(wù)邏輯層數(shù)據(jù)訪問層 存儲數(shù)據(jù)層 在異地、異構(gòu)機(jī)上運(yùn)行。第5頁,共133頁。8/4/20225計(jì)算機(jī)軟件的簡史分布式網(wǎng)絡(luò)計(jì)算模式對軟件技術(shù)的挑戰(zhàn): 軟件開發(fā)的4A目標(biāo) 跨平臺的互操作性(CORBA標(biāo)準(zhǔn))第6頁,共133頁。8/4/20226計(jì)算機(jī)軟件的簡史分布式網(wǎng)絡(luò)計(jì)算模式對軟件技術(shù)的挑戰(zhàn):軟件開發(fā)的4A目標(biāo) Any One Any While Any Time Any Device第7頁,共133頁。8/4/20227計(jì)算機(jī)軟件的簡史分布式網(wǎng)絡(luò)計(jì)算模式對軟件開發(fā)技術(shù)的挑
3、戰(zhàn):跨平臺的互操作性(CORBA標(biāo)準(zhǔn)出現(xiàn))第8頁,共133頁。8/4/20228CORBA標(biāo)準(zhǔn)模型:IDL應(yīng)用程序?qū)ο蠊迷O(shè)施(CORBAFACILITIES)垂直公用設(shè)施水平公用設(shè)施對象請求中介(ORB)公用對象服務(wù)(CORBAservices) 金融 稅務(wù) 保險(xiǎn)命名集合計(jì)時(shí)安全性交易器特許查詢并發(fā)關(guān)系具體化持久性事件生命期事務(wù)處理屬性系統(tǒng)設(shè)施信息設(shè)施任務(wù)設(shè)施界面管理第9頁,共133頁。8/4/20229CORBA模型:四層:1.應(yīng)用程序?qū)ο髮邮桥c應(yīng)用程序接口. 2.水平公用設(shè)施層是各行各業(yè)的公共設(shè) 施服務(wù).如用戶管理,信息管理,系統(tǒng) 管理,ftp之類. 3.垂直公用設(shè)施層是專業(yè)公共設(shè)施服務(wù)
4、. 如金融業(yè)的清算系統(tǒng).電子商務(wù)的銀 行服務(wù).第10頁,共133頁。8/4/202210CORBA模型:4.CORBA服務(wù)層是軟件框架服務(wù). 如系統(tǒng)管理:命名,生命期,交易,許 可證,安全,計(jì)時(shí)等服務(wù); 事物管理:事件,并發(fā),事務(wù)等; 信息管理:屬性,關(guān)系,查詢,持久性. 具體化,集合等服務(wù).第11頁,共133頁。8/4/202211CORBA模型: 服務(wù)層共15項(xiàng).目前還在不斷改進(jìn). 5.模型中的ORB主要負(fù)責(zé)CORBA四層 的通信.相當(dāng)于軟件總線的作用. 6.IDL(Interfaces Definttion Language)接口定義語言 參考書:周之英著“現(xiàn)代軟件工程(下)”.第12頁
5、,共133頁。8/4/202212CORBA標(biāo)準(zhǔn):IDLIDL接口定義語言編譯器機(jī)制: 樁(stub)、 骨架(skeleton)第13頁,共133頁。8/4/202213IDL編譯器機(jī)制結(jié)構(gòu):ORB核心DII動(dòng)態(tài)調(diào)用IDL樁ORB接口靜態(tài)IDL骨架動(dòng)態(tài)骨架對象適配器對象實(shí)現(xiàn)客戶第14頁,共133頁。8/4/202214IDL編譯器機(jī)制:DII動(dòng)態(tài)調(diào)用:運(yùn)行時(shí)的動(dòng)態(tài)接口在 客戶端接受靜態(tài)不能確定的請求.IDL樁(stub):靜態(tài)接口,接受本地請 求,向ORB提交請求.第15頁,共133頁。8/4/202215IDL編譯器機(jī)制:Skeleton骨架:用于遠(yuǎn)程客戶與ORB 通信.靜態(tài)骨架:IDL編
6、譯時(shí)的骨架接口.動(dòng)態(tài)骨架:運(yùn)行時(shí)動(dòng)態(tài)骨架接口.第16頁,共133頁。8/4/202216IDL編譯器機(jī)制:ORB接口:不同ORB實(shí)現(xiàn)的連接接口.對象適配器:不同執(zhí)行對象共享ORB 服務(wù)的基本接口.第17頁,共133頁。8/4/202217CORBA標(biāo)準(zhǔn)對軟件業(yè)界的影響 觀念上的影響 應(yīng)用軟件體系結(jié)構(gòu)的影響 對軟件產(chǎn)業(yè)的影響 對軟件開發(fā)方法的影響第18頁,共133頁。8/4/202218CORBA標(biāo)準(zhǔn)對象軟件業(yè)界的影響對觀念上的影響:4A目標(biāo),文檔按國際標(biāo)準(zhǔn)統(tǒng)一以“開發(fā)為主”轉(zhuǎn)向以“服務(wù)為主”利用第三方軟件集成企業(yè)文化:團(tuán)隊(duì)精神,和諧氛圍人才素質(zhì):創(chuàng)新,責(zé)任,協(xié)作,誠信第19頁,共133頁。8/
7、4/202219CORBA標(biāo)準(zhǔn)對象軟件業(yè)界的影響應(yīng)用軟件體系結(jié)構(gòu)的影響多層應(yīng)用軟件體系結(jié)構(gòu)的誕生:界面層:瀏覽器表示層:Web服務(wù)器業(yè)務(wù)層,數(shù)據(jù)訪問層:應(yīng)用服務(wù)器存儲數(shù)據(jù)層(包括原來應(yīng)用系統(tǒng)):數(shù)據(jù) 庫服務(wù)器第20頁,共133頁。8/4/202220多層應(yīng)用軟件體系結(jié)構(gòu)的誕生 界面層 瀏覽器 分布邏輯層 客戶界面控件 表示層 (JSP,ASP,CGI等) 代理層 產(chǎn)生:HTML,XML DHTML,WML等 業(yè)務(wù)層 業(yè)務(wù)對象和規(guī)則,數(shù)據(jù)操縱和信息轉(zhuǎn)換 數(shù)據(jù)訪 數(shù)據(jù)庫連接, 數(shù)據(jù)I/O接口 問層 存儲數(shù) 數(shù)據(jù)庫系統(tǒng),XML庫等 據(jù)層 查詢,存儲優(yōu)化和性能協(xié)調(diào)第21頁,共133頁。8/4/2022
8、21多層應(yīng)用軟件體系結(jié)構(gòu)的誕生界面層: HTML,Applet,Windows等. 客戶界面控件: WINDOWS窗口, Java AWT,Swing等第22頁,共133頁。8/4/202222CORBA標(biāo)準(zhǔn)對象軟件業(yè)界的影響對軟件產(chǎn)業(yè)的影響:軟件中間件提供商軟件平臺提供商服務(wù)器軟件提供商構(gòu)件提供商軟件服務(wù)(咨詢)第23頁,共133頁。8/4/202223CORBA標(biāo)準(zhǔn)對象軟件業(yè)界的影響對軟件開發(fā)方法的影響基于構(gòu)件的開發(fā)方法流行:構(gòu)件定義構(gòu)件特征構(gòu)件優(yōu)勢第24頁,共133頁。8/4/202224構(gòu)件的定義1:構(gòu)件是一個(gè)幾乎獨(dú)立的可替換的系 統(tǒng)部件。它在有明確定義的體 系結(jié)構(gòu)上下文中,完成指定功
9、 能。它提供一組接口作為構(gòu)件 與外界聯(lián)系的契約。第25頁,共133頁。8/4/202225構(gòu)件的定義2:軟件構(gòu)件是一個(gè)組合單位,它包 括合同聲明的接口及明確說 明的上下文相關(guān)性。它可以 被獨(dú)立部署且服務(wù)于第三方 所做的組合。第26頁,共133頁。8/4/202226構(gòu)件特征:有用性:構(gòu)件是將功能邏輯與實(shí)現(xiàn)封裝為一體的部件。對外界是透明不可視但功能明確的組件。獨(dú)立性:構(gòu)件相對于其他構(gòu)件是獨(dú)立的,但它又很少單個(gè)存在,它總是由第三方對它進(jìn)行組合,放到某個(gè)指定體系結(jié)構(gòu)的上下文中運(yùn)行。 第27頁,共133頁。8/4/202227構(gòu)件特征:適應(yīng)性:構(gòu)件是一個(gè)可替換的單元,它通過契約式接口與外界聯(lián)系.只要接
10、口相同,就可以相互替換。易用性:構(gòu)件是即插即用的部件,無需做任何加工就可以組合運(yùn)行. 第28頁,共133頁。8/4/202228構(gòu)件特征:商業(yè)性:構(gòu)件接口按國際標(biāo)準(zhǔn)定義, 可由開發(fā)商開發(fā),通過市場發(fā)行銷售.遞歸性:構(gòu)件可以自包含,因此構(gòu)件定義實(shí)際上具有遞歸性,即組合好的構(gòu)件本身,還可以作為構(gòu)件元素與其他構(gòu)件組合。這種構(gòu)件稱為容器。 (參考書:王克宏主編“電子商務(wù)軟件技術(shù)教程” 清華出版社)第29頁,共133頁。8/4/202229構(gòu)件優(yōu)勢:縮短開發(fā)周期,提高軟件生產(chǎn)率提高軟件靈活性和可靠性降低軟件開發(fā)成本和維護(hù)費(fèi)用有利于軟件生產(chǎn)工業(yè)化第30頁,共133頁。8/4/202230計(jì)算機(jī)軟件簡史小結(jié)
11、認(rèn)識到軟件的本質(zhì)特性是構(gòu)造性和演化性:軟件是人對知識的提煉、知識的固化、是人類知識和經(jīng)驗(yà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)件集成而得.第31頁,共133頁。8/4/202231計(jì)算機(jī)軟件簡史小結(jié)軟件是對客觀世界中問題求解的具體描述。而客觀世界是在不斷發(fā)展,不斷地變化。軟件系統(tǒng)也不可能一成不變,新需求、新技術(shù)不斷的出現(xiàn),要求軟件系統(tǒng)不斷升級。這就是軟件的演化性本質(zhì)。第32頁,共133頁。8/4/202232計(jì)算機(jī)軟件簡史小結(jié)引來新的軟件技術(shù):Java語言、
12、XML 語言、Web Services、SOA開發(fā)軟件: 強(qiáng)調(diào)集成、部署 強(qiáng)調(diào)面向Web應(yīng)用 強(qiáng)調(diào)個(gè)性化服務(wù)第33頁,共133頁。8/4/202233面向?qū)ο蠹夹g(shù)的基礎(chǔ) 面向?qū)ο蠓椒ǖ幕靖拍?面向?qū)ο蠓椒ǖ幕咎匦?面向?qū)ο蟮某绦蛟O(shè)計(jì)第34頁,共133頁。8/4/202234面向?qū)ο蠹夹g(shù)的基礎(chǔ)面向?qū)ο蠓椒ǖ幕靖拍顚ο箢惤涌诜椒ㄅc消息第35頁,共133頁。8/4/202235對象定義:對象是從客觀事物中抽象出與系統(tǒng)相關(guān)的,能反映事物本質(zhì)的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的基本單位; 如:一個(gè)手機(jī)、一輛自行車、一臺電視機(jī)、一本書等.也可以是一些抽象的概念:銀行賬號、郵政編碼、電話號碼等 第36頁,共13
13、3頁。8/4/202236對象特征對象具備兩個(gè)特征:狀態(tài)和行為。如手機(jī)狀態(tài)有品牌、顏色、號碼、價(jià)格等;行為有打電話、接電話、發(fā)短信、設(shè)鬧鐘、設(shè)音樂等。對象所包含本質(zhì)的特征稱為屬性,對象的行為描述稱為方法。 第37頁,共133頁。8/4/202237對象特征對象是問題域中事物的抽象.它反映了事物在系統(tǒng)中要保存的信息和所發(fā)揮的作用.系統(tǒng)中的一個(gè)對象在軟件生命周期的各個(gè)階段可以有不同的形式.它要經(jīng)歷若干演化階段.第38頁,共133頁。8/4/202238對象特征對象只描述客觀事物本質(zhì)的,與系統(tǒng)目標(biāo)相關(guān)的特征;對象將屬性和方法封裝為一體.屬性值只能由方法訪問和修改.它被隱藏在封裝體內(nèi).使軟件體系結(jié)構(gòu)的
14、復(fù)雜本質(zhì)可隱藏于對象的單純性中.第39頁,共133頁。8/4/202239對象在程序中定義:一個(gè)對象是變量和相關(guān)方法的軟件封裝包: 存款帳目余額計(jì)算余額 取款帳目余額存款計(jì)算余額取款消息消息 消息第40頁,共133頁。8/4/202240類定義類是具有相同屬性和方法的一組對象的集合,它的作用是定義對象.類是對象的抽象定義,對象是類的實(shí)例。類允許用其他類來定義而形成樹結(jié)構(gòu).類的嵌套關(guān)系分為一般類(父類)和特殊類(子類).第41頁,共133頁。8/4/202241類的特征類的繼承是面向?qū)ο蠓椒ǖ睦^承性體現(xiàn).它給軟件開發(fā)帶來的優(yōu)勢是:利用類繼承,程序可實(shí)現(xiàn)代碼重用。利用抽象類定義普通行為,無需編寫實(shí)
15、現(xiàn)代碼。其實(shí)現(xiàn)代碼由它的子類編寫。第42頁,共133頁。8/4/202242類的特征面向?qū)ο蟪绦蚴且唤M對象類組成.對象之間通過接口請求與其他對象協(xié)同工作,通過類確定傳遞消息去調(diào)用方法,實(shí)現(xiàn)一定的功能. Java編程注重于類和接口,程序的開發(fā)實(shí)質(zhì)上就是將問題明確分成多個(gè)類,再從這些類中創(chuàng)建對象。利用類來實(shí)現(xiàn)程序代碼的重用,這是面向?qū)ο缶幊套钣绪攘Φ某删汀?第43頁,共133頁。8/4/202243接口的定義接口是對象所能接收請求內(nèi)容的規(guī)范.接口由類定義.接口是一種抽象類,只定義了變量和方法,沒有規(guī)定方法的具體實(shí)現(xiàn)。第44頁,共133頁。8/4/202244接口的特征接口給軟件開發(fā)帶來的好處是:接
16、口可以實(shí)現(xiàn)不相關(guān)類有相同的行為.接口可指明多個(gè)類需要實(shí)現(xiàn)的方法.接口可了解對象的交互界面,而不需要了解對象所對應(yīng)的類.第45頁,共133頁。8/4/202245消息定義向?qū)ο蟀l(fā)出方法請求稱為消息.對象通過消息進(jìn)行通信.類定義了對象的所有消息模式,也定義了該對象的所有方法.消息包含信息有:提供方法的對象名,方法名,輸入信息和應(yīng)答信息.第46頁,共133頁。8/4/202246消息特征使用對象只需了解其消息格式.消息給軟件開發(fā)帶來的好處是:消息將程序的數(shù)據(jù)流和控制流統(tǒng)一. 可用消息實(shí)現(xiàn)數(shù)據(jù)傳遞.相同處理的對象之間,無需消息傳遞. 第47頁,共133頁。8/4/202247面向?qū)ο蠓椒ǖ幕咎匦?封
17、裝性(encapsulation)繼承性(inheritance)多態(tài)性(polymorphism) 第48頁,共133頁。8/4/202248封裝性對象的封裝有兩個(gè)方面:一方面表示對象的屬性和方法是不可分隔的結(jié)合體.一方面表示對象內(nèi)部細(xì)節(jié)的隱蔽性.描述客觀事務(wù)對象的獨(dú)立單元.外界只能與方法聯(lián)系.屬性只能被對象的方法訪問.第49頁,共133頁。8/4/202249封裝性的優(yōu)勢對象的屬性和方法封裝為一體,意味著對象確實(shí)反映了客觀事物的靜態(tài)特征和動(dòng)態(tài)特征融為一體的普遍規(guī)律.把對象的屬性和行為結(jié)合產(chǎn)生新的數(shù)據(jù)類型.實(shí)現(xiàn)細(xì)節(jié)隱蔽,接口與實(shí)現(xiàn)的分離.使對象的使用者和設(shè)計(jì)者分離 第50頁,共133頁。8/
18、4/202250封裝性的優(yōu)勢既可以防止外界的干擾,又可以簡化復(fù)雜性。在Java語言中,對象、類和包是不同層次上的封裝,為管理大量的對象和類提供了方便,也增強(qiáng)了語言的安全性.封裝也符合軟件工程的模塊化原則,滿足軟件重用的策略,降低了軟件開發(fā)成本,縮短開發(fā)周期,使軟件的開發(fā)和維護(hù)得到根本性的改善. 第51頁,共133頁。8/4/202251繼承性繼承性是面向?qū)ο蠹夹g(shù)賦予類的一種特征,即先定義一個(gè)具有一定意義的類(父類),再給此類添加一些特性以派生出一個(gè)新類(子類).子類對象重復(fù)運(yùn)用其父類的接口繼承可實(shí)現(xiàn)子類重用繼續(xù)可建立新類庫第52頁,共133頁。8/4/202252繼承性將多個(gè)類型視為同類型.同
19、一份程序代碼可作用于多個(gè)類型上.可提高系統(tǒng)的可重用性和可擴(kuò)性.一個(gè)類是多個(gè)父類的子類,這種繼承被稱為多重繼承. Java語言可利用接口實(shí)現(xiàn)類的多重繼承。 第53頁,共133頁。8/4/202253多態(tài)性對象的多態(tài)性,是同一個(gè)屬性名或方法名在父類,及其子類中具有不同語義.相同類名可引用不同的方法定義子類方法的覆蓋可實(shí)現(xiàn)多態(tài).方法的重載可在同類中定義多個(gè)同名的參數(shù)不同的方法來實(shí)現(xiàn)多態(tài).第54頁,共133頁。8/4/202254多態(tài)性多態(tài)也稱為動(dòng)態(tài)綁定或后期綁定.利用多態(tài)性提高了程序的抽象程度和簡潔性.減少類和程序模塊之間的耦合性,可實(shí)現(xiàn)程序良好的擴(kuò)展性.動(dòng)態(tài)多態(tài)性體現(xiàn)了面向?qū)ο缶幊讨写a的重用和健
20、壯性。Java是強(qiáng)類型語言,運(yùn)行時(shí)對動(dòng)態(tài)類型自動(dòng)保留全部多態(tài)引用的標(biāo)記,并在運(yùn)行時(shí)對動(dòng)態(tài)類型進(jìn)行檢查。第55頁,共133頁。8/4/202255面向?qū)ο蟮某绦蛟O(shè)計(jì):面向?qū)ο蟪绦蛟O(shè)計(jì)包括兩大任務(wù):一是考慮客觀問題中的哪些數(shù)據(jù)與操作進(jìn)行封裝,即將客觀實(shí)體與程序的對象、類進(jìn)行對應(yīng)。二是考慮對象間需要哪些消息傳遞才能完成需求的功能。 第56頁,共133頁。8/4/202256面向?qū)ο蟮某绦蛟O(shè)計(jì):在編程之前,對問題進(jìn)行面向?qū)ο蟮姆治?,要與客戶進(jìn)行很好的溝通,努力了解問題域中所涉及的對象、對象之間的關(guān)系以及對象需要完成哪些操作.再利用抽象原則,尋找對象共同特性創(chuàng)建出該問題的若干個(gè)類,由對象之間的關(guān)系定義出
21、類的消息和方法。利用消息建立問題的模型,使模型盡可能接近問題的原意。 第57頁,共133頁。8/4/202257面向?qū)ο蟮某绦蛟O(shè)計(jì):具體建模過程中通過對問題做不同層次的抽象。利用類的繼承性,將類進(jìn)行改造,定義出父類和子類。使問題中類的總數(shù)目不要太多。 編程單元是類, Java中,注意力放在構(gòu)造新類和復(fù)用已有類上,而不是方法上.第58頁,共133頁。8/4/202258面向?qū)ο蟮某绦蛟O(shè)計(jì)“引用”是操縱對象的鑰匙對象需要編程者創(chuàng)建建立新類都從類庫中的類繼承方法,參數(shù),返回值第59頁,共133頁。8/4/202259Java的體系結(jié)構(gòu)Java的體系結(jié)構(gòu)Java的實(shí)現(xiàn)機(jī)制JDK的下載和使用第60頁,共
22、133頁。8/4/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) 第61頁,共133頁。8/4/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ǒng)連接. 第62頁,共133頁。
23、8/4/202262Java的體系結(jié)構(gòu)核心:虛擬機(jī)解釋執(zhí)行字節(jié)代碼.可以用軟件系統(tǒng)模擬實(shí)現(xiàn),也可用硬件芯片實(shí)現(xiàn).虛擬機(jī)把字節(jié)代碼程序與各操作系統(tǒng)和硬件分開,使Java程序獨(dú)立于平臺.字節(jié)代碼也是一種二進(jìn)制文件,但不能直接在操作系統(tǒng)上運(yùn)行,它可看作為虛擬機(jī)的機(jī)器碼第63頁,共133頁。8/4/202263Java的實(shí)現(xiàn)機(jī)制Java虛擬機(jī) 垃圾回收機(jī)制 代碼安全檢測第64頁,共133頁。8/4/202264Java的實(shí)現(xiàn)機(jī)制垃圾回收機(jī)制:Java用一個(gè)垃圾收集線程對內(nèi)存的使用進(jìn)行跟蹤, 該線程能在虛擬機(jī)空閑周期時(shí),檢查并釋放那些不用的內(nèi)存。在Java程序的生命周期中自動(dòng)進(jìn)行,這使編程者不要求考慮分
24、配存儲器,避免了存儲器引起的漏洞。第65頁,共133頁。8/4/202265Java的實(shí)現(xiàn)機(jī)制代碼安全檢測:在編譯層:有語法檢查在解釋層:有字節(jié)碼校驗(yàn)器,測試代碼段格式 和規(guī)則檢查; 訪問權(quán)限和類型轉(zhuǎn)換合法性檢查; 操作數(shù)堆棧的上溢或下溢; 代碼參數(shù)類型合法性.在平臺層上:通過配置策略,設(shè)定訪問資源域.無需區(qū)分本地或遠(yuǎn)程. 第66頁,共133頁。8/4/202266JDK的下載和使用 JDK的下載 JDK的命令 JDK目錄結(jié)構(gòu) Java的API結(jié)構(gòu) 第67頁,共133頁。8/4/202267JDK的下載進(jìn)入點(diǎn)擊左側(cè)“Download”連接,進(jìn)入下載頁面點(diǎn)擊頁面中間的“Java 2 Platfo
25、rm, Standard Edition (J2SE)for Windows”連接,進(jìn)入J2SE頁面 點(diǎn)擊頁面右側(cè)“J2SE 1.5”連接,進(jìn)入J2SE 1.5頁面 第68頁,共133頁。8/4/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)行下載 第69頁,共133頁。8/4/202269JDK命令Java語言的編譯器。命令語法: java
26、c 選項(xiàng) 源文件名Java語言的解釋器,命令語法是: java 選項(xiàng) class 命令行參數(shù) . Java API文檔生成器,命令語法: javadoc 選項(xiàng) 包名/文件名Java applet 瀏覽器,命令語法: appletviewer -debug URLJava程序的調(diào)試器,命令語法: jdb 選項(xiàng) 類名第70頁,共133頁。8/4/202270JDK目錄Bin:編譯器、解釋器和工具 Demo:各種演示例子 Docs:文檔Include:本地方法文件 Jre:Java程序運(yùn)行用環(huán)境的根目錄 Lib:庫文件 第71頁,共133頁。8/4/202271JDK的API結(jié)構(gòu)java.lang包
27、 :基本類java.awt包:是封裝抽象窗口工具包 java.applet包:為Applet提供的所有類 java.io包:程序輸入/輸出文件操作的類. java.util包:提供實(shí)用程序類和集合類 javax.swing包:提供構(gòu)建和管理應(yīng)用程序的圖形界面的輕量級的構(gòu)件 第72頁,共133頁。8/4/202272最簡單的Java實(shí)例:1 /例1.1 DisplayWindom.java2 /*目的:鄧小平的一句名言的顯示*/34 public class DisplayWindom 5 /main():應(yīng)用程序入口第73頁,共133頁。8/4/202273最簡單的Java實(shí)例:6 publi
28、c static void main(String args) 7 System.out.print(鄧小平說:);8 System.out.println(“不管白貓、黑貓,能捉老鼠的就是 好貓.);9 10 第74頁,共133頁。8/4/202274例題說明注釋:Java語言有3種注釋語句,其形式為:雙斜杠分隔符“/”表示本行是單行注釋。 “/”可出現(xiàn)在一行的開始或中間.“/* */”表示是多行注釋。多行注釋以“/*”和“*/”為界限符。這二個(gè)界限符必須成對出現(xiàn)。文檔注釋以“/*”和“*/”為界限符。文檔注釋語句是為文檔工具Javadoc生成API文檔時(shí),使文檔和程序同步實(shí)現(xiàn)。程序java
29、的第1、2 、5都是注釋語句.第75頁,共133頁。8/4/202275例題說明類定義:關(guān)鍵詞class指明了類定義的開始,后跟類名,然后是一對花括號,用來劃定類體范圍.對于本例,行410包含了DisplayWindom類的類體.Java允許在關(guān)鍵詞class之前加修飾符,用來對所定義類的性質(zhì)加以限定。類名DisplayWindom是Java的合法標(biāo)識符,并要求首字母大寫. 在一個(gè).java文件中最多只能有一個(gè)public類。public后緊跟的是所定義類的名稱。Java要求public類的名稱與程序文件名一致,因此,本例為DisplayWindom.java文件。第76頁,共133頁。8/4
30、/202276例題說明Java的Application必須要求有main()方法,該方法要求一個(gè)String類型的單一參數(shù),類型String是字符串列表的數(shù)組。圓括號后面的一對花括號是方法體。在本例的main()方法中,第6,7,8,9行的語句代碼段構(gòu)成方法體。分號(;)是Java語言的語句結(jié)束符。當(dāng)Java解釋器開始運(yùn)行Application程序時(shí),流程控制管理器就轉(zhuǎn)向執(zhí)行應(yīng)用程序的main()方法,而main()中的語句是按順序執(zhí)行。因此,當(dāng)程序DisplayWindom運(yùn)行時(shí),首先執(zhí)行第6行的語句,然后執(zhí)行第7行和第8行的語句。第77頁,共133頁。8/4/202277例題說明本例第7行
31、和第8行是利用System.out表示從System類中選出out變量值。通過這個(gè)值,程序可以訪問顯示窗口的文字對象。這個(gè)對象被稱為輸出流.訪問System的一個(gè)成員out,程序使用點(diǎn)(.)把它從System中選出來,點(diǎn)是Java的選擇器機(jī)制。System是是java.lang包中的標(biāo)準(zhǔn)I/O類,它提供許多系統(tǒng)信息。用它編程者在與設(shè)備打交道的時(shí),不用關(guān)心設(shè)備的底層操作細(xì)節(jié)第78頁,共133頁。8/4/202278Java語言的特點(diǎn)簡單易學(xué) 面向?qū)ο笾С址植际接?jì)算 跨平臺健壯性 安全性強(qiáng)可移植 解釋執(zhí)行高性能 多線程Applet的特殊用途 動(dòng)態(tài)性第79頁,共133頁。8/4/202279解決問題
32、的求解過程軟件工程原理面向?qū)ο缶幊陶Z言的步驟第80頁,共133頁。8/4/202280解決問題的求解過程軟件工程原理 分析 設(shè)計(jì) 編程 測試 維護(hù)第81頁,共133頁。8/4/202281解決問題的求解過程軟件工程原理:分析:與用戶交流,了解問題領(lǐng)域知 識.并確定用戶的需求和目標(biāo)。 (做什么)設(shè)計(jì):描述解決問題所需要的信息和 方法。(怎樣做)第82頁,共133頁。8/4/202282解決問題的求解過程軟件工程原理:編程:寫出實(shí)現(xiàn)解決問題的程序代碼。(具體實(shí)現(xiàn))測試:對程序代碼,進(jìn)行單元測試和集成測試。(實(shí)現(xiàn)周期)維護(hù): 交付使用后的不斷改錯(cuò),改進(jìn)和完善.(終身服務(wù)) (反復(fù)迭代過程!)第83頁
33、,共133頁。8/4/202283解決問題的求解過程面向?qū)ο缶幊陶Z言的步驟由用戶、業(yè)務(wù)專家和軟件開發(fā)者組成 團(tuán)隊(duì)問題的需求的描述確定類確定變量和方法確定系統(tǒng)的體系結(jié)構(gòu)確定開發(fā)工具并編寫程序第84頁,共133頁。8/4/202284解決問題的求解過程自動(dòng)取款機(jī)(ATM)軟件求解過程:需求描述確定類確定業(yè)務(wù)流程(變量和方法)確定用戶界面確定軟件最終的體系結(jié)構(gòu)第85頁,共133頁。8/4/202285解決問題的求解過程ATM軟件求解過程:需求描述: 顧客持卡取款. 對使用ATM的事務(wù)都留記錄,每天報(bào)告. 軟件有適當(dāng)?shù)陌踩胧?暫時(shí)不考慮支付 每個(gè)賬戶能同時(shí)在多個(gè)ATM上查詢和取款 考慮未來擴(kuò)展,增加
34、出納點(diǎn)和網(wǎng)絡(luò)客戶機(jī)第86頁,共133頁。8/4/202286ATM軟件求解過程:需求描述限制: ATM軟件由銀行擁有 ATM軟件在服務(wù)器中運(yùn)行 卡由銀行發(fā)行,并保留客戶信息 ATM界面由銀行確定 所有ATM的用戶界面相同第87頁,共133頁。8/4/202287ATM軟件求解過程:確定候選對象類: Transaction事務(wù)(查賬,取款等) Session使用期 Card取款卡 DailyLog日志,ATM自動(dòng)取款機(jī)第88頁,共133頁。8/4/202288ATM軟件求解過程:確定候選對象類: Cashier出納點(diǎn) NetCleint網(wǎng)絡(luò)客戶機(jī) ATMManager 管理ATM軟件 BankI
35、nfo銀行資料第89頁,共133頁。8/4/202289ATM軟件求解過程:確定對象類BankInfo ATMManagerDailyLogSession Card Agent ATMCashies Net客戶Transaction111*1*1*11*第90頁,共133頁。8/4/202290ATM軟件求解過程:確定對象類屬性:ATMManager類屬性:adminPassword:String /系統(tǒng)管理員口令bankInfos:Container /銀行信息庫sessions:Container /使用期容器dailyLogs:Container /日志容器agents:Containe
36、r /代理容器第91頁,共133頁。8/4/202291ATM軟件求解過程:確定對象類屬性:BankInfo類屬性:name:String /名字prefix:Integer /前綴serverName:String /服務(wù)器名字cards:Container /取款卡第92頁,共133頁。8/4/202292ATM軟件求解過程:確定對象類屬性:Card類屬性:number:Integer /編號name:String /名字accountName:Integer /賬號sessions:Session* /使用期變數(shù)據(jù)第93頁,共133頁。8/4/202293ATM軟件求解過程:確定對象類屬
37、性:Session類屬性:startTime:Time /起始時(shí)間 endTime:Time /結(jié)束時(shí)間card:Card /取款卡agent:Agent /代理/事務(wù)可變數(shù)組transactions:Transaction*第94頁,共133頁。8/4/202294ATM軟件求解過程:確定對象類屬性:Transaction類屬性:time:Time /時(shí)間content:String /內(nèi)容第95頁,共133頁。8/4/202295ATM軟件求解過程:確定對象類屬性:DailyLog類屬性:date:Date /日期sessions:Container /使用期容器第96頁,共133頁。8/
38、4/202296ATM軟件求解過程:確定對象類屬性:Agent類屬性:id:String /標(biāo)識符name:String /名字sessions:Container /使用期容器第97頁,共133頁。8/4/202297ATM軟件求解過程:確定對象類屬性:ATM類屬性:location:String /地點(diǎn)Cashier類屬性:String /分店名NetClient類屬性: url:URL /網(wǎng)站第98頁,共133頁。8/4/202298ATM軟件求解過程:確定對象類屬性:確定變量和方法:涉及對象: 顧客(取款卡),ATM客戶機(jī),ATM管理器,銀行.兩對C/S: ATM客戶機(jī)/ATM管理器
39、ATM管理器/銀行銀行界面ATM管理器界面 第99頁,共133頁。8/4/202299ATM軟件求解過程:涉及到的變量:cardInfor卡信息 account賬戶 amount金額accountName賬戶名 accountInfor賬戶信息receiver收款人第100頁,共133頁。8/4/2022100ATM軟件取款過程序列圖插入卡問口令鍵入口令選擇事務(wù) 問金額輸入金額提供現(xiàn)金ATM查證命令檢查賬號資料口令正確口令正確請求處理事務(wù)處理銀行事務(wù)事務(wù)完成數(shù)據(jù)記錄確認(rèn)事務(wù)已完成 ATMManagerBank第101頁,共133頁。8/4/2022101ATM軟件求解過程:確定對象類屬性:確定
40、變量和方法:ATMManager類中的方法:/構(gòu)造方法 ATMManager() ATMManager(adminiPassword String)第102頁,共133頁。8/4/2022102ATM軟件求解過程:確定對象類屬性:確定變量和方法:ATMManager類中的方法:/注冊系統(tǒng)方法login(cardInfo:CardInfo)logout()第103頁,共133頁。8/4/2022103ATM軟件求解過程:確定對象類屬性:確定變量和方法:ATMManager類中的方法:/訪問方法: getBankInfos():BankInfo* getSessions():Session* ge
41、tDailyLogs():DailyLog*第104頁,共133頁。8/4/2022104ATM軟件求解過程:確定對象類屬性:確定變量和方法:ATMManager類中的方法: getAgents():Agent* addBankInfo(name:String):BankInfo removeBankInfo(name:String):BankInfo addSession(startTime,card,agent) removeSession(session):Session第105頁,共133頁。8/4/2022105ATM軟件求解過程:確定對象類屬性:確定變量和方法:ATMManager
42、類中的方法: addDailyLog(date):DailyLog removeDailyLog(date) addAgent(agent) removeAgent(id) 第106頁,共133頁。8/4/2022106ATM軟件求解過程:確定對象類屬性:確定變量和方法:BankInfo類中的方法: BankInfo(name,prefix,serverName) getName():String getServerName():String第107頁,共133頁。8/4/2022107ATM軟件求解過程:確定對象類屬性:確定變量和方法:BankInfo類中的方法:getCard():Card
43、*addCard(number,name,accountNumberremoveCard(number)第108頁,共133頁。8/4/2022108ATM軟件求解過程:確定對象類屬性:確定變量和方法:BankInfo類中的方法: Card(number,name,accountNumber) getNumber() getName()第109頁,共133頁。8/4/2022109ATM軟件求解過程:確定對象類屬性:確定變量和方法:BankInfo類中的方法: getAccountNumber() getSessions() addSessions(session)第110頁,共133頁。8/
44、4/2022110ATM軟件求解過程:確定對象類屬性:確定變量和方法:Session類中的方法: Session(startTime,card,agent) getStartTime() getEndTime() getCard()第111頁,共133頁。8/4/2022111ATM軟件求解過程:確定對象類屬性:確定變量和方法:Session類中的方法: getAgent() getTransactions:Transaction* addSession(endTime) addTransaction(time,content)第112頁,共133頁。8/4/2022112ATM軟件求解過程:
45、確定對象類屬性:確定變量和方法:Transaction類中的方法: Transaction(time,content) getTime():Time getContent():String第113頁,共133頁。8/4/2022113ATM軟件求解過程:確定對象類屬性:確定變量和方法:DailyLog類中的方法: DailyLog(date) /構(gòu)造方法 getDate() getSessions() addSession()第114頁,共133頁。8/4/2022114ATM軟件求解過程:確定對象類屬性:確定變量和方法:Agent類中的方法:(抽象類無構(gòu)造方法) getId() getNam
46、e() getSessions() addSession()第115頁,共133頁。8/4/2022115ATM軟件求解過程:確定對象類屬性:確定變量和方法:ATM類中的方法: ATM(id,name,location) /構(gòu)造方法 getLocation():String第116頁,共133頁。8/4/2022116ATM軟件求解過程:確定對象類屬性:確定變量和方法:Cashier類中的方法: Cashier(id,name,branch)/構(gòu)造方法 getBranch():String /獲取分店名第117頁,共133頁。8/4/2022117ATM軟件求解過程:確定用戶界面:銀行用戶界面
47、:AccountMgrInf 接口AccountInf 接口AccountMgrImplAccountImpl管理實(shí)施實(shí)施1*第118頁,共133頁。8/4/2022118ATM軟件求解過程:確定用戶界面:銀行用戶界面AccountIF接口定義方法: getBalance():Float /提取結(jié)余/提取帳戶信息 getAccountInfo():AccountInfo/提取賬戶歷史 getHistory():String第119頁,共133頁。8/4/2022119ATM軟件求解過程:確定用戶界面:銀行用戶界面AccountIF接口定義方法:deposit(amount:Float):Float /存入金額withdraw(amount:Float):Float /提取金額transferTo(amountNameString,amount:Float) Float /轉(zhuǎn)賬payBill(receiver:String,amount:Float): Float/付款第120頁,共133頁。8/4/2022120ATM軟件求解過程:確定用戶界面:銀行用戶界面AccountM
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZLX 088-2024 綠色食品 永嘉早香柚生產(chǎn)技術(shù)規(guī)程
- 二零二五年度新材料研發(fā)股份分紅及市場拓展合同模板
- T-ZGZX 0003-2024 成年智力殘疾人托養(yǎng)服務(wù)指南
- 二零二五年度夫妻共同財(cái)產(chǎn)保全與婚后生活規(guī)劃協(xié)議
- 二零二五年度企業(yè)合同管理制度與品牌建設(shè)合同
- 二零二五年度智慧城市建設(shè)抵押貸款協(xié)議
- 二零二五年度城市建筑工地渣土車租賃管理協(xié)議
- 二零二五年度農(nóng)村土地承包經(jīng)營權(quán)流轉(zhuǎn)與農(nóng)業(yè)病蟲害防治服務(wù)合同
- 二零二五年度高科技企業(yè)股權(quán)合作協(xié)議書
- 2025年度生物制藥產(chǎn)業(yè)合作投資合同
- 2025年黑龍江農(nóng)墾職業(yè)學(xué)院單招職業(yè)傾向性測試題庫匯編
- 2025年01月明光市司法局司法協(xié)理員7人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 整體施工勞務(wù)服務(wù)方案
- 第六節(jié)-固定收益證券知識分享
- 2024 貴州公務(wù)員考試行測真題(省直)
- 2025年泰山職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 中國企業(yè)智能化成熟度報(bào)告(2024) -企業(yè)智能化轉(zhuǎn)型進(jìn)入2.0時(shí)代
- 人體解剖學(xué)肱骨講解
- 2025年南京旅游職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 工業(yè)地產(chǎn)基礎(chǔ)知識
- 馬工程《藝術(shù)學(xué)概論》課件424P
評論
0/150
提交評論