什麼是面向對象編程

什麼是面向對象編程

本文關鍵字:面向對象、面向過程、面向過程編程語言、面向對象編程語言前端

1、淺說編程

說到編程,對於初學者來說,可能第一想到的就是敲鍵盤,寫代碼,作遊戲,甚至於會聯想到軟件破解、網絡***。另外一方面,在學了一些編程的相關知識之後,一個最明顯的感受就是:這東西有什麼用?爲何我明明聽懂了卻仍是解決不了實際的問題,甚至於完成不了相應的練習?這其中最主要的緣由是什麼呢?除了埋怨出的題目跨度太大意外,咱們也應該好好的反思一下。
對於以上的問題,最主要的緣由就是對於編程瞭解的不夠深刻。這個深刻指的不是咱們要去了解他的發展歷史以及底層原理,而指的是咱們要對編程有一個明確的定位,咱們如今學的內容是什麼,又能用來作什麼?
什麼是面向對象編程程序員

  • 編程與軟件開發

不少同窗在剛開始都會把和計算機相關的全部內容都和編程,敲代碼,程序員聯想到一塊兒,這其中甚至包括:作系統、配路由、修電腦、作病毒等等腦洞大開的想法。這些想法不少是行外人的見解,可是也有一少部分發生在學習者身上,等開始學了才發現和預想的徹底不同。
一般來講學習編程所對應的崗位就是開發工程師,開發工程師根據工做內容的不一樣又分爲不少種:前端、後端、移動端、嵌入式、遊戲開發、大數據等等。相同點在於都是完成一個應用產品,也就是在電腦上運行的軟件、經過瀏覽器訪問的應用、手機端運行的各類APP、各類硬件設備的監控、數據分析產品等等。
因爲軟件編程是信息技術的一部分,所以,在學習時一般會用到網絡通訊、操做系統、數據結構等等方面的知識,這時候每每就會一個頭兩個大了,由於這些學科可能不會去系統的學習,在接觸的時候會感受整個體系十分龐雜,難以掌握,學到的東西又不知道何時纔會派上用場。數據庫

  • 如何學習編程

對於以上的狀況,首先咱們須要作的就是先沉下心,越難掌握的東西每每會讓自身的價值更高。這也是爲何程序開發者相對高薪,不管你接受與否,這都是一條充滿挑戰且激動人心的學習之旅。那麼,編程到底如何學呢?熟練的掌握基礎語法?背下每一段經常使用的代碼?固然不是。首先咱們要把編程語言當作是工具,作它的主人。
咱們如今所學的東西無非是那些偉大的人已經創造出來的東西,有一部分是固定的須要記憶下來的,就好比基礎語法,一些基本的操做步驟。另一部分就是比較難掌握,也是最充滿魅力的部分,就是用已有的知識去解決一個實際的問題,並且一般這個問題都是本身以前沒有實現過的。歸結起來就是編程思想,對於初學者來講,就是解決一個問題的思路。編程

吳文俊院士曾經提出過「數學機械化」的概念,不少問題在前進一步以後都有一個肯定的、必須選擇的下一步,這樣就能夠沿着一條有規律的、刻板的道路,一直達到結論。
在編程和方法設計時咱們也能夠借鑑這樣一個思路。一般咱們按照三個步驟來思考就好,What I want?What I need?How to do?固然這只是本人總結的,若是你們有更清晰的步驟能夠分享。後端

  • 第一步(What I want)

必定不要着急寫程序,特別是大腦一片空白不知道如何下手的時候。首先咱們最應該作的是明確咱們本身要作什麼,把這個問題轉換爲一個有步驟的邏輯問題,是一個簡單的順序結構,仍是一個須要根據不一樣狀況來進行選擇和循環,功能和功能之間存在哪些聯繫,這是咱們須要理清的。瀏覽器

  • 第二步(What I need)

在完成了第一步後,咱們要在咱們所學的知識當中來搜索,應該用到哪些基本結構或者已有的工具類和方法。若是仍是沒有任何思路,那隻能說學的還不夠紮實,或者又一次接觸到了知識的盲區。這個時候並不須要暴躁,去查就能夠了,而且幸運的是,在完成了第一步以後咱們在搜索時咱們的問題會頗有針對性。搜索的問題再也不是:XX系統怎麼作?XX功能怎麼實現?而是如何處理XX(步驟),XX技術點(使用方法)。碰到沒有接觸過的東西是一件很正常的事情,你目前所遇到的問題必定是先前別人已經遇到的。即便你遇到的是一個稀有級或者史詩級的BUG,那麼經過搜索後獲得的信息也必定會對解決問題有所幫助。網絡

  • 第三步(How to do)

