10.23 產品經理需要知道的技術知識

對於產品經理來說,瞭解了面向對象的思想才會更容易理解開發人員的程序思維。系統的構建過程就是對象的構建過程,瞭解了這些與程序人員的溝通會更加順暢。程序人員要實現面向對象的開發(OOP)就要先做好面向對象的設計(OOD),要做好面向對象的設計(OOD)就要先做好面向對象的分析(OOA),只有理解了什麼是面向對象的思想,才能更多的參與到產品的分析、設計、開發中來,贏得更多的尊重。

产品经理需要知道的技术知识

90年代的開發人員是不知道什麼是面向對象的,那時大家還在用BASIC和C語言進行開發,程序都是一條條代碼寫出來的,編程也是一件非常苦逼和有技術含量的事,當時硬件的發展還不夠,開發人員的關注點是內存的佔用率和文件大小。隨著社會的發展,硬件變得越來越廉價,程序人員的關注點變為軟件的優化,軟件開發思想也從面向過程式的開發轉為面向對象式的開發。

面向過程與面向對象

面向過程:面向過程強調的是“過程”,體現的是操作流程。

如:早上起床的過程,1洗臉、2刷牙、3準備早餐、4吃早餐、5出門上班。面向過程的開發思想與人的思維邏輯過程很相似,但不易於瞭解事物的整體。面向過程的開發語言有BASIC、C。

产品经理需要知道的技术知识

面向對象:談面向對象就先要了解什麼是對象,對象是事物存在的實體。

如:人、車、房、鳥等。對象可以劃分為動態部分和靜態部分,動態就是對象的行為,靜態就是對象的特徵。如鳥的飛、叫、吃食,這些是行為;鳥有嘴、翅膀、瓜子,這些是對象的特徵,我們把行為叫做方法,把特性叫做屬性。面向對象的開發語言有JAVA、C#等。

面向過程過多的強調流程,關注細節就容易忽略整體,當我們只關注一個點時是很難了解事物的全貌,不利於大系統的開發。面向對象關注的是系統中的實體及實體間信息的交互,會更宏觀的瞭解事物,有利於大系統的開發。

細說面向對象

對象就是實體,在系統中很多實體是有共性的(相同的特徵與行為),把共性抽象出來就產生了“類”,類的具體化就是對象,對象的抽象就是類。

例如,一隻大象是一個對象,大象的行為有喝水、走路、吃飯等,特徵有長鼻子、四條腿、象牙等,把這些共性抽象成大象類。(類的方法:喝水、走路、吃飯;類的屬性:長鼻子、四條腿、象牙),對於沒有象牙的大象屬於個性化對象,不屬於大象類。軟件工程的一個重要思想就是“高內聚、低耦合”,它是判斷設計好壞的標準,應用於面向對象的設計,主要是看類的內聚性是否高,耦合度是否低。

产品经理需要知道的技术知识

通過高內聚可以更好的增強對象內部的粘性,將複雜性交給對象內部解決,對外只需留有接口。對象與對象間的交互信息儘量減少,降低信息的關聯性,通過低耦合可以有效的降低對象間的依賴,降低理解成本及交互成本。

面向對象的三個基本特性:封裝、繼承、多態。

封裝是對象的最重要特性,對象的實現細節都被封裝在類中,對於用戶是隱藏的。

類與類之間通過消息進行信息的傳遞,類中對內的方法與屬性是私有的,對向的方法與屬性是公有的,只有公有的方法與屬性才能與外部進行交互。

如:汽車,用戶是不用關心汽車發動機、制動系統與導航系統,用戶是通過方向盤、各種開關、剎車和油門與汽車進行交互,用戶無須瞭解汽車的工作原理。

产品经理需要知道的技术知识

繼承是對象的另一個重要特性,類與類之間是可以有繼承關係的,子類繼承了父類,就擁有了父類的屬性與方法。

圖形類的關係圖如下:

产品经理需要知道的技术知识

上面說的繼承,兒子(子類)繼承父親(父類),那麼兒子就擁有了父親的所有財產(父類的方法和屬性),兒子可以直接用。但有的東西兒子繼承來了不一定有用,需要根據兒子的特點改造,如:鳥(父類)有飛行的能力,但有的鳥飛行方式有所不同,像蜂鳥。蜂鳥就可以重寫鳥類的飛行方法,以實現自己獨特的飛行方式。繼承可以讓兒子擁有父親的財產,那麼父親為什麼不可以用兒子的財產呢?這就是向後兼容,讓父親(父類)指向兒子(子類),實現兒子(子類)的方法。

這種向後兼容,父類指向子類並調用子類的方法就是多態。多態實現了父類指向子類,並可調用子類的方法,這樣有利於提高程序的擴展性和可維護性。

通過面向對象的方式,讓大的系統開發變為可能,在系統中將對象抽象成類,再通過繼承與信息交互建立起類與類的關係,增強了代碼的重用性,減少了重複性勞動。將複雜的問題封裝起來,對外只需要暴露出必要的接口,減少信息的交互,增強對象內部的內聚性,使系統分割清晰,簡單明瞭。通過多態性,讓對象增加了更多的可能性,增強對象的擴展性及維護性。通過對象的方式可以把世界看得更加清晰、透徹。

一座大廈的建立需要無數的磚頭、水泥和鋼筋,它們就是構建起這座大廈的對象,磚頭如何燒製的我們不用管,只需要直接使用磚頭對象就好了。

CIO之家 www.ciozj.com 微信公眾號:imciow


分享到:


相關文章: