




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
...wd...iOS系統(tǒng)的在線音樂播放器手機(jī)app設(shè)計(jì)基于iOS系統(tǒng)的在線音樂播放器,是為了給用戶提供更好的音樂播放效果,更家方便的用戶操作,享受音樂帶來的樂趣。目前大多數(shù)音樂播放器都是以計(jì)算機(jī)和電子設(shè)備做為載體,在享受音樂帶來樂趣的同時(shí),占用系統(tǒng)內(nèi)存對(duì)比大,此次設(shè)計(jì)的音樂播放器可以合理防止內(nèi)存過大造成閃退的狀況。基于iOS的在線音樂播放器針對(duì)iPhone設(shè)備研發(fā)。因?yàn)橐苿?dòng)設(shè)備的便利性,使音樂播放器的方便性和易操作性得到了很大的提高。本設(shè)計(jì)對(duì)開發(fā)中遇到的問題和解決方法進(jìn)展了詳細(xì)的討論,該音樂播放器集播放、暫停、停頓、快進(jìn)、快退、下一曲、上一曲、音量調(diào)節(jié)等功能于一體,性能良好。第一階段先對(duì)工程進(jìn)展全面的、仔細(xì)的需求分析,并準(zhǔn)確做出工程進(jìn)度安排,明確每個(gè)階段的任務(wù);第二階段是進(jìn)展工程分模塊編碼;第三階段對(duì)工程進(jìn)展全面測(cè)試和系統(tǒng)集成測(cè)試。在程序的開發(fā)上,因?yàn)镺C語言的不可跨平臺(tái)性,所以只在OSX系統(tǒng)上進(jìn)展編碼,目前,基于iOS的在線音樂播放器的手機(jī)客戶端已經(jīng)完成測(cè)試,到達(dá)預(yù)期效果。關(guān)鍵詞:音樂播放器;iOS;Objective-C目錄257361前言1170541.1軟件開發(fā)背景及意義1201071.2開展現(xiàn)狀及趨勢(shì)16211.3主要研究方法及過程2166982相關(guān)技術(shù)簡(jiǎn)介343912.1OC語音簡(jiǎn)介3269572.2AVaudioplayer技術(shù)35832.2.1AVaudioplayer的體系構(gòu)造3101202.2.2AVaudioplayer混頻原理4107222.3JDK技術(shù)5175173需求分析7266773.1功能需求7230623.1.1播放器的根本控制需求716533.1.2功能需求分析7282313.2運(yùn)行及其它需求分析8223223.3可行性分析8178563.3.1經(jīng)濟(jì)及技術(shù)可行性878923.3.2運(yùn)行及法律可行性98444軟件構(gòu)造及界面設(shè)計(jì)10308884.1翻開文件菜單下的詳細(xì)設(shè)計(jì)13128254.1.1翻開文件設(shè)計(jì)13244244.1.2退出系統(tǒng)設(shè)計(jì)1323784.2播放菜單下的詳細(xì)設(shè)計(jì)14312674.3顯示菜單下的詳細(xì)設(shè)計(jì)1441704.4幫助菜單下的詳細(xì)設(shè)計(jì)15141264.5播放列表的詳細(xì)設(shè)計(jì)16235904.6播放按鈕的詳細(xì)設(shè)計(jì)17243895.結(jié)論19前言1.1課題來源及研究背景當(dāng)今社會(huì)的生活節(jié)奏越來越快,人們對(duì)手機(jī)的要求也越來越高,由于手機(jī)市場(chǎng)開展迅速,使得手機(jī)操作系統(tǒng)也出現(xiàn)了不同各類,現(xiàn)在的市場(chǎng)上主要有三大手機(jī)操作系統(tǒng),Windowsphone,Android,以及iOS操作系統(tǒng),其中iOS系統(tǒng)有很大的開展前景。那么能否在手機(jī)上擁有自己編寫的個(gè)性音樂播放器呢,本文的音樂播放器就是基于iOS手機(jī)平臺(tái)的播放器。1.2開發(fā)目的及意義現(xiàn)今社會(huì)生活緊張,而欣賞音樂是其中最好的舒緩壓力的方式之一。隨著人們的生活水平越來越高,人們對(duì)音樂的需求也越來越高,而傳統(tǒng)的音樂播放器又限于手機(jī)內(nèi)存,在音樂的分類和管理上有著很大的局限性。本設(shè)計(jì)的實(shí)現(xiàn)的是對(duì)音樂能夠控制播放,暫停,停頓,上一曲,下一曲,音量調(diào)節(jié),視覺外觀,播放列表和歌曲文件的管理操作等多種播放控制功能,界面簡(jiǎn)明,操作簡(jiǎn)單。添加了對(duì)網(wǎng)絡(luò)音樂的支持,使得手機(jī)只需要聯(lián)網(wǎng)就會(huì)瞬間擁有百萬首歌曲,不必在局限于手機(jī)內(nèi)存。豐富的歌曲分類功能,使得繁多網(wǎng)絡(luò)歌曲的管理,更加的僅僅有條。這樣就打破的傳統(tǒng)播放器內(nèi)存的限制,是人們能夠享受到更加豐富的歌曲。本工程是一款基于iOS手機(jī)平臺(tái)的音樂播放器,使iOS手機(jī)擁有個(gè)性的多媒體播放器,使手機(jī)顯得更生動(dòng)靈活化,與人們更為接近,讓手機(jī)主人隨時(shí)隨地處于音樂視頻的旋律之中。使人們的生活更加多樣化。也使設(shè)計(jì)者更加熟練iOS的技術(shù)和其它在市場(chǎng)上的特點(diǎn)。1.3課題研究?jī)?nèi)容本系統(tǒng)緊跟當(dāng)前移動(dòng)手機(jī)開發(fā)趨勢(shì),使用Objective-c語言開發(fā)一個(gè)基于iOS平臺(tái)的音樂播放娛樂系統(tǒng),實(shí)現(xiàn)基于iOS平臺(tái)的音樂播放娛樂系統(tǒng)的根本功能。歌的切換以及列表顯示,在聽歌的同時(shí)能夠更好娛樂1.4論文的組織與構(gòu)造第一章為緒論,介紹了本文的選題背景和意義,總結(jié)國內(nèi)外音樂播放器研究現(xiàn)狀,同時(shí)對(duì)論文研究?jī)?nèi)容安排進(jìn)展闡述。第二章對(duì)系統(tǒng)中涉及的相關(guān)理論和關(guān)鍵技術(shù)進(jìn)展了研究,對(duì)Objective-C開發(fā)語言、iphone手機(jī)系統(tǒng)和MacOS相關(guān)技術(shù)進(jìn)展了介紹和分析。第三章對(duì)系統(tǒng)進(jìn)展研究,闡述了系統(tǒng)的功能和性能和UI界面的設(shè)計(jì)和實(shí)現(xiàn)。第四章在前面三章根基上研發(fā)出iPhone的音樂播放軟件,同時(shí),對(duì)系統(tǒng)各模塊設(shè)計(jì)和實(shí)現(xiàn)進(jìn)展分析,其中對(duì)關(guān)鍵技術(shù)給出了詳細(xì)實(shí)現(xiàn)過程。最后是論文的總結(jié)。2.相關(guān)技術(shù)概述2.1系統(tǒng)架構(gòu)及開發(fā)環(huán)境簡(jiǎn)介 開發(fā)iOS軟件需要使用蘋果官方發(fā)布的Xcode工具軟件,Xcode軟件目前已更新到第6版本,是一款相當(dāng)強(qiáng)大的開發(fā)工具。使用Xcode我們將按圖2-1來實(shí)現(xiàn)播放器的功能。用戶根本操作用戶根本操作播放暫停上一首下一首快進(jìn)快退播放模式單曲循環(huán)順序播放隨機(jī)播放圖2-1播放器功能圖2.2音樂播放器應(yīng)用控件及組件介紹開發(fā)iOS軟件使用OC語言,并使用蘋果公司所開發(fā)集成的Xcode軟件,開發(fā)音樂播放器需使用到以下方法。SystemSoundServicesSystemSoundServices是最底層也是最簡(jiǎn)單的聲音播放服務(wù),調(diào)用AudioServicesPlaySystemSound這個(gè)方法就可以播放一些簡(jiǎn)單的音頻文件,使用此方法只適合播放一些很小的提示或者警告音,因?yàn)樗泻芏嘞拗疲喝纾郝曇糸L(zhǎng)度要小于30秒、InlinearPCM或者IMA4(IMA/ADPCM)格式的打包成.caf,.aif,或者.wav的文件、不能控制播放的進(jìn)度、調(diào)用方法后立即播放聲音、沒有循環(huán)播放和立體聲控制,另外,它還可以調(diào)用系統(tǒng)的震動(dòng)功能,方法也很簡(jiǎn)單。具體的代碼可以參考官方的例如
SysSound,但是官方的例如只有一些簡(jiǎn)單的用法,從文檔中我們發(fā)現(xiàn)可以通過AudioServicesAddSystemSoundCompletion方法為音頻播放添加CallBack函數(shù),有了CallBack函數(shù)我們可以解決不少問題,比方可以抑制SystemSoundServices本身不支持循環(huán)播放的問題。AVAudioPlayer類AVAudioPlayer是AVFoundation.framework中定義的一個(gè)類,所以使用要先在工程中引入AVFoundation.framework。我們可以把AVAudioPlayer看作是一個(gè)高級(jí)的播放器,它支持廣泛的音頻格式,主要是以下這些格式:AAC、AMR(AdaptiveMulti-Rate,aformatforspeech)、ALAC(AppleLossless)、iLBC(internetLowBitrateCodec,anotherformatforspeech)、IMA4(IMA/ADPCM)、linearPCM(uncompressed)、μ-lawanda-law、MP3(MPEG-1audiolayer3
。AudioQueueServices如果以上兩種音頻播放的解決方案都無法滿足你的需求,那么我想你肯定需要使用AudioQueueServices。使用AudioQueueServices對(duì)音頻進(jìn)展播放,你可以完全實(shí)現(xiàn)對(duì)聲音的控制。例如,你可以在聲音數(shù)據(jù)從文件讀到內(nèi)存緩沖區(qū)后對(duì)聲音進(jìn)展一定處理再進(jìn)展播放,從而實(shí)現(xiàn)對(duì)音頻的快速/慢速播放的功能。MPMusicPlayerController有兩種播放器可以選擇,一種是applicationmusicplayer,另外一種是iPodmusicplayer。第一種播放器是一種內(nèi)部播放器,當(dāng)程序?qū)Τ龊笸nD播放;而第二種播放器則與iPod播放器內(nèi)的信息相關(guān),退出之后不會(huì)停頓播放。在播放之前需要設(shè)置隊(duì)列。MPMoviePlayerControllerMPMoviePlayerController與AVAudioPlayer有點(diǎn)類似,前者播放視頻,后者播放音頻,不過也有很大不同,MPMoviePlayerController可以直接通過遠(yuǎn)程URL初始化,而AVAudioPlayer則不可以。不過大體上用起來感覺差不多。格式支持:MOV、MP4、M4V、與3GP等格式,還支持多種音頻格式2.3音樂播放器的生命周期音樂播放器行業(yè)市場(chǎng)供給分析及市場(chǎng)供給預(yù)測(cè)包括現(xiàn)在音樂播放器行業(yè)市場(chǎng)供給量估計(jì)量和預(yù)測(cè)未來音樂播放器行業(yè)市場(chǎng)的供給能力。音樂播放器行業(yè)市場(chǎng)需求分析及音樂播放器行業(yè)市場(chǎng)需求預(yù)測(cè)包括現(xiàn)在音樂播放器行業(yè)市場(chǎng)需求量估計(jì)和預(yù)測(cè)音樂播放器行業(yè)未來市場(chǎng)容量及產(chǎn)品競(jìng)爭(zhēng)能力。通常采用調(diào)查分析法、統(tǒng)計(jì)分析法和相關(guān)分析預(yù)測(cè)法。音樂播放器行業(yè)市場(chǎng)需求層次和各類地區(qū)市場(chǎng)需求量分析即根據(jù)各市場(chǎng)特點(diǎn)、人口分布、經(jīng)濟(jì)收入、消費(fèi)習(xí)慣、行政區(qū)劃、暢銷牌號(hào)、生產(chǎn)性消費(fèi)等,確定不同地區(qū)、不同消費(fèi)者及用戶的需要量以及運(yùn)輸和銷售費(fèi)用。音樂播放器行業(yè)市場(chǎng)競(jìng)爭(zhēng)格局包括市場(chǎng)主要競(jìng)爭(zhēng)主體分析,各競(jìng)爭(zhēng)主體在市場(chǎng)上的地位,以及行業(yè)采取的主要競(jìng)爭(zhēng)手段等;估計(jì)音樂播放器行業(yè)產(chǎn)品生命周期及可銷售時(shí)間即預(yù)測(cè)市場(chǎng)需要的時(shí)間,使生產(chǎn)及分配等活動(dòng)與市場(chǎng)需要量作最適當(dāng)?shù)呐浜?。通過市場(chǎng)分析可確定產(chǎn)品的未來需求量、品種及持續(xù)時(shí)間;產(chǎn)品銷路及競(jìng)爭(zhēng)能力;產(chǎn)品規(guī)格品種變化及更新;產(chǎn)品需求量的地區(qū)分布等。音樂播放器行業(yè)市場(chǎng)分析報(bào)告可為客戶正確制定營銷策略或投資策略提供信息支持。企業(yè)的營銷策略決策或投資策略決策只有建設(shè)在扎實(shí)的市場(chǎng)分析的根基上,只有在對(duì)影響需求的外部因素和影響購、產(chǎn)、銷的內(nèi)部因素充分了解和掌握以后,才能減少失誤,提高決策的科學(xué)性和正確性,從而將經(jīng)營風(fēng)險(xiǎn)降到最低限度。2.4音樂播放器應(yīng)用技術(shù)的介紹Objective-C是非常實(shí)際的語言。它是一個(gè)用C寫成、很小的運(yùn)行庫,只會(huì)令應(yīng)用程序的尺寸增加很小,和大局部OO系統(tǒng)使用極大的VM執(zhí)行時(shí)間會(huì)取代了整個(gè)系統(tǒng)的運(yùn)作相反。Objective-C寫成的程序通常不會(huì)比其原始碼大很多。而其函式庫(通常沒附在軟件發(fā)行本)亦和Smalltalk系統(tǒng)要使用極大的內(nèi)存來開啟一個(gè)窗口的情況相反。因此,Objective-C它完全兼容標(biāo)準(zhǔn)C語言〔C++對(duì)C語言的兼容僅在于大局部語法上,而在ABI〔ApplicationBinaryInterface〕上,還需要使用extern"C"這種顯式聲明來與C函數(shù)進(jìn)展兼容〕,而在此根基上增加了面向?qū)ο缶幊陶Z言的特性以及Smalltalk消息機(jī)制。Xcode最新版本是Xcode6,整合了蘋果在WWDC大會(huì)上發(fā)布的新語言Swift。3系統(tǒng)分析2.1可行性分析可行性分析指的是對(duì)APP需求的主要內(nèi)容以及開發(fā)條件全面分析,例如市場(chǎng)需求分析、資源供給、建設(shè)規(guī)模大小、制造工藝路線、型號(hào)、籌措資金、盈利方式等。從各個(gè)方面〔技術(shù)、經(jīng)濟(jì)、規(guī)?!辰y(tǒng)籌分析,計(jì)算出預(yù)算、客觀地預(yù)估經(jīng)濟(jì)收益。來判定該工程是否可行。從而提出該工程是否值得投資以及意見,為工程決策提供了有力依據(jù)的一種綜合性的系統(tǒng)分析方案。2.1.1經(jīng)濟(jì)可行性分析既然我們選擇了做APP,我們必不可少的要關(guān)注經(jīng)濟(jì)可行性分析。比方我們APP的贏利點(diǎn)在什么地方、我們?cè)陂_發(fā)過程中需要計(jì)算我們開發(fā)這個(gè)工程的資金本錢、時(shí)間本錢、是否我們后期的收益可以彌補(bǔ)這些前期的投入。當(dāng)然我們也不能一味的去追求經(jīng)濟(jì)效益。經(jīng)濟(jì)可行性分析中的“經(jīng)濟(jì)〞不僅僅是普遍意義上的經(jīng)濟(jì),也代表著社會(huì)經(jīng)濟(jì)效益。所以在開發(fā)中我不們開發(fā)者不能時(shí)時(shí)刻刻著想著人民幣,更應(yīng)該從更多更片面的角度去對(duì)待經(jīng)濟(jì)可行性分析工作。一般來講,開發(fā)APP的本錢花銷主要由以下四局部組成的:1)購置、安裝軟硬的費(fèi)用。2)系統(tǒng)開發(fā)的費(fèi)用。3)系統(tǒng)安裝、運(yùn)行、維護(hù)的費(fèi)用。4)員工培訓(xùn)的費(fèi)用。所以結(jié)合畢設(shè)的整個(gè)開發(fā)過程可以知道開發(fā)網(wǎng)絡(luò)音樂播放盒所需要的全部軟件平臺(tái)都是免費(fèi)的,所以從經(jīng)濟(jì)可行性上來看是完全可行的。2.1.2技術(shù)可行性分析技術(shù)可行性也是開發(fā)一款A(yù)PP必不可少的工作。這個(gè)工作要求開發(fā)人員根據(jù)自身或者團(tuán)隊(duì)的整體技術(shù)能力來判斷需求是否能滿足客戶需求。哪一些我們現(xiàn)在的能力可以完全勝任,又有哪一些我們需要調(diào)研學(xué)習(xí)之后可以做到,還有哪一些我們做不到,需要更優(yōu)秀的人才來補(bǔ)充。這個(gè)過程中我們要做充分的考察,尤其是在遇到了我們可能無法解決的問題的時(shí)候,我們不要輕易地說放棄。我們要充分利用互聯(lián)網(wǎng)帶來的便利,我們可以去網(wǎng)上去搜素相關(guān)的資源。這一切的一切最終的目的就是要盡最大可能去滿足客戶的需求。但本畢設(shè)因?yàn)橹皇俏乙粋€(gè)人在做并且工程涉及的業(yè)務(wù)邏輯也并不是很復(fù)雜,所以技術(shù)可行性分析我并沒有太多去考慮。2.2需求分析需求分析是指在建設(shè)一個(gè)新的APP的時(shí)候,對(duì)這個(gè)APP的目的、定義、功能這些方面所要做的工作進(jìn)展統(tǒng)一規(guī)劃。需求分析是完成一APP不可或缺的局部。開發(fā)APP的過程中,我們必須跟客戶先進(jìn)展一個(gè)認(rèn)真的溝通并大致地了解客戶的需求。然后我們根據(jù)客戶的需求來做產(chǎn)品設(shè)計(jì),做完之后將產(chǎn)品設(shè)計(jì)上交給客戶,讓客戶來提修改意見。如此反復(fù)我們才能最終敲定好一款A(yù)PP的外形。萬丈高樓平地起,我們不要無視這個(gè)過程,更不能懈怠這個(gè)過程。因?yàn)槿绻覀冊(cè)谶@個(gè)過程中進(jìn)展的很成功,那么我們后期開發(fā)起來會(huì)非常得心應(yīng)手。如果外形靚麗、小巧靈活的mini音樂播放盒卻很受年輕人們的青睞。市場(chǎng)的開展前景不容無視。綜上,設(shè)計(jì)音樂播放盒子的重點(diǎn)要偏向于靚麗的外觀和吸引人的性能表現(xiàn),小體積卻能夠?qū)崿F(xiàn)相對(duì)更多的功能。新型的mini音樂播放盒也要附加功能,這樣就能夠更好地抓住用戶的眼球。2.3系統(tǒng)定義針對(duì)基于iOS系統(tǒng)酷狗APP的需求分析,實(shí)現(xiàn)根本的音樂播放器功能,并允許用戶訪問豆瓣服務(wù)器,播放豆瓣服務(wù)器的多媒工程。2.4功能需求此次APP的設(shè)計(jì)的大致運(yùn)行流程:首先,用戶在蘋果設(shè)備APP,立馬映入眼簾的是APP的新版本介紹新特性。新特性描述了新版本音樂播放盒所具備的改動(dòng)與新添加的功能。因?yàn)锳PP所用的資源幾乎都來自Internet,因此,新特性只是完成一個(gè)功能的表達(dá)新特性是通過手勢(shì)滑動(dòng)UIScrollView來完成的,最后一頁有進(jìn)入按鈕,單擊這個(gè)進(jìn)入按鈕,可以直接進(jìn)入到APP的主界面。程序的主界面分為兩條路線。之所以是兩條路線,后面的系統(tǒng)設(shè)計(jì)會(huì)有提到。一條路線為本地音樂,另一條路線為網(wǎng)絡(luò)音樂。本地音樂—用戶可以對(duì)其中的單個(gè)或者多個(gè)歌曲進(jìn)展收藏、播放、暫停、刪除等個(gè)性化操作。滿足用戶最根本的需求的同時(shí)還可以動(dòng)態(tài)瀏覽播放歌曲的歌詞。本地音樂列表的操作是可以單曲操作,也可以批量操作。還可以瀏覽音樂的詳情〔歌手、歌詞、時(shí)長(zhǎng)、專輯〕。網(wǎng)絡(luò)音樂通過驗(yàn)證登錄豆瓣服務(wù)器,獲取多媒體音樂文件。我們?cè)趯?duì)回傳的Json格式的數(shù)據(jù)進(jìn)展解析從而得到多媒體資源,APP可以訪問電臺(tái),用戶可以根據(jù)自己的洗好來選擇自己偏愛的電臺(tái)。網(wǎng)絡(luò)音樂用例圖如圖2-1所示。UUser對(duì)音樂列表的操作播放歌曲暫停歌曲上一首、下一首、快進(jìn)登陸豆瓣電臺(tái)搜索歌曲退出圖2-1網(wǎng)絡(luò)音樂用例圖3.系統(tǒng)設(shè)計(jì)3.1功能描述隨著移動(dòng)端互聯(lián)網(wǎng)的普及,智能手機(jī)已漸漸地漸被人們承受。它也成為了移動(dòng)互聯(lián)網(wǎng)經(jīng)濟(jì)主體的一個(gè)重要成分,智能手機(jī)被越來越多人所承受、習(xí)慣;移動(dòng)APP是基于操作系統(tǒng)開發(fā)。越來越多、各式各樣的功能層出不窮。Android系統(tǒng)的開源性導(dǎo)致了移動(dòng)客戶端的質(zhì)量參差不齊,但是由于iOS限制了開發(fā)者開發(fā)中必備的條件,因此,本程序只能在MAC模擬器上或者iPhone設(shè)備上使用,無法在APPLEAPPStore上下載。首先,用戶在蘋果設(shè)備APP,立馬映入眼簾的是APP的新版本介紹新特性。新特性描述了新版本音樂播放盒所具備的改動(dòng)與新添加的功能。因?yàn)锳PP所用的資源幾乎都來自Internet,因此,新特性只是完成一個(gè)功能的表達(dá),并不是真正意義上的新特性描述次版本的新功能,在APP的使用過程中,請(qǐng)不要將新特性描述放到關(guān)注重心上。新特性是通過手勢(shì)滑動(dòng)UIScrollView來完成的,最后一頁有進(jìn)入按鈕,單擊這個(gè)進(jìn)入按鈕,可以直接進(jìn)入到APP的主界面。APP主頁有兩個(gè)選項(xiàng)卡。之所以是兩條路線,后面的系統(tǒng)設(shè)計(jì)會(huì)有提到。其中一個(gè)選項(xiàng)卡為本地音樂,另一個(gè)選項(xiàng)卡為網(wǎng)絡(luò)音樂。其中本地音樂是通過文件歸檔到SandBox〔本地保存Plist文件〕對(duì)音樂的保存。而網(wǎng)絡(luò)音樂是利用主界面上的登陸按鈕驗(yàn)證連接豆瓣的服務(wù)器,來訪問外網(wǎng)服務(wù)器資源。本地音樂—用戶可以對(duì)其中的單個(gè)或者多個(gè)歌曲進(jìn)展收藏、播放、暫停、刪除等個(gè)性化操作。滿足用戶最根本的需求的同時(shí)還可以動(dòng)態(tài)瀏覽播放歌曲的歌詞。本地音樂列表的操作是可以單曲操作,也可以批量操作。還可以瀏覽音樂的詳情〔歌手、歌詞、時(shí)長(zhǎng)、專輯〕。網(wǎng)絡(luò)音樂通過驗(yàn)證登錄豆瓣服務(wù)器,獲取多媒體音樂文件。進(jìn)入網(wǎng)絡(luò)音樂頁面,我們看到了兩個(gè)選項(xiàng)卡,一個(gè)是“歌手〞選項(xiàng)卡,一個(gè)是“電臺(tái)〞選項(xiàng)卡,歌手選項(xiàng)卡是通過搜索歌手的姓名來搜索音樂的,同是提供下載、播放、瀏覽。默認(rèn)歌手是劉德華。電臺(tái)資源向豆瓣服務(wù)器發(fā)送GET請(qǐng)求,然后服務(wù)器傳遞回來數(shù)據(jù)。我們?cè)趯?duì)回傳的json格式的數(shù)據(jù)進(jìn)展解析從而得到多媒體資源。服務(wù)器上已經(jīng)將同類別頻道的音樂歸并到一起了,這使得APP可以訪問電臺(tái),用戶可以根據(jù)自己的洗好來選擇自己偏愛的電臺(tái)。3.2系統(tǒng)功能模塊化設(shè)計(jì)3.2.1新特性模塊顯示的條件:首次進(jìn)入APP||判斷info.Plist中的version如果與上一版本不符。此功能主要是讓用戶更好、更快地了解APP包含的新功能、已經(jīng)修復(fù)的內(nèi)容。此功能適用以營利為目的的商業(yè)客戶需求,為追求更好的用戶體驗(yàn)而制作的。因?yàn)橘Y源有限,所以本模塊功能根本來源于網(wǎng)絡(luò),不能用于與商業(yè)。3.2.2本地列表模塊本地列表模塊主要包含以下幾個(gè)功能:修改功能:?jiǎn)螕艚缑嫔系摹皃en〞圖標(biāo),可對(duì)列表中的歌曲進(jìn)展修。列表的修改可以是單個(gè)歌曲,同樣也可以多個(gè)歌曲。其中修改操作包括模式修改〔模式修改指的是,用戶在播放音樂的時(shí)候選擇的播放順序:隨機(jī)、順序、循環(huán)、單曲4個(gè)模式〕、全選、加載〔加載存儲(chǔ)在本地資源包中的Plist文件,因?yàn)楸続PP采取DE是以Plist的方式存儲(chǔ),因此無法修改。又由于iOS的封閉性,導(dǎo)致了無法瀏覽本地音樂。所以此功能算是一個(gè)對(duì)比限制用戶體驗(yàn)的功能;刪除〔此功能可以與全選功能配合,也可以對(duì)單個(gè)歌曲進(jìn)展操作。〕。音樂播放功能:本APP的名字就是音樂播放器,那么自然音樂播放成為了它的核心內(nèi)容。此功能利用了OC語言分裝的AVAudioPlayer類實(shí)現(xiàn)播放功能歌詞瀏覽功能:此功能可以瀏覽存儲(chǔ)在本地SandBox的歌詞文件,因?yàn)榫植康母柙~文件兼容很差,所以有時(shí)會(huì)顯示亂碼,但根本不影響用戶的正常使用。單一歌曲操作功能:對(duì)選擇的歌曲個(gè)性化地放到我喜歡數(shù)組中〔平時(shí)可以單獨(dú)地播放我喜歡列表,這樣可以完善了更好的用戶體驗(yàn)〕。3.3系統(tǒng)總體構(gòu)造圖根據(jù)需求調(diào)研結(jié)果確定APP主要包括以下幾個(gè)功能模塊。系統(tǒng)功能構(gòu)造圖如圖3-1所示。圖3-1系統(tǒng)功能構(gòu)造圖3.3數(shù)據(jù)庫設(shè)計(jì)3.3.1數(shù)據(jù)庫設(shè)計(jì)概述從1980至今,數(shù)據(jù)庫技術(shù)在商業(yè)領(lǐng)域的巨大刺激下以及客戶對(duì)數(shù)據(jù)庫技術(shù)需求的迅速增長(zhǎng),致使數(shù)據(jù)庫技術(shù)得到了飛速的開展。尤其表現(xiàn)在:數(shù)據(jù)庫和各平臺(tái)的相互嵌入。眾所周知,SQLite是基于嵌入式的方式開發(fā)的,所以SQLite或者其他的數(shù)據(jù)庫都可以和各種平臺(tái)合理的嵌入,這就使得數(shù)據(jù)庫領(lǐng)域有各式各樣的變化與組合,這里我們有兩種方式來設(shè)計(jì)數(shù)據(jù)庫:一:以信息需求為主,處理需求為輔。這種方法稱為面向數(shù)據(jù)的數(shù)據(jù)庫設(shè)計(jì)方法;二:以處理需求為主,信息需求為輔。這種方法稱為面向過程的數(shù)據(jù)庫設(shè)計(jì)方法。數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)如下:1.反復(fù)性(Iterative)。2.試探性(Tentative)。3.分步進(jìn)展。數(shù)據(jù)庫設(shè)計(jì)的過程6各階段:需求分析、概念構(gòu)造設(shè)計(jì)、邏輯構(gòu)造設(shè)計(jì)、數(shù)據(jù)庫物理設(shè)計(jì)、數(shù)據(jù)庫實(shí)施、數(shù)據(jù)庫運(yùn)行和維護(hù)在設(shè)計(jì)的過程中我們應(yīng)該包含兩方面的內(nèi)容:〔1〕數(shù)據(jù)構(gòu)造設(shè)計(jì):也就是設(shè)計(jì)數(shù)據(jù)庫框架和數(shù)據(jù)庫構(gòu)造,數(shù)據(jù)庫模式是各應(yīng)用程序共享的構(gòu)造,是穩(wěn)定的、永久的構(gòu)造,所以一個(gè)數(shù)據(jù)庫的合理設(shè)計(jì)可以讓我們后期的開發(fā)奠定一個(gè)良好的開場(chǎng)與根基。〔2〕行為〔處理〕設(shè)計(jì):即設(shè)計(jì)應(yīng)用程序、事務(wù)處理等構(gòu)造特性不能與行為特性別離。靜態(tài)的構(gòu)造特性的設(shè)計(jì)與動(dòng)態(tài)的行為特性的設(shè)計(jì)別離,會(huì)導(dǎo)致數(shù)據(jù)與程序不易結(jié)合,增加數(shù)據(jù)庫設(shè)計(jì)的復(fù)雜性。3.3.2E-R圖簡(jiǎn)述我理解中的ER圖:將功能模型與數(shù)據(jù)模型的關(guān)系以圖形的方式展示給開發(fā)人員。這樣便于我們理解內(nèi)容聯(lián)系。更直觀、更容易理解。實(shí)體型:用矩形表示,矩形框內(nèi)寫明實(shí)體名;屬性:用橢圓形表示,并用無向邊將其與相應(yīng)的實(shí)體連接起來;聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名。3.3.3系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)針對(duì)播放盒APP的特點(diǎn),數(shù)據(jù)庫設(shè)計(jì)各個(gè)局部的數(shù)據(jù)項(xiàng)與數(shù)據(jù)構(gòu)造如下所示。本地音樂模型圖如圖3-2所示。豆瓣登陸E-R圖如圖3-3所示。圖3-2本地音樂豆瓣登陸Alta豆瓣登陸AltavatarcreateddescIs_bannedIs_suicideIoc_idloginnametypesignatureuid其主要的表構(gòu)造如下。我的音樂表如表3-1所示,豆瓣服務(wù)器表如表3-2所示。表3-1我的音樂表字段名說明類型長(zhǎng)度可否為空主鍵Name歌曲名稱String50否主鍵Singer歌手名稱String10是Time歌曲時(shí)長(zhǎng)String4否Index索引String8否Geci歌詞文件String50是Playurl播放地址String1000否表3-2豆瓣服務(wù)器字段名說明類型長(zhǎng)度可否為空主鍵Alt網(wǎng)址String300否主鍵avatar頭像String300是created創(chuàng)立時(shí)間String10否desc描述String100否Is_banned字段Boolean1是Is_suicide字段Boolean1否Large_avatar大圖String10否Loc_idIDString10否login登陸B(tài)oolean1否signature字段String10否type類型String10否uidIDString1000否4.系統(tǒng)實(shí)現(xiàn)4.1UI實(shí)現(xiàn)播放器播放界面功能實(shí)現(xiàn)播放功能的具體代碼如下:-(void)startMusic{openOrClose++;if(openOrClose%2==1){[startButtonsetBackgroundImage:[UIImageimageNamed:@"play_bar_passed.png"]forState:UIControlStateNormal];[smallProgressViewprogressViewBegin];currentMusicName.text=[musicArrayobjectAtIndex:curMusicNumber];NSURL*audioFileUrl=[NSURLfileURLWithPath:[[NSBundlemainBundle]pathForResource:[musicArrayobjectAtIndex:curMusicNumber]ofType:@"mp3"]];audioPlay=[[AVAudioPlayeralloc]initWithContentsOfURL:audioFileUrlerror:nil];audioPlay.delegate=self;[audioPlayplay];[smallProgressViewtheTotalTimeOfMusic:audioPlay.duration];inti=(int)audioPlay.duration/60;intj=(int)audioPlay.duration%60;totalTime.text=[NSStringstringWithFormat:@"%02d:%02d",i,j];[lastArrayaddObject:[musicArrayobjectAtIndex:curMusicNumber]];}else{[startButtonsetBackgroundImage:[UIImageimageNamed:@"playarticle_play.png"]forState:UIControlStateNormal];[smallProgressViewprogressViewStop];}}播放功能的實(shí)現(xiàn)是通過AVAudioPlayer類庫來實(shí)現(xiàn)的,其中audioFileUrl是要播放音樂的本地路徑。在播放的過程中通過自己封裝的進(jìn)度條類來判斷歌曲播放的時(shí)間。4.2功能實(shí)現(xiàn)播放進(jìn)度的跟蹤顯示在播放音樂的時(shí)侯,我們希望可以看到播放的進(jìn)度,通過拉動(dòng)進(jìn)度條來方便快捷的實(shí)現(xiàn)對(duì)歌曲的快進(jìn),快退的功能。通過創(chuàng)立一個(gè)計(jì)時(shí)器,利用計(jì)時(shí)器來實(shí)時(shí)更新進(jìn)度條。而進(jìn)度條的進(jìn)度顯示是用UISlider控件控件。其value的值為0到1,利用正在播放的時(shí)間與一共的時(shí)長(zhǎng)之比來控制UISlider的值,到達(dá)進(jìn)度條的跟著顯示。UISlider具有一個(gè)change事件,可以改變value的值來設(shè)置當(dāng)前播放的一個(gè)進(jìn)度,來到達(dá)一個(gè)快進(jìn),快退的功能具體代碼如下:-(id)init{if(self==[superinit]){self.curTime=[[UILabelalloc]init];self.curTime.backgroundColor=[UIColorclearColor];self.curTime.font=[UIFontsystemFontOfSize:12];self.curTime.textColor=[UIColorwhiteColor];}returnself;}-(double)theTotalTimeOfMusic:(double)totalTime{allTime=totalTime;returnallTime;}-(double)theTimeOfMusicRun{returntheTimeHaveRun;}-(void)progressViewBegin{theTimeHaveRun=0.0;if(theTimeHaveRun<=allTime){time=[NSTimerscheduledTimerWithTimeInterval:1.0target:selfselector:@selector(changeProgressView)userInfo:nilrepeats:YES];}}-(void)progressViewStop{[timeinvalidate];}-(void)progressViewGoOnRunning-(void)changeProgressView{theTimeHaveRun+=1.0;if(theTimeHaveRun>allTime){[timeinvalidate];}else{[selfsetProgress:theTimeHaveRun/allTime];}inti=(int)theTimeHaveRun/60;intj=(int)theTimeHaveRun%60;curTime.text=[NSStringstringWithFormat:@"%02d:%02d",i,j];}其中init方法是自動(dòng)生本錢身的元素,在此類中包含了進(jìn)度條開場(chǎng)的方法,進(jìn)度條暫停的方法,進(jìn)度條改變的方法,以及向其他的類傳輸數(shù)據(jù)的方法,例如傳輸播放了多長(zhǎng)的時(shí)間等等。歌詞的同步顯示有了以上功能,對(duì)歌詞的顯示以上一個(gè)必不可少的功能。即是以“時(shí)間+歌詞〞的格式存儲(chǔ)。那么歌詞的顯示形式主要是通過播放的時(shí)間與歌詞顯示的時(shí)間相比照,如果一致則顯示。因此,通過將歌詞和時(shí)間分別用兩個(gè)數(shù)組裝入,當(dāng)正在播放的時(shí)間與數(shù)組中某個(gè)時(shí)間相對(duì)應(yīng)的時(shí)侯,顯示出當(dāng)前的歌詞。界面上的顯示方式主要是通過UILable來顯示的。有的人不喜歡一句一句的看歌詞,想看更多的歌詞,那么就參加了全屏歌詞的顯示。全屏顯示的歌詞采用的是將所有的歌詞裝入可變字符串,并對(duì)每一句添加分隔符,裝入U(xiǎn)ItextView中,通過正在播放時(shí)間與歌詞的時(shí)間比照,來調(diào)整UItextView內(nèi)容的高度。而textview具有著滑動(dòng)的動(dòng)畫效果,使得整個(gè)歌詞上移的效果更加平滑代碼如下-(id)init{if(self==[superinit]){musicLicArray=[[NSMutableArrayalloc]initWithCapacity:0];totalLicArray=[[NSMutableArrayalloc]initWithCapacity:0];getAllOfMusicLrc=[[NSMutableArrayalloc]initWithCapacity:0];lineOfMusicLrc=0;}returnself;}-(void)getTheMusicLicStr:(NSString*)str{musicLicArray=[NSMutableArrayarrayWithArray:[strcomponentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@"[\n"]]];[musicLicArrayremoveObject:@""];for(NSString*stringinmusicLicArray){NSMutableArray*son=[[NSMutableArrayalloc]initWithCapacity:0];NSArray*arr=[stringcomponentsSeparatedByString:@"]"];NSArray*num=[[arrobjectAtIndex:0]componentsSeparatedByCharactersInSet:[NSCharacterSetcharacterSetWithCharactersInString:@":."]];CGFloatnu=[[numobjectAtIndex:0]integerValue]*6000+[[numobjectAtIndex:1]integerValue]*60+[[numobjectAtIndex:2]integerValue];NSString*number=[NSStringstringWithFormat:@"%.0f",nu];//[sonsetObject:[arrobjectAtIndex:1]forKey:number];[sonaddObject:number];[sonaddObject:[arrobjectAtIndex:1]];[totalLicArrayaddObject:son];}for(inti=0;i<[totalLicArraycount];i++){[getAllOfMusicLrcaddObject:[[totalLicArrayobjectAtIndex:i]objectAtIndex:1]];}}-(NSString*)getTheTimeOfMusic:(double)time{doubledoi=time*100;for(inti=0;i<[totalLicArraycount];i++){if(doi>=[[[totalLicArrayobjectAtIndex:i]objectAtIndex:0]doubleValue]&&doi<[[[totalLicArrayobjectAtIndex:i+1]objectAtIndex:0]doubleValue]){lineOfMusicLrc=i;return[[totalLicArrayobjectAtIndex:i]objectAtIndex:1];}}returnnil;}-(NSMutableArray*)getTheTotilOfMusicLrc{returngetAllOfMusicLrc;}-(NSInteger)getTheNmuberOfMusicLrc{returnlineOfMusicLrc;}本段代碼的運(yùn)行過程是,在歌曲開場(chǎng)進(jìn)展播放后,將播放的歌曲名傳給此類,此類從自己相應(yīng)的地方得到全部的歌詞。歌詞是以lrc格式存儲(chǔ)起來的,歌詞類得到全部歌詞后,根據(jù)自己的相應(yīng)方法,將全部的歌詞分成一句句的顯示在相應(yīng)的UITableView上。其中將全部歌詞變成一句句的方法是getTheMusicLicStr。此方法根據(jù)得到的歌詞格式進(jìn)展分割字符串,并將每一句以字符串的形式存儲(chǔ)到totalLicArray數(shù)組中。播放列表功能重要代碼如下:-(void)downLoadFromUrl:(NSURL*)url{myData=[[NSMutableDataalloc]init];NSURLRequest*request=[NSURLRequestrequestWithURL:url];myConnection=[[NSURLConnectionalloc]initWithRequest:requestdelegate:self];}-(void)connection:(NSURLConnection*)connectiondidReceiveData:(NSData*)data{[myDataappendData:data];}-(void)connection:(NSURLConnection*)connectiondidReceiveResponse:(NSURLResponse*)response{[myDatasetLength:0];}-(void)connectionDidFinishLoading:(NSURLConnection*)connection{if([delegaterespondsToSelector:@selector(downLoadComplited:)]){[delegatedownLoadComplited:self];}}播放列表主要采用了表示圖:UITableView來進(jìn)展顯示。這樣可以更加直觀,更加方便的顯示數(shù)據(jù)??梢酝ㄟ^設(shè)置它的代理UITableViewDelegate。實(shí)現(xiàn)的主要形式是:設(shè)置tableView的組件為1個(gè):numberOfSectionsInTableView:,設(shè)置行數(shù):numberofRowsInSection:,設(shè)置每行的內(nèi)容:cellForRowAtIndexPath。當(dāng)點(diǎn)擊的時(shí)侯會(huì)出發(fā)didselect事件,實(shí)現(xiàn)歌曲的播放。搜索功能網(wǎng)絡(luò)歌曲的搜索對(duì)于快速查找到自己想找的歌曲是十分有必要的。這里選擇的歌曲搜索庫是來至于網(wǎng)絡(luò)的。比方我們選擇一首叫滴答的歌曲。只需要使用ASIRequest來請(qǐng)求接口:://mp3.sogou/music.so?query=%B5%CE%B4%F0&class=1&st=&ac=1&pf=&_asf=mp3.sogou&_ast=1338472690&p=&w=&w=02009900&sut=3384&sst0=滴答。這就是搜狗的一個(gè)搜索頁面,通過它來獲取需要的歌曲信息。對(duì)于獲取到的字符串信息,可以通過UItableview來顯示。4.3存儲(chǔ)操作實(shí)現(xiàn)實(shí)體聯(lián)系模型主要是由實(shí)體、屬性以及實(shí)體之間的聯(lián)系組成[12]。通過對(duì)現(xiàn)實(shí)世界的概念模型的抽象,確立實(shí)體為歌曲、歌詞、用戶。根據(jù)音樂播放器的功能需求的分析結(jié)果,得出數(shù)據(jù)庫的E-R圖5-5如下所示:根據(jù)數(shù)據(jù)字典中的數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)流、處理邏輯、實(shí)體的屬性及以上數(shù)據(jù)庫設(shè)計(jì)中的概念構(gòu)造設(shè)計(jì)模型,建設(shè)相關(guān)表進(jìn)而得到數(shù)據(jù)庫的邏輯構(gòu)造設(shè)計(jì),即數(shù)據(jù)庫表。完畢語在經(jīng)過為期兩個(gè)月的畢業(yè)設(shè)計(jì)后,基于iOS的音樂播放器的功能得以實(shí)現(xiàn)。在開發(fā)之初就應(yīng)該想好總體框架構(gòu)造以及假設(shè)何進(jìn)展每一步的操作。開發(fā)者需要有清晰地邏輯思路并以科學(xué)的方法來開發(fā)應(yīng)用。本設(shè)計(jì)的題目為“基于iOS的音樂播放器的設(shè)計(jì)與實(shí)現(xiàn)〞。音樂播放器設(shè)計(jì)的主要內(nèi)容是進(jìn)展音樂的播放、下載等功能模塊的實(shí)現(xiàn)上。因此為能夠很好的實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)目標(biāo),突出音樂播放器所需實(shí)現(xiàn)功能,在開發(fā)過程中,由于自己開場(chǎng)沒有思考全面導(dǎo)致后來開發(fā)程序的過程中出現(xiàn)了一些偏差,以至于使自己引入了許多的變量來標(biāo)志這些數(shù)組、UItableView。本人開發(fā)的這款音樂播放器的特點(diǎn)是幾乎所有的操作都在一個(gè)視圖控制器中進(jìn)展,而UItableView的顯示、選擇也只能都在這一個(gè)視圖中進(jìn)展。使每一個(gè)產(chǎn)生的UItableView都只能運(yùn)行這個(gè)控制器中的唯一的顯示、選擇方法。在開發(fā)到最后發(fā)現(xiàn)自己在這控制器中增加變量的方法,很是繁瑣,懊悔開場(chǎng)時(shí)為何不將UItalbeView單獨(dú)寫成一個(gè)類,在類中添加他自己的標(biāo)志變量。這程序中所有的UItableView,他們具有不同的關(guān)系。他們之間的關(guān)系,在運(yùn)行程序的過程中與哪個(gè)引導(dǎo)出了哪個(gè),以便程序可以按照原路返回。由于自己開發(fā)經(jīng)歷缺乏知識(shí)有限,在開發(fā)過程中出現(xiàn)了許多冗余代碼。在設(shè)計(jì)中同樣遇到很多之前調(diào)試系統(tǒng)所沒有遇到過的異常、錯(cuò)誤信息。通過這次設(shè)計(jì)本人得到的啟示是在開發(fā)過程中要有清晰地設(shè)計(jì)思路,盡量簡(jiǎn)化設(shè)計(jì)。同時(shí)通過這次的設(shè)計(jì)使自己更好地了解到在知識(shí)方面的缺乏,明確今后需要努力的方向。中國地質(zhì)大學(xué)長(zhǎng)城學(xué)院本科畢業(yè)論文外文資料翻譯系別:管理科學(xué)與工程系專業(yè):信息管理與信息系統(tǒng)姓名:學(xué)號(hào):2016年3月7日外文資料翻譯譯文一種新的網(wǎng)絡(luò)應(yīng)用程序開發(fā)框架——MVC摘要:MVC(Model/View/Controller)的設(shè)計(jì)模式出現(xiàn)在在Smalltalk-80,并在軟件的設(shè)計(jì)中廣泛應(yīng)用。本文介紹一種基于MVC框架的的新網(wǎng)絡(luò)應(yīng)用程序。這種框架把實(shí)施邏輯與表現(xiàn)形式獨(dú)立開來。它也提高了系統(tǒng)的可維護(hù)性,可擴(kuò)展性以及使用模塊數(shù)據(jù)庫備案、模板數(shù)據(jù)庫,通訊對(duì)象和緩沖隊(duì)列的性能。關(guān)鍵詞:MVC、設(shè)計(jì)模式、網(wǎng)絡(luò)應(yīng)用程序1.簡(jiǎn)介網(wǎng)絡(luò)應(yīng)用系統(tǒng)是一個(gè)基于B(rowser)/S(erver)模型應(yīng)用系統(tǒng)。它利用多種動(dòng)態(tài)網(wǎng)頁開發(fā)技術(shù)。目前,軟件設(shè)計(jì)的主題之一是網(wǎng)絡(luò)應(yīng)用開發(fā)模式和工具的。它們直接影響系統(tǒng)的幾個(gè)關(guān)鍵因素,比方可維護(hù)性、可擴(kuò)展性、穩(wěn)定性和安全性。本文中,基于MVC[1]的網(wǎng)絡(luò)應(yīng)用程序的設(shè)計(jì)模式是為解決這兩類因素——擴(kuò)展性和可維護(hù)性這些不易處理的問題。把MVC設(shè)計(jì)模式引入網(wǎng)絡(luò)應(yīng)用程序開發(fā),執(zhí)行邏輯可以獨(dú)立于系統(tǒng)的表現(xiàn)形式。MVC由三種對(duì)象組成。1)模型:是應(yīng)用對(duì)象,2)視圖:是它的屏幕的顯示,3)控制器:定義用戶界面并對(duì)輸入的信息做出響應(yīng)。在出現(xiàn)MVC之前,用戶界面的設(shè)計(jì)傾向于把這些東西做在一起。然而,MVC獨(dú)立了它們,增加系統(tǒng)的靈活性和可重用性。MVC把視圖和模型獨(dú)立開來,在它們之間建設(shè)了“subscribe/notify〞協(xié)議。一個(gè)視圖必須確保其正確反映模型的狀態(tài)。每當(dāng)模型的數(shù)據(jù)發(fā)生改變,視圖會(huì)得到相應(yīng)的通知。作為回應(yīng),每個(gè)視圖都會(huì)有更新自身的時(shí)機(jī)。這個(gè)方法可以讓你附上一個(gè)模型的多個(gè)視圖以便提供不同的報(bào)告。你也可以不改變?cè)P屯瑫r(shí)創(chuàng)立新的視圖。2.背景和存在的問題雖然MVC的設(shè)計(jì)模式已經(jīng)在smalltalk-80中提出了,并廣泛應(yīng)用于軟件設(shè)計(jì),介紹它到網(wǎng)頁應(yīng)用程序開發(fā)卻仍很困難的。主要由于以下兩個(gè)因素:1)首先,很難獨(dú)立來自O(shè)C的編程語言。早期的CGI程序使用字符串輸出創(chuàng)造了HTML內(nèi)容。默認(rèn)的,將HTML文本分成幾份,然后把他們嵌入到CGI程序中。腳本語言出現(xiàn)后,變成了腳本語言編寫的程序嵌入到HTML文本中。然而,這兩種方法有一個(gè)共同的缺乏,使他們不能完全獨(dú)立于HTML文本。因此,這兩種方法使采用MVC別離三層模式十分難以實(shí)現(xiàn)。2)第二,腳本語言的功能太弱。他們?nèi)狈σ恍┍匾募夹g(shù)支持來采用MVC的設(shè)計(jì)模式,如消息機(jī)制和事件回應(yīng)機(jī)制。直到Model2版,這種情況并沒有受到任何改善。依靠強(qiáng)大的OC語言功能,Model2[4]某種程度上實(shí)行MVC設(shè)計(jì)理念。圖1顯示了MVC的機(jī)制:?模型(數(shù)據(jù)層):它是封裝到企業(yè)JavaBean。?視圖(表示層):view負(fù)責(zé)的網(wǎng)頁方式,如報(bào)告的格式,分頁等。?控制器(控制層):Servlet受到網(wǎng)頁上的用戶的輸入并執(zhí)行有關(guān)的操作(呼叫相應(yīng)的EJB組件),給出了相關(guān)視圖,所以會(huì)呈現(xiàn)這些結(jié)果。Model2機(jī)制主要滿足了開發(fā)商對(duì)要求Web應(yīng)用邏輯和用戶界面獨(dú)立的需求。但制仍然存在某些限,例如,盡管Model2已經(jīng)實(shí)施采用MVC設(shè)計(jì)模式的根本理念,三個(gè)層次之間的相互關(guān)系(Servlet,JavaBean/EJB)仍然封閉。特別是,就Servlet當(dāng)控制器,不僅控制選擇同時(shí)響應(yīng)模型的模塊,還負(fù)責(zé)對(duì)處理JSP轉(zhuǎn)移數(shù)據(jù)提供模塊。因?yàn)檫@一過程,Servlet本身已實(shí)現(xiàn)非常復(fù)雜的執(zhí)行邏輯,對(duì)于體系的開展和維護(hù)這是正是一個(gè)棘手的問題。因此,在下面的網(wǎng)絡(luò)應(yīng)用系統(tǒng)框架,我們會(huì)進(jìn)一步劃分出功能的控制器。3.解決方案圖2中顯示,這一系統(tǒng)框架包含三個(gè)內(nèi)核控制對(duì)象/類(UIViewController,ModelCenter,andLPM(LogicalPageModule)Center)和它們的核心數(shù)據(jù)庫(systemdescriptiondataba
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 習(xí)作:寫信(教學(xué)設(shè)計(jì))-2024-2025學(xué)年語文四年級(jí)上冊(cè)統(tǒng)編版
- 內(nèi)蒙古開魯縣高中生物 第四章 細(xì)胞的物質(zhì)輸入和輸出 4.1 物質(zhì)跨膜運(yùn)輸教學(xué)設(shè)計(jì) 新人教版必修1
- 五年級(jí)下冊(cè)英語教案-Unit 3 Review |冀教版(三起)
- 九年級(jí)歷史下冊(cè) 第3課 凡爾賽-華盛頓體系的建立教學(xué)設(shè)計(jì) 岳麓版
- 人教部編版八年級(jí)下冊(cè)茅屋為秋風(fēng)所破歌教學(xué)設(shè)計(jì)及反思
- 安全生產(chǎn)環(huán)保年度培訓(xùn)
- 大疆無人機(jī)培訓(xùn)內(nèi)容
- 人教部編版七年級(jí)歷史上第14課 溝通中外文明的“絲綢之路”教學(xué)設(shè)計(jì)
- 人教部編版三年級(jí)上冊(cè)8 賣火柴的小女孩教學(xué)設(shè)計(jì)及反思
- 2024內(nèi)蒙古呼倫貝爾經(jīng)濟(jì)技術(shù)開發(fā)區(qū)城市建設(shè)投資集團(tuán)有限責(zé)任公司公開招聘8人筆試參考題庫附帶答案詳解
- 綠化養(yǎng)護(hù)報(bào)價(jià)及方案
- 2025年中移鐵通限公司公開招聘工作人員100名高頻重點(diǎn)提升(共500題)附帶答案詳解
- 外墻保溫及涂料施工組織設(shè)計(jì)方案
- 移植排斥反應(yīng)早期診斷-洞察分析
- 電力系統(tǒng)繼電保護(hù)知到智慧樹章節(jié)測(cè)試課后答案2024年秋福建水利電力職業(yè)技術(shù)學(xué)院
- IATF16949基礎(chǔ)知識(shí)培訓(xùn)教材
- 酒店服務(wù)流程規(guī)范化手冊(cè)
- 消化道疾病護(hù)理
- 2024年視角下的地球形狀教案創(chuàng)新探討
- 2023年溫州市服裝制版師職業(yè)技能大賽技術(shù)文件
- 2024-2030年中國質(zhì)子治療儀產(chǎn)業(yè)現(xiàn)狀趨勢(shì)及應(yīng)用前景預(yù)測(cè)研究報(bào)告
評(píng)論
0/150
提交評(píng)論