完成了前兩步以後,最後一步其實就很簡單了。明確了本身要什麼,用什麼來作,剩下的就是怎麼作了,把思路和工具結合,就是你的結果!因此你們須要明確的是,真正能寫出程序,讓他工做的是咱們,不要把計算機想象的太過智能,每個功能,包括細小的邏輯判斷都是從咱們的須要出發來實現的。因此編程纔會那麼靈活多變,能開發出各類各樣的系統,作各類各樣的應用,這也就是最具魅力的地方。想想,把本身的一個想法完整的實現出來,是一種什麼樣的感受?數據結構

2、面向過程

首先咱們來講一說面向過程的編程語言,這是一種編程思惟,是以過程爲中心的編程。主要的特色是先分析出解決問題須要的步驟,而後把每一步定義成一個一個方法,經過逐個調用的方式來完成整個功能。這樣的好處是十分直接,要解決什麼問題就寫什麼代碼,可是複用性會比較差。編程語言

  • 舉例說明:假如我須要製做一套傢俱

若是使用面向過程的語言來完成,那麼我將化身一個全能木匠,從準備原材料開始到傢俱成品,中間的全部步驟都要本身完成。首先是肯定原材料、準備原材料、而後是製做形狀、上漆等步驟。在編程上體現爲:主要經過方法調用來完成,一個程序解決一個特定的問題。
什麼是面向對象編程分佈式

3、面向對象

那麼什麼是面向對象編程呢?因爲對象這個詞自己就很抽象,只要你不是按照下面這張圖片理解的,那麼你仍是能夠學好面向對象編程的。
什麼是面向對象編程
面向對象是被目前絕大多數主流編程語言採用的編程思想和軟件開發方法,而且因爲這種概念的普適性,也已經在數據庫系統、應用平臺、分佈式系統、人工智能等領域廣泛使用。那麼到底什麼是面向對象編程呢?其實很簡單,咱們只須要按照咱們正常的思惟方式去思考就好了,好比仍是製做一個木製傢俱,那麼在實際生活中是怎樣辦到的呢?
原材料準備,這應該是採購商的工做,其餘的環節他無需插手;傢俱設計圖,這是設計公司的工做;找到合適的木匠,這是用人單位應該作的。誰來作傢俱呢?木匠。因而咱們把這些人組合到一塊兒就能夠完成這樣一個工做,編程者更像是一個項目的負責人,須要知道完成這項工做須要用到哪些人,這些人應該可以完成哪部分的工做,每一個人各司其職。

  • 舉例說明:面向過程與面向對象的比較

什麼是面向對象編程
從直觀來看,面向對象編程都有哪些特色呢?開銷大,這是確定的,原來一個經驗豐富的老師傅能完成的工做如今要這麼多人來完成,要建立這麼多對象,內存的佔用固然也是較多的。那有什麼好處呢?咱們把問題看的長遠一點,若是咱們要求傢俱用不一樣的材質來作,採用更多的式樣來作,不僅僅是上漆,還要更多的裝飾式樣,這個時候會怎麼樣呢?若是使用面向過程的語言,咱們須要寫出不少不少個和要求匹配的程序,很是不利於維護。若是換成面向對象的語言呢?咱們只須要告訴採購商:我要什麼原材料;告訴設計公司:我要什麼樣的傢俱;告訴用人單位:我要什麼樣的木匠;告訴木匠:你該怎麼作。雖然在前期要編寫不少代碼,可是在完成工做時可能只須要改變調用的參數就能解決不少問題。
整體來講,若是咱們追求效率和資源,要以最小的開銷作出符合要求的產品,那拉上一幫人只爲作那麼幾件東西就顯得有些得不償失了,這個時候咱們選擇使用面向過程語言比較合適。若是咱們要作的是一個國際公司,能夠適應不一樣國家地區不一樣人的要求,那麼這個時候咱們使用面向對象思惟是很必要的,你總不能爲每一個需求都量身定作寫一套程序。

4、表明語言

  • 面向過程:

C語言、Fortran等

  • 面向對象:

C++、C#、Java、Python等

相關文章
相關標籤/搜索