ISE22信息系統(tǒng)開發(fā)之面向?qū)ο蟾拍頮第1頁(yè)
ISE22信息系統(tǒng)開發(fā)之面向?qū)ο蟾拍頮第2頁(yè)
ISE22信息系統(tǒng)開發(fā)之面向?qū)ο蟾拍頮第3頁(yè)
ISE22信息系統(tǒng)開發(fā)之面向?qū)ο蟾拍頮第4頁(yè)
ISE22信息系統(tǒng)開發(fā)之面向?qū)ο蟾拍頮第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、信息系統(tǒng)工程14 4 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?.2 4.2 對(duì)象和類對(duì)象和類4.3 4.3 消息和方法消息和方法4.4 4.4 對(duì)象接口對(duì)象接口繼承性繼承性4.6 4.6 封裝性封裝性4.7 4.7 多態(tài)性多態(tài)性信息系統(tǒng)工程24.1 起源在軟件開發(fā)過(guò)程中及使用后,使用者會(huì)不斷地提出各種更改要求。而結(jié)構(gòu)化方法開發(fā)的程序中:l這種修改往往是很困難的,而且還會(huì)因?yàn)橛?jì)劃或考慮不周,不但舊錯(cuò)誤沒有得到徹底改正,又引入了新的錯(cuò)誤;l另一方面,在結(jié)構(gòu)化程序開發(fā)中,代碼的重用率很低,使得程序員的效率并不高。為提高軟件系統(tǒng)的穩(wěn)定性、可修改性和可重用性,人們?cè)趯?shí)踐中逐漸創(chuàng)造出軟件工程的一種新途徑面向?qū)ο蠓椒?/p>

2、學(xué)。面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程3面向?qū)ο蠡靖拍?967年起源80年代才出現(xiàn)采用simula首創(chuàng)的對(duì)象、屬性、消息等編程模式趨于成熟smalltalkobjective cc+smalltalk-80c+simula oop的出現(xiàn)object-oriented programming (oop)object-oriented analysis&design (ooa&ood)信息系統(tǒng)工程4面向?qū)ο蠓椒ǖ某霭l(fā)點(diǎn)和基本原則是盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過(guò)程盡可能接近人類認(rèn)識(shí)世界、解決問(wèn)題的方法與過(guò)程。面向?qū)ο蟪绦騿T的觀點(diǎn):計(jì)算機(jī)程序結(jié)構(gòu)應(yīng)該與要解決的問(wèn)題一致,而不是與某種分析

3、或開發(fā)方法保持一致。l經(jīng)驗(yàn)表明,對(duì)任何軟件系統(tǒng)而言,其中最穩(wěn)定的成分往往是其相應(yīng)問(wèn)題域(problem domain)中的成分。面向?qū)ο蠡靖拍钍澜缡澜鐚?duì)象2對(duì)象1對(duì)象m對(duì)象n對(duì)象3信息系統(tǒng)工程5 面向?qū)ο蠓椒ň哂邢率鏊膫€(gè)要點(diǎn): (1)認(rèn)為客觀世界是由各種對(duì)象組成的,任何事物都是對(duì)象。l世界:學(xué)校、學(xué)生、教師、桌子、教學(xué)樓、書籍等等對(duì)象 (2)把所有對(duì)象都劃分成各種對(duì)象類(簡(jiǎn)稱為類),每個(gè)對(duì)象類都定義了一組數(shù)據(jù)和一組方法。l學(xué)生類:包含的對(duì)象有張三、李四等多個(gè)學(xué)生l學(xué)生類的數(shù)據(jù):姓名(name),性別(gender),年齡(age),籍貫(hometown)等l學(xué)生類的方法:getname()

4、,setname(),getage(),calculatemark()面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程6 (3)按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。 (4)對(duì)象彼此之間僅能通過(guò)傳遞消息互相聯(lián)系。面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程74 4 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?.1 4.1 起源起源4.3 4.3 消息和方法消息和方法4.4 4.4 對(duì)象接口對(duì)象接口繼承性繼承性4.6 4.6 封裝性封裝性4.7 4.7 多態(tài)性多態(tài)性信息系統(tǒng)工程84.2 對(duì)象和類某個(gè)信息系統(tǒng)所要處理的問(wèn)題涉及的領(lǐng)域(范圍)叫做問(wèn)題空間(問(wèn)題域),而對(duì)象是問(wèn)題空間

5、中與系統(tǒng)問(wèn)題處理相關(guān)的事物的抽象體。l不同視角的觀點(diǎn):l用戶對(duì)象相當(dāng)于現(xiàn)實(shí)世界的某類事物;l系統(tǒng)分析員對(duì)象是描述該事物的一組屬性數(shù)據(jù)和作用于這些屬性數(shù)據(jù)之上的操作方法。l一個(gè)對(duì)象是把事物的屬性和對(duì)屬性數(shù)據(jù)的操作方法結(jié)合而成的整體。面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程9對(duì)象表示真實(shí)的事物,它可以是視覺可見的東西或抽象概念,它既可以是主動(dòng)的、可以啟動(dòng)或控制過(guò)程的事物,也可以是被動(dòng)響應(yīng)服務(wù)請(qǐng)求的事物。 對(duì)象有三個(gè)特性:預(yù)定義行為、狀態(tài)和標(biāo)識(shí)。l預(yù)定義行為是對(duì)象初始時(shí)所定義的動(dòng)作序列,直觀地說(shuō),是對(duì)象定義的各種方法的集合。l一個(gè)對(duì)象可以有任意個(gè)屬性或域,對(duì)象的狀態(tài)和存儲(chǔ)在它的域中的值相對(duì)應(yīng)。l而標(biāo)識(shí)是對(duì)象的唯

6、一編號(hào),用來(lái)與其他對(duì)象相區(qū)別。面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程10學(xué)生對(duì)象張三,其數(shù)據(jù)包括(name,gender,age,grade)狀態(tài):l狀態(tài)1:(張三,男,18,大一)l狀態(tài)2:(張三,男,19,大二)l狀態(tài)3:(張三,男,20,大三)預(yù)定義行為: getname(),setname(),getage(),calculatemark()標(biāo)識(shí)一個(gè)獨(dú)有的引用:張三面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程11一個(gè)類定義了一組大體上相同的對(duì)象。一個(gè)類所包含的操作方法和屬性數(shù)據(jù)描述了一組對(duì)象的共同行為和屬性。 l如學(xué)生是一個(gè)類,學(xué)生丁三、李四是兩個(gè)對(duì)象,是學(xué)生類的實(shí)例。 每一個(gè)對(duì)象都屬于某個(gè)類。類不僅決定了對(duì)象

7、的類型,還決定它的域(屬性)和方法。l域和方法在類定義中表達(dá)出來(lái)。l創(chuàng)建一個(gè)新對(duì)象時(shí),與對(duì)象類型相對(duì)應(yīng)的類定義決定了對(duì)象的結(jié)構(gòu)和行為。 面向?qū)ο蠡靖拍铑?class)信息系統(tǒng)工程12一個(gè)類的上層可以有超類,下層可以有子類,形成一種層次結(jié)構(gòu),且在這種類層次結(jié)構(gòu)中,一個(gè)類可以有多個(gè)超類,也可以有多個(gè)子類。類和類之間的主要關(guān)系:l分類結(jié)構(gòu):l聚集結(jié)構(gòu):l關(guān)聯(lián)關(guān)系:面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程13 類的主要功能有三個(gè):l類定義了類型,即一組對(duì)象共有的屬性和方法;l類提供了它的類型的實(shí)現(xiàn),它定義了實(shí)例如何表示以及根據(jù)選定的表示方法如何實(shí)現(xiàn);l類提供了初始化實(shí)例的構(gòu)造器,構(gòu)造器可以用來(lái)創(chuàng)建和初始化新的實(shí)

8、例。 面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程14class student string name; int age; string grade; public student() age=0; public string getname() return name; public int getage() return age; 面向?qū)ο蠡靖拍?變量定義student amy;student richard;/變量初始化amy=new student();/方法調(diào)用int nowage=amy.getage();類student的構(gòu)造器信息系統(tǒng)工程154 4 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?.1 4.

9、1 起源起源4.2 4.2 對(duì)象和類對(duì)象和類4.4 4.4 對(duì)象接口對(duì)象接口繼承性繼承性4.6 4.6 封裝性封裝性4.7 4.7 多態(tài)性多態(tài)性信息系統(tǒng)工程16對(duì)象之間進(jìn)行通信的數(shù)據(jù)叫做消息。當(dāng)一個(gè)消息發(fā)送給某個(gè)對(duì)象時(shí),包含要求接收對(duì)象去執(zhí)行某些活動(dòng)的信息,接收到消息的對(duì)象對(duì)其進(jìn)行解釋,然后予以響應(yīng)。這種通信機(jī)制叫做消息傳遞。一個(gè)消息由下列三個(gè)元素組成:l消息名;l零個(gè)或多個(gè)參數(shù)列表,為接收對(duì)象提供數(shù)據(jù)信息;l對(duì)接收對(duì)象的引用。 面向?qū)ο蠡靖拍?.3 4.3 消息消息(message)(message)和方法和方法(method)(method)信息系統(tǒng)工程17public class st

10、udent private int age; public void setage(int newage) age=newage; public int getage() return age; 面向?qū)ο蠡靖拍顂tudent amy;amy =new student();amy.setage(20);定義了類student的對(duì)象amy接收對(duì)象消息名參數(shù)信息系統(tǒng)工程18方法就是與一個(gè)對(duì)象有關(guān)的過(guò)程,即實(shí)現(xiàn)某一操作的一段代碼。一個(gè)對(duì)象可以有任意數(shù)目的方法。當(dāng)對(duì)象收到一個(gè)消息時(shí),決定調(diào)用哪個(gè)方法來(lái)響應(yīng)消息的過(guò)程稱為方法綁定。方法綁定就是找到型構(gòu)(signature)和消息的元素相匹配的方法:l方法

11、名與消息名相匹配;l方法的參數(shù)表與消息的參數(shù)表在類型和數(shù)目上相匹配。執(zhí)行與消息對(duì)應(yīng)的預(yù)定義行為可能會(huì)產(chǎn)生三種結(jié)果: l返回一個(gè)值給消息發(fā)送者。l改變接收者的狀態(tài)。l改變作為參數(shù)傳給接收者的對(duì)象的狀態(tài)。 面向?qū)ο蠡靖拍钚畔⑾到y(tǒng)工程19面向?qū)ο蠡靖拍顚?duì)象student具有以下方法:getname()getage()setage()getmark(string grade)getmark(string grade,string course)方法綁定:student amy;amy.getage();amy.getmark(”first year”,”english”);定義了類student的

12、對(duì)象amy尋找型構(gòu)相同的方法getage()尋找型構(gòu)相同的方法getmark(string grade,string course)信息系統(tǒng)工程204 4 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?.1 4.1 起源起源4.2 4.2 對(duì)象和類對(duì)象和類繼承性繼承性4.6 4.6 封裝性封裝性4.7 4.7 多態(tài)性多態(tài)性信息系統(tǒng)工程21對(duì)象可響應(yīng)的消息是由對(duì)象接口決定的。l對(duì)象接口以一組操作方法的形式出現(xiàn);l每一個(gè)操作對(duì)應(yīng)于在響應(yīng)某個(gè)消息時(shí)對(duì)象所完成的預(yù)定義行為;l客戶通過(guò)對(duì)象接口來(lái)理解對(duì)象支持的各種行為,并根據(jù)接口來(lái)發(fā)送消息。 調(diào)用對(duì)象的操作方法是要遵守一定的規(guī)則,這些規(guī)則描述了如何使用對(duì)象的每一個(gè)操作。

13、 例如,當(dāng)一個(gè)person對(duì)象接收到帶有一個(gè)參數(shù)的setage()消息時(shí),規(guī)則要求這個(gè)參數(shù)必須是整型數(shù)值對(duì)象,下面的消息就違反了對(duì)象調(diào)用規(guī)則: p.setage(null);面向?qū)ο蠡靖拍?.4 對(duì)象接口(interface)信息系統(tǒng)工程22對(duì)象接口的分類:面向?qū)ο蠡靖拍罟薪涌冢憾x了一組可供任何對(duì)象發(fā)送的消息和調(diào)用的操作方法限制型接口:對(duì)象提供了僅供某些類型的客戶使用的限制型操作。 信息系統(tǒng)工程23class student private string name,nickname; private int age; private string grade; public stude

14、nt() age=0; public string getname() return name; public int getage() return age; public void setname(string newname) name=newname; setnickname(“nick”+newname); private void setnickname(string newname) nickname=newname; 信息系統(tǒng)工程244 4 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?.1 4.1 起源起源4.2 4.2 對(duì)象和類對(duì)象和類4.3 4.3 消息和方法消息和方法4.4 4.4 對(duì)

15、象接口對(duì)象接口4.6 4.6 封裝性封裝性4.7 4.7 多態(tài)性多態(tài)性信息系統(tǒng)工程25 繼承性是類層次結(jié)構(gòu)中的一個(gè)重要特點(diǎn),是超類和子類之間共享數(shù)據(jù)和操作方法的機(jī)制。 面向?qū)ο蠡靖拍罾^承部分 增加部分從a繼承ab4.5 繼承性(inheritance) 信息系統(tǒng)工程26面向?qū)ο蠡靖拍罾^承是軟件重用的一個(gè)基本機(jī)制。當(dāng)通過(guò)繼承定義一個(gè)新類時(shí),新類獲得了已存在類的屬性和行為。l新類稱為子類,而已存在類稱為超類或父類。l子類又可以是其他類的父類,這就形成了繼承層次結(jié)構(gòu)。rectangleellipseregionpointfigurelinesegmentcirclepoint,linesegme

