3.面向?qū)ο蟪绦蛟O(shè)計(jì)
20世紀(jì)90年代,由于計(jì)算機(jī)硬件的飛速發(fā)展,對(duì)軟件系統(tǒng)在規(guī)模和性能方面的要求也在不斷的提高。因此,傳統(tǒng)的程序設(shè)計(jì)方法使得軟件和硬件能力的差距迅速擴(kuò)大。傳統(tǒng)的軟件工具、軟件技術(shù)和抽象層次越來越難以適應(yīng)大規(guī)模復(fù)雜軟件系統(tǒng)的開發(fā)特點(diǎn)。因此,軟件能力已成為制約軟件發(fā)展的主要因素。
OOP方法源于20世紀(jì)70年代中后期,在20世紀(jì)80年代逐步代替了傳統(tǒng)的SP方法,成為最重要的方法之一,至今OOP方法被廣泛應(yīng)用于各個(gè)領(lǐng)域。面向?qū)ο蟮幕九c結(jié)構(gòu)化設(shè)計(jì)思想完全不同,面向?qū)ο蟮姆椒▽W(xué)認(rèn)為世界由各種對(duì)象組成,任何事物都是對(duì)象,是某個(gè)對(duì)象類的實(shí)例,復(fù)雜的對(duì)象可由較簡(jiǎn)單的對(duì)象的某種方式組成。OOP的基石是對(duì)象和類。對(duì)象是數(shù)據(jù)及對(duì)這些數(shù)據(jù)施加的操作結(jié)合在一起所構(gòu)成的獨(dú)立實(shí)體的總稱;類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對(duì)象的描述。面向?qū)ο蟮幕緳C(jī)制是方法和消息,消息是要求某個(gè)對(duì)象執(zhí)行類中某個(gè)操作的規(guī)格說明;方法是對(duì)象所能執(zhí)行的操作,它是類中所定義的函數(shù),描述對(duì)象執(zhí)行某個(gè)操作的算法,每一個(gè)對(duì)象類都定義了一組方法。
OOP有3個(gè)重要特性:封裝性、繼承性和多態(tài)性。封裝性是指對(duì)象是數(shù)據(jù)和處理該數(shù)據(jù)的方法所構(gòu)成的整體,外界只能看到其外部特性(消息模式、處理能力等),其內(nèi)特性(私有數(shù)據(jù)、處理方法等)對(duì)外不可見。對(duì)象的封裝性使得信息具有隱蔽性,它減少了程序成分間的相互依賴,降低程序的復(fù)雜性,提高程序的可靠性和數(shù)據(jù)的性。 繼承性(Inheritance)反映的是類與類之間的不同抽象級(jí)別,根據(jù)繼承與被繼承的關(guān)系,可分為基類和衍生類,基類也稱為父類,衍生類也稱為子類,正如“繼承”這個(gè)詞給我們的字面提示一樣,子類從父類那里獲得所有的屬性和方法,并且可以對(duì)這些獲得的屬性和方法加以改造,使之具有自己的特點(diǎn)。繼承性使得相似的對(duì)象可以共享程序代碼和數(shù)據(jù),繼承性是程序可重用性的關(guān)鍵。多態(tài)性是指在形式上表現(xiàn)為一個(gè)方法根據(jù)傳遞給它的參數(shù)的不同,可以調(diào)用不同的方法體,實(shí)現(xiàn)不同的操作。將多態(tài)性映射到現(xiàn)實(shí)世界中,則表現(xiàn)為同一個(gè)事物隨著環(huán)境的不同,可以有不同的表現(xiàn)形態(tài)及不同的和其他事物通信的方式。多態(tài)性使程序員能在一個(gè)類等級(jí)中使用相同函數(shù)的多個(gè)版本,程序員可以集中精力開發(fā)可重用的類和方向而不分擔(dān)心名字的沖突問題。
20世紀(jì)90年代,由于計(jì)算機(jī)硬件的飛速發(fā)展,對(duì)軟件系統(tǒng)在規(guī)模和性能方面的要求也在不斷的提高。因此,傳統(tǒng)的程序設(shè)計(jì)方法使得軟件和硬件能力的差距迅速擴(kuò)大。傳統(tǒng)的軟件工具、軟件技術(shù)和抽象層次越來越難以適應(yīng)大規(guī)模復(fù)雜軟件系統(tǒng)的開發(fā)特點(diǎn)。因此,軟件能力已成為制約軟件發(fā)展的主要因素。
OOP方法源于20世紀(jì)70年代中后期,在20世紀(jì)80年代逐步代替了傳統(tǒng)的SP方法,成為最重要的方法之一,至今OOP方法被廣泛應(yīng)用于各個(gè)領(lǐng)域。面向?qū)ο蟮幕九c結(jié)構(gòu)化設(shè)計(jì)思想完全不同,面向?qū)ο蟮姆椒▽W(xué)認(rèn)為世界由各種對(duì)象組成,任何事物都是對(duì)象,是某個(gè)對(duì)象類的實(shí)例,復(fù)雜的對(duì)象可由較簡(jiǎn)單的對(duì)象的某種方式組成。OOP的基石是對(duì)象和類。對(duì)象是數(shù)據(jù)及對(duì)這些數(shù)據(jù)施加的操作結(jié)合在一起所構(gòu)成的獨(dú)立實(shí)體的總稱;類是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對(duì)象的描述。面向?qū)ο蟮幕緳C(jī)制是方法和消息,消息是要求某個(gè)對(duì)象執(zhí)行類中某個(gè)操作的規(guī)格說明;方法是對(duì)象所能執(zhí)行的操作,它是類中所定義的函數(shù),描述對(duì)象執(zhí)行某個(gè)操作的算法,每一個(gè)對(duì)象類都定義了一組方法。
OOP有3個(gè)重要特性:封裝性、繼承性和多態(tài)性。封裝性是指對(duì)象是數(shù)據(jù)和處理該數(shù)據(jù)的方法所構(gòu)成的整體,外界只能看到其外部特性(消息模式、處理能力等),其內(nèi)特性(私有數(shù)據(jù)、處理方法等)對(duì)外不可見。對(duì)象的封裝性使得信息具有隱蔽性,它減少了程序成分間的相互依賴,降低程序的復(fù)雜性,提高程序的可靠性和數(shù)據(jù)的性。 繼承性(Inheritance)反映的是類與類之間的不同抽象級(jí)別,根據(jù)繼承與被繼承的關(guān)系,可分為基類和衍生類,基類也稱為父類,衍生類也稱為子類,正如“繼承”這個(gè)詞給我們的字面提示一樣,子類從父類那里獲得所有的屬性和方法,并且可以對(duì)這些獲得的屬性和方法加以改造,使之具有自己的特點(diǎn)。繼承性使得相似的對(duì)象可以共享程序代碼和數(shù)據(jù),繼承性是程序可重用性的關(guān)鍵。多態(tài)性是指在形式上表現(xiàn)為一個(gè)方法根據(jù)傳遞給它的參數(shù)的不同,可以調(diào)用不同的方法體,實(shí)現(xiàn)不同的操作。將多態(tài)性映射到現(xiàn)實(shí)世界中,則表現(xiàn)為同一個(gè)事物隨著環(huán)境的不同,可以有不同的表現(xiàn)形態(tài)及不同的和其他事物通信的方式。多態(tài)性使程序員能在一個(gè)類等級(jí)中使用相同函數(shù)的多個(gè)版本,程序員可以集中精力開發(fā)可重用的類和方向而不分擔(dān)心名字的沖突問題。