1. 程式人生 > >短腳爸爸學Python入門 1.1

短腳爸爸學Python入門 1.1

面向對象


前幾天看Python視頻教程,老師學編程一定要做筆記發博客,這樣可以提高你的興趣和成就感。想了想也對!就打算發布51CTO上
在課上老師講了一大堆Python術語。什麽面向對象、面向過程、’類、包、庫、模塊等等聽了一臉懵逼!!
技術分享 技術分享

技術分享
我覺得對初學者來說最先理解的應該是這些概念!這是百度上整理編輯的一些我覺得最“友好”的解釋.


1.面向對象語言的來歷

技術分享

面向對象2位創始人!

面向對象範式可以追溯到Simula語言。·克利斯登·奈加特是這門語言的兩位作者之一。他被挪威國防部征召入伍,然後服務於挪威防務科學研究所。作為一名訓練有素的數學家,克利斯登·奈加特一直在用電腦解決國防中的計算問題,例如核反應堆建設、艦隊補給、後勤供應等。在解決這些問的過程中,奈加特需要用電腦來模擬出真實世界的狀況。比如說,如果發生一次核泄漏,會造成怎樣的影響。奈加特發現,按照之前過程式的、指令式的編程方式,他很難用程序來表示真實世界中的個體。就拿一艘船來說,我們知道它會有一些數據,如高度、寬度、馬力、吃水量等。它還會有一些動作,如移動、加速、加油、停泊等。這艘船就是一個個體。有些個體可以劃為一類,如戰列艦和航母都是軍艦。有些個體之間有著包含關系,如一條船有船錨。當人們講故事時,會自然而然地描述來自真實世界的個體。但對於只懂0/1序列的計算機來說,它只會機械地執行一條條指令。奈加特希望,當他想多用計算機床模擬時,能像講故事一樣簡單。他憑著自己在軍和民用方面的經驗,知道這樣的一種編程語言有著巨大的潛力、最終,他遇到了計算機專家奧利一約翰達爾。達爾幫助奈加特把他的想法變成一門新穎的語言——simula。這門語言的名字,正是奈加特朝思暮想的。模擬。我們可以把面向對象看作是故事和指令之間的橋梁。程序員用一種故事式的編程語言描述問題,隨後編譯器會把這些程序翻譯成機器指令

但在計算機發展的早期,這些額外的翻譯工作會消耗太多的計算機資源、因此面向對象的編程範式並不流行。一些純粹的面向對象語言,也經常因為效率低下而受到詬病。隨著計算機性能的提高,效率問題不再是瓶頸。人們轉而關註程序在面向對象領域最先取得輝煌成功的是C++語言。比雅尼·斯特勞斯特魯普在C語言的基礎上增加面向對象的語法結構,創造出C++語言。C++雜揉了C語言特征,所以顯得異常復雜。後來的java語言向著更純粹的面向對象範式靠攏,很快獲得了商業上的成功。C++和Java一度成為最流行的編程語言。後來微軟推出的C#語言,以及蘋果一直在支持的Objective-C語言,也都是典型的面向對象語言.

----摘之《從Python開始編程》


面向對象和面向過程!


問:經常聽到有人說,計算機語言可以歸為面向過程語言和面向對象語言,那麽到底什麽是面向對象,什麽是面向過程呢?

答:面向過程就是分析出解決問題所需要的步驟,然後用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了;面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。


可以拿生活中的實例來理解面向過程與面向對象,例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始遊戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最後結果。把上面每個步驟用不同的方法來實現。


如果是面向對象的設計思想來解決問題。面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分為1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪制畫面,3、規則系統,負責判定諸如犯規、輸贏等。第一類對象(玩家對象)負責接受用戶輸入,並告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。


可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟。同樣是繪制棋局,這樣的行為在面向過程的設計中分散在了多個步驟中,很可能出現不同的繪制版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一。


—摘自《C#編程詞典》




本文出自 “10998444” 博客,請務必保留此出處http://11008444.blog.51cto.com/10998444/1931039

短腳爸爸學Python入門 1.1