理解Java面向對象編程設計

1 前言

計算機革命的起源來自機器。編程語言就像是那臺機器。它不僅是我們思維放大的工具與另一種表達媒介,更像是我們思想的一部分。語言的靈感來自其他形式的表達,如寫作,繪畫,雕塑,動畫和電影制作。編程語言就是創建應用程序的思想結構。

面向對象編程(Object-Oriented Programming OOP)是一種編程思維方式和編碼架構。

2 結構化程序設計

結構化程序設計主要強調的是程序的易讀性。在該程序設計思想的指導下,編程基本是通過寫不同目的的函數/過程來實現,故又稱為“面向過程編程(Procedure Oriented Programming,POP)。面向過程開發方式是對計算機底層結構的一層抽象,它把程序的內容分為數據和操縱數據的操縱兩個部分。這種編程方式的核心問題是數據結構和算法的開發和優化。

它解決瞭早期程序設計中大量用共享變量(全局變量)和GOTO語句,從而引發的結構混亂,不易改錯和復用的問題。

3 面向對象編程設計

面向對象的思想主要是基於抽象數據類型(Abstract Data Type, ADT),在結構化編程過程中,人們發現把某種數據結構和專用於操縱它的各種操作以某種模塊化方式綁定到一起會非常方便,做到“特定數據對應特定處理方法”,使用這種方式進行編程時數據結構的接口是固定的。如果對抽象數據類型進一步抽象,就會發現把這種數據類型的實例當作一個具體的東西、事物、對象,就可以引發人們對編程過程中怎樣看待所處理的問題的一次大的改變。

面向對象程序設計的主要精神是將存在於日常生活中的對象(Object)概念應用在軟件設計的發展模式(Software Development Model)中,著重於對象的分解與相互作用,重點是強調程序代碼的可讀性(Readability)、可重復使用性(Reusability)與擴展性(Extension),讓程序設計人員在設計程序時能以一種更生活化、可讀性更高的設計思路來進行程序的開發和設計。

4 碼農洞見

面向對象編程和面向過程編程是現在主流的兩種編程模式,它們既有區別也有。

4.1 兩種編程范式之間的區別

在面向對象編程出現以前,面向過程頗受程序人員的青睞,因為面向過程編程采用的是“自上而下,步步求精”的編程思想,人們更易於理解這種思想。將程序一步一步的分解,並按照一定的順序執行。這就是面向過程程序設計,以過程為中心,以算法為驅動。

程序 = 算法 + 數據結構

但是面向過程程序設計的不足之處在於,面向過程的程序上一步和下一步環環相扣,如果需求發生變化那麼代碼的改動會很大,這樣很不利於軟件的後期維護和擴展。

而面向對象程序設計的出現就可以很好的解決瞭這一問題,它的設計思想是“萬物皆對象”。

程序 = 對象 + 消息傳遞

但是“任何事物都有兩面性”,面向對象程序設計有其優點,但也帶來瞭“副作用”——執行效率要低於面向過程程序設計。所以進行科學計算和要求高效率的程序中,面向過程設計要好於面向對象設計。而且面向對象程序的復雜度要高於面向過程的程序,如果程序比較小,面向過程要比面向對象更加清晰。

4.2 兩種編程范式之間的聯系

面向對象是在面向過程的基礎上發展而來的,隻是添加瞭它獨有的一些特性。面向對象程序中的對象就是由數據和方法構成,所以完整的面向對象概念應該是:

對象=數據+方法

更進一步的可以描述為:

程序=對象+消息傳遞=(數據+方法)+消息傳遞

回到Java,我們說在Java中萬物皆對象,其實是在說Java是一門面向對象的編程語言,Java程序的功能都是通過對象來完成的,根據業務需求將程序分解為不同的對象,再通過對象之間的相互調用關系來協同實現相應的功能。對編程思想的理解會因為你做的業務和代碼的累積發生改變,隨著知識的深入以及視野的開闊,一段時間後再回頭看目前你所掌握的這些東西,你可能會發現某些地方理解得不夠透徹甚至有誤,這就是學習的過程。

到此這篇關於理解Java面向對象編程設計的文章就介紹到這瞭,更多相關Java面向對象編程設計內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: