當(dāng)前位置首頁 > 計(jì)算機(jī) > 架構(gòu)及軟件工程
搜柄,搜必應(yīng)! 快速導(dǎo)航 | 使用教程

軟件工程導(dǎo)論class13面向?qū)ο蠓椒▽W(xué)引論

文檔格式:PPT| 41 頁|大小 632.50KB|積分 9.9|2024-12-11 發(fā)布|文檔ID:253315614
第1頁
第2頁
第3頁
下載文檔到電腦,查找使用更方便 還剩頁未讀,繼續(xù)閱讀>>
1 / 41
此文檔下載收益歸作者所有 下載文檔
  • 版權(quán)提示
  • 文本預(yù)覽
  • 常見問題
  • 單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,,,單擊此處編輯母版標(biāo)題樣式,,單擊此處編輯母版文本樣式,,第二級,,第三級,,第四級,,第五級,,,,*,軟件工程導(dǎo)論 第,13,課,第,9,章 面向?qū)ο蠓椒▽W(xué)引論,發(fā)展概述,面向?qū)ο蟛⒎鞘且粋€(gè)新的概念,實(shí)際上它已有,30,多年的歷史尋其根源可追溯到,60,年代的挪威,當(dāng)時(shí)挪威計(jì)算中心的,Kristen Nygaard,和,Ole-Johan Dahl,開發(fā)了一種稱作,Simula67,的語言Simula67,首次引入了類、協(xié)同程序和子類的概念,這很象今天的面向?qū)ο笳Z言70,年代中期,,Xerox Palo Alto,研究中心的研究人員設(shè)計(jì)了,Smalltalk,語言,該語言的每個(gè)元素都被當(dāng)作一個(gè)對象來實(shí)現(xiàn),其程序設(shè)計(jì)環(huán)境及相關(guān)的各個(gè)方面都是面向?qū)ο蟮牡?,面向?qū)ο蟮耐茝V很慢例如:,Samlltalk,的成果直到,1981,年,8,月因,Byte,雜志的介紹才為外界所知,許多軟件開發(fā)人員了解,Samlltalk,時(shí),都把它看作是一個(gè)窗口系統(tǒng),而不是程序設(shè)計(jì)技術(shù)的一次革命80,年代,,C,成為很受歡迎的程序設(shè)計(jì)語言,它不僅可用在微機(jī)上,還可用在多種結(jié)構(gòu)的系統(tǒng)和環(huán)境中。

    80,年代早期,,AT&T,貝爾實(shí)驗(yàn)室的,Bjarne Stroustrup,把,C,語言擴(kuò)展為支持面向?qū)ο蟪绦蛟O(shè)計(jì)的,C++,在,C++,中,程序員可以在其熟悉的語言環(huán)境下學(xué)習(xí)掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),而不必去探究一種新的語言和環(huán)境自,90,年代以來,軟件與硬件之間的差距至少有兩代處理器之多,并且這種差距還在增大當(dāng)軟件系統(tǒng)變得更加復(fù)雜時(shí),常規(guī)軟件工具、技術(shù)和概念已不足以應(yīng)付,從而使軟件開發(fā)者陷入了困境但面向?qū)ο蟮姆椒軌蚩刂栖浖膹?fù)雜性,從而促進(jìn)了面向?qū)ο蟮陌l(fā)展,掀起了一股“面向?qū)ο蟆睙?.1.1,面向?qū)ο蠓椒▽W(xué)的要點(diǎn),OOM,的出發(fā)點(diǎn)和基本原則:,,盡可能,模擬人類習(xí)慣的思維方式,,使描述問題的,問題空間,與實(shí)現(xiàn)解法的,解空間,在結(jié)構(gòu)上盡可能,一致,面向?qū)ο蠓椒ㄊ且环N以,數(shù)據(jù)和信息,為主線,把數(shù)據(jù)和處理相結(jié)合的方法:,,面向?qū)ο蠓椒?把對象作為由數(shù)據(jù)及可以施加在這些數(shù)據(jù)上的操作所構(gòu)成的統(tǒng)一體,9.1.1,面向?qū)ο蠓椒▽W(xué)的要點(diǎn),解空間與問題空間的,“,語義斷層,”,,對象,,解空間對象和問題空間對象,,解空間對象的呆板,,問題空間對象,具有,靜態(tài)屬性,又具有,動(dòng)態(tài)行為,,OOM,的,4,個(gè)要素,(1),對象,(object),:世界由對象組成。

    2),類,(class),:具有相同屬性和操作的對象可劃分為類; 單個(gè)對象可視為某一類的實(shí)例,(instance),,(3),繼承,(inheritance),:類可分層下層子類與上層父類有相同特征,稱為繼承,,(4),消息,(message),:對象間只能通過發(fā)送消息進(jìn)行聯(lián)系, 外界不能處理對象的內(nèi)部數(shù)據(jù),只能通過消息,,基于對象(,objects,-,based,)方法,,使用對象,-,消息,,基于類(,class-based,)方法,,使用類,-,對象,-,消息,,面向?qū)ο螅?objects-based,)方法,,使用類,-,對象,-,消息,-,繼承,,9.1.2,面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn),與人類習(xí)慣的思維方式一致,,穩(wěn)定性好,,可重用性好,,可維護(hù)性好,,注意,:,OOM,并不是減少了開發(fā)時(shí)間,而是通過提高可重用性、可維護(hù)性,進(jìn)行擴(kuò)充和修改的容易程度等,從長遠(yuǎn)角度改進(jìn)了軟件的質(zhì)量1,與人類習(xí)慣的思維方式一致,傳統(tǒng)方法,:面向過程設(shè)計(jì),以計(jì)算為核心,數(shù)據(jù)與操作分離,不易理解②,OOM,:以,object,為核心,,,基本原理,:使用現(xiàn)實(shí)世界的概念抽象地思考問題從而自然地解決問題,強(qiáng)調(diào)對現(xiàn)實(shí)概念的模擬而不強(qiáng)調(diào)算法。

    面向?qū)ο蠓椒▽W(xué)的,基本原則,,是按照人們習(xí)慣的思維方式建立問題域的模型,開發(fā)出盡可 能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)Class,:由特殊到一般的歸納,(induction),,Inheritance,:由一般到特殊的演繹,(deduction),,2,穩(wěn)定性好,傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定OOM,:以,object,模擬實(shí)體,以對象間的聯(lián)系刻畫實(shí)體間的聯(lián)系需求變化不會(huì)引起結(jié)構(gòu)的整體變化,只需做一些局部修改因?yàn)閷?shí)體相對穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定3,可重用性好,傳統(tǒng)方法:通過建立標(biāo)準(zhǔn)函數(shù)庫來重用軟構(gòu)件但標(biāo) 準(zhǔn)函數(shù)缺少必要的,“,柔性,”,,難以適應(yīng)不同場合的不同需要OOM,:封裝性,信息隱蔽,獨(dú)立性,,靈活性:一個(gè),class,所有的,instances,都可重用它的代碼;由派生出的新的,class,可重用其父類的代碼,并且可以修改、擴(kuò)充而不影響其父類的使用4,較易開發(fā)大型軟件產(chǎn)品,構(gòu)成軟件系統(tǒng)的每個(gè)對象就象一個(gè)微型程序,有自己的數(shù)據(jù)、操作、功能、用途把一個(gè)大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品處理,降低了技術(shù)難度便于管理,5,可維護(hù)性好,傳統(tǒng)方法:可維護(hù)性是最令人頭痛的問題OOM,:從以下幾方面改善了可維護(hù)性,,(1),穩(wěn)定性好,:需求的變化不牽動(dòng)全局,只需局部修改;,,(2),容易修改,:,Class,獨(dú)立性強(qiáng):只要修改不涉及,class,的對外接口,則內(nèi)部修改完全不影響外部調(diào)用;,,繼承,(Inheritance),和多態(tài)性,(polymorphism),使其易被修改和擴(kuò)充;,,(3),容易理解、容易測試、調(diào)試,5,可維護(hù)性好,(3),容易理解,,符合人的思維習(xí)慣,軟件系統(tǒng)結(jié)構(gòu)與問題空間的結(jié)構(gòu)基本一致,便于理解,,派生類只要理解新生部分,理解量少,,(4),容易測試、調(diào)試,,調(diào)試只對新派生類進(jìn)行,類獨(dú)立性強(qiáng),只對類內(nèi)部進(jìn)行調(diào)試,比較容易。

    9.2,面向?qū)ο蟮母拍?9.2.1,對象,,在應(yīng)用領(lǐng)域中,有意義的、與所要解決的問題有關(guān)系的,任何事物,都可以作為對象,,對象既可以是具體的物理實(shí)體的抽象,也可以是人為的 概念,或者是任何有明確邊界和意義的東西例如,一名職工、一家公司、一個(gè)窗口、一座圖書館、一本圖書、貸款、借款等等,都可以作為一個(gè)對象9.2.1,對象,由于客觀世界中的實(shí)體通常都具有靜態(tài)的屬性,又具有動(dòng)態(tài)的行為,,面向?qū)ο蠓椒▽W(xué)中,的對象是,由描述該對象屬性數(shù)據(jù)以及可以對這些數(shù)據(jù)施加的所有操作封裝在一起的統(tǒng)一體從形式化角度看:,,對象,::=,,其中:,ID,是對象的標(biāo)識(shí)或名字,,MS,是對象中的數(shù)據(jù)集合,,DS,是對象中的數(shù)據(jù)結(jié)構(gòu),,MI,是對象受理的消息名集合1,對象的形象表示,對象很像錄音機(jī),,,2,對象的定義,從不同的角度給對象不同的定義,,定義,1,:對象是具有相同狀態(tài)的一組操作的集合定義,2,:對象是對問題域中某個(gè)東西的抽象,這種抽象反映了系統(tǒng)保存有關(guān)這個(gè)東西的信息或與它交互的 能力,,,定義,3,:對象,::=,,依次表示名字操作集合數(shù)據(jù)結(jié)構(gòu) 對外接口,,,,3,對象特點(diǎn),①,以數(shù)據(jù)為中心,,不設(shè)與數(shù)據(jù)無關(guān)的操作;,,②,Object,主動(dòng)處理而不被動(dòng)地等待被處理,外部只能通過,message,請求操作;,,③,具有封裝性,:外部操作時(shí),無須知道該,object,內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;,,④,具有并行性,:不同,object,各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過傳遞,message,完成通信;,,⑤,模塊獨(dú)立性好,:內(nèi)聚強(qiáng)、耦合松,,,,,其他概念,1,類,:是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。

    例 人、圓,,是對象的抽象,是一種對象模型,,2,,實(shí)例,:是由某個(gè)特定的類所描述的一個(gè)具體對象類是建立對象時(shí)使用的模板,用這個(gè)模板建立的一個(gè)具體對象,就是類的實(shí)例對象既可以是一個(gè)具體的對象,也可以泛指一般的對象;而實(shí)例只能是一個(gè)具體的對象,3,消息,:是要求某個(gè)對象執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明由,3,部分組成:接受消息的對象、消息選擇符,(,名,),、零個(gè)和多個(gè)變元4,方法,:是對象所能執(zhí)行的操作;即類中所定義的服務(wù)方法描述了對象執(zhí)行操作的算法,響應(yīng)消息的方法5,,屬性,:是類中所定義的數(shù)據(jù),是對客觀實(shí)體所具有的性質(zhì)的抽象,,,,,6,封裝,:是把某個(gè)事務(wù)包起來,使外界不知道該事物的具體內(nèi)容封裝的條件:,,(1),有一個(gè)清晰的邊界,,(2),有確定的接口接口就是對象可以接受的消息3),受保護(hù)的內(nèi)部實(shí)現(xiàn),繼承繼 繼承繼 7 繼承,,繼承是子類自動(dòng)地共享基類中定義的數(shù)據(jù)和方法的機(jī)制,其特性是:一個(gè)類的上層可以有父類,下層可以有子類繼承具有傳遞性,如果類,C,繼承類,B,,類,B,繼承類,A,,則類,C,繼承類,A,當(dāng)類等級為樹形結(jié)構(gòu)時(shí),類的繼承是單繼承;當(dāng)允許一個(gè)類有多個(gè)父親時(shí),類的繼承是多重繼承。

    繼承性的優(yōu)點(diǎn),,共享程序代碼和數(shù)據(jù)結(jié)構(gòu),大大減少程序中的冗余信息,提高軟件的可重用性便于軟件修改維護(hù)當(dāng)需要擴(kuò)充原有的功能時(shí),派生類的方法可以調(diào)用其基類的方法,并在此基礎(chǔ)上增加必要的程序代碼;當(dāng)需要完全改變原有的算法時(shí),可以在派生類中實(shí)現(xiàn)一個(gè)與基類方法同名而算法不同的方法;當(dāng)需要增加新的功能時(shí),可以在派生類中實(shí)現(xiàn)一個(gè)新的方法站在巨人的肩頭上”用戶在開發(fā)新系統(tǒng)時(shí)不必從零開始,可以繼承原有相似功能或者從類庫中選取需要的類,再派生新類8 多態(tài)性,,多態(tài)性是指,子類對象可以像父類對象,那樣使用,同樣的消息既可以發(fā)送給父類對象也可以發(fā)送給子類對象,在,C++,語言中,多態(tài)性是通過虛函數(shù)來實(shí)現(xiàn)的虛函數(shù)機(jī)制使得程序員能在一個(gè)類等級中使用相同函數(shù)的 多個(gè)不同版本,稱為,動(dòng)態(tài)聯(lián)遍,,也叫滯后聯(lián)編多態(tài)性機(jī)制不僅增加了面向?qū)ο筌浖撵`活性,進(jìn)一 步減少了信息冗余,而且顯著提高了軟件可重用性和 可擴(kuò)充性9 重載,,函數(shù)重載是指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同 的函數(shù)可以使用相同的函數(shù)名字,,運(yùn)算符重載是指同一個(gè)運(yùn)算符可以施加與不同類型的 操作數(shù)上面,當(dāng)參數(shù)類型不同或被操作數(shù)的類型不同 時(shí),實(shí)現(xiàn)函數(shù)的算法或運(yùn)算符的語義是不相同的,,在,C++,語言中函數(shù)重載是通過靜態(tài)聯(lián)編(也叫先前聯(lián)編)實(shí)現(xiàn)的,也就是在編譯時(shí)根據(jù)函數(shù)變元的個(gè)數(shù)和 類型,決定到底使用函數(shù)的哪個(gè)實(shí)現(xiàn)代碼;對于重載 的運(yùn)算符,同樣是在編譯時(shí)根據(jù)被操作數(shù)的類型,決 定使用該運(yùn)算符的哪種語義,,,,,,,,9.3,面向?qū)ο蠼?為了更好地理解問題,采用建立模型的方法,,模型是為了理解事物而對事物作的一種抽象,是對事物的一種無歧義的書面描述。

    模型是一種,把知識(shí)規(guī)范地表示出來的,工具,,,,用面向?qū)ο蟮姆椒ń⒛P?,9.3,面向?qū)ο蠼?用面向?qū)ο蠓椒ㄩ_發(fā)軟件,通常要建立,3,種形式的模型:,,描述系統(tǒng),數(shù)據(jù),結(jié)構(gòu)的,對象模型,,描述系統(tǒng),控制,結(jié)構(gòu)的,動(dòng)態(tài)模型,,描述系統(tǒng),功能,的,功能模型,,一個(gè)典型的軟件系統(tǒng)使用,數(shù)據(jù)結(jié)構(gòu),(對象模型),,執(zhí)行操作,(動(dòng)態(tài)模型),并完成數(shù)據(jù)值的,變化,(功能模型),,,,9.4,對象模型,關(guān)于建模語言,,模型通常由一組,圖示符號,和組成這些符號的,規(guī)則,組成, 定義和描述問題域的術(shù)語和概念,,為建立模型,需要用適當(dāng)?shù)?語言,來表達(dá)模型,,建模語言由,記號,(即模型中使用的符號)和使用這些記號的,規(guī)則,(語法、語義)組成,,,,,,,,,,9.4.1,類圖的基本符號,類圖描述類、類與類之間的,靜態(tài)關(guān)系,,是一種靜態(tài)模型,是創(chuàng)建其他,UML,圖的基礎(chǔ),,? 一個(gè)系統(tǒng)由多張類圖來描述,一個(gè)類也可以出現(xiàn)在幾張類圖中,,,,,,,,1,定義類,UML,中類的圖形符號為長方形,用兩條橫線把長方形分成上、中、下,3,個(gè)區(qū)域(下面兩個(gè)區(qū)域可以省略),,為類命名時(shí)應(yīng)該遵守以下幾條,準(zhǔn)則,:,,(1),使用標(biāo)準(zhǔn)術(shù)語,,(2),使用具有確切含義的名詞,,(3),必要時(shí)用名詞短語作為名字,,,,,,,,2,定義屬性,UML,描述屬性的語法如下:,,可見性 屬性名:類型名,=,初值,{,性質(zhì)串,},,屬性的可見性(即可訪問性)通常有下述,3,種:,,–,公有的(,public,) (,+,),,–,私有的(,private,) (,-,),,–,保護(hù)的(,protected,)(,#,),,類型名表示該屬性的數(shù)據(jù)類型,它可以是基本數(shù)據(jù)類型,也可以是用戶自定義的類型,,用花括號括起來的性質(zhì)串明列出該屬性所有可能的取值,,例:,-,管理員:,String,=,“,未定”,,3,定義服務(wù),UML,描述操作的語法格式如下:,,可見性 操作名,(,參數(shù)表,),:返回值類型,{,性質(zhì)串,},,操作可見性的定義方法與屬性相同。

    參數(shù)表是用逗號分隔的形式參數(shù)的序列描述一個(gè)參數(shù)的語法如下:,,參數(shù)名:類型名=默認(rèn)值,,當(dāng)操作的調(diào)用者未提供實(shí)在參數(shù)時(shí),該參數(shù)就使用默認(rèn)值9.4.2,表示關(guān)系的符號,類與類之間通常有,關(guān)聯(lián)、泛化(繼承)、依賴,和,細(xì)化,等,4,種關(guān)系,,1,關(guān)聯(lián),,關(guān)聯(lián)表示兩個(gè)類的對象之間存在某種語義上的聯(lián)系,,,,,,9.4.2,表示關(guān)系的符號,普通關(guān)聯(lián):,,最常見的關(guān)聯(lián)關(guān)系,只要在類與類之間存在連接關(guān)系就可以用普通關(guān)聯(lián)表示例如,作家使用計(jì)算機(jī),我們就認(rèn)為在作家和計(jì)算機(jī)之間存在某種語義連接,因此在類圖中應(yīng)該在作家類和計(jì)算機(jī)類之間建立關(guān) 聯(lián)關(guān)系,,,,,,,,,黑三角表示關(guān)聯(lián)方向,,,(2),關(guān)聯(lián)的角色,在任何關(guān)聯(lián)中都會(huì)涉及到參與此關(guān)聯(lián)的對象所扮演的角色, 在某些情況下,顯式標(biāo)明角色,名有助于別人理解類圖,,例:一個(gè)人與另一個(gè)人結(jié)婚,必然一個(gè)人扮演丈夫的角色, 另一個(gè)人扮演妻子的角色如果沒有顯式標(biāo)出角色名,則意 味著用類名作為角色名。

    點(diǎn)擊閱讀更多內(nèi)容
    最新文檔
    傳統(tǒng)文化道德不是高懸的明月而是腳下的星光.pptx
    世界無煙日關(guān)注青少年成長健康無煙為成長護(hù)航.pptx
    五四青年節(jié)詩詞贊歌五四青年自強(qiáng)不息.pptx
    XX學(xué)校班主任培訓(xùn)用心管理慧做班主任.pptx
    拒絕熬夜健康養(yǎng)生規(guī)律作息遠(yuǎn)離亞健康.pptx
    兒童成長手冊時(shí)光里的童真印記.pptx
    幼兒園夏季傳染病預(yù)防指南預(yù)見夏天健康童行夏季傳染病預(yù)防科普.pptx
    高中生心理健康教育主題班會(huì)快樂學(xué)習(xí)高效學(xué)習(xí)正視壓力學(xué)會(huì)減壓.pptx
    員工職業(yè)道德與職業(yè)素養(yǎng)培訓(xùn)遵守職業(yè)道德提高職業(yè)修養(yǎng).pptx
    2025職業(yè)病防治法宣傳周健康守護(hù)職防同行.pptx
    XX幼兒園防災(zāi)減災(zāi)安全教育臨災(zāi)不亂安全童行學(xué)會(huì)保護(hù)自己.pptx
    在2025年縣教育工作大會(huì)暨高考備考工作推進(jìn)會(huì)上的講話發(fā)言材料.docx
    在2025年縣全面從嚴(yán)治黨和黨風(fēng)廉政會(huì)議上的講話發(fā)言材料.docx
    在2025年全市慶?!拔逡弧濒邉趧?dòng)模范表彰大會(huì)上的講話發(fā)言材料多篇.docx
    2025年稅務(wù)局青年代表在五四青年座談會(huì)上的發(fā)言材料3篇.docx
    在2025年市委全體會(huì)議上的主持講話發(fā)言材料.docx
    2025年黨風(fēng)廉政建設(shè)工作要點(diǎn)材料.docx
    在2025年全市青年干部慶祝五四青年節(jié)大會(huì)上的講話發(fā)言材料多篇.docx
    在入黨積極分子培訓(xùn)班上的講話發(fā)言材料.docx
    縣文旅局黨組書記在五一假期及夏季旅游安全生產(chǎn)工作部署會(huì)議上的講話發(fā)言材料.docx
    賣家[上傳人]:nuligan
    資質(zhì):實(shí)名認(rèn)證