用面向對象編程思想——構建用戶調查的理論基礎
用戶調查是開發產品的重要依據,更是產品能否被用戶認可的第一步。本篇文章將深入用戶調查的基礎理論方面,嘗試從基礎理論方面為用戶調查提供更多有共性、有規律性、有理論的依據。
前言:
“沒有調查就沒有發言權”,這句話很多人都非常熟悉,其實這句話還有下半句,知道下半句的人相對少了很多。
完整的一句話是這樣的:“沒有調查就沒有發言權,沒有正確的調查同樣沒有發言權”。
這句話不僅強調了調查的重要性,更強調了正確調查的重要性。
在互聯網行業,用戶調查絕對是最高頻的詞匯之一。用戶調查是開發產品的重要依據,更是產品能否被用戶認可的第一步。
隨著用戶調查的權重越來越高,參與過用戶調查的人越來越多。每個做過用戶調查或者對用戶調查研究過的人都有自己的看法。
個人對用戶調查的看法就像讀者看《哈姆雷特》一樣,一千個讀者眼中有一千個《哈姆雷特》。
本篇文章將深入用戶調查的基礎理論方面,嘗試從基礎理論方面為用戶調查提供更多有共性、有規律性、有理論的依據。
為了更好的闡述用戶調查基礎理論,文章中將首次引面向對象的編程方法,通過面向對象的編程方法類比,運用編程理論為用戶調查找到可行性基礎理論。
在互聯網的發展過程中,隨著市場的變化,用戶調查也一直在變化當中。目前為止,在用戶調查方面還沒有可行性的基礎理論。沒有基礎理論的支持,讓用戶調查像“薛定諤的貓一樣”,變化莫測。
在編程中有兩種不同的編程思想:
- 面向過程(Procedure Oriented):一種以過程為中心的編程思想;
- 面向對象 (Object Oriented) :一種以事物為中心的編程思想。
用戶調查正在進行這種演化,需要從面向過程演化到面向對象。通過采用面向對象的方式,將現實世界的事物抽象成對象,現實世界中的關系抽象成類、繼承,幫助我們實現對現實世界的抽象與數字建模。
通過面向對象的方法,更利于用人理解的方式對調查的復雜問題進行分析、歸納和演繹。
在我們過去采用的用戶調查方法中,由于某些主觀和客觀因素的存在,讓調查結果和實際情況存在不可逆偏差,且存在的偏差隨著調查人的不同被放大或者縮小。
正是因為存在這樣的問題,我們在做決策時通常依賴過往的經驗,而非調查結果。
一、面向過程和面向對象的區別
兩種編程思想的演化,從面向過程到面向對象,讓編程思想形成了方法論和理論支持。面向對象是一種對現實世界理解和抽象的方法,是計算機編程技術發展到一定階段后的產物。
面向過程就是分析出解決問題所需要的步驟,然后用函數把這些步驟一步一步實現,使用的時候一個一個依次調用就可以了。
面向對象是把構成問題事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘某個事物在整個解決問題的步驟中的行為。
以拿生活中的實例來理解面向過程與面向對象。
例如五子棋,面向過程的設計思路就是首先分析問題的步驟:1)開始游戲,2)黑子先走,3)繪制畫面,4)判斷輸贏,5)輪到白子,6)繪制畫面,70判斷輸贏,8)返回步驟2,9)輸出最后結果。把上面每個步驟用不同的方法來實現。
如果是面向對象的設計思想來解決問題,則是另外一種思路。
整個五子棋可以分為:1)黑白雙方,這兩方的行為是一模一樣的,2)棋盤系統,負責繪制畫面,3)規則系統,負責判定諸如犯規、輸贏等。
第一類對象(玩家對象)負責接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。
可以明顯地看出,面向對象是以功能來劃分問題,而不是步驟。
同樣是繪制棋局,這樣的行為在面向過程的設計中分散在了多個步驟中,很可能出現不同的繪制版本,因為通常設計人員會考慮到實際情況進行各種各樣的簡化。
而面向對象的設計中,繪圖只可能在棋盤對象中出現,從而保證了繪圖的統一。
二、過往用戶調查方法存在的問題
過往的用戶調查主要針對產品的功能角度進行模塊化調查,將用戶調查的反饋結果看成是實現產品迭代的某些功能模塊。面對日趨復雜多變的市場環境,這種思路逐漸在以下幾個方面暴露了一些弱點:
1. 審視問題域的視角
在現實世界中存在的客體是問題域中的主角,所謂客體是指客觀存在的對象實體和主觀抽象的概念,他是人類觀察問題和解決問題的主要目標。
例如,對于一個C2C的交易平臺來說,無論是簡單還是復雜,始終是圍繞用戶和商家這兩個客體實施。
在自然界,每個客體都具有一些屬性和行為,例如用戶有賬號、年齡、性別等屬性,以及登錄、瀏覽、下單等行為。因此,每個個體都可以用屬性和行為來描述。
通常人類觀察問題的視角是這些客體,客體的屬性反應客體在某一時刻的狀態,客體的行為反映客體能從事的操作。
這些操作附在客體之上并能用來設置、改變和獲取客體的狀態。任何問題域都有一系列的客體,因此解決問題的基本方式是讓這些客體之間相互驅動、相互作用,最終使每個客體按照依據調查結果做出的決策改變其屬性狀態。
過往采用的調查方法不是將 客體作為一個整體,而是將依附于客體之上的行為抽取出來,以功能為目標來進行用戶調查。
這種做法導致在進行用戶調查的時候,不得不將客體所構成的現實世界映射到由產品功能模塊組成的解空間中,這種變換過程,不僅增加了用戶調查的復雜程度,影響了調查結果的準確性,而且背離了人們觀察問題和解決問題的基本思路。
過去不規則的用戶調查將審視問題的視角定位于不穩定的操作之上,并將描述客體的屬性和行為分開,使得調查結果不具有指導性,甚至一個微小的變動,都會波及到整個調查結果。
面對問題規模的日趨擴大、環境的日趨復雜、需求變化的日趨加快,將用戶調查的基本方法統一到人類解決問題的習慣方法之上,這是需要采用面向對象編程思想進行用戶調查的首要原因。
2. 抽象級別
抽象是人類解決問題的基本法寶。良好的抽象策略可以控制問題的復雜程度,增強調查結果的通用性和可擴展性。
抽象主要包括過程抽象和數據抽象。過去的用戶調查方法是過程抽象。所謂過程抽象是將問題域中具有明確功能定義的操作抽取出來,并將其作為一個實體看待。這種抽象級別對于用戶調查結果來說得有些武斷,并且準確性差,導致很難得到一份準確性很高的用戶調查結果。
一旦某個客體屬性的表示方式發生了變化,就有可能牽扯到已有結果的很多部分。而數據抽象是較過程抽象更高級別的抽象方式,將描述客體的屬性和行為綁定在一起,實現統一的抽象,從而達到對現實世界客體的真正模擬。
3. 封裝體
封裝是指將現實世界中存在的某個客體的屬性與行為綁定在一起,并放置在一個邏輯單元內。
這樣做既可以實現對客體屬性的保護作用,又可以提高調查結果的通用性。只要客體的屬性和行為不變,任何封裝體內部的改變都不會對調查結果的其他部分造成影響。
過往的用戶調查沒有做到客體的整體封裝,只是封裝了各個功能模塊,而每個功能模塊隨著產品功能的改變會改變客體的屬性,并且由于描述屬性的數據與行為被分割開來。
所以一旦某個客體屬性的表達方式發生了變化,或某個行為效果發生了改變,就有可能對整個調查結果產生影響。
4. 可重用性
可重用性標識著調查結果的可復用能力,是衡量一次調查結果有用與否的重要標志。
當今互聯網行業,人們越來越追求更多規律性、更有通用性的調查結果,從而使商業決策更有據可源、有律可循,即從過去“瞎貓碰到死耗子”的商業決策,演化到科學客觀的商業決策,從而推動公司的快速擴張和發展。
然而,過去用戶調查的基本單位是功能模塊,每個功能模塊只是實現特定功能的過程描述,因此,它的可重用單位只能是模塊。
例如,諾基亞在過去進行用戶調查時,調查得到的結論是用戶需要摔不壞、質量更好、通話時間更長的手機,但對于這樣的調查結論來說,這樣的重用性顯得微不足道,當通信網絡發生變化時,這樣的調查結果沒有一點價值,諾基亞也為采用這樣的用戶調查付出了慘重的代價。
三、面向對象用戶調查方法的概念
1. 對象
對象是人們要進行研究的任何事物,從最簡單的整數到復雜的飛機等均可看作對象,它不僅能表示具體的事物,還能表示抽象的規則、計劃或事件。一個用戶即可是一個對象。
2. 對象的狀態和行為
對象具有狀態,一個對象用數據值來描述它的狀態。
對象還有操作,用于改變對象的狀態,對象及其操作就是對象的行為。
對象實現了數據和行為的結合,使數據和行為封裝于對象的統一體中。
3. 類
具有相同特性和行為的對象的抽象就是類。因此,對象的抽象是類,類的具體化就是對象,也可以說類的實例是對象,類實際上就是一種數據類型或一種抽象規則的類型。
類具有屬性,它是對象的狀態的抽象,用數據結構來描述類的屬性。
類具有操作,它是對象的行為的抽象,用操作名和實現該操作的方法來描述。
4. 類的結構
在客觀世界中有若干類,這些類之間有一定的結構關系。通常有兩種主要的結構關系,即一般–具體結構關系,整體–部分結構關系。
一般–具體結構稱為分類結構,也可以說是“或”關系,整體–部分結構稱為組裝結構,它們之間的關系是一種“與”關系。
四、面向對象用戶調查方法的特征
1. 對象唯一性:
每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。
2. 抽象性:
抽象性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類。
一個類就是這樣一種抽象,它反映了與調查結果有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的調查有關。
3. 繼承性:
繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,并加入若干新的內容。
繼承性是面向對象用戶調查不同于其它調查的最重要特點,是其他調查所沒有的。
在類層次中,子類只繼承一個父類的數據結構和方法,則稱為單重繼承。
在類層次中,子類繼承了多個父類的數據結構和方法,則稱為多重繼承。
在用戶調查中,類的繼承性使所調查結果具有開放性、延伸性,這是信息組織與分類的行之有效的方法,它簡化了對象、類的調查工作量,增加了調查結果的可重用性。
采用繼承性,提供了類的規范的等級結構。通過類的繼承關系,使調查結果能夠共享,提高了調查結果的重用性。
4. 多態性:
多態性是指相同的操作(行為)或過程可作用于多種類型的對象上并獲得不同的結果。不同的對象,收到同一調查問題時可以產生不同的結果,這種現象稱為多態性。
多態性允許每個對象以適合自身的方式去反饋調查結果,多態性增強了調查結果的靈活性和重用性。
五、面向對象用戶調查的要素
1. 抽象:
抽象是指強調實體的本質、內在的屬性。在用戶調查中,抽象指的是在決定如何實現對象之前的對象的意義和行為。使用抽象可以盡可能避免過早考慮一些細節。類實現了對象的數據(即狀態)和行為的抽象。
2. 封裝性:
封裝性是保證調查結果具有優良的模塊性基礎。
面向對象的類是封裝良好的模塊,類定義將其說明(被調查用戶可見的信息)與實現(被調查用戶的不可見內在規律)顯式地分開,其調查結果內部實現按其具體定義進行抽象劃分。
對象是封裝的最基本單位。封裝防止了調查結果相互依賴性而帶來的變動影響。面向對象的封裝比傳統用戶調查的封裝更為清晰、更為有力。
3. 共享性:
面向對象的調查結果在不同級別上促進了共享。同一類中的對象有著相同數據結構、相同的行為特征。這些對象之間是結構、行為特征的共享關系。
六、面向對象用戶調查的對象模型
對象模型表示了靜態的、結構化的調查結果數據性質,描述了調查結果的靜態結構,它是從客觀世界實體的對象關系角度來描述,表現了對象的相互關系。該模型主要關心系統中對象的結構、屬性和操作。
1. 對象和類
(1)對象:
對象建模的目的就是描述對象。
(2)類:
通過將對象抽象成類,我們可以使問題抽象化,抽象增強了模型的歸納能力。
(3)屬性:
屬性指的是類中對象所具有的性質(數據值)。
(4)操作和方法:
操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作,每個操作都有一個目標對象作為其隱含行為。方法是類的操作的實現步驟。
2. 關聯和鏈
(1)關聯和鏈的含義:
關聯是建立類之間關系的一種手段,而鏈則是建立對象之間關系的一種手段。
鏈表示對象間的物理與概念聯結,關聯表示類之間的一種關系,鏈是關聯的實例,關聯是鏈的抽象。
(2)角色
角色說明類在關聯中的作用,它位于關聯的端點。
(3)關聯的多重性:
關聯的多重性是指類中有多少個對象與關聯的類的一個對象相關。重數常描述為“一”或“多”。
3. 類的層次結構
(1)聚集關系:
聚集是一種“整體-部分”關系。在這種關系中,有整體類和部分類之分。聚集最重要的性質是傳遞性,也具有逆對稱性。
聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來將部分類聯系起來簡單得多,對象模型應該容易地反映各級層次。
(2)一般化關系:
一般化關系是在保留對象差異的同時共享對象相似性的一種高度抽象方式。它是“一般—具體”的關系。
一般化類稱為你類,具體類又能稱為子類,各子類繼承了父類的性質,而各子類的一些共同性質和操作又歸納到你類中。
因此,一般化關系和繼承是同時存在的。一般化關系的符號表示是在類關聯的連線上加一個小三角形。
4. 對象模型
(1)模板:
模板是類、關聯、一般化結構的邏輯組成。
(2)對象模型:
對象模型是由一個或若干個模板組成。模板將模型分為若干個便于管理的子塊,在整個對象模型和類及關聯的構造塊之間,模板提供了一種集成的中間單元,模板中的類名及關聯名是唯一的。
#專欄作家#
老漂,微信公眾號:老漂運營筆記,人人都是產品經理專欄作家。4年用戶增長、互聯網營銷、微信生態探索者。
本文原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自 Unsplash ,基于 CC0 協議
你要不要自己讀一遍你寫的啥?