導航:首頁 > 編程語言 > java的oo特性

java的oo特性

發布時間:2022-09-18 08:59:30

『壹』 java語言的特點有

和C,C++這些語言比起來來,java很簡單源,去掉指針的java,非常好理解,自動垃圾回收機制也很好,JDK1.5推出以後,性能上又有了很大提高,有人提出讓java代替C語言成為基本語言。足夠說明java簡單易學的這個優點。其次,java的功能強大, EJB3.0的推出使java成為了大型項目的首選。J2ME在手機游戲開發的作用也是無用質疑的。至於桌面程序, NetBeans和Eclipse都是利用java開發的,界面不是java的缺點。還有就是java的跨平台性。


java功能強大的背後是其復雜性,以web來看,現在流行的框架有很多, struts,spring,jQuery等等,無疑增加了java的復雜性。對於一個大型項目,如果用java來做,可能需要9個月,並且可能需要翻閱10本以上的書,但如果用ruby來作,3個月,3本書就足夠了,而.net也不過3,4本書足夠。性能方面,同一個項目用java和.net來作,結果開發周期,.net是java的一半,性能java是.net的十分之一,代碼量java是.net的三倍。

『貳』 什麼是Java里的OO思想

OO就是面向對象
面向對象(Object Oriented,OO)是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的范圍。如資料庫系統、互動式界面、應用結構、應用平台、分布式系統、網路管理結構、CAD技術、人工智慧等領域。

談到面向對象,這方面的文章非常多。但是,明確地給出對象的定義或說明對象的定義的非常少——至少我現在還沒有發現。其初,「面向對象」是專指在程序設計中採用封裝、繼承、抽象等設計方法。可是,這個定義顯然不能再適合現在情況。面向對象的思想已經涉及到軟體開發的各個方面。如,面向對象的分析(OOA,Object Oriented Analysis),面向對象的設計(OOD,Object Oriented Design)、以及我們經常說的面向對象的編程實現(OOP,Object Oriented Programming)。許多有關面向對象的文章都只是講述在面向對象的開發中所需要注意的問題或所採用的比較好的設計方法。看這些文章只有真正懂得什麼是對象,什麼是面向對象,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。

面向對象是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的范圍。如資料庫系統、互動式界面、應用結構、應用平台、分布式系統、網路管理結構、CAD技術、人工智慧等領域。

一、傳統開發方法存在問題

1.軟體重用性差
重用性是指同一事物不經修改或稍加修改就可多次重復使用的性質。軟體重用性是軟體工程追求的目標之一。

2.軟體可維護性差
軟體工程強調軟體的可維護性,強調文檔資料的重要性,規定最終的軟體產品應該由完整、一致的配置成分組成。在軟體開發過程中,始終強調軟體的可讀性、可修改性和可測試性是軟體的重要的質量指標。實踐證明,用傳統方法開發出來的軟體,維護時其費用和成本仍然很高,其原因是可修改性差,維護困難,導致可維護性差。

3.開發出的軟體不能滿足用戶需要
用傳統的結構化方法開發大型軟體系統涉及各種不同領域的知識,在開發需求模糊或需求動態變化的系統時,所開發出的軟體系統往往不能真正滿足用戶的需要。

用結構化方法開發的軟體,其穩定性、可修改性和可重用性都比較差,這是因為結構化方法的本質是功能分解,從代表目標系統整體功能的單個處理著手,自頂向下不斷把復雜的處理分解為子處理,這樣一層一層的分解下去,直到僅剩下若干個容易實現的子處理功能為止,然後用相應的工具來描述各個最低層的處理。因此,結構化方法是圍繞實現處理功能的「過程」來構造系統的。然而,用戶需求的變化大部分是針對功能的,因此,這種變化對於基於過程的設計來說是災難性的。用這種方法設計出來的系統結構常常是不穩定的 ,用戶需求的變化往往造成系統結構的較大變化,從而需要花費很大代價才能實現這種變化。

二、面向對象的基本概念

(1)對象。
對象是人們要進行研究的任何事物,從最簡單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。

(2)對象的狀態和行為。
對象具有狀態,一個對象用數據值來描述它的狀態。
對象還有操作,用於改變對象的狀態,對象及其操作就是對象的行為。
對象實現了數據和操作的結合,使數據和操作封裝於對象的統一體中

(3)類。
具有相同或相似性質的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象。
類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。

(4)類的結構。
在客觀世界中有若干類,這些類之間有一定的結構關系。通常有兩種主要的結構關系,即一般--具體結構關系,整體--部分結構關系。

①一般——具體結構稱為分類結構,也可以說是「或」關系,或者是「is a」關系。
②整體——部分結構稱為組裝結構,它們之間的關系是一種「與」關系,或者是「has a」關系。

(5)消息和方法。
對象之間進行通信的結構叫做消息。在對象的操作中,當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的信息。發送一條消息至少要包括說明接受消息的對象名、發送給該對象的消息名(即對象名、方法名)。一般還要對參數加以說明,參數可以是認識該消息的對象所知道的變數名,或者是所有對象都知道的全局變數名。

類中操作的實現過程叫做方法,一個方法有方法名、參數、方法體。消息傳遞如圖10-1所示。

二、面向對象的特徵

(1)對象唯一性。
每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。

(2)分類性。
分類性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的應用有關。

(3)繼承性。
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並加入若干新的內容。

繼承性是面向對象程序設計語言不同於其它語言的最重要的特點,是其他語言所沒有的。

在類層次中,子類只繼承一個父類的數據結構和方法,則稱為單重繼承。
在類層次中,子類繼承了多個父類的數據結構和方法,則稱為多重繼承。
在軟體開發中,類的繼承性使所建立的軟體具有開放性、可擴充性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的創建工作量,增加了代碼的可重性。
採用繼承性,提供了類的規范的等級結構。通過類的繼承關系,使公共的特性能夠共享,提高了軟體的重用性。

(4)多態性(多形性)
多態性使指相同的操作或函數、過程可作用於多種類型的對象上並獲得不同的結果。不同的對象,收到同一消息可以產生不同的結果,這種現象稱為多態性。
多態性允許每個對象以適合自身的方式去響應共同的消息。
多態性增強了軟體的靈活性和重用性。

三、面向對象的要素

(1)抽象。
抽象是指強調實體的本質、內在的屬性。在系統開發中,抽象指的是在決定如何實現對象之前的對象的意義和行為。使用抽象可以盡可能避免過早考慮一些細節。

類實現了對象的數據(即狀態)和行為的抽象。

(2)封裝性(信息隱藏)。
封裝性是保證軟體部件具有優良的模塊性的基礎。
面向對象的類是封裝良好的模塊,類定義將其說明(用戶可見的外部介面)與實現(用戶不可見的內部實現)顯式地分開,其內部實現按其具體定義的作用域提供保護。
對象是封裝的最基本單位。封裝防止了程序相互依賴性而帶來的變動影響。面向對象的封裝比傳統語言的封裝更為清晰、更為有力。

(3)共享性
面向對象技術在不同級別上促進了共享
同一類中的共享。同一類中的對象有著相同數據結構。這些對象之間是結構、行為特徵的共享關系。
在同一應用中共享。在同一應用的類層次結構中,存在繼承關系的各相似子類中,存在數據結構和行為的繼承,使各相似子類共享共同的結構和行為。使用繼承來實現代碼的共享,這也是面向對象的主要優點之一。
在不同應用中共享。面向對象不僅允許在同一應用中共享信息,而且為未來目標的可重用設計准備了條件。通過類庫這種機制和結構來實現不同應用中的信息共享。

4.強調對象結構而不是程序結構

四、面向對象的開發方法

目前,面向對象開發方法的研究已日趨成熟,國際上已有不少面向對象產品出現。面向對象開發方法有Coad方法、Booch方法和OMT方法等。

1.Booch方法

Booch最先描述了面向對象的軟體開發方法的基礎問題,指出面向對象開發是一種根本不同於傳統的功能分解的設計方法。面向對象的軟體分解更接近人對客觀事務的理解,而功能分解只通過問題空間的轉換來獲得。

2.Coad方法

Coad方法是1989年Coad和Yourdon提出的面向對象開發方法。該方法的主要優點是通過多年來大系統開發的經驗與面向對象概念的有機結合,在對象、結構、屬性和操作的認定方面,提出了一套系統的原則。該方法完成了從需求角度進一步進行類和類層次結構的認定。盡管Coad方法沒有引入類和類層次結構的術語,但事實上已經在分類結構、屬性、操作、消息關聯等概念中體現了類和類層次結構的特徵。

3.OMT方法

OMT方法是1991年由James Rumbaugh等5人提出來的,其經典著作為「面向對象的建模與設計」。

該方法是一種新興的面向對象的開發方法,開發工作的基礎是對真實世界的對象建模,然後圍繞這些對象使用分析模型來進行獨立於語言的設計,面向對象的建模和設計促進了對需求的理解,有利於開發得更清晰、更容易維護的軟體系統。該方法為大多數應用領域的軟體開發提供了一種實際的、高效的保證,努力尋求一種問題求解的實際方法。

4.UML(Unified Modeling Language)語言

軟體工程領域在1995年~1997年取得了前所未有的進展,其成果超過軟體工程領域過去15年的成就總和,其中最重要的成果之一就是統一建模語言(UML)的出現。UML將是面向對象技術領域內佔主導地位的標准建模語言。
UML不僅統一了Booch方法、OMT方法、OOSE方法的表示方法,而且對其作了進一步的發展,最終統一為大眾接受的標准建模語言。UML是一種定義良好、易於表達、功能強大且普遍適用的建模語言。它融入了軟體工程領域的新思想、新方法和新技術。它的作用域不限於支持面向對象的分析與設計,還支持從需求分析開始的軟體開發全過程。

五、面向對象的模型

·對象模型

對象模型表示了靜態的、結構化的系統數據性質,描述了系統的靜態結構,它是從客觀世界實體的對象關系角度來描述,表現了對象的相互關系。該模型主要關心系統中對象的結構、屬性和操作,它是分析階段三個模型的核心,是其他兩個模型的框架。

1.對象和類

(1) 對象。
對象建模的目的就是描述對象。

(2) 類。
通過將對象抽象成類,我們可以使問題抽象化,抽象增強了模型的歸納能力。

(3) 屬性。
屬性指的是類中對象所具有的性質(數據值)。

(4) 操作和方法。

操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作,每個操作都有一個目標對象作為其隱含參數。
方法是類的操作的實現步驟。

2.關聯和鏈
關聯是建立類之間關系的一種手段,而鏈則是建立對象之間關系的一種手段。

(1) 關聯和鏈的含義。
鏈表示對象間的物理與概念聯結,關聯表示類之間的一種關系,鏈是關聯的實例,關聯是鏈的抽象。

(2) 角色。
角色說明類在關聯中的作用,它位於關聯的端點。

(3) 受限關聯。
受限關聯由兩個類及一個限定片語成,限定詞是一種特定的屬性,用來有效的減少關聯的重數,限定詞在關聯的終端對象集中說明。
限定提高了語義的精確性,增強了查詢能力,在現實世界中,常常出現限定詞。

(4) 關聯的多重性。
關聯的多重性是指類中有多少個對象與關聯的類的一個對象相關。重數常描述為「一」或「多」。
圖10-8表示了各種關聯的重數。小實心圓表示「多個」,從零到多。小空心圓表示零或一。沒有符號表示的是一對一關聯。

3.類的層次結構
(1) 聚集關系。
聚集是一種「整體-部分」關系。在這種關系中,有整體類和部分類之分。聚集最重要的性質是傳遞性,也具有逆對稱性。

聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來將部分類聯系起來簡單得多,對象模型應該容易地反映各級層次,圖10-10表示一個關於微機的多極聚集。

(2)一般化關系。
一般化關系是在保留對象差異的同時共享對象相似性的一種高度抽象方式。它是「一般---具體」的關系。一般化類稱為你類,具體類又能稱為子類,各子類繼承了交類的性質,而各子類的一些共同性質和操作又歸納到你類中。因此,一般化關系和繼承是同時存在的。一般化關系的符號表示是在類關聯的連線上加一個小三角形,如圖10-11

4.對象模型
(1)模板。模板是類、關聯、一般化結構的邏輯組成。
(2)對象模型。

對象模型是由一個或若干個模板組成。模板將模型分為若干個便於管理的子塊,在整個對象模型和類及關聯的構造塊之間,模板提供了一種集成的中間單元,模板中的類名及關聯名是唯一的。

·動態模型

動態模型是與時間和變化有關的系統性質。該模型描述了系統的控制結構,它表示了瞬間的、行為化的系統控制
性質,它關心的是系統的控制,操作的執行順序,它表示從對象的事件和狀態的角度出發,表現了對象的相互行為。
該模型描述的系統屬性是觸發事件、事件序列、狀態、事件與狀態的組織。使用狀態圖作為描述工具。它涉及到事件、狀態、操作等重要概念。
1.事件
事件是指定時刻發生的某件事。

2.狀態
狀態是對象屬性值的抽象。對象的屬性值按照影響對象顯著行為的性質將其歸並到一個狀態中去。狀態指明了對象
對輸入事件的響應。

3.狀態圖

狀態圖是一個標準的計算機概念,他是有限自動機的圖形表示,這里把狀態圖作為建立動態模型的圖形工具。
狀態圖反映了狀態與事件的關系。當接收一事件時,下一狀態就取決於當前狀態和所接收的該事件,由該事件引起的狀態變化稱為轉換。
狀態圖是一種圖,用結點表示狀態,結點用圓圈表示;圓圈內有狀態名,用箭頭連線表示狀態的轉換,上面標記事件名,箭頭方向表示轉換的方向。

·功能模型

功能模型描述了系統的所有計算。功能模型指出發生了什麼,動態模型確定什麼時候發生,而對象模型確定發生的客體。功能模型表明一個計算如何從輸入值得到輸出值,它不考慮計算的次序。功能模型由多張數據流圖組成。數據流圖用來表示從源對象到目標對象的數據值的流向,它不包含控制信息,控制信息在動態模型中表示,同時數據流圖也不表示對象中值的組織,值的組織在對象模型中表示。圖10-15給出了一個窗口系統的圖標顯示的數據流圖。

數據流圖中包含有處理、數據流、動作對象和數據存儲對象。

1.處理
數據流圖中的處理用來改變數據值。最低層處理是純粹的函數,一張完整的數據流圖是一個高層處理。

2.數據流
數據流圖中的數據流將對象的輸出與處理、處理與對象的輸入、處理與處理聯系起來。在一個計算機中,用數據流來表示一中間數據值,數據流不能改變數據值。

3.動作對象
動作對象是一種主動對象,它通過生成或者使用數據值來驅動數據流圖。

4.數據存儲對象
數據流圖中的數據存儲是被動對象,它用來存儲數據。它與動作對象不一樣,數據存儲本身不產生任何操作,它只響應存儲和訪問的要求。

六、面向對象的分析

面向對象分析的目的是對客觀世界的系統進行建模。本節以上面介紹的模型概念為基礎,結合「銀行網路系統」的具體實例來構造客觀世界問題的准確、嚴密的分析模型。
分析模型有三種用途:用來明確問題需求;為用戶和開發人員提供明確需求;為用戶和開發人員提供一個協商的基礎,作為後繼的設計和實現的框架。

(一) 面向對象的分析

系統分析的第一步是:陳述需求。分析者必須同用戶一塊工作來提煉需求,因為這樣才表示了用戶的真實意圖,其中涉及對需求的分析及查找丟失的信息。下面以「銀行網路系統」為例,用面向對象方法進行開發。
銀行網路系統問題陳述: 設計支持銀行網路的軟體,銀行網路包括人工出納站和分行共享的自動出納機。每個分理處用分理處計算機來保存各自的帳戶,處理各自的事務;各自分理處的出納站與分理處計算機通信,出納站錄入帳戶和事務數據;自動出納機與分行計算機通信,分行計算機與撥款分理處結帳,自動出納機與用戶介面接受現金卡,與分行計算機通信完成事務,發放現金,列印收據;系統需要記錄保管和安全措施;系統必須正確處理同一帳戶的並發訪問;每個分處理為自己的計算機准備軟體,銀行網路費用根據顧客和現金卡的數目分攤給各分理處。
圖10-18給出銀行網路系統的示意圖。

(二)建立對象模型

首先標識和關聯,因為它們影響了整體結構和解決問題的方法,其次是增加屬性,進一步描述類和關聯的基本網路,使用繼承合並和組織類,最後操作增加到類中去作為構造動態模型和功能模型的副產品。

1.確定類

構造對象模型的第一步是標出來自問題域的相關的對象類,對象包括物理實體和概念。所有類在應用中都必須有意義,在問題陳述中,並非所有類都是明顯給出的。有些是隱含在問題域或一般知識中的。

按圖10-19所示的過程確定類

查找問題陳述中的所有名詞,產生如下的暫定類。
軟體 銀行網路 出納員 自動出納機 分行
分處理 分處理計算機 帳戶 事務 出納站
事務數據 分行計算機 現金卡 用戶 現金
收據 系統 顧客 費用 帳戶數據
訪問 安全措施 記錄保管

根據下列標准,去掉不必要的類和不正確的類。
(1) 冗餘類:若兩個類表述了同一個信息 ,保留最富有描述能力的類。如"用戶"和"顧客"就是重復的描述,因為"顧客"最富有描述性,因此保留它。
(2) 不相乾的類:除掉與問題沒有關系或根本無關的類。例如,攤派費用超出了銀行網路的范圍。
(3) 模糊類:類必須是確定的,有些暫定類邊界定義模糊或范圍太廣,如"記錄保管"就模糊類,它是"事務"中的一部分。
(4) 屬性:某些名詞描述的是其他對象的屬性,則從暫定類中刪除。如果某一性質的獨立性很重要,就應該把他歸屬到類,而不把它作為屬性。
(5) 操作:如果問題陳述中的名詞有動作含義,則描述的操作就不是類。但是具有自身性質而且需要獨立存在的操作應該描述成類。如我們只構造電話模型,"撥號"就是動態模型的一部分而不是類,但在電話撥號系統中,"撥號"是一個重要的類,它日期、時間、受話地點等屬性。

在銀行網路系統中,模糊類是"系統"、"安全措施"、"記錄保管"、"銀行網路"等。屬於屬性的有:"帳戶數據"、"收據"、"現金"、"事務數據"。屬於實現的如:"訪問"、"軟體"等。這些均應除去。

2.准備數據字典

為所有建模實體准備一個數據字典。准確描述各個類的精確含義,描述當前問題中的類的范圍,包括對類的成員、用法方面的假設或限制。

3.確定關聯

兩個或多個類之間的相互依賴就是關聯。一種依賴表示一種關聯,可用各種方式來實現關聯,但在分析模型中應刪除實現的考慮,以便設計時更為靈活。關聯常用描述性動詞或動詞片語來表示,其中有物理位置的表示、傳導的動作、通信、所有者關系、條件的滿足等。從問題陳述中抽取所有可能的關聯表述,把它們記下來,但不要過早去細化這些表述。

下面是銀行網路系統中所有可能的關聯,大多數是直接抽取問題中的動詞片語而得到的。在陳述中,有些動詞片語表述的關聯是不明顯的。最後,還有一些關聯與客觀世界或人的假設有關,必須同用戶一起核實這種關聯,因為這種關聯在問題陳述中找不到。

銀行網路問題陳述中的關聯:
·銀行網路包括出納站和自動出納機;
·分行共享自動出納機;
·分理處提供分理處計算機;
·分理處計算機保存帳戶;
·分理處計算機處理帳戶支付事務;
·分理處擁有出納站;
·出納站與分理處計算機通信;
·出納員為帳戶錄入事務;
·自動出納機接受現金卡;
·自動出納機與用戶介面;
·自動出納機發放現金;
·自動出納機列印收據;
·系統處理並發訪問;
·分理處提供軟體;
·費用分攤給分理處。
隱含的動詞片語:
·分行由分理處組成;
·分理處擁有帳戶;
·分行擁有分行計算機;
·系統提供記錄保管;
·系統提供安全;
·顧客有現金卡。
基於問題域知識的關聯:
·分理處僱傭出納員;
·現金卡訪問帳戶。

使用下列標准去掉不必要和不正確的關聯:

(1) 若某個類已被刪除,那麼與它有關的關聯也必須刪除或者用其它類來重新表述。在例中,我們刪除了"銀行網路",相關的關聯也要刪除。
(2) 不相乾的關聯或實現階段的關聯:刪除所有問題域之外的關聯或涉及實現結構中的關聯。如"系統處理並發訪問"就是一種實現的概念。
(3) 動作:關聯應該描述應用域的結構性質而不是瞬時事件,因此應刪除"自動出納機接受現金卡","自動出納機與用戶介面"等。
(4) 派生關聯:省略那些可以用其他關聯來定義的關聯。因為這種關聯是冗餘的。銀行網路系統的初步對象圖如圖10-20所示。其中含有關聯。

4.確定屬性

屬性是個體對象的性質,屬性通常用修飾性的名詞片語來表示.形容詞常常表示具體的可枚舉的屬性值,屬性不可能在問題陳述中完全表述出來,必須藉助於應用域的知識及對客觀世界的知識才可以找到它們。只考慮與具體應用直接相關的屬性,不要考慮那些超出問題范圍的屬性。首先找出重要屬性,避免那些只用於實現的屬性,要為各個屬性取有意義的名字。按下列標准刪除不必要的和不正確的屬性:

(1) 對象:若實體的獨立存在比它的值重要,那麼這個實體不是屬性而是對象。如在郵政目錄中,"城市"是一個屬性,然而在人口普查中,"城市"則被看作是對象。在具體應用中,具有自身性質的實體一定是對象。
(2) 定詞:若屬性值取決於某種具體上下文,則可考慮把該屬性重新表述為一個限定詞。
(3) 名稱:名稱常常作為限定詞而不是對象的屬性,當名稱不依賴於上下文關系時,名稱即為一個對象屬性,尤其是它不惟一時。
(4) 標識符:在考慮對象模糊性時,引入對象標識符表示,在對象模型中不列出這些對象標識符,它是隱含在對象模型中,只列出存在於應用域的屬性。
(5) 內部值:若屬性描述了對外不透明的對象的內部狀態,則應從對象模型中刪除該屬性。
(6) 細化:忽略那些不可能對大多數操作有影響的屬性。

5.使用繼承來細化類

使用繼承來共享公共機構,以次來組織類,可以用兩種方式來進行。
(1) 自底向上通過把現有類的共同性質一般化為父類,尋找具有相似的屬性,關系或操作的類來發現繼承。例如"遠程事務"和"出納事務"是類似的,可以一般化為"事務"。有些一般化結構常常是基於客觀世界邊界的現有分類,只要可能,盡量使用現有概念。對稱性常有助於發現某些丟失的類。
(2) 自頂向下將現有的類細化為更具體的子類。具體化常常可以從應用域中明顯看出來。應用域中各枚舉字情況是最常見的具體化的來源。例如:菜單,可以有固定菜單,頂部菜單,彈出菜單,下拉菜單等,這就可以把菜單類具體細化為各種具體菜單的子類。當同一關聯名出現多次且意義也相同時,應盡量具體化為相關聯的類,例如"事務"從"出納站"和"自動出納機"進入,則"錄入站"就是"出納站"和"自動出納站"的一般化。在類層次中,可以為具體的類分配屬性和關聯。各屬性和都應分配給最一般的適合的類,有時也加上一些修正。

應用域中各枚舉情況是最常見的具體化的來源。

6.完善對象模型

對象建模不可能一次就能保證模型是完全正確的,軟體開發的整個過程就是一個不斷完善的過程。模型的不同組成部分多半是在不同的階段完成的,如果發現模型的缺陷,就必須返回到前期階段去修改,有些細化工作是在動態模型和功能模型完成之後才開始進行的。
(1) 幾種可能丟失對象的情況及解決辦法:
·同一類中存在毫無關系的屬性和操作,則分解這個類,使各部分相互關聯;
·一般化體系不清楚,則可能分離扮演兩種角色的類
·存在無目標類的操作,則找出並加上失去目標的類;
·存在名稱及目的相同的冗餘關聯,則通過一般化創建丟失的父類,把關聯組織在一起。

(2) 查找多餘的類。
類中缺少屬性,操作和關聯,則可刪

『叄』 Java語言的特點有哪些

面向對象:其實是現實世界模型的自然延伸。現實世界中任何實體都可以看作是對象。對象之間通過消息相互作用。另外,現實世界中任何實體都可歸屬於某類事物,任何對象都是某一類事物的實例。如果說傳統的過程式編程語言是以過程為中心以演算法為驅動的話,面向對象的編程語言則是以對象為中心以消息為驅動。用公式表示,過程式編程語言為:程序=演算法+數據;面向對象編程語言為:程序=對象+消息。 所有面向對象編程語言都支持三個概念:封裝、多態性和繼承,Java也不例外。現實世界中的對象均有屬性和行為,映射到計算機程序上,屬性則表示對象的數據,行為表示對象的方法(其作用是處理數據或同外界交互)。所謂封裝,就是用一個自主式框架把對象的數據和方法聯在一起形成一個整體。可以說,對象是支持封裝的手段,是封裝的基本單位。Java語言的封裝性較強,因為Java無全程變數,無主函數,在Java中絕大部分成員是對象,只有簡單的數字類型、字元類型和布爾類型除外。而對於這些類型,Java也提供了相應的對象類型以便與其他對象交互操作。

可移植性:就是在這個系統上作的程序經過一次編譯後可以移植到別的系統上解釋執行,只要經過簡單的粘貼和復制就行了,不影響程序的效果

安全性:在 iSeries 伺服器上運行的大多數 Java(TM) 程序是應用程序,而不是 applet,所以「砂箱」安全性模型對它們不起限製作用。從安全性的觀點看,Java 應用程序所受的安全性限制與 iSeries 伺服器上的任何其它程序相同。要在 iSeries 伺服器上運行 Java 程序,您必須對集成文件系統中的類文件具有許可權。程序一旦啟動,它就在該用戶許可權控制下運行。 您可以使用沿用許可權來訪問具有運行程序的用戶的許可權和程序擁有者許可權的對象。沿用許可權臨時地將用戶原先無權訪問的對象的許可權授予用戶。

並發性:JAVA支持多線程技術,就是多個線程並行機制,多線程是Java的一個重要方法,特別有利於在程序中實現並發任務.Java提供Thread線程類,實現了多線程的並發機制.然而,程序的並發執行必定會出現多個線程互斥訪問臨界資源的局面,因而並發系統解決的關鍵就是對臨界資源的管理和分配問題,而在進行臨界資源分配時有兩方面需要考慮,即安全性和公平性.文中首先討論了多線程並發系統中的安全性與公平性問題,指出安全性與公平性在並發系統中訪問臨界資源時的重要性.並通過火車行駛單行隧道的實例,演示各種條件下的行駛情況來進一步說明該問題.

可視化:不好說,像vb這樣的也是可視話的編成程序。
我借鑒了一些朋友的答案,還有一些是自己找啊,希望能給你帶來幫助

『肆』 什麼是Java里的OO思維

Object Oriented,OO 面向對象。
其實就是把程序看做一個個個體,個體進行分類,分級,整合的思想。
具體分為封裝,繼承,多態,抽象。

『伍』 Java語言主要特點有哪些

Java的語言特性有以下幾點,如果對編程感興趣可以來我這看看。
一.簡單性:
Java是純面向對象語言,語法簡單明了,易於掌握。
Java使用介面取代了多重繼承,並且取消了指針,因為多重繼承和指針會使程序變得復雜。
Java還會自動地收集內存垃圾,使得內存管理變得更為簡單。
Java還提供了豐富的類庫、API文檔以及第三方開發包,還有大量Java的開源項目。
二.面向對象性:
面向對象性事Java語言的基礎。
java語言提倡「萬物皆對象」,語法中不能在類外面定義單獨的數據和函數。
Java語言最外部的數據類型是對象,所有的元素都要通過類和對象來訪問。
三.分布性:
Java的分布性包括:1.操作分布。2.數據分布
⑴操作分布:即在多個不同的主機上不知相關操作。
⑵數據分布:將數據分別存放在不同的主機上,這些主機是網路中的不同成員。
四.可移植性:
Java程序具有與體系結構無關的特性。
Java的類庫也提供了針對不同平台的介面,所有這些類庫也可以被移植。
五.安全性
Java語言刪除了類C語言的指針和內存釋放等語法,有效地避免了用戶對內存的非法操作
Java程序代碼要經過代碼程序校驗、指針校驗等很多測試步驟才能夠運行。所以未經允許的Java程序不能出現損害系統平台的行為。
Java可以編寫出防病毒和防修改系統。
六.健壯性
Java會檢查程序在編碼和運行時的錯誤,並消除錯誤。
七.多線程性。
Java應用程序可以在同一時間並行執行多項任務。而且相應的同步機制可以保證不同線程能夠正確地共享數據。
八.高性能性
Java編譯後的位元組碼是在解釋器中運行的,所以它的速度較多數互動式運用程序提高了很多。
九.動態性
Java可以動態調整庫中方法和增加變數,並且客戶端不需要任何更改。在Java中進行動態調整是非常簡單和直接。

希望對您有所幫助!~

『陸』 java編程語言有哪些特點

Java語言的特性:簡單性: * Java語言的語法特性類似於C++(有沒有C++基礎沒關系,各有各得好處); * Java語言摒棄了C++中容易引發錯誤的地方,例如指針和內存管理等; * Java 提供了非常豐富的類庫供我們使用(豐富不代表包羅萬象,很多時候都需要自己寫新的類庫,我覺得Java更像是給我們提供了豐富的沙子和水泥,想要房子?好啊,你設計吧,設計完了自己蓋。如果和C#比較一下,C#就像是地產商,想要房子?我這里有兩居室、三居室和花園洋房,馬上就能交鑰匙,要哪個?)。安全性: * 不會引起致命的錯誤; * 到目前為止,沒有任何一種Java病毒(記得參加SUN公司的JavaOne大會,主持人跑出來非常興奮的告訴大家:「到目前為止,還沒有出現Java病毒。」); * 基於網路的安全管理機制;可移植性: * Java是一種跨平台的開發語言(就像是金魚要生活在魚缸中,魚缸卻能放在不同的家中,金魚跨平台了嗎?沒有,跨平台的是魚缸。相同的道理,Java運行於虛擬機JVM上,JVM有Windows版、Linux版、Unix版等,所以Java就跨平台了)。面向對象性: * Java是一種純面向對象OOP的編程語言(近年來OOP如日方中,其中Java起到了很大的推動作用,但Java不是第一個,也不是最後一個OOP語言)。有這么一句經典的,最令初學者頭痛的概念:「萬物皆為對象」,我在初學的時候就被這句話(忽悠)了一個月。健壯性: * 沒有指針使Java 減少了內存出錯的可能; * 實現了真數組,避免數據覆蓋; * 異常管理機制。多線程性: * Java為我們提供了強大的多線程機制。體系結構中立: * Java是一種不帶平台特點的語言(將Java編譯成一種.class文件,可以在任何安裝有JVM的機器上運行);解釋執行與高性能: * Java 解釋器能直接運行目標代碼指令(評價:夠用、絕對夠用)。分布式:Java 有強大的基於網路的類庫供我們使用(有很多著名的支持分布式運算的軟體都是使用Java開發)。動態性: * 准確的講Java不能稱為動態語言(動態語言是指程序在運行時可以改變其結構),然而Java的反射機制賦予了它對類動態載入調用的能力,所以很多朋友都稱Java為准動態語言。

『柒』 Java的特點有哪些

Java是一種優秀的程序設計語言,它具有令人賞心悅目的語法和易於理解的語義。不僅如此,Java還是一個由一系列計算機軟體和規范形成的技術體系,這個技術體系提供了完整的用於軟體開發和跨平台部署的支持環境,並廣泛應用於嵌入式系統、移動終端、企業伺服器、大型機等各種場合。順便說一下,JavaScript和Java沒有任何關系,最開始JavaScript叫liveScript,當時Java太火了,於是乎 liveScript更名為JavaScript借勢宣傳了一波。

隨便搜搜近幾年的編程類語言排行榜,Java絕對都是當之無愧的老大哥。那麼,Java究竟有什麼特性能獲得 廣大程序員的一致青睞呢? 在此列出java的11個特性:

1.簡單性

Java語法是C++語法的一個「純凈版本」。這里沒有頭文件,指針運算(甚至指針語法),結構,聯合,操作符重載,虛基類等等。不僅如此,Java開發環境遠遠超出大多數其他編程語言的開發環境。

2.面向對象

什麼是面向對象?用木匠打一個比方,一個「面向對象」的木匠始終關注的是所製作的椅子,第二位才是所使用的工具;而一個「非面向對象」木匠首先考慮的是所使用的工具。

在Java的世界裡,一切皆對象。

Java的面向對象特性與C++旗鼓相當,與C++不同的點在於多重繼承。在Java中,取而代之的是更簡單的介面概念。而且與C++想比,Java提供了更豐富非運行時自省功能。

3.分布式(微服務)

Java有豐富的常式庫,用於處理HTTP和FTP之類的TCP/IP協議。Java應用程序能夠通過URL打開和訪問網路上的對象,其便捷程度就好像訪問本地文件一樣。

4.健壯性

Java與C++最大的不同在於Java使用的指針模型可以消除重寫內存和損壞數據的可能性(對於曾經花費幾個小時來檢查由於指針bug而引起內存沖突的人來說,一定很喜歡Java的這一特性)。不僅如此,Java編譯器能夠檢測許多在其他語言中僅在運行時才能夠檢測出來的問題。

5.安全性

Java適用於網路/分式式環境。為了達到這個目標,在安全性方面投入了大量的精力。使用Java可以構建防病毒,防篡改的系統。

從一開始,Java就設計出能夠防範常見的各種攻擊:

(1)運行時堆棧溢出。蠕蟲和病毒常用的攻擊手段。(2)破壞自己進程空間之外的內存。(3)未經授權讀寫文件。

6.體系結構中立

編譯器生成一個體系結構中立的目標文件格式,這是一種編譯過的代碼,只要有Java運行時系統,這些編譯後的代碼就可以在許多處理器上運行。Java編譯器通過生成與特定計算機體系結構無關的位元組碼指令來實現這一特性。精心設計的位元組碼不僅可以很容易的在任何機器上解釋執行,而且還可以動態地翻譯成本地機器代碼。

7.可移植性

與C/C++不同,Java規范中沒有「依賴具體實現的地方」。基本數據類型的大小以及有關運算都做了明確的說明。例如,Java中的int永遠是32位的整數,二在C/C++中,int可能是16位整數,32位整數,也可能是編譯器提供商指定的其他大小。在Java中,數據類型具有固定的大小,這消除了代碼代碼移植時令人頭疼的主要問題。

8.解釋型

Java解釋器可以再任何移植了解解釋器的機器上執行Java位元組碼。由於鏈接是一個增量式且輕量級的過程。所以開發過程也變得更加快捷,更加具有探索性。

9.高能性

盡管對解釋後的位元組碼性能已經比較滿意,但是在某些場合下可能需要更加高效的性能。位元組碼可以(在運行時刻)動態的翻譯成對應運行這個應用的特定CPU的機器碼。

10.多線程

Java在當時很超前,他是第一個支持並發程序設計的主流語言,多線程可以帶來更好的交互影響和實時行為。並發程序設計絕非易事,但是Java在這方面表現出色,可以很好的管理這個工作。

11.動態性

Java與C/C++相比更具有動態性。它能夠適應不斷發展的環境。庫中可以自由的添加新方法和實例變數,而對客戶端沒有任何影響。在Java中找出運行時類型信息十分簡單。

『捌』 JAVA的幾個重要特點

一.簡單性:

Java是純面向對象語言,語法簡單明了,易於掌握。

Java使用介面取代了多重繼承,並且取消了指針,因為多重繼承和指針會使程序變得復雜。

Java還會自動地收集內存垃圾,使得內存管理變得更為簡單。

Java還提供了豐富的類庫、API文檔以及第三方開發包,還有大量Java的開源項目。

二.面向對象性:

面向對象性事Java語言的基礎。

java語言提倡「萬物皆對象」,語法中不能在類外面定義單獨的數據和函數。

Java語言最外部的數據類型是對象,所有的元素都要通過類和對象來訪問。

三.分布性:

Java的分布性包括:1.操作分布。2.數據分布

⑴操作分布:即在多個不同的主機上不知相關操作。

⑵數據分布:將數據分別存放在不同的主機上,這些主機是網路中的不同成員。

四.可移植性:

Java程序具有與體系結構無關的特性。

Java的類庫也提供了針對不同平台的介面,所有這些類庫也可以被移植。

五.安全性

Java語言刪除了類C語言的指針和內存釋放等語法,有效地避免了用戶對內存的非法操作

Java程序代碼要經過代碼程序校驗、指針校驗等很多測試步驟才能夠運行。所以未經允許的Java程序不能出現損害系統平台的行為。

Java可以編寫出防病毒和防修改系統。

六.健壯性

Java會檢查程序在編碼和運行時的錯誤,並消除錯誤。

七.多線程性。

Java應用程序可以在同一時間並行執行多項任務。而且相應的同步機制可以保證不同線程能夠正確地共享數據。

八.高性能性

Java編譯後的位元組碼是在解釋器中運行的,所以它的速度較多數互動式運用程序提高了很多。

九.動態性

Java可以動態調整庫中方法和增加變數,並且客戶端不需要任何更改。在Java中進行動態調整是非常簡單和直接。

希望會給大家帶來幫助!

『玖』 Java語言的特點有哪些

1.簡單

Java最初是為對家用電器進行集成控制而設計的一種語言,因此它必須簡單明了。Java語言的簡單性主要體現在以下三個方面:

1) Java的風格類似於C++,因而C++程序員是非常熟悉的。從某種意義上講,Java語言是C及C++語言的一個變種,因此,C++程序員可以很快就掌握Java編程技術。

