




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第七章面向?qū)ο蠓椒▽W(xué)導(dǎo)論思考題軟件開發(fā)中為什么要使用面向?qū)ο蠓椒??面向?qū)ο蠓治龇椒ㄅc結(jié)構(gòu)化分析方法有哪些相似之處?有何區(qū)別?面向?qū)ο蠓椒ㄊ菍?duì)過去的一個(gè)完全突破,還是“換湯不換藥”?本章的內(nèi)容提綱:簡(jiǎn)要介紹面向?qū)ο蠓椒▽W(xué)著重講述面向?qū)ο蟮幕靖拍罱榻B用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件的過程中,建立的三種模型-對(duì)象模型、動(dòng)態(tài)模型、概念模型7.1傳統(tǒng)方法學(xué)的缺點(diǎn)存在的問題出現(xiàn)問題的原因存在的問題軟件生產(chǎn)率低下,不能滿足軟件發(fā)展的需求軟件可重用程度低軟件仍然很難維護(hù)用戶需求的不斷變化導(dǎo)致軟件很難滿足用戶需求出現(xiàn)問題的原因
1.僵化的瀑布模型瀑布模型意味著在生命周期各階段間存在著嚴(yán)格的順序性和依賴性。生命周期方法學(xué)特別強(qiáng)調(diào)預(yù)先定義需求的重要性。這種預(yù)先定義需求的方法也不適應(yīng)用戶需求的不斷變化。這是因?yàn)椋河脩粜枨罂赡苁悄:?;?xiàng)目參與者之間存在通信鴻溝(領(lǐng)域?qū)<也欢?jì)算機(jī)技術(shù),系統(tǒng)分析員不熟悉領(lǐng)域知識(shí),他們之間很難通信,而文檔只是一種靜態(tài)的通信工具,不能反映動(dòng)態(tài)的變化要求);用戶需求是變化發(fā)展的(開發(fā)周期長(zhǎng),開發(fā)初期的需求在開發(fā)結(jié)束時(shí)已有很大的改變,甚至是互相矛盾);
2.結(jié)構(gòu)化技術(shù)有其自身固定的缺點(diǎn)不穩(wěn)定的:圍繞實(shí)現(xiàn)處理功能的“過程”來構(gòu)造系統(tǒng)用戶的需求變化大部分是針對(duì)功能的用戶需求的變化往往造成系統(tǒng)結(jié)構(gòu)的較大變化難修改和擴(kuò)充:清楚地定義了目標(biāo)系統(tǒng)的邊界用結(jié)構(gòu)分析、設(shè)計(jì)技術(shù)開發(fā)出的系統(tǒng)結(jié)構(gòu)依賴于對(duì)系統(tǒng)邊界的定義很難把這樣的系統(tǒng)擴(kuò)展到新的邊界
可重用性較差:不同的開發(fā)人員開發(fā)相同的系統(tǒng)時(shí),可能經(jīng)分解而得出不同的軟件結(jié)構(gòu)把數(shù)據(jù)和操作作為分離的實(shí)體用這種技術(shù)開發(fā)出的軟件,其穩(wěn)定性、可修改性和可重用性都比較差。7.2軟件工程的新途徑快速原型法面向?qū)ο蟮姆椒▽W(xué)快速原型法
區(qū)分兩類不同的軟件系統(tǒng)
對(duì)軟件需求可以預(yù)先確定的軟件系統(tǒng)(控制系統(tǒng)、操作系統(tǒng)等),可采用傳統(tǒng)的生命周期方法進(jìn)行開發(fā);對(duì)系統(tǒng)的需求模糊或隨時(shí)間變化的系統(tǒng)(如MIS,決策支持系統(tǒng)等)可采用快速原型法或面向?qū)ο蟮姆椒ㄟM(jìn)行開發(fā)。
原型法的基本思想是:首先建立一個(gè)能反映用戶主要需求的原型系統(tǒng),讓用戶在計(jì)算機(jī)上試用該原型系統(tǒng),通過實(shí)踐了解用戶的未來系統(tǒng)的概貌,以便用戶判斷系統(tǒng)提供的功能是否能滿足用戶的需求。用戶通過實(shí)際試用原型系統(tǒng),可以歸納出對(duì)系統(tǒng)的修改意見,開發(fā)人員可根據(jù)這些意見快速修改原型系統(tǒng),然后用戶再次試用修改后的原型系統(tǒng),通過再提意見和再修改的多次循環(huán),最終建立起符合用戶需要的新系統(tǒng)。這是用原型法開發(fā)軟件的優(yōu)點(diǎn)之一??焖僭头ㄋ枷雽?shí)現(xiàn)原型法有兩種途徑:拋棄原型法建立這種原型系統(tǒng)的目的是評(píng)價(jià)目標(biāo)系統(tǒng)的某個(gè)(或某些)特性,以便更準(zhǔn)確地確定需求,或者更嚴(yán)格地驗(yàn)證設(shè)計(jì)方案。原型使用后就被拋棄掉,開發(fā)人員可根據(jù)已經(jīng)確定的用戶需求重新構(gòu)造目標(biāo)系統(tǒng)。這種途徑本質(zhì)上仍屬于瀑布模型,建立原型只不過是為了確定用戶需求的一個(gè)步驟。演化原型法演化原型法是高度迭代的動(dòng)態(tài)方法。在每次迭代過程中,都要再次分析和確定需求,再次進(jìn)行設(shè)計(jì),再次實(shí)現(xiàn)系統(tǒng),以及再次進(jìn)行測(cè)試和評(píng)價(jià),直到用戶感到完全滿意為止。。因此,早期所犯的錯(cuò)誤其后果并不嚴(yán)重。此外,系統(tǒng)的初始版本很早就交付用戶試用。面向?qū)ο蠓椒▽W(xué)
面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則是:盡可能模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界解決問題的方法與過程,也就是使描述問題的問題空間(也稱為問題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。面向?qū)ο蠓椒ň哂幸韵?個(gè)要點(diǎn):要點(diǎn)1.認(rèn)為客觀世界是由各種對(duì)象組成的,任何事務(wù)都是對(duì)象,復(fù)雜的對(duì)象可以由比較簡(jiǎn)單的對(duì)象以某種方式組合而成。面向?qū)ο蠓椒ㄓ脤?duì)象分解取代了傳統(tǒng)方法的功能分解。要點(diǎn)2.把所有對(duì)象都劃分成各種對(duì)象類,每個(gè)對(duì)象類都定義了一組數(shù)據(jù)和一組方法。要點(diǎn)3.按照子類與父類的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu),即類等級(jí)。要點(diǎn)4.對(duì)象彼此之間僅能夠傳遞消息互相聯(lián)系。用下列等式識(shí)別面向?qū)ο蠓椒ǎ好嫦驅(qū)ο螅綄?duì)象(Object)十分類(Classification)十繼承(inheritance)十通過消息的通信(Communicationwithmessages)可以說,采用這四個(gè)概念開發(fā)的軟件系統(tǒng)是面向?qū)ο蟮摹C嫦驅(qū)ο蟮能浖^程不論采樣什么方法學(xué)開發(fā)軟件,都必須完成的工作:確定“做什么”、確定“怎樣做”、“實(shí)現(xiàn)”和“完善”。7.3面向?qū)ο蠓椒ǖ闹饕獌?yōu)點(diǎn)優(yōu)點(diǎn)1.與人類習(xí)慣的思維方法一致.結(jié)構(gòu)化方法把數(shù)據(jù)和代碼分離,以算法為核心。面向?qū)ο蟮能浖夹g(shù)以對(duì)象為核心,開發(fā)出的系統(tǒng)由對(duì)象組成。優(yōu)點(diǎn)2.穩(wěn)定性好結(jié)構(gòu)化軟件開發(fā)過程基于功能分析和功能分解。當(dāng)需求改變時(shí),軟件的系統(tǒng)結(jié)構(gòu)需要改變。面向?qū)ο蠓椒ɑ跇?gòu)造問題領(lǐng)域的對(duì)象模型,以對(duì)象為中心構(gòu)造系統(tǒng)。用對(duì)象模擬問題領(lǐng)域的實(shí)體,以對(duì)象間的聯(lián)系刻畫實(shí)體間的聯(lián)系。需求改變時(shí),不會(huì)引起軟件結(jié)構(gòu)的整體變化。優(yōu)點(diǎn)3.可重用性好面向?qū)ο蠓椒▽W(xué)中的繼承機(jī)制使得子類不僅可以重用父類的數(shù)據(jù)和方法,也可以在父類代碼的基礎(chǔ)上方便的修改和擴(kuò)充。優(yōu)點(diǎn)4.較易開發(fā)大型軟件產(chǎn)品每個(gè)對(duì)象有自己的數(shù)據(jù)、操作、功能、用途大型系統(tǒng)分界為一系列對(duì)象降低開發(fā)的技術(shù)難度容易管理開發(fā)工作優(yōu)點(diǎn)5.可維護(hù)性好使得面向?qū)ο蠓椒ㄩ_發(fā)的軟件的可維護(hù)性好的原因:面向?qū)ο蟮能浖€(wěn)定性較好;面向?qū)ο蟮能浖容^容易修改;面向?qū)ο蟮能浖容^容易理解;易于測(cè)試和調(diào)試。兩種新途徑的結(jié)合
兩種軟件開發(fā)的途徑相互促進(jìn)、相互補(bǔ)充。面向?qū)ο蠓椒ㄋ鶐淼姆€(wěn)定性、可重用性和可維護(hù)性等優(yōu)點(diǎn),對(duì)于用快速原型法成功地開發(fā)軟件來說,是至關(guān)重要的。不論采用何種技術(shù)方法開發(fā)軟件,都必須完成的工作要素包括:確定“做什么”,確定“怎樣做”,“實(shí)現(xiàn)”和“完善”。7.4面向?qū)ο蠡靖拍顚?duì)象類實(shí)例消息繼承多態(tài)性對(duì)象是指一組屬性以及這組屬性上的專用操作的封裝體。在應(yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何事務(wù)都可以作為對(duì)象,它既可以是具體的物理實(shí)體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的東西。對(duì)象屬性可以是一些數(shù)據(jù),也可以是另一個(gè)對(duì)象。例如,書是一個(gè)對(duì)象,它的屬性可以有書名、作者、出版社、出版年份、定價(jià)等屬性,其中書名、出版年份、定價(jià)是數(shù)據(jù),作者和出版社可以是對(duì)象,他們還可以有自己的屬性每個(gè)對(duì)象都有它自己的屬性值,表示該對(duì)象的狀態(tài)。對(duì)象中的屬性只能通過該對(duì)象所提供的操作來存取或修改。操作也稱為方法或服務(wù),它規(guī)定了對(duì)象的行為,表示對(duì)象所能提供的服務(wù)。封裝是一種信息隱蔽技術(shù),用戶只能看見對(duì)象封裝界面上的信息,對(duì)象的內(nèi)部實(shí)現(xiàn)對(duì)用戶是隱蔽的。封裝的目的是使對(duì)象的使用者和生產(chǎn)者分離,使對(duì)象的定義和實(shí)現(xiàn)分開。一個(gè)對(duì)象通??捎蓪?duì)象名、屬性和操作三部分組成。classCCaculate:publicCWnd{ public: intsgn(doublex); voidfwjzl(doubleo0,doubleo1,double&dO); voidqlbjf(doubleL0,doubleao,doubleo0,doubleL1,doublea1,doubleo1,double&dN,double&dE,double&dH,double&dS,double&k,double&ka,double&ko,double&dL,double&da,double&dO,double&R,double&r); voidsjsjjs();
CSjsjjsPointListm_pointList; CSjsjjsStructure*m_pRead; CSjsjjsStructure*m_sjsjjs; doublem_SAZC;//方位角° doublem_SINC;//井斜角° doublem_SJCS;//垂深m doublem_SJJS;//井深mprotected: DECLARE_MESSAGE_MAP()public: afx_msgvoidOnDestroy();};CCaculateC1;CCaculateC2;CCaculateC3;C1.m_SAZC=90;C2.m_SAZC=18;。。。屬性值操作對(duì)象屬性對(duì)象的定義定義1.對(duì)象是具有相同狀態(tài)的一組操作的集合。定義2.對(duì)象是對(duì)問題域中某個(gè)東西的抽象,這種抽象反映了相同保存有關(guān)這個(gè)東西的信息或與它交互的能力。對(duì)象是對(duì)屬性值和操作的封裝。定義3.對(duì)象::=<ID,MS,DS,MI>,其中ID是對(duì)象的名字,MS是對(duì)象中的操作集合,DS是對(duì)象的數(shù)據(jù)結(jié)構(gòu),MI是對(duì)象受理的消息名集合。對(duì)象的特點(diǎn)以數(shù)據(jù)為中心;對(duì)象是主動(dòng)的;實(shí)現(xiàn)了數(shù)據(jù)封裝;本質(zhì)上具有數(shù)據(jù)封裝性;模塊獨(dú)立性好。類類是一組具有相同屬性和相同操作的對(duì)象的集合。一個(gè)類中的每個(gè)對(duì)象都是這個(gè)類的一個(gè)實(shí)例(instance)。voidComupteDataDlg::OnBnClickedSjsjjs(){ //TODO:Addyourcontrolnotificationhandlercodehere
CCaculatecaculate;。。。。。。。。m_Ck=atof(strCk);//atof把字符串轉(zhuǎn)換成浮點(diǎn)數(shù) m_cpj=atof(strcpj);
caculate.m_Ck=m_Ck;
caculate.m_cpj=m_cpj; CSjsjjsReadListIteriterRead=m_readList.begin(); if(m_readList.size()>0) {
CSjsjjsStructure*Temp=newCSjsjjsStructure(0,0,0,0,0,0,0,0,0,0,0,0,0); CSjsjjsStructure*Next;。。。。。。。。。。。。。。}}一個(gè)實(shí)例一個(gè)實(shí)例對(duì)象的一個(gè)屬性當(dāng)使用“對(duì)象”術(shù)語時(shí),既可以指一個(gè)具體的對(duì)象,也可以泛指一般的對(duì)象。當(dāng)使用“實(shí)例”術(shù)語時(shí),必然是指一個(gè)具體的對(duì)象。消息
消息傳遞是對(duì)象間通信的手段,一個(gè)對(duì)象通過向另一對(duì)象發(fā)送消息來請(qǐng)求其服務(wù)。一個(gè)消息通常包括接收對(duì)象名、調(diào)用的操作名和適當(dāng)?shù)膮?shù)(如有必要)。消息只告訴接收對(duì)象需要完成什么操作,但并不指示接收者怎樣完成操作。消息完全由接收者解釋,接收者獨(dú)立決定采用什么方法來完成所需的操作。例如:MyCirle.Show(GREEN);接收消息的對(duì)象消息名參數(shù)方法是對(duì)象所能夠執(zhí)行的操作,也就是類中定義的服務(wù)。#include"Caculate.h“。。。。。。。。。intCCaculate::sgn(doublex){if(x>0)return(1);//返回出口1:如果鍵盤輸入正數(shù),則返回1if(x<0)return(-1);//返回出口2:如果鍵盤輸入負(fù)數(shù),則返回-1return(0);//返回出口3:如果鍵盤輸入0,則返回0}。。。。。。。。。。。。。。。。在類中給出成員函數(shù)的定義。屬性是類中定義的數(shù)據(jù)。類的每個(gè)實(shí)例都有自己特有的屬性值。封裝對(duì)象具有封裝性的條件:有一個(gè)清晰的邊界。所有私有數(shù)據(jù)和實(shí)現(xiàn)操作的代碼都被封裝在邊界內(nèi),從外面不能直接訪問。有確定的接口。這些接口就是對(duì)象可以接受的消息,只能通過向?qū)ο蟀l(fā)送消息來使用它。受保護(hù)的內(nèi)部實(shí)現(xiàn)。私有的數(shù)據(jù)和代碼不能夠在定義該對(duì)象的類之外進(jìn)行訪問。//圖層管理器 classCJwtLayerManager {
public: CJwtLayerManager(CView*pView=NULL); ~CJwtLayerManager(); voidAddObject(CJwtObject*pJwtObject);//添加對(duì)象 voidAddLayer(CJwtLayer*pLayer);//添加圖層 voidDeleteLayer(CStringlayerName);//刪除圖層 voidMoveLayerToFront(CJwtLayer*pLayer); //移到最前 voidMoveLayerToBack(CJwtLayer*pLayer); //移到最后 voidMoveLayerForward(CStringname); //前移 voidMoveLayerBackward(CStringname); //后移 voidSwitchLayers(CJwtLayer*pLayerA,CJwtLayer*pLayerB);//交換圖層 CJwtLayer*GetLayer(CStringname);//獲得給定名稱的圖層 intGetLayersCount(); //獲得層的數(shù)量 CJwtLayerListm_jwtLayerList;//圖層列表 intm_LayerOrder;//圖層順序
private: CJwtLayer*m_pCurLayer;//當(dāng)前圖層 CView*m_pView;//視圖指針
public: voidClear(void);//清理內(nèi)存 };繼承
繼承是類間的一種基本關(guān)系,是在某個(gè)類的層次關(guān)聯(lián)中不同的類共享屬性和操作的一種機(jī)制。圖1給出了一個(gè)類、對(duì)象、繼承的例子。圖1類、對(duì)象、繼承classCDrawBasic:publicCObject { DECLARE_SERIAL(CDrawBasic) public: CDrawBasic(void); ~CDrawBasic(void); CDrawBasic(CPointpoint); virtualvoidSerialize(CArchive&ar);//序列化 virtualvoidDraw(CDC*pDC,floatm_fDrawScale,CView*pView=NULL);//進(jìn)行自身繪制 virtualvoidDrawTracker(CDC*pDC,floatm_fDrawScale);//進(jìn)行角點(diǎn)繪制 virtualBOOLHitTest(CPoint&point);//判斷給定點(diǎn)是否在內(nèi)部 voidMoveTo(CRectrect);//移動(dòng) public: CRectm_Pos;//所在位置 BOOLm_bSelected;//是否選中 BOOLm_bConnected;//是否連井 BOOLm_bProjectionConnected;//是否投影連井 CPointpoint;//圖形中心點(diǎn) intnIndex;//序號(hào) CStringm_WellID;//井號(hào) doublem_verDepth;//垂深 floatwell_purpose_size;//目的層尺寸 UINTm_nLineWidth;//畫筆寬度 COLORREFm_cPenColor;//畫筆顏色 intm_nPenStyle;//畫筆的類型 };函數(shù)重載classCDrawCircle:publicCDrawBasic//目的層 { public: CDrawCircle(); CDrawCircle(CPointpoint); ~CDrawCircle(); voidDraw(CDC*pDC,floatm_fDrawScale,CView*pView=NULL); voidDrawTracker(CDC*pDC,floatm_fDrawScale);//進(jìn)行角點(diǎn)繪制 BOOLHitTest(CPoint&point);//判斷給定點(diǎn)是否在內(nèi)部 CStringa; voidDrawJingBie(CDC*pDC,intn,CPointpoint_jingbie); };
classCDrawRect:publicCDrawBasic//井口 { public: CDrawRect(); CDrawRect(CPointpoint); ~CDrawRect(); voidDraw(CDC*pDC,floatm_fDrawScale,CView*pView=NULL);
};
classCDrawTriangle:publicCDrawBasic//井底 { public: CDrawTriangle(); CDrawTriangle(CPointpoint); ~CDrawTriangle(); voidDraw(CDC*pDC,floatm_fDrawScale,CView*pView=NULL); };多態(tài)性
多態(tài)性是指同一個(gè)操作作用于不同的對(duì)象上可以有不同的解釋,并產(chǎn)生不同的執(zhí)行結(jié)果。相同操作的消息發(fā)送給不同的對(duì)象時(shí),每個(gè)對(duì)象將根據(jù)自己所屬類中定義的這個(gè)操作去執(zhí)行,從而產(chǎn)生不同的結(jié)果。類等級(jí)的不同層次中可以共享一個(gè)相同的名字,然而不同層次中的每個(gè)類卻各自按自己的需要來實(shí)現(xiàn)這個(gè)行為。在C++中,多態(tài)性通過虛函數(shù)來實(shí)現(xiàn)的。#include<iostream.h>classPoint{public:Point(doublei,doublej){x=i;y=j;}virtualdoubleArea()const{return0.0;}private:doublex,y;};classRectangle:publicPoint{public:Rectangle(doublei,doublej,doublek,doublel);virtualdoubleArea()const{returnw*h;}private:doublew,h;};Rectangle::Rectangle(doublei,doublej,doublek,doublel):Point(i,j){w=k;h=l;}voidfun(Point&s) {cout<<s.Area
()<<endl;}voidmain(){Rectanglerec(3.0,5.2,15.0,25.0);fun(rec);}Fun()函數(shù)的引用對(duì)象參數(shù)s被動(dòng)態(tài)聯(lián)編。調(diào)用時(shí)實(shí)參是Rectangle類的對(duì)象rec,所以被束定到Rectangle類的Area()重載函數(shù)重載:指在同一作用域的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。運(yùn)算符重載:指同一個(gè)運(yùn)算符可以施加于不同類型的操作數(shù)上面。#include<iostream.h>classcomplex{public:complex(){real=imag=0;}complex(doubler){real=0;imag=r;}complex(doubler,doublei){real=r;imag=i; }complexoperator+(constcomplex&c);complexoperator-(constcomplex&c);complexoperator*(constcomplex&c);complexoperator/(constcomplex&c);friendvoidprint(constcomplex&c);private:doublereal,imag;};inlinecomplexcomplex::operator+(constcomplex&c){returncomplex(real+c.real,imag+c.imag);}。。。。。。voidmain(){complexc1(2.0,3.0),c2(4.0,-2.0),c3;c3=c1+c2;cout<<"\nc1+c2=";print(c3);……c3=c1/c2;cout<<"\nc1/c2=";print(c3);……}7.5面向?qū)ο蠼?duì)象建模技術(shù)(objectmodelingtechnique,OMT)是由J.Rumbaugh等人提出的。OMT定義了三種模型,它們是對(duì)象模型、動(dòng)態(tài)模型和功能模型,OMT用這三種模型來描述系統(tǒng)。OMT方法有四個(gè)步驟:分析、系統(tǒng)設(shè)計(jì)、對(duì)象設(shè)計(jì)和實(shí)現(xiàn)。OMT方法的每一步都使用這三種模型,通過每一步對(duì)三種模型不斷地精化和擴(kuò)充。對(duì)象模型動(dòng)態(tài)模型功能模型基本模型:三個(gè)模型分別從不同角度分析系統(tǒng)分析模型對(duì)象模型:描述靜態(tài)結(jié)構(gòu),定義做事情的實(shí)體功能模型:描述處理(數(shù)據(jù)變換),指明系統(tǒng)應(yīng)“做什么”動(dòng)態(tài)模型:描述交互過程,規(guī)定什么時(shí)候做
7.6對(duì)象模型
對(duì)象模型描述系統(tǒng)中對(duì)象的靜態(tài)結(jié)構(gòu)、對(duì)象之間的關(guān)系、對(duì)象的屬性、對(duì)象的操作。對(duì)象模型表示靜態(tài)的、結(jié)構(gòu)上的、系統(tǒng)的“數(shù)據(jù)”特征。對(duì)象模型為動(dòng)態(tài)模型和功能模型提供了基本的框架。對(duì)象模型用包含對(duì)象和類的對(duì)象圖來表示。用UML中的類圖來建立對(duì)象模型。圖7.1對(duì)象的符號(hào)表示圖7.2類的符號(hào)表示(類名)屬性值類名可見性屬性名:類型=缺省值可見性操作名(參數(shù):類型,…):結(jié)果類型表示類的符號(hào)類是具有相同屬性、操作、關(guān)系的對(duì)象集合的總稱。通常在UML中類被畫成矩形。表示關(guān)系的符號(hào)類-&-對(duì)象間的關(guān)系可以概括為歸納、組合、關(guān)聯(lián)關(guān)系歸納(泛化)關(guān)系泛化是一個(gè)類與它的一個(gè)或多個(gè)細(xì)化種類之間的關(guān)系,即一般與特殊的關(guān)系。被細(xì)化的稱為父類,每個(gè)細(xì)化的種類稱為子類,子類可以繼承父類的性質(zhì)。組合(聚合)關(guān)系聚合是一種整體與部分的關(guān)系,在這種關(guān)系中表示整體的對(duì)象與表示部分的對(duì)象關(guān)聯(lián)。有聚合關(guān)系的關(guān)聯(lián)指出,某個(gè)類是另外某個(gè)類的一部分。組合關(guān)系是聚合關(guān)系的另一種形式,但是子類實(shí)例的生命周期依賴于父類實(shí)例的生命周期。關(guān)聯(lián)鏈表示實(shí)例對(duì)象間的物理或概念上的連接。例如,JoeDoe為SimPlex公司工作,工資2000元。關(guān)聯(lián)描述具有公共結(jié)構(gòu)和公共語義的一組鏈,例如,關(guān)聯(lián)works-for描述了一組某人為某公司工作的鏈。實(shí)際上鏈?zhǔn)顷P(guān)聯(lián)的一個(gè)實(shí)例。鏈可以有屬性,稱為鏈屬性,鏈屬性表示關(guān)聯(lián)中鏈的性質(zhì)。有一些修飾可以應(yīng)用于關(guān)聯(lián)。1.
名字:可以給關(guān)系取名字
2.
角色:關(guān)系的兩端代表不同的兩種角色
3.
重?cái)?shù):表示有多少對(duì)象通過一個(gè)關(guān)系的實(shí)例相連
關(guān)聯(lián)類
在關(guān)聯(lián)建模中,存在一些情況下,你需要包括其它類,因?yàn)樗岁P(guān)于關(guān)聯(lián)的有價(jià)值的信息。對(duì)于這種情況,你會(huì)使用關(guān)聯(lián)類來綁定你的基本關(guān)聯(lián)。關(guān)聯(lián)類和一般類一樣表示。不同的是,主類和關(guān)聯(lián)類之間用一條相交的點(diǎn)線連接。類也可以使用反射關(guān)聯(lián)與它本身相關(guān)聯(lián)。教師指導(dǎo)論文0..m1學(xué)生教師為學(xué)生指導(dǎo)論文:教師教學(xué)0..m0..n學(xué)生教師為學(xué)生授課:題目答辯時(shí)間成績(jī)教師學(xué)生指導(dǎo)論文0..m1SalesLineItemquantitySaledatetimePaymentamoutItemquantityStoreAddressnamePOSRecords-sale-of0..111..*1111..*11*1Captured-on1Paid-byContainedStocked-inHouses屬性關(guān)聯(lián)概念(類)7.7動(dòng)態(tài)模型
動(dòng)態(tài)模型描述與時(shí)間和操作順序有關(guān)的系統(tǒng)特征——激發(fā)事件、事件序列、確定事件先后關(guān)系的狀態(tài)以及事件和狀態(tài)的組織。動(dòng)態(tài)模型表示瞬時(shí)的、行為上的、系統(tǒng)的“控制”特征。它關(guān)心的是系統(tǒng)的控制,操作的執(zhí)行順序;它從對(duì)象的事件和狀態(tài)的角度出發(fā),表現(xiàn)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025茶葉轉(zhuǎn)讓合同范本
- 2025標(biāo)準(zhǔn)員工合同協(xié)議書
- 二級(jí)經(jīng)銷商合作合同
- 美術(shù)培訓(xùn)安全協(xié)議書范本
- 2025購銷商品合同模板
- 壁畫文物買賣協(xié)議書
- 婚內(nèi)股權(quán)財(cái)產(chǎn)協(xié)議書
- 2025年03月浙江溫州市平陽縣順溪鎮(zhèn)公開招聘編外人員1人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025年03月河南南陽市內(nèi)鄉(xiāng)縣引進(jìn)高層次及其他專業(yè)技術(shù)人才應(yīng)試人員筆試(第3號(hào))筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- Unit 10 Lending a Helping hand 第二課時(shí)Exploring the Topic(含答案)仁愛版2024七下英語日清限時(shí)練
- 圖書管理員的崗位技能要求與試題及答案
- 自體輸血管理制度與技術(shù)規(guī)范
- 2025年浙江省初中學(xué)校TZ8共同體中考數(shù)學(xué)一模試卷
- 酒店應(yīng)知應(yīng)會(huì)培訓(xùn)
- XX鄉(xiāng)鎮(zhèn)履職事項(xiàng)清單表(1356項(xiàng))
- 2025年高考作文備考:武漢市二調(diào)10篇范文+深圳一模4篇范文匯編
- 2025年中儲(chǔ)糧集團(tuán)江蘇分公司招聘(73人)筆試參考題庫附帶答案詳解
- 2025年上海市高考英語熱點(diǎn)復(fù)習(xí):閱讀理解詞義猜測(cè)題
- 2025年共青團(tuán)入團(tuán)考試測(cè)試題庫及答案
- 房屋建筑工程竣工驗(yàn)收技術(shù)資料統(tǒng)一用表(2024 版)
- (新版)水利水電工程施工企業(yè)“三類人員”安全生產(chǎn)考核題庫-(單選多選題庫)
評(píng)論
0/150
提交評(píng)論