Java面向对象和面向过程有什么区别?网友:傻傻分不清楚……
面向?qū)ο?/strong>,Obeject Oriented,是一種編程術(shù)語。面向?qū)ο笫钱?dāng)今軟件開發(fā)方法的主流方法之一,他是把數(shù)據(jù)以及對數(shù)據(jù)的操作放在一起,作為一個相互依存的整體,就是我們所說的對象。對同類對象抽象出其共性,就是類,類中的大多數(shù)數(shù)據(jù),只能被本類的方法進行處理。類通過一個簡單的外部接口與外界發(fā)生關(guān)系,對象與對象之間通過消息進行通信。程序流程由用戶在使用中決定,例如,站在抽象的角度,人具有身高,體重,年齡,血型等一些特征,人會勞動,會行走,會吃飯等這些方法,人僅僅是一個抽象的概念,它是不存在的實體,但是所有具備人這個群體的屬性與方法的對象都叫做人,這對象人是實際存在的實體,每個人都是人這個群體的一個對象。
面向過程,Procedure Oriented,是一種以事件為中心的開發(fā)方法,就是自頂向下順序執(zhí)行,逐步求精,其程序結(jié)構(gòu)是按照功能劃分為若干個基本模塊,這些模塊形成一個樹狀結(jié)構(gòu),各模塊之間的關(guān)系也比較簡單,在功能上相對獨立,每一個模塊內(nèi)部一般都是由順序,選擇和循環(huán)3種基本結(jié)構(gòu)組成,其模塊化實現(xiàn)的具體方法是使用子程序,而程序流程在寫程序的時候就已經(jīng)決定了。
以五子棋為例子
面向過程的設(shè)計思路就是首先分析問題的步驟
把以下每個步驟用分別的函數(shù)來實現(xiàn)就是一個面向過程的開發(fā)方法。
開始游戲;
黑子先走;
繪制畫面;
判斷輸贏;
輪到白子;
繪制畫面;
判斷輸贏;
返回第二步;
輸出最后結(jié)果;
以下是面向?qū)ο蠓治鰡栴}的步驟:
分析對象:棋子,棋盤,主體框架類,
棋盤類的屬性:需要畫一個棋盤,大小背景線條顏色,都是屬性。棋盤需要有位置分布,
棋子的屬性,黑棋,白棋,添加到棋盤的方法,
棋盤的方法:作為一個容器,需要容納棋子,添加棋子操作,繪制棋盤,當(dāng)添加棋子進來的時候,判斷是否已經(jīng)繪制棋子,繪制棋盤,判定輸贏,輸出最后結(jié)果。
將棋盤繪制到主體框架類上面,并調(diào)用
那么總結(jié)一下面向?qū)ο蠛兔嫦蜻^程的區(qū)別:
出發(fā)點不同。面向?qū)ο蠓椒ㄊ欠铣R?guī)思維的方式來處理客觀世界的問題,強調(diào)把問題域的要領(lǐng)直接映射到對象及對象之間的接口上。而面向過程方法強調(diào)的是過程的抽象化與模塊化,它是以過程為中心構(gòu)造或者處理客觀世界問題的。
層次邏輯關(guān)系不同。面向?qū)ο蠓椒ㄊ怯糜嬎銠C邏輯來模擬客觀世界中的物理存在,以對象的集合-類-作為處理問題的基本單位,盡可能地使計算機世界向客觀世界靠攏,以使問題的處理更清晰直接,面向?qū)ο蠓椒ㄊ怯妙惖膶哟谓Y(jié)構(gòu)來體現(xiàn)類之間的繼承和發(fā)展。而面向過程方法處理問題的基本單位是能清晰準(zhǔn)確地表達過程的模塊,用模塊的層次結(jié)構(gòu)概括模塊或模塊間的關(guān)系與功能,把客觀世界的問題抽象成計算機可以處理的過程。
數(shù)據(jù)處理方式與控制程序的方式不同。面向?qū)ο蠓椒▽?shù)據(jù)與對應(yīng)的代碼封裝成一個整體,原則上其他對象不能直接修改其數(shù)據(jù),即對象的修改只能由自身的成員函數(shù)完成,控制程序方式上是通過“事件驅(qū)動”來激活和運行程序。而面向過程的方法是直接通過程序來處理數(shù)據(jù),處理完畢后即可顯示處理結(jié)果,在控制程序方式上按照設(shè)計調(diào)用或返回程序,不能自由導(dǎo)航,各模塊之間存在控制與被控制、調(diào)用與被調(diào)用的關(guān)系。
分析設(shè)計與編碼轉(zhuǎn)換方式不同。面向?qū)ο蠓椒ㄘ灤┯谲浖芷诘姆治觥⒃O(shè)計以及編碼中,是一種平滑過程,從分析到設(shè)計再到編碼是采用一致性的模型表示,即實現(xiàn)的是一種無縫連接。而面向過程方法強調(diào)分析、設(shè)計以及編碼之間按照規(guī)則進行轉(zhuǎn)換,貫穿于軟件生命周期的分析、設(shè)計以及編碼中,實現(xiàn)的是一種有縫的連接。
面向?qū)ο蟮奶卣?/strong>
抽象。抽象就是忽略一個主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象不打算了解全部問題,而是選擇其中的一部分,暫時不用部分細節(jié)。抽象包括兩個方面:過程抽象;數(shù)據(jù)抽象。
繼承。繼承是一種連接類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類的繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且派生類可以修改或者增加新的方法使之更適合特殊的需要。
封裝。封裝是指將客觀事物抽象成類,每個類對自身的數(shù)據(jù)和方法實行保護。類可以把自己的數(shù)據(jù)和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。
多態(tài)。多態(tài)是指允許不同類的對象對同一消息做出響應(yīng)。多態(tài)包括參數(shù)化多態(tài)和包含多態(tài)。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享等優(yōu)勢,很好地解決了應(yīng)用程序函數(shù)同名問題。Java中實現(xiàn)多態(tài)主要是方法的重載和方法的覆蓋。
面向?qū)ο箝_發(fā)方式的優(yōu)點:
較高的開發(fā)效率。采用面向?qū)ο蟮拈_發(fā)方式可以對現(xiàn)實的事物進行抽象,可以把現(xiàn)實的事物直接映射為開發(fā)的對象,與人類的思維過程相似。同時面向?qū)ο蟮拈_發(fā)方式可以通過繼承或者組合的方式來實現(xiàn)代碼的重用,因此可以提高軟件的開發(fā)效率。
保證軟件代碼健壯。由于其很高的重用性,在開發(fā)過程中重用已有的而且在相關(guān)領(lǐng)域經(jīng)過長期測試的代碼,穩(wěn)定性比較高,對軟件的健壯性起到了促進作用。
保證軟件的高可維護性。面向?qū)ο箝_發(fā),代碼可讀性好,面向?qū)ο蟮脑O(shè)計模式使得代碼結(jié)構(gòu)更加清晰明了。同時針對面向?qū)ο蟮拈_發(fā)方式,已有非常成熟的設(shè)計模式,這些設(shè)計模式可以使程序在面向需求的變更時,只需要修改部分的模塊就可以滿足需求,因此維護起來非常方便。
為了讓學(xué)習(xí)變得輕松、高效,今天給大家免費分享一套Java入門教學(xué)資源。幫助大家在成為Java架構(gòu)師的道路上披荊斬棘。需要入門的資料歡迎加入學(xué)習(xí)交流群:9285,05736
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Java面向对象和面向过程有什么区别?网友:傻傻分不清楚……的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: array 前端面试题_web前端开发面
- 下一篇: execve系统调用_Linux系统编程