2) Java摒棄了C++中容易引發程序錯誤的地方,如指針和內存管理。

3) Java提供了豐富的類庫。

2.面向對象

面向對象可以說是Java最重要的特性。Java語言的設計完全是面向對象的,它不支持類似C語言那樣的面向過程的程序設計技術。Java支持靜態和動態風格的代碼繼承及重用。單從面向對象的特性來看,Java類似於Small Talk,但其它特性、尤其是適用於分布式計算環境的特性遠遠超越了Small Talk。

3.分布式

Java包括一個支持HTTP和FTP等基於TCP/IP協議的子庫。因此,Java應用程序可憑借URL打開並訪問網路上的對象,其訪問方式與訪問本地文件系統幾乎完全相同。為分布環境尤其是Internet提供的動態內容無疑是一項非常宏偉的任務,但Java的語法特性卻使我們很容易地實現這項目標。

4.健壯

Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自已操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能。這些功能特徵大大縮短了開發Java應用程序的周期。Java提供Null指針檢測數組邊界檢測異常出口位元組代碼校驗。

5.結構中立

另外,為了建立Java作為網路的一個整體,Java將它的程序編譯成一種結構中立的中間文件格式。只要有Java運行系統的機器都能執行這種中間代碼。現在,Java運行系統有Solaris2.4(SPARC),Win32系統(Windows95和WindowsNT)等.Java源程序被編譯成一種高層次的與機器無關的byte-code格式語言,這種語言被設計在虛擬機上運行,由機器相關的運行調試器實現執行。

6.安全

Java的安全性可從兩個方面得到保證。一方面,在Java語言里,象指針和釋放內存等C++功能被刪除,避免了非法內存操作。另一方面,當Java用來創建瀏覽器時,語言功能和瀏覽器本身提供的功能結合起來,使它更安全。Java語言在你的機器上執行前,要經過很多次的測試。它經過代碼校驗,檢查代碼段的格式,檢測指針操作,對象操作是否過分以及試圖改變一個對象的類型。

7.可移植的

這句話一直是Java程序設計師們的精神指標,也是Java之所以能夠受到程序設計師們喜愛的原因之一,最大的功臣就是JVM的技術。大多數編譯器產生的目標代碼只能運行在一 種CPU上(如Intel的x86系列),即使那些能支持多種CPU的編譯器也不能同時產生適合多 種CPU的目標代碼。如果你需要在三種CPU( 如x86、SPARC 和MIPS)上運行同一程序, 就必須編譯三次。

但JAVA編譯器就不同了。JAVA編譯器產生的目標代碼(J-Code) 是針對一種並不 存在的CPU--JAVA虛擬機(Java Virtual Machine),而不是某一實際的CPU。JAVA虛擬機能掩蓋不同CPU之間的差別,使J-Code能運行於任何具有JAVA虛擬機的機器上。

虛擬機的概念並不AVA 所 特 有 的:加州大學幾年前就提出了PASCAL虛擬機的概念;廣泛用於Unix伺服器的Perl腳本也是產生與機器無關的中間代碼用於執行。但針對Internet應用而設計的JAVA虛擬機的特別之處在於它能產生安全的不受病毒威脅的目標代碼。正是由於Internet對安全特性的特別要求才使得JVM能夠迅速被人們接受。 當今主 流的操作系統如OS/2、MacOS、Windows95/NT都已經或很快提供對J-Code的支持。

作為一種虛擬的CPU,JAVA 虛擬機對於源代碼(Source Code) 來說是獨立的。我們不僅可以用JAVA語言來生成J-Code,也可以用Ada95來生成。事實上,已經有了針對若干種源代碼的J-Code 編譯器,包括Basic、Lisp 和Forth。源代碼一經轉換成J-Code以後,JAVA虛擬機就能夠執行而不區分它是由哪種源代碼生成的。這樣做的結果就是CPU可移植性。 將源程序編譯為J-Code的好處在於可運行於各種機器上,而缺點是它不如本機代碼運行的速度快。

同體系結構無關的特性使得Java應用程序可以在配備了Java解釋器和運行環境的任何計算機系統上運行,這成為Java應用軟體便於移植的良好基礎。但僅僅如此還不夠。如果基本數據類型設計依賴於具體實現,也將為程序的移植帶來很大不便。例如在Windows3.1中整數(Integer)為16bits,在Windows95中整數為32bits,在DECAlpha中整數為64bits,在Intel486中為32bits。通過定義獨立於平台的基本數據類型及其運算,Java數據得以在任何硬體平台上保持一致。Java語言的基本數據類型及其表示方式如下:byte8-bit二進制補碼short16-bit二進制補碼int32-bit二進制補碼long64-bit二進制補碼float32-bitIEEE754浮點數double32-bitIEEE754浮點數char16-bitUnicode字元在任何Java解釋器中,數據類型都是依據以上標准具體實現的。因為幾乎目前使用的所有CPU都能支持以上數據類型、8~64位整數格式的補碼運算和單/雙精度浮點運算。Java編譯器本身就是用Java語言編寫的。Java運算系統的編制依據POSIX方便移植的限制,用ANSIc語言寫成。Java語言規范中也沒有任何"同具體實現相關"的內容。

8.解釋的

Java解釋器(運行系統)能直接運行目標代碼指令。鏈接程序通常比編譯程序所需資源少,所以程序員可以在創建源程序上花上更多的時間。

9.高性能

如果解釋器速度不慢,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鍾內可調用300,000個過程。翻譯目標代碼的速度與C/C++的性能沒什麼區別。

10.多線程

多線程功能使得在一個程序里可同時執行多個小任務。線程--有時也稱小進程--是一個大進程里分出來的小的獨立的進程。因為Java實現的多線程技術,所以比C和C++更鍵壯。多線程帶來的更大的好處是更好的交互性能和實時控制性能。當然實時控制性能還取決於系統本身(UNIX,Windows,Macintosh等),在開發難易程度和性能上都比單線程要好。任何用過當前瀏覽器的人,都感覺為調一副圖片而等待是一件很煩惱的事情。在Java里,你可用一個單線程來調一副圖片,而你可以訪問HTML里的其它信息而不必等它。

11.動態

Java的動態特性是其面向對象設計方法的發展。它允許程序動態地裝入運行過程中所需要的類,這是C++語言進行面向對象程序設計所無法實現的。在C++程序設計過程中,每當在類中增加一個實例變數或一種成員函數後,引用該類的所有子類都必須重新編譯,否則將導致程序崩潰。Java從如下幾方面採取措來解決這個問題。Java編譯器不是將對實例變數和成員函數的引用編譯為數值引用,而是將符號引用信息在位元組碼中保存下傳遞給解釋器,再由解釋器在完成動態連接類後,將符號引用信息轉換為數值偏移量。這樣,一個在存儲器生成的對象不在編譯過程中決定,而是延遲到運行時由解釋器確定的。這樣,對類中的變數和方法進行更新時就不至於影響現存的代碼。解釋執行位元組碼時,這種符號信息的查找和轉換過程僅在一個新的名字出現時才進行一次,隨後代碼便可以全速執行。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程序連接了網路中另一系統中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程序崩潰。Java還簡化了使用一個升級的或全新的協議的方法。如果你的系統運行Java程序時遇到了不知怎樣處理的程序,沒關系,Java能自動下載你所需要的功能程序。四.與C和C++語言的異同 Java提供了一個功能強大語言的所有功能,但幾乎沒有一點含混特徵。C++安全性不好,但C和C++還是被大家所接受,所以Java設計成C++形式,讓大家很容易學習。Java去掉了C++語言的許多功能,讓Java的語言功能很精煉,並增加了一個很有用的功能,Java去掉了以下幾個C和C++功能和特徵:指針運算結構typedefs#define需要釋放內存全局變數的定義這個功能都是很容易引起錯誤的地方。

12. Unicode

Java使用Unicode作為它的標准字元,這項特性使得Java的程序能在不同語言的平台上都能撰寫和執行。簡單的說,你可以把程序中的變數、類別名稱使用中文來表示<注>,當你的程序移植到其它語言平台時,還是可以正常的執行。Java也是目前所有計算機語言當中,唯一天生使用Unicode的語言。

閱讀全文

與java的oo特性相關的資料

熱點內容
網路HRV是什麼意思 瀏覽:918
word框中打勾 瀏覽:577
tcl筆試題java 瀏覽:467
win10怎麼登錄安全模式 瀏覽:679
除了archdaily還有什麼網站 瀏覽:567
數控下料圓形怎麼編程 瀏覽:785
安裝游戲在文件管理找不到怎麼辦 瀏覽:216
想買奢侈包包下載什麼app 瀏覽:1000
閃送員是哪裡的app 瀏覽:530
火車站進站閘機的數據哪裡可以查 瀏覽:503
cad備份文件清理軟體 瀏覽:822
夾具裝配圖cad文件百度網盤 瀏覽:567
如何將excel表格轉成文件包 瀏覽:1
網路配置文件應該怎麼設置 瀏覽:886
蘋果全能文件王下載位置 瀏覽:700
中國知網是哪些資料庫 瀏覽:280
fastjson優點 瀏覽:302
mstcam數控銑床編程如何串連 瀏覽:502
d4252用什麼軟體編程 瀏覽:35
大學生如何參與大數據 瀏覽:779

友情鏈接