Java中面向對象程序設計的基本概念


面向對象程序與設計

面向對象程序設計是目前主流的程序設計泛型,它取代了20世紀70年代的“結構化”編程和過程化編程。

面向對象程序由對象組成。每個對象包含對用戶的特定功能部分和隱藏的實現部分。

程序中很多對象來自標准庫,還有一些是自定義的。從根本上來說,只要對象能滿足需求,就不用關心它是怎么來的。

程序側重點的不同

傳統的結構化程序設計通過設計一系列的過程(即算法)來求解問題。

即算法是第一位的,數據結構是第二位的,程序員首先要決定如何操作數據,之后再決定如何組織數據。

而面向對象程序設計是以數據結構的構成作為核心。

程序員要先組織數據,之后再決定如何操作數據。

面向對象更加適合解決規模較大的問題。

面向對象的最底層也是面向過程,只不過它對過程進行了抽象

類的概述

類是構造對象的模板或藍圖

由類構造對象的過程稱為創建類的實例。

Java標准庫

標准Java庫中提供了幾千個類,可以用於各種目的。盡管如此,在Java中還是需要自己創建一些類,一邊描述你的應用程序所對應的問題領域中的對象。

封裝概念

封裝(有時候成為數據隱藏)是處理對象的一個重要概念。

從形式上看,封裝就是將數據和行為組織在一個包里,並對對象的使用者隱藏具體的實現方式。

實例字段與方法

對象中的數據稱為實例字段,操作數據的過程成為方法,特定對象都有一組特定的實例字段值。這些值的集合就是這個對象的當前狀態。

無論何時,只要再對象上調用方法,它的狀態就可能改變

封裝實現的關鍵

實現封裝的關鍵在於,絕對不能讓類中的方法直接訪問其他類的實例字段。

程序只能通過對象的方法與對象數據進行交互。

封裝給予了對象“黑盒”的特征。這是提高重用性和可靠性的關鍵

意味着:一個類可以完全概念存儲數據的方式,只要仍然使用同樣的方法操作數據,其對象就不會知道也不用關心這個類所發生的變化

繼承概念

Java中可以通過擴展其他類,來構建新的類。

事實上Java中所有的類都擴展自Object類。

這個被擴展后的新類,具有被擴展的類的全部屬性和方法。

只要在新類中提供適合這個新類的方法和字段就可以了。

這種通過擴展=來建立另一個類的方式,被稱為繼承

對象

對象的三個主要特性

  • 對象的行為——可以對對象完成哪些操作,或者可以對對象應用哪些方法。

  • 對象的狀態——當掉用那些方法時,對象會如何響應?

  • 對象的標識——如何區分具有相同行為與狀態的不同對象?

對象的基本概念

同一個類的所有對象實例,由於支持相同的行為而具有家族式的相似性。對象的行為是用可調用的方法來定義的。

每個對象都保存着描述當前狀況的信息。這就是對象的狀態。

對象狀態的改變,必須通過調用方法實現。

對象的狀態並不能完全描述一個對象,每個對象都有一個唯一的標識id

作為同一個類的實例,每個對象的標識總是不同的,狀態往往也存在着差異。

對象的這些關鍵特性會彼此相互影響。

識別類

傳統的函數式編程中,總是從main方法開始,而OOP則應該從識別類開始,之后再對類添加各種方法。

面向對象編程的開始

識別類的一個簡單經驗是在分析問題的過程中尋找名詞,而方法對應着動詞。

當然,這種“名詞與動詞”原則只是一種經驗,在創建類的時候,只有經驗才能幫助你確定哪些名詞和動詞重要。

類之間的關系

類之間最常見的關系有:

  • 依賴

  • 集合

  • 繼承

依賴

依賴,即uses-a關系,是一種最明顯的、最常見的額關系。

如果一個類,使用另一個類的方法,或操作另一個類的對象,我們就說你,這個類依賴於另一個類。

應該盡可能地將相互依賴的類減至最少。

關鍵是,如果類A不知道B的存在,它就不會關系B怎么改變。

用軟件工程的數據來說,就是要降低耦合度

聚合

聚合,即has-a關系,很容易理解。

如果一個類對象中包含着另一個類的對象,我們就說他們聚合在一些。

例如:公司類對象包含着一些員工類對象一樣

繼承

繼承,即is-a關系,表示一個更特殊的類與一個更一般的類之間的關系。

如果類A擴展類B,那我們就說,類A繼承類B。

一般而言,類A在繼承類B的同時,會增加一些額外的功能。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM