以前不敢面對她,后來聽說她閃婚了,他說是有對象了,還說給我一次機會,后來她說不是你朋友替你說好話?
他的意思可能是想和你和解了所以才繞了這么大的一個圈子說是你朋友的問題,這種事情自己要做決定了!
面向對象和面向過程的區別
面向過程分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了 。
面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為 。
例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結果 。把上面每個步驟用分別的函數來實現,問題就解決了 。
而面向對象的設計則是從另外的思路來解決問題 。整個五子棋可以分為 1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪制畫面,3、規則系統,負責判定諸如犯規、輸贏等 。第一類對象(玩家對象)負責接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的i變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定 。
可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟 。同樣是繪制棋局,這樣的行為在面向過程的設計中分散在了總多步驟中,很可能出現不同的繪制版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化 。而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一 。
功能上的統一保證了面向對象設計的可擴展性 。比如我要加入悔棋的功能,如果要改動面向過程的設計,那么從輸入到判斷到顯示這一連串的步驟都要改動,甚至步驟之間的循序都要進行大規模調整 。如果是面向對象的話,只用改動棋盤對象就行了,棋盤系統保存了黑白雙方的棋譜,簡單回溯就可以了,而顯示和規則判斷則不用顧及,同時整個對對象功能的調用順序都沒有變化,改動只是局部的 。
再比如我要把這個五子棋游戲改為圍棋游戲,如果你是面向過程設計,那么五子棋的規則就分布在了你的程序的每一個角落,要改動還不如重寫 。但是如果你當初就是面向對象的設計,那么你只用改動規則對象就可以了,五子棋和圍棋的區別不就是規則嗎?(當然棋盤大小好像也不一樣,但是你會覺得這是一個難題嗎?直接在棋盤對象中進行一番小改動就可以了 。)而下棋的大致步驟從面向對象的角度來看沒有任何變化 。
當然,要達到改動只是局部的需要設計的人有足夠的經驗,使用對象不能保證你的程序就是面向對象,初學者或者很蹩腳的程序員很可能以面向對象之虛而行面向過程之實,這樣設計出來的所謂面向對象的程序很難有良好的可移植性和可擴展性 。
面向對象與面向過程有什么本質區別?
【面向對象與面向過程有什么本質區別?_面相對象與面相過程】蛋炒飯制作的細節,我清楚,因為我沒當過廚師,也不會做飯,但最后的一道工序肯定是把米飯和雞蛋混在一起炒勻 。蓋澆飯呢,則是把米飯和蓋菜分別做好,你如果要一份紅燒肉蓋飯呢,就給你澆一份紅燒肉;如果要一份青椒土豆蓋澆飯,就給澆一份青椒土豆絲 。
蛋炒飯的好處就是入味均勻,吃起來香 。如果恰巧你不愛吃雞蛋,只愛吃青菜的話,那么唯一的辦法就是全部倒掉,重新做一份青菜炒飯了 。蓋澆飯就沒這么多麻煩,你只需要把上面的蓋菜撥掉,更換一份蓋菜就可以了 。蓋澆飯的缺點是入味不均,可能沒有蛋炒飯那么香 。
到底是蛋炒飯好還是蓋澆飯好呢?其實這類問題都很難回答,非要比個上下高低的話,就必須設定一個場景,否則只能說是各有所長 。如果大家都不是美食家,沒那么多講究,那么從飯館角度來講的話,做蓋澆飯顯然比蛋炒飯更有優勢,他可以組合出來任意多的組合,而且不會浪費 。
蓋澆飯的好處就是“菜”“飯”分離,從而提高了制作蓋澆飯的靈活性 。飯不滿意就換飯,菜不滿意換菜 。用軟件工程的專業術語就是“可維護性”比較好,“飯” 和“菜”的耦合度比較低 。蛋炒飯將“蛋”“飯”攪和在一起,想換“蛋”“飯”中任何一種都很困難,耦合度很高,以至于“可維護性”比較差 。軟件工程追求的目標之一就是可維護性,可維護性主要表現在3個方面:可理解性、可測試性和可修改性 。面向對象的好處之一就是顯著的改善了軟件系統的可維護性 。
面向過程(OP)和面向對象(OO)是不是就是指編碼的兩種方式呢?不是!你拿到了一個用戶需求,比如有人要找你編個軟件,你是不是需要經過需求分析,然后進行總體/詳細設計,最后編碼,才能最終寫出軟件,交付給用戶 。這個過程是符合人類基本行為方式的:先想做什么,再想如何去做,最后才是做事情 。有的同學說:“我沒按照你說的步驟做啊,我是直接編碼的” 。其實,你一定會經歷了這三個階段,只不過你潛意識里沒有分得那么清楚 。對于拿到需求就編碼的人,可能編著編著,又得倒回去重新琢磨,還是免不了這些過程,
以OO為例,對應于軟件開發的過程,OO衍生出3個概念:OOA、OOD和OOP 。采用面向對象進行分析的方式稱為OOA,采用面向對象進行設計的方式稱為OOD,采用面向對象進行編碼的方式稱為OOP 。面向過程(OP)和面向對象(OO)本質的區別在于分析方式的不同,最終導致了編碼方式的不同 。
python為什么是面向對象的
Python雖然是解釋型語言,但從設計之初就已經是一門面向對象的語言,Python來說一切皆為對象 。正因為如此,在Python中創建一個類和對象是很容易的,當然如果習慣面向過程或者函數的寫法也是可以的,Python并不做硬性的限制 。
Python的面向對象特征如下:
封裝
面向對象程序設計中的術語對象(Object)基本上可以看做數據(特性)以及由一系列可以存取、操作這些數據的方法所組成的集合 。傳統意義上的“程序=數據結構 算法”被封裝”掩蓋“并簡化為“程序=對象 消息” 。對象是類的實例,類的抽象則需要經過封裝 。封裝可以讓調用者不用關心對象是如何構建的而直接進行使用 。
繼承
類繼承:
繼承給人的直接感覺是這是一種復用代碼的行為 。繼承可以理解為它是以普通的類為基礎建立專門的類對象,子類和它繼承的父類是IS-A的關系 。
多重繼承:
不同于C#,Python是支持多重類繼承的(C#可繼承自多個Interface,但最多繼承自一個類) 。多重繼承機制有時很好用,但是它容易讓事情變得復雜 。
多態
多態意味著可以對不同的對象使用同樣的操作,但它們可能會以多種形態呈現出結果 。在Python中,任何不知道對象到底是什么類型,但又需要對象做點什么的時候,都會用到多態 。方法是多態的,運算符也是多態的 。
相關推薦:《Python教程》以上就是小編分享的關于python為什么是面向對象的的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
面向過程和面相對象解題思路的區別是什么
面向過程好比說我要先畫長方型的邊 寬 定義長方型的特性 對邊向等之類的 面向對象就是說 我通過調用你就可以得到一個長方形 至于它是怎么畫的 我不用了解
面相對象的特征
面向對象的特征,正常情況下的話,肯定是要根據你的面相判斷出來的
- 眼睛明亮 看相 | 會看相的幫我說下噢,眼睛大與眼睛小有什么區別?眼睛大好不?
- 八字喜用神和忌神查詢_如何判斷八字中的喜用神與忌神?
- 八字看與子女的緣份薄淺!算命的說與家人緣分淡薄是什么意思
- 住高層的風水:玄空風水之下卦與替卦!
- 秤砣與風水:房屋陰氣重風水大師讓門上掛秤砣什么意思
- 你的長相早已決定了你的命運 命運與面相有多大關系
- 板栗泡白酒功效與作用
- 雙魚座女生性格,雙魚座女生真實性格
- #1981年12月7號出生是什么命#農歷1981年12月出生的人是什么命?事業與婚姻如何?
- 四柱中劫財旺又通根 十神與五官的一些關系
