1. 面向對象程序設計的特點和優點
面向對象的基本概念
(1)對象。
對象是人們要進行研究的任何事物,從最簡單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。
(2)對象的狀態和行為。
對象具有狀態,一個對象用數據值來描述它的狀態。
對象還有操作,用於改變對象的狀態,對象及其操作就是對象的行為。
對象實現了數據和操作的結合,使數據和操作封裝於對象的統一體中
(3)類。
具有相同或相似性質的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。
類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。
(4)類的結構。
在客觀世界中有若干類,這些類之間有一定的結構關系。通常有兩種主要的結構關系,即一般--具體結構關系,整體--部分結構關系。
①一般——具體結構稱為分類結構,也可以說是「或」關系,或者是「is a」關系。
②整體——部分結構稱為組裝結構,它們之間的關系是一種「與」關系,或者是「has a」關系。
(5)消息和方法。
對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的信息。發送一條消息至少要包括說明接受消息的對象名、發送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該消息的對象所知道的變數名,或者是所有對象都知道的全局變數名。
類中操作的實現過程叫做方法,一個方法有方法名、參數、方法體
面向對象的特徵
(1)對象唯一性。
每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。
(2)分類性。
分類性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的應用有關。
(3)繼承性。
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並加入若干新的內容。
繼承性是面向對象程序設計語言不同於其它語言的最重要的特點,是其他語言所沒有的。
在類層次中,子類只繼承一個父類的數據結構和方法,則稱為單重繼承。
在類層次中,子類繼承了多個父類的數據結構和方法,則稱為多重繼承。
在軟體開發中,類的繼承性使所建立的軟體具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創建工作量,增加了代碼的可重性。
採用繼承性,提供了類的規范的等級結構。通過類的繼承關系,使公共的特性能夠共享,提高了軟體的重用性。
(4)多態性(多形性)
多態性使指相同的操作或函數、過程可作用於多種類型的對象上並獲得不同的結果。不同的對象,收到同一消息可以產生不同的結果,這種現象稱為多態性。
多態性允許每個對象以適合自身的方式去響應共同的消息。
多態性增強了軟體的靈活性和重用性。
三、面向對象的要素
(1)抽象。
抽象是指強調實體的本質、內在的屬性。在系統開發中,抽象指的是在決定如何實現對象之前的對象的意義和行為。使用抽象可以盡可能避免過早考慮一些細節。
類實現了對象的數據(即狀態)和行為的抽象。
(2)封裝性(信息隱藏)。
封裝性是保證軟體部件具有優良的模塊性的基礎。
面向對象的類是封裝良好的模塊,類定義將其說明(用戶可見的外部介面)與實現(用戶不可見的內部實現)顯式地分開,其內部實現按其具體定義的作用域提供保護。
對象是封裝的最基本單位。封裝防止了程序相互依賴性而帶來的變動影響。面向對象的封裝比傳統語言的封裝更為清晰、更為有力。
(3)共享性
面向對象技術在不同級別上促進了共享
同一類中的共享。同一類中的對象有著相同數據結構。這些對象之間是結構、行為特徵的共享關系。
在同一應用中共享。在同一應用的類層次結構中,存在繼承關系的各相似子類中,存在數據結構和行為的繼承,使各相似子類共享共同的結構和行為。使用繼承來實現代碼的共享,這也是面向對象的主要優點之一。
在不同應用中共享。面向對象不僅允許在同一應用中共享信息,而且為未來目標的可重用設計准備了條件。通過類庫這種機制和結構來實現不同應用中的信息共享。
4.強調對象結構而不是程序結構
2. 什麼是OOP
OOP即面向對象程序設計,全稱為Object Oriented Programming,是一種計算機編程架構。其本質是以建立模型體現出來的抽象思維過程和面向對象的方法,模型是用來反映現實世界中事物特徵的。
面向對象程序設計以對象為核心,該方法認為程序由一系列對象組成。類是對現實世界的抽象,包括表示靜態屬性的數據和對數據的操作,對象是類的實例化。對象間通過消息傳遞相互通信,來模擬現實世界中不同實體間的聯系。在面向對象的程序設計中,對象是組成程序的基本模塊。
(2)面向對象程序設計的基本概念擴展閱讀:
面向對象程序設計的優點:
1、數據抽象的概念可以在保持外部介面不變的情況下改變內部實現,從而減少甚至避免對外界的干擾;
2、通過繼承大幅減少冗餘的代碼,並可以方便地擴展現有代碼,提高編碼效率,也減低了出錯概率,降低軟體維護的難度;
3、結合面向對象分析、面向對象設計,允許將問題域中的對象直接映射到程序中,減少軟體開發過程中中間環節的轉換過程;
4、通過對對象的辨別、劃分可以將軟體系統分割為若干相對為獨立的部分,在一定程度上更便於控制軟體復雜度;
5、以對象為中心的設計可以幫助開發人員從靜態(屬性)和動態(方法)兩個方面把握問題,從而更好地實現系統。
3. 闈㈠悜瀵硅薄鐨勬傚康錛岀壒鐐規槸浠涔
1.緙栫▼妯″瀷
鎵鏈夎$畻鏈哄潎鐢變袱縐嶅厓緔犵粍鎴:浠g爜鍜屾暟鎹.綺劇『鐨勮,鏈変簺紼嬪簭鏄鍥寸粫鐫"浠涔堟e湪鍙戠敓"鑰岀紪鍐,鏈変簺鍒欐槸鍥寸粫"璋佹e湪鍙楀獎鍝"鑰岀紪鍐欑殑.
絎涓縐嶇紪紼嬫柟寮忓彨鍋"闈㈠悜榪囩▼鐨勬ā鍨",鎸夎繖縐嶆ā鍨嬬紪鍐欑殑紼嬪簭浠ヤ竴緋誨垪鐨勭嚎鎬фラ(浠g爜)涓虹壒寰,鍙琚鐞嗚В涓轟綔鐢ㄤ簬鏁版嵁鐨勪唬鐮.濡 C 絳夎繃紼嬪寲璇璦.
絎浜岀嶇紪紼嬫柟寮忓彨鍋"闈㈠悜瀵硅薄鐨勬ā鍨",鎸夎繖縐嶆ā鍨嬬紪鍐欑殑紼嬪簭鍥寸粫鐫紼嬪簭鐨勬暟鎹(瀵硅薄)鍜岄拡瀵硅ュ硅薄鑰屼弗鏍煎畾涔夌殑鎺ュ彛鏉ョ粍緇囩▼搴,瀹冪殑鐗圭偣鏄鏁版嵁鎺у埗浠g爜鐨勮塊棶.閫氳繃鎶婃帶鍒舵潈杞縐誨埌鏁版嵁涓,闈㈠悜瀵硅薄鐨勬ā鍨嬪湪緇勭粐鏂瑰紡涓婃湁:鎶借薄,灝佽,緇ф壙鍜屽氭佺殑濂藉.
2.鎶借薄
闈㈠悜瀵硅薄紼嬪簭璁捐$殑鍩烘湰瑕佺礌鏄鎶借薄,紼嬪簭鍛橀氳繃鎶借薄鏉ョ$悊澶嶆潅鎬.
綆$悊鎶借薄鐨勬湁鏁堟柟娉曟槸浣跨敤灞傛″紡鐨勫垎綾葷壒鎬,榪欑嶆柟娉曞厑璁哥敤鎴鋒牴鎹鐗╃悊鍚涔夊垎瑙d竴涓澶嶆潅鐨勭郴緇,鎶婂畠鍒掑垎鎴愭洿瀹規槗綆$悊鐨勫潡.渚嬪,涓涓璁$畻鏈虹郴緇熸槸涓涓鐙絝嬬殑瀵硅薄.鑰屽湪璁$畻鏈虹郴緇熷唴閮ㄧ敱鍑犱釜瀛愮郴緇熺粍鎴:鏄劇ず鍣,閿鐩,紜鐩橀┍鍔ㄥ櫒,DVD-ROM,杞鐩,闊沖搷絳,榪欎簺瀛愮郴緇熸瘡涓鍙堢敱涓撻棬鐨勯儴浠剁粍鎴.鍏抽敭鏄闇瑕佷嬌鐢ㄥ眰嬈℃娊璞℃潵綆$悊璁$畻鏈虹郴緇(鎴栧叾浠栦換浣曞嶆潅緋葷粺)鐨勫嶆潅鎬.
闈㈠悜瀵硅薄紼嬪簭璁捐$殑鏈璐:榪欎簺鎶借薄鐨勫硅薄鍙浠ヨ鐪嬩綔鍏蜂綋鐨勫疄浣,榪欎簺瀹炰綋瀵圭敤鏉ュ憡璇夋垜浠浣滀粈涔堢殑娑堟伅榪涜屽搷搴.
/* (鎴戠殑鐞嗚В)
*璁$畻鏈烘槸涓涓瀹炰綋,鎴戣佽緭鍏ュ瓧絎,鏄劇ず鍣ㄦ樉紺哄嚭鏉,閭d箞
*璁$畻鏈(瀵硅薄).杈撳叆(閿鐩樺睘鎬).鏄劇ず(鏄劇ず鏂規硶)
*浣跨敤鍒嗗眰鏉ュ紩鐢,鎿嶄綔.鑰屼笉鐢ㄧ¤$畻鏈哄唴閮ㄥ備綍澶勭悊.
*鍙瑕佹湁璁$畻鏈哄硅薄,瀹冨氨鑳藉搷搴旀垜鐨勬搷浣,鑰屾垜鏁查敭鐩,
*璁$畻鏈哄硅薄灝辨妸榪欎釜娑堟伅浼犵粰灞忓箷,灞忓箷鏄劇ず.
*/
璁$畻鏈哄硅薄鍖呭惈浜嗗畠鎵鏈夌殑灞炴,浠ュ強鎿嶄綔,榪欏氨鏄闈㈠悜瀵硅薄紼嬪簭璁捐$殑涓夊ぇ鍘熷垯涔嬩竴:灝佽.
3.灝佽
灝佽呮槸涓縐嶆妸浠g爜鍜屼唬鐮佹墍鎿嶄綔鐨勬暟鎹鎹嗙粦鍦ㄤ竴璧,浣胯繖涓よ呬笉鍙楀栫晫騫叉壈鍜岃鐢ㄧ殑鏈哄埗.灝佽呭彲琚鐞嗚В涓轟竴縐嶇敤鍋氫繚鎶ょ殑鍖呰呭櫒,浠ラ槻姝浠g爜鍜屾暟鎹琚鍖呰呭櫒澶栭儴鎵瀹氫箟鐨勫叾浠栦唬鐮佷換鎰忚塊棶.瀵瑰寘瑁呭櫒鍐呴儴浠g爜涓庢暟鎹鐨勮塊棶閫氳繃涓涓鏄庣『瀹氫箟鐨勬帴鍙f潵鎺у埗.灝佽呬唬鐮佺殑濂藉勬槸姣忎釜浜洪兘鐭ラ亾鎬庢牱璁塊棶浠g爜,榪涜屾棤闇鑰冭檻瀹炵幇緇嗚妭灝辮兘鐩存帴浣跨敤瀹,鍚屾椂涓嶇敤鎷呭績涓嶅彲棰勬枡鐨勫壇浣滅敤.
鍦↗AVA涓,鏈鍩烘湰鐨勫皝瑁呭崟鍏冩槸綾,涓涓綾誨畾涔夌潃灝嗙敱涓緇勫硅薄鎵鍏變韓鐨勮屼負(鏁版嵁鍜屼唬鐮).涓涓綾葷殑姣忎釜瀵硅薄鍧囧寘鍚瀹冩墍瀹氫箟鐨勭粨鏋勪笌琛屼負,榪欎簺瀵硅薄灝卞ソ璞℃槸涓涓妯″瓙閾擱犲嚭鏉ョ殑.鎵浠ュ硅薄涔熷彨鍋氱被鐨勫疄渚.
鍦ㄥ畾涔変竴涓綾繪椂,闇瑕佹寚瀹氭瀯鎴愯ョ被鐨勪唬鐮佷笌鏁版嵁.鐗瑰埆鏄,綾繪墍瀹氫箟鐨勫硅薄鍙鍋氭垚鍛樺彉閲忔垨瀹炰緥鍙橀噺.鎿嶄綔鏁版嵁鐨勪唬鐮佸彨鍋氭垚鍛樻柟娉.鏂規硶瀹氫箟鎬庢牱浣跨敤鎴愬憳鍙橀噺,榪欐剰鍛崇潃綾葷殑琛屼負鍜屾帴鍙h佺敱鎿嶄綔瀹炰緥鏁版嵁鐨勬柟娉曟潵瀹氫箟.
鐢變簬綾葷殑鐢ㄩ旀槸灝佽呭嶆潅鎬,鎵浠ョ被鐨勫唴閮ㄦ湁闅愯棌瀹炵幇澶嶆潅鎬х殑鏈哄埗.鎵浠JAVA涓鎻愪緵浜嗙佹湁鍜屽叕鏈夌殑璁塊棶妯″紡,綾葷殑鍏鏈夋帴鍙d唬琛ㄥ栭儴鐨勭敤鎴峰簲璇ョ煡閬撴垨鍙浠ョ煡閬撶殑姣忎歡涓滆タ.縐佹湁鐨勬柟娉曟暟鎹鍙鑳介氳繃璇ョ被鐨勬垚鍛樹唬鐮佹潵璁塊棶.榪欏氨鍙浠ョ『淇濅笉浼氬彂鐢熶笉甯屾湜鐨勪簨鎯.
4.緇ф壙
緇ф壙鏄鎸囦竴涓瀵硅薄浠庡彟涓涓瀵硅薄涓鑾峰緱灞炴х殑榪囩▼.鏄闈㈠悜瀵硅薄紼嬪簭璁捐$殑涓夊ぇ鍘熷垯涔嬩簩,瀹冩敮鎸佹寜灞傛″垎綾葷殑姒傚康.渚嬪,娉㈡柉鐚鏄鐚鐨勪竴縐,鐚鍙堟槸鍝轟鉤鍔ㄧ墿鐨勪竴縐,鍝轟鉤鍔ㄧ墿鍙堟槸鍔ㄧ墿鐨勪竴縐.濡傛灉涓嶄嬌鐢ㄥ眰嬈$殑姒傚康,姣忎釜瀵硅薄闇瑕佹槑紜瀹氫箟鍚勮嚜鐨勫叏閮ㄧ壒寰.閫氳繃灞傛″垎綾繪柟寮,涓涓瀵硅薄鍙闇瑕佸湪瀹冪殑綾諱腑瀹氫箟鏄瀹冩垚涓哄敮涓鐨 鍚勪釜灞炴,鐒跺悗浠庣埗綾諱腑緇ф壙瀹冪殑閫氱敤灞炴.鍥犳,姝f槸鐢變簬緇ф壙鏈哄埗,鎵嶄嬌寰椾竴涓瀵硅薄鍙浠ユ垚涓轟竴涓閫氱敤綾葷殑涓涓鐗瑰畾瀹炰緥.涓涓娣卞害緇ф壙鐨勫瓙綾誨皢緇ф壙瀹冨湪綾誨眰嬈′腑鐨勬瘡涓紲栧厛鐨勬墍鏈夊睘鎬.
緇ф壙涓庡皝瑁呭彲浠ヤ簰鐩鎬綔鐢.濡傛灉涓涓緇欏畾鐨勭被灝佽呬簡鏌愪簺灞炴,瀹冪殑浠諱綍瀛愮被灝嗕細鍚鏈夊悓鏍峰緱灞炴,鍙﹀姞鍚勪釜瀛愮被鎵鏈夊緱灞炴.榪欐槸闈㈠悜瀵硅薄紼嬪簭鍦ㄥ嶆潅鎬т笂鍛堢嚎鎬ц岄潪鍑犱綍澧為暱鐨勪竴涓閲嶈佹傚康.鏂扮殑瀛愮被緇ф壙鍏舵墍鏈夌栧厛鐨勬墍鏈夊睘鎬.瀛愮被鍜岀郴緇熶腑鐨勫叾浠栦唬鐮佷笉浼氫駭鐢熸棤娉曢勬枡鐨勪氦浜掍綔鐢.
5.澶氭
澶氭佹槸鎸囦竴涓鏂規硶鍙鑳芥湁涓涓鍚嶇О,浣嗗彲浠ユ湁璁稿氬艦鎬,涔熷氨鏄紼嬪簭涓鍙浠ュ畾涔夊氫釜鍚屽悕鐨勬柟娉,鐢"涓涓鎺ュ彛,澶氫釜鏂規硶"鏉ユ弿榪.鍙浠ラ氳繃鏂規硶鐨勫弬鏁板拰綾誨瀷寮曠敤.
6.灝佽,緇ф壙,澶氭佺殑緇勫悎浣跨敤
鍦ㄧ敱灝佽咃紝緇ф壙,澶氭佹墍緇勬垚鐨勭幆澧冧腑,紼嬪簭鍛樺彲浠ョ紪鍐欏嚭姣旈潰鍚戣繃紼嬫ā鍨嬫洿鍋ュ.,鏇村叿鎵╁睍鎬х殑紼嬪簭.緇忚繃浠旂粏璁捐$殑綾誨眰嬈$粨鏋勬槸閲嶇敤浠g爜鐨勫熀紜.灝佽呰兘璁╃▼搴忓憳涓嶅繀淇鏀瑰叕鏈夋帴鍙g殑浠g爜鍗沖彲瀹炵幇紼嬪簭鐨勭Щ妞.澶氭佽兘浣跨▼搴忓憳寮鍙戝嚭綆媧,鏄撴噦,鏄撲慨鏀圭殑浠g爜.渚嬪:奼借濺
浠庣戶鎵跨殑瑙掑害鐪,椹鵑┒鍛橀兘渚濋潬緇ф壙鎬ф潵椹鵑┒涓嶅悓綾誨瀷(瀛愮被)鐨勬苯杞,鏃犺鴻繖杈嗚濺鏄杞胯濺榪樻槸鍗¤濺,鏄濂旈┌鐗岃繕鏄鑿蹭簹鐗圭墝,椹鵑┒鍛橀兘鑳芥壘鍒版柟鍚戠洏,鎵嬪埞,鎹㈡。鍣.緇忚繃涓孌墊椂闂撮┚椹跺悗,閮借兘鐭ラ亾鎵嬪姩妗d笌鑷鍔ㄦ。涔嬮棿鐨勫樊鍒,鍥犱負浠栦滑瀹為檯涓婇兘鐭ラ亾榪欎袱鑰呯殑鍏卞悓瓚呯被:浼犲姩瑁呯疆.
浠庡皝瑁呯殑瑙掑害鐪,椹鵑┒鍛樻繪槸鐪嬪埌灝佽呭ソ鐨勭壒鎬.鍒硅濺闅愯棌浜嗚稿氬嶆潅鎬,鍏跺栬傚傛ょ畝鍗,鐢ㄨ剼灝辮兘鎿嶄綔瀹.鍙戝姩鏈,鎵嬪埞,杞鑳庡ぇ灝忕殑瀹炵幇瀵逛笌鍒硅濺綾葷殑瀹氫箟娌℃湁褰卞搷.
浠庡氭佺殑瑙掑害鐪,鍒硅濺緋葷粺鏈夋i攣鍙嶉攣涔嬪垎,椹鵑┒鍛樺彧鐢ㄨ剼韙╁埞杞﹀仠杞,鍚屾牱鐨勬帴鍙e彲浠ョ敤鏉ユ帶鍒惰嫢騫茬嶄笉鍚岀殑瀹炵幇(姝i攣鎴栧弽閿).
榪欐牱鍚勪釜鐙絝嬬殑鏋勪歡鎵嶈杞鎹涓烘苯杞﹁繖涓瀵硅薄鐨.鍚屾牱,閫氳繃浣跨敤闈㈠悜瀵硅薄鐨勮捐″師鍒,紼嬪簭鍛樺彲浠ユ妸涓涓澶嶆潅紼嬪簭鐨勫悇涓鏋勪歡緇勫悎鍦ㄤ竴璧,褰㈡垚涓涓涓鑷,鍋ュ.,鍙緇存姢鐨勭▼搴