當前位置:首頁 » 操作系統 » 演算法雜貨鋪

演算法雜貨鋪

發布時間: 2023-05-28 06:11:29

⑴ 談談你對面向對象的理解

淺談對面向對象的理解

為什麼要使用面向對象的思想來看待問題?

1.面向對象更利於我們看待問題,它使得我們看待問題變得清晰化。對於問題我們只需要了解問題所牽扯到的對象有哪些,它們在這個問題中都有著哪些行為即可。
2.面向對象最大的改變應該是我們看待問題高度發生改變。在利用面向過程的思想看待問題時只是關注程序的變數,語句,表達式的合理性,關注代碼塊的功能。而利用面向對象的思想進行設計時,我們只需關注對象與對象之間關系。而具體的實現細節是由對象的方法來實現的。但並不是說面向過程就一無是處,對於對象里的方法還是要利用面向過程的思想的。
面向對象的特性
繼承是面向對象編程思想中重要的一部分。簡單的講就是從一個已有的類中派生出新的類。來實現一些父類沒有的功能。父類允許子類繼承它的方法,如果父類中有些方法和子類中的方法發生沖突,子類可以重寫該方法。子類也可以實現父類的所有功能。對於基類的設計過程,我們應該根據實際情況包含各種可能性。比如說有一個狗的類,任何一個品種的狗都可以繼承它,去實現自己細節。但如果要實現貓的行為方式,顯然狗這個類就不適合了,應該在往上走,去實現一個動物的類,就可以繼承這個類來實現貓的行為屬性。這樣做的目的是使程序具有較高的可擴展性。繼承的優點是,提高代碼的復用性,降低工作量。缺點是,如果父類的大部分功能子類都用不上,那麼子類就顯得比較冗餘了。

面向過程的實現過程就是變數在函數之間的不斷傳遞,使得函數之間進行信息的交流來實現編程的需要的。這樣的後果就是如果變數在某一函數中被改變了,會導致整個程序出錯。對於面向對象來說,信息之間的交流是以對象做為參數的,調用的類只能使用該類的某些功能來實現自己的功能。裡面的信息對外界來說是不可見的,也無法改變類中的屬性。因為類中的屬性大多都是私有的或保護的。這就體現了封裝性,封裝是將屬性和方法「打包」,屬性私有化或保護化,方法公有化,只能使用該類的方法來使用和改變該類的屬性。就好像人一樣,比如吃飯是一個方法,那麼吃多吃少是自己的事,與別人無關。別人也不可能改變這個事實。

對於面向對象來說,類相當於一個模板,一個抽象的概念,對象才是類的實例化體現,即是程序代碼的組成部分。對於繼承了父類的多個子類而言,重寫了父類的某些方法,方法名雖然相同,方法體不同,實現過程不同,即不同子類的該方法不同。使用父類類型定義的子類對象。調用不同子類的方法,產生的了不同結果,這種變化就叫多態性。尤其對於父類是抽象類來說,由於父類中的方法未定義,不同子類繼承父類後,可以重寫父類的方法。抽象類不能實例化對象,只能被繼承,一般作為基類。

面相對象的原則
一.單一原則
就一個類來說,類的功能應該較為單一一點,不應該是各種功能都包含在一起,這樣不利於代碼的維護,容易產生BUG,也破壞了類的本質。應該是類中的所有方法都為某一功能服務。但並不是類分的越詳細越好,根據實際情況而定。

二.開閉原則
對於一個類來說,應該是擴展是開放的,修改是關閉的。隨著人們的對軟體功能的不斷期待和改變,我們總是避免不了的要在原有的代碼的基礎上進行變化,但我們不可能對原有的代碼進行修改,因為這可能使原有出現BUG,所以擴展是理所當然的。這個就要通過繼承來實現了。

三.迪米特原則
一個類應該降低對其它類的耦合度,如果避免不了要與其它類產生關聯的話,應該避免對其它類的了解。保持類的封裝性特點。如果兩個類之間耦合度較高的話,一個類的改變會影響另一個類,而面向對象的原則是程序之間的類應該是很少關聯的各個類執行自己的功能就好。

對象之間的關系
泛化關系是對象之間耦合度最大的一種關系,就是繼承關系。在JAVA中介面就類似於抽象類,它是方法說明的集合,子類繼承介面,並實現介面中的方法,就是實現關系。在程序中,有時候避免不了的要把某一個對象做為參數,局部變數,返回值,讓另一個對象調用完成該類的某些功能。這就是依賴關系。聚合關系是整體包含局部的概念。例如班級與學生之間的關系。組合關系是一種強烈的包含關系。例如學校和班級之間的關系,公司和部門之間的關系。聚合關系和組合關系的區別就在於,聚合關系中的的局部可以獨立存在,例如這個班級被取消了,不能說明班裡的學生就不是學生了。組合關系而言,整體的生命周期和局部的生命周期是息息相關的,如果整體不存在了,局部肯定不存在了,例如公司倒閉了,那麼它其中的某一個部門肯定也不會存在。

總結
所謂面向對象編寫的程序,就是通過不同對象的實現來實現整個功能。重點還是如何合理的設置對象,以及對程序的包容性,即你要考慮將來可能會改變某一功能或添加某一功能。對程序的升級。還有就是在滿足程序功能的前提下保持低耦合度。

⑵ 什麼是演算法 用計算機解題時起什麼作用

演算法可以理解為有基本運算及規定的運算順序所構成的完整的解題步驟。或者看成按照要求設計好的有限的確切的計算序列,並且這樣的步驟和序列可以解決一類問題。

計算機解題時就相當於你的思路,知道怎麼去解決問題,剩下的只有如何用代碼表達出來而已

熱點內容
scratch少兒編程課程 發布:2025-04-16 17:11:44 瀏覽:640
榮耀x10從哪裡設置密碼 發布:2025-04-16 17:11:43 瀏覽:368
java從入門到精通視頻 發布:2025-04-16 17:11:43 瀏覽:86
php微信介面教程 發布:2025-04-16 17:07:30 瀏覽:310
android實現陰影 發布:2025-04-16 16:50:08 瀏覽:794
粉筆直播課緩存 發布:2025-04-16 16:31:21 瀏覽:346
機頂盒都有什麼配置 發布:2025-04-16 16:24:37 瀏覽:213
編寫手游反編譯都需要學習什麼 發布:2025-04-16 16:19:36 瀏覽:816
proteus編譯文件位置 發布:2025-04-16 16:18:44 瀏覽:367
土壓縮的本質 發布:2025-04-16 16:13:21 瀏覽:594