概述
面向過程:根據業務邏輯從上到下寫壘代碼
函數式:將某功能代碼封裝到函數中,日后便無需重復編寫,僅調用函數即可
面向對象:對函數進行分類和封裝,讓開發“更快更好更強...”
封裝是面向對象編程的特征之一,也是類和對象的主要特征。封裝將數據以及加在這些數據上的操作組織在一起,成為有獨立意義的構件。外部無法直接訪問這些封裝了的數據,從而保證了這些數據的正確性。如果這些數據發生了差錯,也很容易定位錯誤是由哪個操作引起的。
如果外部需要訪問類里面的數據,就必須通過接口(Interface)進行訪問。接口規定了可對一個特定的對象發出哪些請求。當然,必須在某個地方存在著一些代碼,以便滿足這些請求。這些代碼與那些隱藏起來的數據叫作"隱藏的實現"。站在過程化程序編寫(Procedural Programming)的角度,整個問題并不顯得復雜。一種類型含有與每種可能的請求關聯起來的函數。一旦向對象發出一個特定的請求,就會調用那個函數。通常將這個過程總結為向對象"發送一條消息"(提出一個請求)。對象的職責就是決定如何對這條消息作出反應(執行相應的代碼)。
若任何人都能使用一個類的所有成員,那么可對這個類做任何事情,則沒有辦法強制他們遵守任何約束--所有東西都會暴露無遺。
有兩方面的原因促使了類的編制者控制對成員的訪問。第一個原因是防止程序員接觸他們不該接觸的東西--通常是內部數據類型的設計思想。若只是為了解決特定的問題,用戶只需操作接口即可,無需明白這些信息。類向用戶提供的實際是一種服務,因為他們很容易就可看出哪些對自己非常重要,以及哪些可忽略不計。進行訪問控制的第二個原因是允許庫設計人員修改內部結構,不用擔心它會對客戶程序員造成什么影響。例如,編制者最開始可能設計了一個形式簡單的類,以便簡化開發。以后又決定進行改寫,使其更快地運行。若接口與實現方法早已隔離開,并分別受到保護,就可放心做到這一點,只要求用戶重新鏈接一下即可。
封裝考慮的是內部實現,抽象考慮的是外部行為。符合模塊化的原則,使得軟件的可維護性、擴充性大為改觀
總結
以上就是本節對于面向對象初級知識的介紹,總結如下:
面向對象是一種編程方式,此編程方式的實現是基于對 類 和 對象 的使用;
? ?類 是一個模板,模板中包裝了多個“函數”供使用;
? 對象,根據模板創建的實例(即:對象),實例用于調用被包裝在類中的函數;
? 面向對象三大特性:封裝、繼承和多態;
問答專區
問題一:什么樣的代碼才是面向對象?
答:從簡單來說,如果程序中的所有功能都是用 類 和 對象 來實現,那么就是面向對象編程了。
問題二:函數式編程 和 面向對象 如何選擇?分別在什么情況下使用?
答:須知:對于 C# 和 Java 程序員來說不存在這個問題,因為該兩門語言只支持面向對象編程(不支持函數式編程)。而對于 Python 和 PHP 等語言卻同時支持兩種編程方式,且函數式編程能完成的操作,面向對象都可以實現;而面向對象的能完成的操作,函數式編程不行(函數式編程無法實現面向對象的封裝功能)。
所以,一般在Python開發中,全部使用面向對象 或 面向對象和函數式混合使用
本文部分文章轉自簡書 IT程序獅 ,多謝!