版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第5章類圖和對(duì)象圖5.1類圖的概念5.2類圖建模技術(shù)5.3對(duì)象圖5.4對(duì)象圖建模技術(shù)5.5實(shí)例——圖書館管理系統(tǒng)的類圖5.1類圖的概念描述類、接口、協(xié)作及它們之間關(guān)系的圖。顯示系統(tǒng)中各個(gè)類的靜態(tài)結(jié)構(gòu)。類圖的地位類圖是面向?qū)ο笙到y(tǒng)建模中最常用的圖,是其他圖的基礎(chǔ)。在系統(tǒng)的整個(gè)生命周期中都有效。通過分析用例和問題域,得到相關(guān)的類,在把邏輯上相關(guān)的類封裝成包。在類圖的基礎(chǔ)上,可以使用狀態(tài)圖、協(xié)作圖、組件圖、配置圖。和數(shù)據(jù)模型很相似,除了描述系統(tǒng)內(nèi)的信息結(jié)構(gòu),還描述了系統(tǒng)的行為。5.1.1概述類圖的元素:類(Class)接口(Interface)協(xié)作(Collaboration)元素間的關(guān)系依賴關(guān)系(Dependency)泛化關(guān)系(Generalization)關(guān)聯(lián)關(guān)系(Association)實(shí)現(xiàn)關(guān)系(Realization)5.1.2類面向?qū)ο笙到y(tǒng)組織結(jié)構(gòu)的核心。對(duì)一組具有相同屬性、操作、關(guān)系和語義的對(duì)象的抽象。包括名稱部分(Name)、屬性部分(Attribute)和操作部分(Operation)。5.1.2類1名稱2屬性3操作4職責(zé)5約束6注釋名稱應(yīng)該來自系統(tǒng)的問題域。應(yīng)該是一個(gè)名詞,且不應(yīng)該有前綴或后綴。分為簡(jiǎn)單名稱和路徑名稱。屬性描述了類在軟件系統(tǒng)中代表的事物(即對(duì)象)所具備的特性。類可以有任意數(shù)目的屬性,也可以沒有屬性。在UML中,類屬性的語法為:屬性1.可見性2.屬性名3.類型4.初始值5.屬性字符串(1)可見性類型:公有(Public)“+”私有(Private)“-”受保護(hù)(Protected)“?!?public#protected-privateRoseUML可見性Public修飾的內(nèi)容限制最小,也可以說是沒有限制,可以在其他任何位置訪問,在實(shí)際項(xiàng)目開發(fā)中,一般用來修飾類,方法和構(gòu)造器Protected修飾的內(nèi)容可以被同一個(gè)包的其他類訪問,也可以被不同包中的子類訪問,在實(shí)際項(xiàng)目開發(fā)中,一般用來修飾只開放給子類使用的屬性、方法和構(gòu)造方法Private修飾的內(nèi)容是私有的,限制最大,只能在本類中訪問,而不能被類外部的任何類訪問,在實(shí)際項(xiàng)目開發(fā)中,一般用來修飾類的屬性或只在本類內(nèi)部使用的方法
訪問權(quán)限修飾符權(quán)限從高到低排列是public,protected,private。(2)屬性名每個(gè)屬性都必須有一個(gè)名字以區(qū)別于類中的其他屬性。屬性名由描述所屬類的特性的名詞或名詞短語組成。單字屬性名小寫,如果屬性名包含了多個(gè)單詞,這些單詞要合并,且除了第一個(gè)單詞外其余單詞的首字母要大寫。(3)類型簡(jiǎn)單類型:整型布爾型實(shí)型枚舉類型系統(tǒng)中的其他類(4)初始值目的:保護(hù)系統(tǒng)的完整性,防止漏掉取值或被非法的值破壞系統(tǒng)的完整性。為用戶提供易用性。(5)屬性字符串指定關(guān)于屬性的其他信息。任何希望添加在屬性定義字符串值但又沒有合適地方可以加入的規(guī)則,都可以放在屬性字符串里。操作對(duì)類的對(duì)象所能做的事務(wù)的抽象。一個(gè)類可以有任意數(shù)量的操作或者根本沒有操作。返回類型、名稱和參數(shù)一起被稱為操作簽名。在UML中,類操作的語法為:操作1.可見性2.操作名3.參數(shù)表4.返回類型5.屬性字符串(1)可見性類型:公有(Public)“+”私有(Private)“-”受保護(hù)(Protected)“?!卑鼉?nèi)公有(Package)“~”(1)可見性[可見性]操作名[(參數(shù)列表)][:返回值類型][{特性}]+public#protected-privateRoseUML可見性+display():Location+hide()#create()-attachXWindow(xwing:XwindowPtr)(2)操作名用來描述所屬類的行為的動(dòng)詞或動(dòng)詞短語。單字操作名小寫,如果操作名包含了多個(gè)單詞,這些單詞要合并,并且除了第一個(gè)單詞外其余單詞的首字母要大寫。(3)參數(shù)表一些按順序排列的屬性定義了操作的輸入。是可選的,即操作不一定必須有參數(shù)才行。定義方式:“名稱:類型”。若存在多個(gè)參數(shù),將各個(gè)參數(shù)用逗號(hào)隔開。參數(shù)可以具有默認(rèn)值。(4)返回類型是可選的,即操作不一定必須有返回類型。絕大部分編程語言只支持一個(gè)返回值。具體的編程語言一般要加一個(gè)關(guān)鍵字void來表示無返回值。(5)屬性字符串在操作的定義中加入一些除了預(yù)定義元素之外的信息。職責(zé)類或其他元素的契約或義務(wù)。自由形式的文本。非形式化的方法。約束指定了類所要滿足的一個(gè)或多個(gè)規(guī)則。形式化的方法。注釋注釋可以包含圖形也可以包含文本。5.1.3接口在沒有給出對(duì)象的實(shí)現(xiàn)和狀態(tài)的情況下對(duì)對(duì)象行為的描述。包含操作但不包含屬性。沒有對(duì)外界可見的關(guān)聯(lián)。一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口。5.1.3接口接口類:5.1.4類之間的關(guān)系1依賴關(guān)系2泛化關(guān)系3關(guān)聯(lián)關(guān)系4實(shí)現(xiàn)關(guān)系依賴關(guān)系依賴關(guān)系(Dependence):假設(shè)A類的變化引起了B類的變化,則說名B類依賴于A類。
依賴關(guān)系是一種使用關(guān)系,特定事物的改變有可能會(huì)影響到使用該事物的其他事物,在需要表示一個(gè)事物使用另一個(gè)事物時(shí)使用依賴關(guān)系。大多數(shù)情況下,依賴關(guān)系體現(xiàn)在某個(gè)類的方法使用另一個(gè)類的對(duì)象作為參數(shù)。在UML中,依賴關(guān)系用帶箭頭的虛線表示,由依賴的一方指向被依賴的一方。public
class
Driver
{
public
void
drive(Car
car)
{
car.move();
}
……
}
public
class
Car
{
public
void
move()
{
......
}
……
}
依賴關(guān)系依賴關(guān)系有如下三種情況:A類是B類中的(某中方法的)局部變量;A類是B類方法當(dāng)中的一個(gè)參數(shù);A類向B類發(fā)送消息,從而影響B(tài)類發(fā)生變化;依賴關(guān)系class
MyDependentClass{.....
voidmyFunction1(MyReferencedClassr){...}MyReferencedClassmyFunction2(…){...}
voidmyFunction3(…){ MyReferencedClassm…}}MyDependentClassatt:intmyFunction()MyReferencedClass依賴(引用一個(gè)類)參數(shù)or返回類型or局部變量泛化關(guān)系泛化關(guān)系(Generalization):A是B和C的父類,B,C具有公共類(父類)A,說明A是B,C的一般化(概括,也稱泛化)泛化關(guān)系(Generalization)也就是繼承關(guān)系,也稱為“is-a-kind-of”關(guān)系,泛化關(guān)系用于描述父類與子類之間的關(guān)系,父類又稱作基類或超類,子類又稱作派生類。在UML中,泛化關(guān)系用帶空心三角形的直線來表示。
在代碼實(shí)現(xiàn)時(shí),使用面向?qū)ο蟮睦^承機(jī)制來實(shí)現(xiàn)泛化關(guān)系,如在Java語言中使用extends關(guān)鍵字、在C++/C#中使用冒號(hào)“:”來實(shí)現(xiàn)。
publicclassPerson{protectedStringname;protectedintage;publicvoidmove(){……}publicvoidsay(){……}}publicclassStudentextendsPerson
{privateStringstudentNo;publicvoidstudy(){……}}泛化關(guān)系泛化主要用途:多態(tài)繼承單繼承多重繼承
泛化關(guān)系操作類的包繼承抽象類package
MyPackage;abstractclassMyAbstractClass....packageMyPackage;classMyDerivedClassextendsMyAbstractClass{intatt;.....
voidmyFunction(ReferencedClassr){...}}MyDerivedClassatt:intmyFunction()MyPackageMyAbstractClass屬性在UML當(dāng)中,對(duì)泛化關(guān)系有三個(gè)要求:子類與父類應(yīng)該完全一致,父類所具有的屬性、操作,子類應(yīng)該都有;子類中除了與父類一致的信息以外,還包括額外的信息;可以使用父類的實(shí)例的地方,也可以使用子類的實(shí)例;關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系(Association):類之間的聯(lián)系,如客戶和訂單,每個(gè)訂單對(duì)應(yīng)特定的客戶,每個(gè)客戶對(duì)應(yīng)一些特定的訂單,再如籃球隊(duì)員與球隊(duì)之間的關(guān)聯(lián)(下圖所示)。其中,關(guān)聯(lián)兩邊的"employee"和“employer”標(biāo)示了兩者之間的關(guān)系,而數(shù)字表示兩者的關(guān)系的限制,是關(guān)聯(lián)兩者之間的多重性。通常有“*”(表示所有,不限),“1”(表示有且僅有一個(gè)),“0...”(表示0個(gè)或者多個(gè)),“0,1”(表示0個(gè)或者一個(gè)),“n...m”(表示n到m個(gè)都可以),“m...*”(表示至少m個(gè))。關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系(Association)
是類與類之間最常用的一種關(guān)系,它是一種結(jié)構(gòu)化關(guān)系,用于表示一類對(duì)象與另一類對(duì)象之間有聯(lián)系。在UML類圖中,用實(shí)線連接有關(guān)聯(lián)的對(duì)象所對(duì)應(yīng)的類,在使用Java、C#和C++等編程語言實(shí)現(xiàn)關(guān)聯(lián)關(guān)系時(shí),通常將一個(gè)類的對(duì)象作為另一個(gè)類的屬性。在使用類圖表示關(guān)聯(lián)關(guān)系時(shí)可以在關(guān)聯(lián)線上標(biāo)注角色名。關(guān)聯(lián)關(guān)系1.名稱(Name)2.角色(Role)3.多重性(Multiplicity)4.聚合關(guān)系(Aggregation)5.組合關(guān)系(Composition)6.導(dǎo)航性(Navigation)(1)名稱使用一個(gè)動(dòng)詞或動(dòng)詞短語來命名關(guān)聯(lián)。清晰而簡(jiǎn)潔地說明對(duì)象間關(guān)系。關(guān)聯(lián)的名稱并不是必需的??梢郧熬Y或后綴一個(gè)指引閱讀方向的方向指示符,以消除歧義。關(guān)聯(lián)名用來描述關(guān)聯(lián)的作用.(2)角色關(guān)聯(lián)的兩端可以以某種角色參與關(guān)聯(lián),如果不標(biāo)注角色則隱含用類名作為角色名.角色的多重性,表示可以有多少個(gè)對(duì)象參與該關(guān)聯(lián).`(3)多重性指有多少對(duì)象可以參與該關(guān)聯(lián)。可以表達(dá)一個(gè)取值范圍、特定值、無限定的范圍或一組離散值。格式:“minimum..maximum”(均為Int型)。賦給一個(gè)端點(diǎn)的多重性表示該端點(diǎn)可以有多少個(gè)對(duì)象與另一個(gè)端點(diǎn)的一個(gè)對(duì)象關(guān)聯(lián)。(4)聚合關(guān)系一種特殊類型的關(guān)聯(lián)。表示整體與部分關(guān)系的關(guān)聯(lián)。描述了“hasa”的關(guān)系。聚合關(guān)系publicclassCar{privateEngineengine;publicCar(Engineengine){this.engine=engine;}
publicvoidsetEngine(Engineengine){this.engine=engine;}……}publicclassEngine{……}聚合關(guān)系如:電話機(jī)包括一個(gè)話筒
電腦包括鍵盤、顯示器,一臺(tái)電腦可以和多個(gè)鍵盤、多個(gè)顯示器搭配,確定鍵盤和顯示器是可以和主機(jī)分開的,主機(jī)可以選擇其他的鍵盤、顯示器組成電腦;(5)組合關(guān)系聚合關(guān)系中的一種特殊情況,是更強(qiáng)形式的聚合,又稱強(qiáng)聚合。成員對(duì)象的生命周期取決于聚合的生命周期。聚合不僅控制著成員對(duì)象的行為,而且控制著成員對(duì)象的創(chuàng)建和解構(gòu)。組合關(guān)系public
class
Head
{
private
Mouth
mouth;
public
Head()
{
mouth
=
new
Mouth();
}
……
}
public
class
Mouth
{
……
}
組合關(guān)系
如:公司和部門,部門是部分,公司是整體,公司A的財(cái)務(wù)部不可能和公司B的財(cái)務(wù)部對(duì)換,就是說,公司A不能和自己的財(cái)務(wù)部分開;
人與人的心臟.(6)導(dǎo)航性描述一個(gè)對(duì)象通過鏈進(jìn)行導(dǎo)航訪問另一個(gè)對(duì)象。使用導(dǎo)航性可以降低類間的耦合度。包括:?jiǎn)蜗蜿P(guān)聯(lián)和雙向關(guān)聯(lián)。關(guān)聯(lián)的種類
雙向關(guān)聯(lián):
默認(rèn)情況下,關(guān)聯(lián)是雙向的。單向關(guān)聯(lián):類的關(guān)聯(lián)關(guān)系也可以是單向的,單向關(guān)聯(lián)用帶箭頭的實(shí)線表示.自關(guān)聯(lián):
在系統(tǒng)中可能會(huì)存在一些類的屬性對(duì)象類型為該類本身,這種特殊的關(guān)聯(lián)關(guān)系稱為自關(guān)聯(lián)。重?cái)?shù)性關(guān)聯(lián):
重?cái)?shù)性關(guān)聯(lián)關(guān)系又稱為多重性關(guān)聯(lián)關(guān)系(Multiplicity),表示一個(gè)類的對(duì)象與另一個(gè)類的對(duì)象連接的個(gè)數(shù)。在UML中多重性關(guān)系可以直接在關(guān)聯(lián)直線上增加一個(gè)數(shù)字表示與之對(duì)應(yīng)的另一個(gè)類的對(duì)象的個(gè)數(shù)。
雙向關(guān)聯(lián):
默認(rèn)情況下,關(guān)聯(lián)是雙向的。publicclassCustomer{privateProduct[]products;……}publicclassProduct{
privateCustomercustomer;……}單向關(guān)聯(lián):類的關(guān)聯(lián)關(guān)系也可以是單向的,單向關(guān)聯(lián)用帶箭頭的實(shí)線表示.public
class
Customer
{
private
Address
address;
……
}
public
class
Address
{
……
}
自關(guān)聯(lián):
在系統(tǒng)中可能會(huì)存在一些類的屬性對(duì)象類型為該類本身,這種特殊的關(guān)聯(lián)關(guān)系稱為自關(guān)聯(lián)。public
class
Node
{
private
Node
subNode;
……
}
重?cái)?shù)性關(guān)聯(lián):
重?cái)?shù)性關(guān)聯(lián)關(guān)系又稱為多重性關(guān)聯(lián)關(guān)系(Multiplicity),表示一個(gè)類的對(duì)象與另一個(gè)類的對(duì)象連接的個(gè)數(shù)。在UML中多重性關(guān)系可以直接在關(guān)聯(lián)直線上增加一個(gè)數(shù)字表示與之對(duì)應(yīng)的另一個(gè)類的對(duì)象的個(gè)數(shù)。public
class
Form
{
private
Button
buttons[];
……
}
public
class
Button
{
…
}
實(shí)現(xiàn)關(guān)系實(shí)現(xiàn)關(guān)系(Implementation):是用來規(guī)定接口和實(shí)線接口的類或者構(gòu)建結(jié)構(gòu)的關(guān)系,接口是操作的集合,而這些操作就用于規(guī)定類或者構(gòu)建的一種服務(wù)。接口之間也可以有與類之間關(guān)系類似的繼承關(guān)系和依賴關(guān)系,但是接口和類之間還存在一種實(shí)現(xiàn)關(guān)系(Realization),在這種關(guān)系中,類實(shí)現(xiàn)了接口,類中的操作實(shí)現(xiàn)了接口中所
聲明的操作。在UML中,類與接口之間的實(shí)現(xiàn)關(guān)系用帶空心三角形的虛線來表示。實(shí)現(xiàn)關(guān)系public
interface
Vehicle
{
public
void
move();
}
public
class
Ship
implements
Vehicle
{
public
void
move()
{
……
}
}
public
class
Car
implements
Vehicle
{
public
void
move()
{
……
}
}
5.1.5派生屬性和派生關(guān)聯(lián)派生屬性(關(guān)聯(lián))指可以由其他屬性()關(guān)聯(lián)計(jì)算得到的屬性,名字前加”/”.5.1.6抽象類和接口抽象類接口抽象類和接口interfaceMyAbstractClass....
classMyClassimplementsMyInterface{.....}UML符號(hào)----接口的實(shí)現(xiàn)描述5.1.7版型版型(stereotype)是UML的3種擴(kuò)展機(jī)制之一.版型是建模人員在已有的構(gòu)造塊上派生出新的構(gòu)造塊,這些新的構(gòu)造塊與特定問題相關(guān).版型可以應(yīng)用于所有類型的模型元素.系統(tǒng)預(yù)定義的版型用戶自義的版型5.1.8邊界類、控制類和實(shí)體類UML中三種主要的類版型邊界類,boundaryclass控制類,controlclass實(shí)體類,entityclass引入多種類版型幫助分析和設(shè)計(jì)人員確定系統(tǒng)中的類.邊界類邊界類位于系統(tǒng)與外界的交界處,包括:用戶界面類,如:窗口、對(duì)話框、報(bào)表類等通訊協(xié)議類,如:TCP/IP的類直接與外部設(shè)備交互的類直接與外部系統(tǒng)交互的類邊界類的UML表示方法:實(shí)體類實(shí)體類保存要放進(jìn)持久存儲(chǔ)體(數(shù)據(jù)庫/文件等)的信息.實(shí)體類通過事件流和交互圖發(fā)現(xiàn),采用目標(biāo)領(lǐng)域術(shù)語命名.通常實(shí)體類對(duì)應(yīng)數(shù)據(jù)庫中的表,其屬性對(duì)應(yīng)表的字段,但實(shí)體類與數(shù)據(jù)庫中的表不一定是一一對(duì)應(yīng)關(guān)系.
控制類控制類是負(fù)責(zé)管理或控制其他類工作的類.每個(gè)用例通常有一個(gè)控制類,控制用例中的事件順序,控制類也可以在多個(gè)用例間共用.控制較少接收消息,發(fā)出較多消息.5.2類圖建模技術(shù)5.2.1對(duì)簡(jiǎn)單協(xié)作建模5.2.2對(duì)邏輯數(shù)據(jù)庫模式建模5.2.3正向工程和逆向工程5.2.1對(duì)簡(jiǎn)單協(xié)作建模識(shí)別要建模的機(jī)制。對(duì)每種機(jī)制,識(shí)別參與協(xié)作的類、接口和其他協(xié)作,并識(shí)別這些事物之間的關(guān)系。用協(xié)作的腳本檢測(cè)事物。把元素和它們的內(nèi)容聚合在一起。5.2.2對(duì)邏輯數(shù)據(jù)庫模式建模在模型中識(shí)別的類,其狀態(tài)必須超過其應(yīng)用系統(tǒng)的生命周期。創(chuàng)建包含這些類的類圖,并把它們標(biāo)記為永久的。展開這些類的結(jié)構(gòu)性細(xì)節(jié),并注重于關(guān)聯(lián)和構(gòu)造類的基數(shù)。觀察系統(tǒng)中的公共模式,必要時(shí)可以創(chuàng)建簡(jiǎn)化邏輯結(jié)構(gòu)的中間抽象??紤]這些類的行為,擴(kuò)展對(duì)數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)完整性來說重要的操作。如果有可能,用工具把邏輯設(shè)計(jì)轉(zhuǎn)換成物理設(shè)計(jì)。5.2.3正向工程和逆向工程正向工程逆向工程5.2.4類圖的抽象層次概念層類圖,描述應(yīng)用領(lǐng)域的概念.說明層類圖,描述軟件的接口部分,不是實(shí)現(xiàn)部分.實(shí)現(xiàn)層類圖考慮實(shí)現(xiàn)問題,提供類的細(xì)節(jié).5.2.5構(gòu)造類圖根據(jù)用例描述中的名詞確定候選類.使用CRC分析法尋找類,CRC指:類(class)、職責(zé)(responsibility)、協(xié)作(collaboration).根據(jù)邊界類、控制類和實(shí)體類的劃分來幫助發(fā)現(xiàn)類.參考設(shè)計(jì)模式來確定類.根據(jù)軟件開發(fā)過程的指導(dǎo)尋找類,如:UP,XP等.尋找類的方法構(gòu)造類圖時(shí)注意不要試圖使用所有的符號(hào).不要過早陷入細(xì)節(jié),根據(jù)階段、層次逐步細(xì)化.構(gòu)造完成要將模型與目標(biāo)問題對(duì)照驗(yàn)證其是否合理.5.2.5構(gòu)造類圖研究分析問題領(lǐng)域,確定系統(tǒng)需求.確定類,明確類的含義和職責(zé),確定屬性和操作.確定類之間的關(guān)系.調(diào)整和細(xì)化類及類之間的關(guān)系.繪制類圖并增加相應(yīng)的說明.建立類圖的步驟5.2.6領(lǐng)域分析建立類圖的過程就是對(duì)領(lǐng)域及其解決方案的分析與設(shè)計(jì)過程.領(lǐng)域分析包括:通過對(duì)某一領(lǐng)域中的已有應(yīng)用系統(tǒng)、理論、技術(shù)、開發(fā)歷史等的研究,來標(biāo)識(shí)、收集、組織、分析和表示領(lǐng)域模型及軟件體系結(jié)構(gòu)的過程;根據(jù)這一過程得到的結(jié)果.5.2.7OO設(shè)計(jì)的原則開閉原則(Open/ClosedPrinciple,OCP)Liskov替換原則(LiskovSubstitutionPrinciple,LSP)依賴倒置原則(DependencyInversionPrinciple,DSP)接口分離原則(InterfaceSegregationPrinciple,ISP)開閉原則開閉原則指的是一個(gè)模塊在擴(kuò)展性方面應(yīng)該是開放的,而在更改性方面應(yīng)該是封閉的.其目的是在寫模塊時(shí),應(yīng)該盡量使得模塊可以擴(kuò)展,并且在擴(kuò)展時(shí)不需要對(duì)模塊的源代碼進(jìn)行修改.為達(dá)到開閉原則,設(shè)計(jì)時(shí)就盡量使用接口進(jìn)行封閉,采用抽象機(jī)制,并利用OO中的多態(tài)性技術(shù).開閉原則例:某輸出類Output中包含一個(gè)output方法,該方法可能使用多種不同的打印機(jī),如:HP、EPSON、Canon,每種打印機(jī)都有不同的print方法。設(shè)計(jì)方案1voidoutput(intprintType){if(printType==1){Hpprt=newHp();prt.print(args);}elseif(printType==2){Epsonprt=newEpson();prt.print(args);}else{……}……}Liskov替換原則定義:如果對(duì)每一個(gè)類型為T1的對(duì)象o1,都有類型為T2的對(duì)象o2,使得以T1定義的所有程序P,在所有對(duì)象o1被代換成o2時(shí),程序P的行為沒有變化,那么類型T2是類型T1的子類型.Java等語言中是否允許左圖中的繼承,即子類使用較低訪問權(quán)限覆蓋父類的方法呢?不允許,這樣違背了Liskov替換原則.計(jì)算機(jī)界的5位杰出女性
在軟件業(yè)這個(gè)由男性稱霸的世界里,其實(shí)還有著很多的巾幗英雄,以下五位計(jì)算機(jī)界的偉大女性,她們的成就和努力,將帶給我們前進(jìn)的動(dòng)力。
世界上第一位程序設(shè)計(jì)師AdaLovelace
AugustaAdaKing原名AugustaAdaByron(1815年12月10日—1852年11月27日)。她是著名英國(guó)詩人Byron之女。在1842年與1843年其間,Ada花了9個(gè)月的時(shí)間翻譯意大利數(shù)學(xué)家LuigiMenabrea對(duì)Babbage最新的分析機(jī)概論所留下的備忘錄。在這部譯文里,她附加了許多注記,內(nèi)容詳細(xì)說明了用分析機(jī)進(jìn)行伯努利數(shù)的運(yùn)算方法,被后人認(rèn)為是世界上第一個(gè)電腦程序。
Ada的文章創(chuàng)造出許多Babbage也未曾提到的新構(gòu)想,比如Ada曾經(jīng)預(yù)言道:“這個(gè)機(jī)器未來可以用來排版、編曲或是各種更復(fù)雜的用途?!?/p>
1852年,Ada為了治療子宮頸癌,卻因此死于失血過多,享年36歲。具有諷刺意義的是,她與她父親Byron死于相同年齡,一樣死于治療中的失血過多。Ada的生命是短暫的,但她對(duì)計(jì)算機(jī)的預(yù)見卻超前了整整一個(gè)世紀(jì)。在1980年12月10日,美國(guó)國(guó)防部制作了一個(gè)新的計(jì)算機(jī)編程語言—Ada。而美國(guó)國(guó)防部標(biāo)準(zhǔn)局為了記念A(yù)da,以她的生日設(shè)立了一個(gè)編號(hào)MIL-STD-1815。在微軟的產(chǎn)品里也可以找到Ada的全息圖標(biāo)簽。另外英國(guó)計(jì)算機(jī)公會(huì)每年都頒發(fā)以Ada為名的獎(jiǎng)項(xiàng)。計(jì)算機(jī)軟件的第一夫人GraceHopper被譽(yù)為計(jì)算機(jī)軟件第一夫人的GraceHopper于1906年12月9日出生在紐約市的一個(gè)海軍世家。GraceHopper是杰出的女?dāng)?shù)學(xué)家和計(jì)算機(jī)語言領(lǐng)域的帶頭人。
GraceHopper
1949年Hopper加盟由第一臺(tái)電子計(jì)算機(jī)ENIAC發(fā)明人埃克特和莫齊利開辦的電腦公司,為第一臺(tái)存儲(chǔ)程序的商業(yè)電子計(jì)算機(jī)UNIAC編寫軟件。1952年,她開發(fā)了世界上第一個(gè)將高級(jí)符號(hào)語言轉(zhuǎn)變?yōu)闄C(jī)器語言的編譯器A—0,第二年她又開發(fā)出第一個(gè)處理數(shù)據(jù)計(jì)算的編譯器A—2以及第一個(gè)自動(dòng)翻譯英語的數(shù)據(jù)處理語言。之后她又以Flow-Matic為基礎(chǔ)開發(fā)了COBOL語言。COBOL被稱為第一批高級(jí)程序設(shè)計(jì)語言之一,并廣泛用于大型機(jī)和小型機(jī)電腦的高級(jí)商業(yè)程序設(shè)計(jì)。同時(shí)Hopper又率先實(shí)現(xiàn)了第一個(gè)COBOL編譯器,因此被譽(yù)為COBOL之母。據(jù)20世紀(jì)80年代初的統(tǒng)計(jì),當(dāng)時(shí)全美國(guó)有80%的程序由
COBOL語言編寫而成,此語言對(duì)計(jì)算機(jī)應(yīng)用發(fā)展有著很大的推動(dòng)作用。
Hopper致力發(fā)展程序設(shè)計(jì)技術(shù),同時(shí)還培養(yǎng)了大批的程序設(shè)計(jì)人員。Hopper自己曾說:“與其說我的最大貢獻(xiàn)是發(fā)展了程序設(shè)計(jì)技術(shù),不如說我培養(yǎng)了大批程序設(shè)計(jì)人才”。在Hopper傳奇的一生中,她贏得了無數(shù)榮譽(yù)和獎(jiǎng)勵(lì),她先后被40多所大學(xué)授予榮譽(yù)博士學(xué)位。
1971年為了紀(jì)念現(xiàn)代數(shù)字計(jì)算機(jī)誕生25周年,美國(guó)計(jì)算機(jī)學(xué)會(huì)特別設(shè)立了“GraceHopper”獎(jiǎng),頒發(fā)給當(dāng)年最優(yōu)秀30歲以下的青年計(jì)算機(jī)工作者;1980年Hopper獲得國(guó)際IEEE組織頒發(fā)的首屆計(jì)算機(jī)先驅(qū)獎(jiǎng);1991年,布什總統(tǒng)在白宮授予Hopper“全美技術(shù)獎(jiǎng)”,這也是至今美國(guó)女性唯一獲此殊榮的人;1994年Hopper被追授為“美國(guó)女名人”,進(jìn)入“全國(guó)女名人堂”。
信息技術(shù)史上最傳奇的女性HedyLamarr
HedyLamarr(1913年11月9日—2000年1月19日)美國(guó)好萊塢默片時(shí)期著名女演員,生于奧地利一個(gè)富裕的猶太人銀行家庭。她曾與克拉克·蓋博等頂級(jí)男星合作,主演了多部熱門影片。19歲時(shí)在電影《神魂顛倒》中裸泳成為世界電影史上第一位裸體出鏡的女演員。一生曾有過八次婚姻。她曾被認(rèn)為是全歐最美的女人,并因美貌蓋過了演技而被人稱為花瓶。有意思的是,她其實(shí)數(shù)學(xué)和通信功底很深,是現(xiàn)代無線通信的核心專利跳頻技術(shù)的第一發(fā)明者,CDMA、WiFi等技術(shù)都以此為基礎(chǔ)。美國(guó)電話局主席安東尼?羅德(AnthonyLoder)對(duì)她的評(píng)價(jià)所說:“雖然HedyLamarr已經(jīng)被大家遺忘了,但她所做出的一切仍然影響著一代又一代的人?!?/p>
2005年,德語國(guó)家舉行了第一屆發(fā)明者節(jié),紀(jì)念她的92歲誕辰。另外,大家都很熟悉的CorelDraw9軟件封面上的完美面容也屬于Hedy。所有的這一切,仿佛在印證她的一句妙語:“電影往往限于某一地區(qū)和時(shí)代,而技術(shù)是永恒的”。1954年,Allen畢業(yè)于美國(guó)紐約州立大學(xué)奧爾巴尼分校,并獲得學(xué)士學(xué)位。她于1980年代早期創(chuàng)立了并行翻譯(ParallelTRANslation,PTRAN)研究組,致力于研究并行計(jì)算機(jī)的編譯問題。該小組的工作在編譯器的并行化方面處于世界領(lǐng)先的位置。她在這些項(xiàng)目中的工作促成了許多目前廣泛應(yīng)用于商業(yè)編譯器中的程序優(yōu)化算法和技術(shù)。
Allen在科學(xué)的道路上探索奇妙之旅,獲得榮譽(yù)無數(shù)。Allen在IBM業(yè)界有著廣泛的影響,1989年Allen當(dāng)選為IBM院士,這是IBM歷史上第一個(gè)女性獲得此殊榮;1995年,她被任命為IBM技術(shù)研究院院長(zhǎng);1997年被選入WITI名人堂;2000年IBM設(shè)立了以她的名字命名的“FrancesE.Allen科技女性導(dǎo)師獎(jiǎng)”。
2007年2月,作為美國(guó)國(guó)家工程學(xué)院院士、美國(guó)計(jì)算機(jī)學(xué)會(huì)會(huì)士,獲得過AWC頒發(fā)的AugustaAdaLovelace獎(jiǎng)的Allen因“她對(duì)于優(yōu)化編譯器技術(shù)的理論和實(shí)踐做出的先驅(qū)性貢獻(xiàn),這些技術(shù)為現(xiàn)代優(yōu)化編譯器和自動(dòng)并行執(zhí)行打下了基礎(chǔ)”而成為第一位獲得圖靈獎(jiǎng)的女性。圖靈獎(jiǎng)評(píng)委會(huì)主席RuzenaBajcsy說:“她的研究幾乎影響了計(jì)算機(jī)科學(xué)發(fā)展的整個(gè)歷程,使我們今天在商業(yè)和科技領(lǐng)域內(nèi)使用的許多計(jì)算技術(shù)成為可能。她此次獲獎(jiǎng)進(jìn)一步證明成就與性別無關(guān)?!盋LU與Argus語言發(fā)明人BarbaraLiskov計(jì)算機(jī)界有“計(jì)算機(jī)界諾貝爾獎(jiǎng)”之稱的圖靈獎(jiǎng)曾由男性壟斷了40年,而在2008年6月這一局面再次被打破。BarbaraLiskov被授予2008年度圖靈獎(jiǎng)得主,以表彰她對(duì)編程語言和系統(tǒng)設(shè)計(jì)方面所做出的實(shí)踐與理論基礎(chǔ),尤其是數(shù)據(jù)抽象、容錯(cuò)和分布式計(jì)算方面的貢獻(xiàn)。她也是第二位獲得此獎(jiǎng)項(xiàng)的女性科學(xué)家。BarbaraLiskov,本名BarbaraJaneHuberman,1939年生于加利福尼亞。1961年在加州大學(xué)伯克利分校獲得數(shù)學(xué)學(xué)士學(xué)位。在20世紀(jì)60年代,計(jì)算機(jī)科學(xué)這門新興職業(yè)對(duì)女性來說還相當(dāng)寒冷。Liskov在申請(qǐng)研究生、找工作過程中屢次碰壁。但這并沒有擊垮她,她認(rèn)為“發(fā)生的不公平的事情,并不與我直接相關(guān),我想也許正是這種態(tài)度,使我已經(jīng)適應(yīng)這些年來此類處境Liskov生平最重要的科研成果是她為推動(dòng)數(shù)據(jù)抽象使用所做的巨大貢獻(xiàn)。她在此領(lǐng)域的創(chuàng)新使得軟件更易于編寫、修改和維護(hù),極大地提高了計(jì)算機(jī)軟件的可靠性、安全性和易用性。Liskov從實(shí)際項(xiàng)目中提煉出來的數(shù)據(jù)抽象思想,已經(jīng)成為軟件工程的重要精髓。
20世紀(jì)70年代早期,Liskov發(fā)明了兩種計(jì)算機(jī)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 培養(yǎng)學(xué)生合作精神的體育教學(xué)總結(jié)
- 放心消費(fèi)行業(yè)保安工作總結(jié)計(jì)劃
- 農(nóng)業(yè)種植行業(yè)市場(chǎng)總結(jié)
- 中學(xué)生評(píng)語(7篇)
- 體檢行業(yè)檢查項(xiàng)目安全
- 2024年度文化旅游產(chǎn)業(yè)招商引資合作協(xié)議范本3篇
- 廣電集團(tuán)與縣區(qū)合作協(xié)議
- 四川省高考語文模擬試卷分類匯編詩歌鑒賞專題
- 焊接課程設(shè)計(jì)裝
- 2024年版集體勞動(dòng)協(xié)議要素對(duì)比解析版B版
- 【《“雙減”背景下小學(xué)數(shù)學(xué)創(chuàng)新作業(yè)設(shè)計(jì)問題研究》(論文)】
- 廉政知識(shí)競(jìng)賽大題庫及答案(共500道)
- 德勤-2023年印度尼西亞投資之窗 (IWI) 中文版
- 電力建設(shè)工程現(xiàn)行主要質(zhì)量標(biāo)準(zhǔn)、規(guī)范清單
- 2023年高校輔導(dǎo)員基礎(chǔ)知識(shí)復(fù)習(xí)題(附答案)
- 專題02:名著導(dǎo)讀-2022-2023學(xué)年八年級(jí)語文下學(xué)期期中專題復(fù)習(xí)(北京專用)
- 吉林大學(xué)藥學(xué)導(dǎo)論期末考試高分題庫全集含答案
- 2023-2024學(xué)年河北省唐山市灤州市數(shù)學(xué)七年級(jí)第一學(xué)期期末教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 高考語文新題型+“文學(xué)短評(píng)”相關(guān)寫作(真題+技法+練習(xí))
- 中考數(shù)學(xué)計(jì)算題100道
- 集團(tuán)資產(chǎn)重組實(shí)施方案
評(píng)論
0/150
提交評(píng)論