16、nt,region的父類ellipse,rectangle,circle的父類類figure的子類信息系統(tǒng)工程27面向?qū)ο蠡靖拍?繼承有下面三種使用方式:l 子類定義新的屬性和方法作為對(duì)它所繼承的屬性和方法的補(bǔ)充。l 子類重新實(shí)現(xiàn)所繼承的一個(gè)或多個(gè)方法。被子類重定義的方法稱為被覆蓋了;也可以說(shuō)子類覆蓋了特定的方法。l 方法被覆蓋后,類的行為發(fā)生了變化:對(duì)同一個(gè)消息,子類和父類的實(shí)例調(diào)用不同的方法,產(chǎn)生不同的行為。l 子類實(shí)現(xiàn)一個(gè)或多個(gè)其父類聲明但沒有實(shí)現(xiàn)的方法。這種情況下,這個(gè)父類就是一個(gè)抽象類,而它聲明但沒有實(shí)現(xiàn)的方法稱為抽象方法。 信息系統(tǒng)工程28class student public

17、 student()age=0; string name;int age;string grade; public string getnamepublic string getname() return name;() return name; public int getage()return age; class middlestudent extends student string nicknamestring nickname; ; public string getname() return nicknamepublic string getname() return nickn

18、ame; 面向?qū)ο蠡靖拍?變量定義student amy; middlestudent richard;/變量初始化。/方法調(diào)用amy.getname()和richard.getname()對(duì)類student的拓展對(duì)類student方法的覆蓋信息系統(tǒng)工程29abstract class student public student()age=0; string name;int age;string grade; public string getnamepublic string getname() return name;() return name; public int getage

19、()return age; public abstract void setage(int newagepublic abstract void setage(int newage); ); class middlestudent extends student string nicknamestring nickname; ; public string getname() return nicknamepublic string getname() return nickname; public void setage(int newage) age=newage public void

20、setage(int newage) age=newage;面向?qū)ο蠡靖拍?變量定義middlestudent richard;/變量初始化。/方法調(diào)用richard.getname()和 richard.setage(5)對(duì)類student的拓展實(shí)現(xiàn)抽象方法對(duì)類student方法的覆蓋信息系統(tǒng)工程30面向?qū)ο蠡靖拍?繼承的優(yōu)點(diǎn)l易編程、易理解:代碼短, 結(jié)構(gòu)清晰l易修改:共同部分只要在一處修改即可l易增加新類:只須描述不同部分信息系統(tǒng)工程314 4 面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟮母拍?.1 4.1 起源起源4.2 4.2 對(duì)象和類對(duì)象和類4.3 4.3 消息和方法消息和方法4.4 4.4 對(duì)象

21、接口對(duì)象接口繼承性繼承性4.7 4.7 多態(tài)性多態(tài)性信息系統(tǒng)工程32面向?qū)ο蠡靖拍?.6 封裝性(encapsulation)封裝是把一組相關(guān)軟件元素組織到一起的方法,其目的在于將對(duì)象的使用者和設(shè)計(jì)者分開,使用者不必知道對(duì)象行為實(shí)現(xiàn)的細(xì)節(jié),只須用設(shè)計(jì)者提供的對(duì)象接口來(lái)訪問(wèn)對(duì)象。 利用封裝來(lái)隱藏那些不屬于對(duì)象公有接口的軟件元素稱為信息隱藏。封裝的定義為: 對(duì)所有對(duì)象的內(nèi)部軟件范圍的邊界進(jìn)行限定; 對(duì)各對(duì)象之間相互作用的接口進(jìn)行描述; 對(duì)每個(gè)對(duì)象的內(nèi)部實(shí)現(xiàn)(操作程序和數(shù)據(jù))進(jìn)行保護(hù)。 信息系統(tǒng)工程33面向?qū)ο蠡靖拍頲lass example private float bankrate; public float testresult() return bankrate; 類example定義了自己的軟件范圍;僅能通過(guò)example的接口來(lái)進(jìn)行訪問(wèn);類的屬性定義和方法的具體實(shí)現(xiàn)外部不可見。信息

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論