更新時間:2021-08-25 11:59:26 來源:動力節(jié)點 瀏覽1230次
1.重用性利于開發(fā)速度,如果你想開發(fā)某個功能發(fā)現(xiàn)他實現(xiàn)起來很麻煩,這個時候有另一技術(shù)能很好的解決時其優(yōu)勢就發(fā)揮出來了
2.封裝性/抽象性:結(jié)構(gòu)清晰,很標準,規(guī)范化,易于理解,可讀性更強
3.繼承,容易擴展,在大框架不變的情況下很容易就開發(fā)出適合自己的功能
執(zhí)行速度會打折扣
面向?qū)ο缶幊?Object Oriented Programming,OOP,面向?qū)ο蟪绦蛟O(shè)計)是一種計算機編程架構(gòu)。OOP 的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或?qū)ο蠼M合而成。OOP 達到了軟件工程的三個主要目標:重用性、靈活性和擴展性。為了實現(xiàn)整體運算,每個對象都能夠接收信息、處理數(shù)據(jù)和向其它對象發(fā)送信息。OOP 主要有以下的概念和組件:
組件 - 數(shù)據(jù)和功能一起在運行著的計算機程序中形成的單元,組件在 OOP 計算機程序中是模塊和結(jié)構(gòu)化的基礎(chǔ)。
抽象性 - 程序有能力忽略正在處理中信息的某些方面,即對信息主要方面關(guān)注的能力。
封裝 - 也叫做信息封裝:確保組件不會以不可預(yù)期的方式改變其它組件的內(nèi)部狀態(tài);只有在那些提供了內(nèi)部狀態(tài)改變方法的組件中,才可以訪問其內(nèi)部狀態(tài)。每類組件都提供了一個與其它組件聯(lián)系的接口,并規(guī)定了其它組件進行調(diào)用的方法。
多態(tài)性 - 組件的引用和類集會涉及到其它許多不同類型的組件,而且引用組件所產(chǎn)生的結(jié)果得依據(jù)實際調(diào)用的類型。
繼承性 - 允許在現(xiàn)存的組件基礎(chǔ)上創(chuàng)建子類組件,這統(tǒng)一并增強了多態(tài)性和封裝性。典型地來說就是用類來對組件進行分組,而且還可以定義新類為現(xiàn)存的類的擴展,這樣就可以將類組織成樹形或網(wǎng)狀結(jié)構(gòu),這體現(xiàn)了動作的通用性。
由于抽象性、封裝性、重用性以及便于使用等方面的原因,以組件為基礎(chǔ)的編程在腳本語言中已經(jīng)變得特別流行。Python 和 Ruby 是最近才出現(xiàn)的語言,在開發(fā)時完全采用了 OOP 的思想,而流行的 Perl 腳本語言從版本5開始也慢慢地加入了新的面向?qū)ο蟮墓δ芙M件。用組件代替“現(xiàn)實”上的實體成為 JavaScript(ECMAScript) 得以流行的原因,有論證表明對組件進行適當(dāng)?shù)慕M合就可以在英特網(wǎng)上代替 HTML 和 XML 的文檔對象模型(DOM)。
使人們的編程與實際的世界更加接近,所有的對象被賦予屬性和方法,結(jié)果編程就更加富有人性化。
就 C++ 而言,由于面向更高的邏輯抽象層,使得 C++ 在實現(xiàn)的時候,不得不做出性能上面的犧牲,有時候甚至是致命的 ( 所有對象的屬性都經(jīng)過內(nèi)置多重指針的間接引用是其性能損失的主要原因之一;不過,筆者的局限性在于未使用過 VC++ 外的面向?qū)ο笳Z言,所以不是十分肯定,哈哈,有人笑出來了… )。
在計算機速度飛速發(fā)展的今天,你可能會說,一丁點的性能犧牲沒什么大不了。是的,從面向?qū)ο蟮慕嵌龋沟木幊痰慕Y(jié)構(gòu)更加清晰完整,數(shù)據(jù)更加獨立和易于管理,性能的犧牲可以帶來這么多的好處,沒有理由不做穩(wěn)賺的生意吧?
不過,在某些對速度要求極高特殊場合,例如你做的是電信的交換系統(tǒng),每秒鐘有超過百萬的人同時進行電話交換,如果,每一個數(shù)據(jù)交換過程都是一個對象,那么總的性能損失將是天文數(shù)字!!
或者這個例子不夠貼身,再舉個例子吧。假如你受聘于一個游戲設(shè)計公司,老板希望做出來的游戲可以更多的兼顧到更多的電腦使用者,游戲每秒鐘的運行的幀可以 更多,子彈和爆炸物可以更多、更華麗。那么,你會發(fā)現(xiàn)使用 C++ 會使你的程序變得笨拙,無法滿足你的需求,除非你非得要你的游戲運行于奔騰四的機器上 ( 如果不是,而你又堅持用 C++ 的對象編程,那么請減少主角的槍的威力吧 )。
以上就是動力節(jié)點小編介紹的"面向?qū)ο蟮膬?yōu)點",希望對大家有幫助,想了解更多可查看Java教程。動力節(jié)點在線學(xué)習(xí)教程,針對沒有任何Java基礎(chǔ)的讀者學(xué)習(xí),讓你從入門到精通,主要介紹了一些Java基礎(chǔ)的核心知識,讓同學(xué)們更好更方便的學(xué)習(xí)和了解Java編程,感興趣的同學(xué)可以關(guān)注一下。
初級 202925
初級 203221
初級 202629
初級 203743