當前位置:首頁 » 編程語言 » java程序面向對象設計

java程序面向對象設計

發布時間: 2023-02-03 15:34:33

『壹』 北大青鳥java培訓:程序員需要了解的10個面向對象設計

面向對象設計原則是OOPS編程的核心,學習面向對象編程像「抽象」、「封裝」、「多態」、「繼承」等基礎知識是重要的,但同時為了創建簡潔、模塊化的設計,了解這些設計原則也同等重要。
(設計原則)底線是永遠追求高內聚、低耦合的編碼或設計。
Apache和Sun的開源代碼是學習和OOPS設計原則的良好範例。
它們向我們展示了,設計原則在編程中是如何使用的。
JDK使用了一些設計原則:BorderFactory類中的工廠模式、Runtime類中的單例模式、.io類中的裝飾器模式。
順便說一句,如果您真的對編碼原則感興趣,請閱讀JoshuaBloch的Effective,他編寫過API。
我個人最喜歡的關於面向對象設計模式的是KathySierra的HeadFirstDesignPattern(深入淺出設計模式),以及其它的關於深入淺出面向對象分析和設計。
這些書對編寫更好的代碼有很大幫助,充分利用各種面向對象和SOLID的設計模式。
雖然學習設計模式(原則)最好的方法是現實中的例子和理解違反設計原則帶來的不便,本文的宗旨是向那些沒有接觸過或正處於學習階段的程序員介紹面向對象設計原則。
DRY_Don』trepeatyourself我們第一個面向對象設計原則是:DRY,從名稱可以看出DRY(don』trepeatyourself)意思是不寫重復代碼,而是抽象成可復用的代碼塊。
如果您有兩處以上相同的代碼塊,請考慮把它們抽象成一個單獨的方法;或者您多次使用了硬編碼的值,請把它們設置成公共常量。
這種面向對象設計原則的優點是易於維護。
重要的是不要濫用此原則,重復不是針對代碼而是針對功能來說。
它的意思是,如果您使用通用代碼來驗證OrderID和SSN,這並不意味著它們是相同的或者他們今後將保持不變。
通過把通用代碼用於實現兩種不同的功能,或者您把這兩種不同的功能密切地聯系在一起;當您的OrderID格式改變時,您的SSN驗證代碼將會中斷。
所以要當心這種耦合,而且不要把彼此之間沒有任何關系卻類似的代碼組合在一起。
封裝經常修改的代碼EncapsulateWhatChanges在軟體領域永遠不變的是「變化」,所以把您認為或懷疑將來要被修改的代碼封裝起來。
這種面向對象設計模式的優點是:易於測試和維護恰當封裝的代碼。
如果您在用編程,那麼請遵守以下原則:變數和方法的訪問許可權默認設置為私有,並且逐步放開它們的訪問許可權,例如從「private」到「protected」、「notpublic」。
中的一些設計模式使用了封裝,工廠設計模式就是一個例子,它封裝了創建對象的代碼而且提供了以下靈活性:後續生成新對象不影響現有的代碼。
打開/關閉設計原則OpenClosedDesignPrinciple類、方法/函數應當是對擴展(新功能)開放,對修改閉合。
這是另外一個優雅的SOLID設計原則,以防止有人修改通過測試的代碼。
理想情況下假如您添加了新功能,那麼您的代碼要經過測試,這就是打開/關閉設計原則的目標。
順便說一句,SOLID中的字母「O」指的是打開/關閉設計原則。
單一職責原則SingleResponsibilityPrinciple(SRP)單一職責原則是另外一個SOLID設計原則,SOLID中的字母「S」指的就是它。
按照SRP,一個類修改的原因應當有且只有一個,或者一個類應當總是實現單一功能。
如果您在中的一個類實現了多個功能,那麼這些功能之間便產生了耦合關系;如果您修改其中的一個功能,您有可能就打破了這種耦合關系,那麼就要進行另一輪測試以避免產生新的問題。
依賴注入/反轉原則不要問框架的依賴注入功能將會給你帶來什麼益處,依賴注入功能在spring框架里已經很好的得到了實現,這一設計原則的優雅之處在於:DI框架注入的任何一個類都易於用模擬對象進行測試,並且更易於維護,因為創建對象的代碼在框架里是集中的而且和客戶端代碼是隔離的。
有多種方法可以實現依賴注入,例如使用位元組碼工具,其中一些AOP(面向切面編程)框架如切入點表達式或者spring里使用的代理。
想對這種SOLID設計原則了解更多,請看IOC和DI設計模式中的例子。
SOLID中的字母「D」指的就是這種設計原則。
優先使用組合而非繼承ForCompositionoverInheritance如果可以的話,要優先使用組合而非繼承。
你們中的一些人可能為此爭論,但我發現組合比繼承更有靈活性。
組合允許在運行時通過設置屬性修改一個類的行為,通過使用多態即以介面的形式實現類之間的組合關系,並且為修改組合關系提供了靈活性。
甚至Effective也建議優先使用組合而非繼承。
里氏替換原則根據里氏替換原則,父類出現的地方可以用子類來替換,例如父類的方法或函數被子類對象替換應該沒有任何問題。
LSP和單一職責原則、介面隔離原則密切相關。
如果一個父類的功能比其子類還要多,那麼它可能不支持這一功能,而且也違反了LSP設計原則。
為了遵循LSPSOLID設計原則,派生類或子類(相對父類比較)必須增強功能,而非減少。
SOLID中的字母「L」指的就是LSP設計原則。
介面隔離原則介面隔離原則指,如果不需要一個介面的功能,那麼就不要實現此介面。
這大多在以下情況發生:一個介麵包含多種功能,而實現類只需要其中一種功能。
介面設計是一種棘手的工作,因為一旦發布了介面,您就不能修改它否則會影響實現該介面的類。
在中這種設計原則的另一個好處是:介面有一個特點,任何類使用它之前都要實現該介面所有的方法,所以使用功能單一的介面意味著實現更少的方法。
編程以介面(而非實現對象)為中心編程總是以介面(而非實現對象)為中心,這會使代碼的結構靈活,而且任何一個新的介面實現對象都能兼容現有代碼結構。
所以在中,變數、方法返回值、方法參數的數據類型請使用介面。
這是許多程序員的建議,Effective以及headfirstdesignpattern等書也這樣建議。
代理原則不要期望一個類完成所有的功能,電腦培訓http://www.kmbdqn.cn/認為可以適當地把一些功能交給代理類實現。
代理原則的典範是:中的equals()和hashCode()方法。
為了比較兩個對象的內容是否相同,我們讓用於比較的類本身完成對比工作而非它們的調用方。
這種設計原則的好處是:沒有重復編碼而且很容易修改類的行為。

『貳』 java面向對象程序設計有什麼優缺點

、Java語言是簡單的。Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用Java。另一方面,Java丟棄了C++ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,並提供了自動的廢料收集,使得程序員不必為內存管理而擔憂。
2、Java語言是一個面向對象的。Java語言提供類、介面和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持介面之間的多繼承,並支持類與介面之間的實現機制(關鍵字為implements)。Java語言全面支持動態綁定,而C++ 語言只對虛函數使用動態綁定。總之,Java語言是一個純的面向對象程序設計語言。
3、Java語言是分布式的。Java語言支持Internet應用的開發,在基本的Java應用編程介面中有一個網路應用編程介面(java.net),它提供了用於網路應用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。
4、Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
5、Java語言是安全的。Java通常被用在網路環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網路下載的類具有一個安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組代碼檢查,並提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。
6、Java語言是體系結構中立的。Java程序(後綴為java的文件)在Java平台上被編譯為體系結構中立的位元組碼格式(後綴為class的文件), 然後可以在實現這個Java平台的任何系統中運行。這種途徑適合於異構的網路環境和軟體的分發。
7、Java語言是可移植的。這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。
8、Java語言是解釋型的。如前所述,Java程序在Java平台上被編譯為位元組碼格式, 然後可以在實現這個Java平台的任何系統中運行。在運行時,Java平台中的Java解釋器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運行環境中。
9、Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just-In-Time)編譯器技術的發展越來越接近於C++。
10、Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable) 的構造子將一個實現了Runnable介面的對象包裝成一個線程,其二,從Thread類派生出子類並重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。 Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字為synchronized)。
11、Java語言是動態的。Java語言的設計目標之一是適應於動態變化的環境。Java程序需要的類能夠動態地被載入到運行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。

『叄』 Java面向對象的程序設計思想是什麼

面向對象的程序設計簡稱OOP是當今主流的程序設計范型,面向對象的程序是由對象組成的,每個對象包含對用戶公開的特定功能部分和隱藏的實現部分。萬物皆對象的概念,由具有共同特徵和行為的對象抽象出此類對象的模型稱之為「類」

『肆』 什麼是Java面向對象程序設計

《Java面向對象程序設計》通過豐富、實用的精選實例系統地介紹了使用Java語言進行面向對象程序設計的方法和技術,注重提高讀者運用Java語言和面向對象技術解決實際問題的能力。全書共12章,內容包括面向對象程序設計概述,Java語言概述,Java語言基礎,類、對象和介面,包和Java基礎類,Java異常處理,Java圖形用戶界面設計,Applet及其應用,I/O系統,多線程編程,多媒體編程和網路編程等。

『伍』 Java面向對象程序設計 這句話中的對象指的是什麼

對象是類的實例的意思
面向對象

面向對象是一種新興的程序設計方法,或者說它是一種新的程序設計范型,其基本思想是使用對象,類,繼承,封裝,消息等基本概念來進行程序設計。

它是從現實世界中客觀存在的事物(即對象)出發來構造軟體系統,並在系統構造中盡可能運用人類的自然思維方式,強調直接以問題域(現實世界)中的事物為中心來思考問題,認識問題,並根據這些事物的本質特點,把它們抽象地表示為系統中的對象,作為系統的基本構成單位(而不是用一些與現實世界中的事物相關比較遠,並且沒有對應關系的其它概念來構造系統)。這可以使系統直接地映射問題域,保持問題域中事物及其相互關系的本來面貌。

它可以有不同層次的理解:

從世界觀的角度可以認為:面向對象的基本哲學是認為世界是由各種各樣具有自己的運動規律和內部狀態的對象所組成的;不同對象之間的相互作用和通訊構成了完整的現實世界。因此,人們應當按照現實世界這個本來面貌來理解世界,直接通過對象及其相互關系來反映世界。這樣建立起來的系統才能符合現實世界的本來面目。

從方法學的角度可以認為:面向對象的方法是面向對象的世界觀在開發方法中的直接運用。它強調系統的結構應該直接與現實世界的結構相對應,應該圍繞現實世界中的對象來構造系統,而不是圍繞功能來構造系統。

從程序設計的角度來看,面向對象的程序設計語言必須有描述對象及其相互之間關系的語言成分。這些程序設計語言可以歸納為以下幾類:系統中一切皆為對象;對象是屬性及其操作的封裝體;對象可按其性質劃分為類,對象成為類的實例;實例關系和繼承關系是對象之間的靜態關系;消息傳遞是對象之間動態聯系的唯一形式,也是計算的唯一形式;方法是消息的序列。

『陸』 Java對類的設計如何體現出面向對象的思想

分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:

Java對類的設計如何體現出面向對象的思想?

解析:

一個類,就是一個模具.或者說是一類物品的抽象描述.比如汽車類,你可以說卡車,轎車,吊車都是汽車.汽車類就是所有各種汽車的抽象描述.

class 汽車

{

char 用途;

int 重量

char 車主

......

void 開動()

{}

void 停止()

{}

}

這就是一個能開的車的描述,當將其中的變數都賦予有實際意義的值時,

就是一個實例對象了

java 程序就是由一個個功能模塊構成,沒有獨立於類外的方法存在

每個方法都認為是一個可以分離的功能模塊提供的.必須將整個對象構造出來

才能去使用其中的方法.

『柒』 java面向對象程序設計有什麼優缺點

優點

1、抽象:抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。


2、繼承:繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增加新的方法使之更適合特殊的需要。


3、封裝:封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的介面訪問其他對象。


4、多態:多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

缺點

1、過度封裝:使用OOP時,會把一些復雜的問題分拆抽象成較簡單的獨立對象,通過對象的互相調用去實現方案。但是,由於對象包含自己封裝的數據,一個問題的數據集會被分散在不同的內存區域。互相調用時很可能會出現數據的cache miss的情況。



2、多態:在C++的一般的多態實現中,會使用到虛函數表。虛函數表是通過加入一次間接層來實現動態派送。但在調用的時候需要讀取虛函數表,增加cache miss的可能性。基本上要支持動態派送,無論用虛函數表、函數指針都會形成這個問題,但如果類的數目極多,把函數指針如果和數據放在一起有時候可放緩問題。

『捌』 java面向對象程序設計是什麼意思

這是一種編程思想,面向對象的編程就是編出一個人來,這個人可以做很多種動作,跑,跳,走,舉手...他能做什麼取決於你如何組合這些動作,有些動作在一些功能中是不用的。
而層次化的編程就是造出一個具體的工具,他只能幹這樣一件事,條件——結果。

『玖』 java面向對象程序設計的基本特徵是

一、封裝
封裝是面向對象四大基本特性之一
二、抽象
抽象的概念則是為了保護基類和方法不被隨意更改的特性,給予編程者在規則下修改方法的一種特性。
三、繼承
繼承特性在實際開發也是經常使用的特性。
四、多態
多態特性則是在編寫類的時候,有些方法可以通過不同的參數完成,但是它又是同一種用途,所以方法名是一樣的,而方法參數則是不同的。

『拾』 在JAVA中什麼是面向對象的程序設計方法有哪些主要特徵

答:Java是面向對象的程序設計語言,從面向對象這個角度看,體現了如下三個特點:

①封裝性

面向對象的程序設計語言都是把數據和處理數據的操作結合在一起而構成一個整體,這就是對象。對象的使用者只能看到對象的外部特性,比如,其主要功能、如何調用等,而看不到內部如何實現這些功能。作為面向對象的程序設計語言,程序中的數據就是變數,程序對數據作處理則稱為方法。變數和方法都被封裝在對象中。所以,一個對象就是變數和方法的集合,其中變數表明這個對象的狀態,方法實現這個對象所具有的行為,而且在程序中將這些變數和方法進行封裝,使它們成為一個模塊,再用一個名字來代表這個模塊。這樣,以後的更高層的程序設計中,就不必關心某個對象的行為到底是怎樣實現的。可見,將對象封裝就是為了使模塊盡可能少地展現其內部細節,而只是以一種界面來面向外部。

對象的封裝性減少了程序各部分之間的依賴,使程序的復雜性降低,而可靠性提高,並便於修改。
②繼承性

面向對象的程序設計中,對象是從類創建出來的,這一點即將在下面的解答中說明。在
Java中,許多類組成層次化結構。一個類的上一層稱為父類,而下一層稱為子類。一個類可以繼承其父類的變數和方法,而且這種繼承具有傳遞性。就是說,一個類可以繼承其上一層和其再上一層的變數和方法。這種可傳遞的繼承性使得下層多個相似的對象可以共享上層類的數據和程序代碼,而子類又可以在繼承父類的基礎上增添新的內容和功能。這種代碼共享和代碼可增添的繼承特性使Java既靈活方便又提高效率。
③通信相關性

一個對象往往涉及多個行為。體現在程序設計中,一個對象往往包含多個方法,每一個方法對應一個行為。所以,一個對象完成某個動作也就是程序執行相應的方法。於是,就涉及對象之間通過交互來實現復雜的行為,這叫對象之間的通信。

利用通信可以實現一個對象往另一個對象的信息傳遞。信息傳遞涉及三個要素;一是信息接收對象;二是接收對象中用哪個方法完成指定的動作;三是此方法需要的參數。由於信息傳遞的要素非常清晰,所以用在編程中也將很方便。

這種通信相關性使許多復雜功能得以實現,卻又能避免編程的錯綜復雜。

熱點內容
java數組包含字元串 發布:2024-11-01 22:31:15 瀏覽:791
伺服器和家用電腦質量 發布:2024-11-01 22:28:29 瀏覽:488
sqlserver默認實例 發布:2024-11-01 22:23:42 瀏覽:959
sort排序java 發布:2024-11-01 22:23:26 瀏覽:47
解壓後的apk無法安裝 發布:2024-11-01 22:22:10 瀏覽:665
公司的pop伺服器地址 發布:2024-11-01 22:22:07 瀏覽:119
朵唯m30手機配置是真的嗎如何 發布:2024-11-01 22:16:56 瀏覽:681
夢幻西遊怎麼清理緩存 發布:2024-11-01 22:15:52 瀏覽:344
如何配置fcm 發布:2024-11-01 22:08:15 瀏覽:853
原裝電腦配置哪個好 發布:2024-11-01 22:05:49 瀏覽:728