㈠ 為什麼要用面向對象思想編程
面向對象的主要思想是「繼承」、「封裝」、「多態」。這種思想方便解決較為復雜的項目,且維護起來較為容易。
㈡ 編程中的「對象」是指什麼
對象其實就是一種封裝的概念,它把事物封裝成一個類,然後提供類的介面,而具體的過程人們是看不到的。
舉個例子,比如我用C語言寫一個交換函數 swap(a,b);當你引用這個函數時,你可以完全的看到執行的過程。
但是面向對象的編程就不是這樣,我寫了一個類,然後提供了一個交換的介面。那麼當其他人來想使用這個介面的時候就會這樣用a.swap(b);它只能看到這個swap()介面,而看不到具體的執行過程,過程本身都是在對象的內部來處理的,而這個類本身就同一類對象的一個集合。
類是一個抽象概念,而對象則是這一個概念下的一個實體。就比如有一個燈泡a,燈泡b都是一個對象,而燈泡這個抽象概念的集合則稱為類。
同理,VB在編程的時候也是將對象封裝成類,然後來使用的,用戶不必去了解具體的執行過程。
㈢ 什麼是面向對象編程
前言:面向對象程序設計(Object-Oriented Programming,以下簡稱OOP)是一種起源於六十年代的Simula語言,發展已經將近三十年的程序設計思想。其自身理論已經十分完善,並被多種面向對象程序設計語言(Object-Oriented Programming Language,以下簡稱OOPL)實現。如果把Unix系統看成是國外在系統軟體方面的文化根基,那麼Smalltalk語言無疑在OOPL領域和Unix持有相同地位。由於很多原因,國內大部分程序設計人員並沒有很深的OOP以及OOPL理論,很多人從一開始學習到工作很多年都只是接觸到c/c++,java,vb,delphi等靜態類型語言,而對純粹的OOP思想以及作為OOPL根基的Smalltalk以及動態類型語言知之甚少,不知道其實世界上還有一些可以針對變數不綁定類型的編程語言。而這些對比卻是深刻理解OO理論的重要部分,而國內這方面的資料也為數不多。故把自己的一些OO學習心得寫下來做為一個系列文章(一共三篇,第一篇描敘OOP的一些基本但容易被誤解的理論,第二篇主要說明各種OOPL演化和發展以及對於OOP理論的支持,第三篇主要是說模式和組件在OOP中的地位以及展望OOP的未來),由於文章描敘的只是自己對於OOP/OOPL的理解,錯誤以及淺薄之處在所難免,只是希望對大家能起到拋磚引玉的作用。
㈣ 編程中的「對象」是指什麼,一般有哪些
你這個問題我來幫你解決吧!打個比方!你要去你的房間歡新衣服!那麼先要走進你的房間,然後拿到新衣服!然後再換上,中間所以做的事,就是過程!比如你走進房間,這是一個過程!拿新衣服也是一個過程。對象!比如你對一個人說話!那麼這個人就是一個對象!在比如你在看書!或者看電視,這些都是對象!對象就是看得見的物體我們進行操作,過程,就是一個過程。
㈤ 面向對象編程是什麼意思
過程就是一行一行代碼寫。如果需要用同一行代碼。得復制粘貼
對象則不需要。你可以這么區分吧~
㈥ 怎麼理解面向對象編程
我覺得沒必要去深究他的意思。
按我的理解,面向對象編程,主要是將我們實際生活中的對象經過抽象,將它定義成為一個類,通過類的屬性和方法來模擬生活中的這個對象。這樣使得程序更容易結構化、抽象起來更方便。
面向對象技術最初是從面向對象的程序設計開始的, 面向對象編程並不困難
它的出現以60年代simula語言為標志。80年代中後期,面向對象程序設計逐漸成熟,被計算機界理解和接受,人們又開始進一步考慮面向對象的開發問題。這就是九十年代以Microsoft Visual系列OOP軟體的流行的背景。 傳統的結構化分析與設計開發方法是一個線性過程,因此,傳統的結構化分析與設計方法要求現實系統的業務管理規范,處理數據齊全,用戶能全面完整地其業務需求。 傳統的軟體結構和設計方法難以適應軟體生產自動化的要求,因為它以過程為中心進行功能組合,軟體的擴充和復用能力很差。 對象是對現實世界實體的模擬,因面能更容易地理解需求,即使用戶和分析者之間具有不同的教育背景和工作特點,也可很好地溝通。 區別面向對象的開發和傳統過程的開發的要素有:對象識別和抽象、封裝、多態性和繼承。 對象(Object)是一個現實實體的抽象,由現實實體的過程或信息牲來定義。一個對象可被認為是一個把數據(屬性)和程序(方法)封裝在一起的實體,這個程序產生該對象的動作或對它接受到的外界信號的反應。這些對象操作有時稱為方法。對象是個動態的概念,其中的屬性反映了對象當前的狀態。 類(Class)用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。 由上分析不難看出,盡管OOP技術更看中用戶的對象模型,但其目的都是以編程為目的的,而不是以用戶的信息為中心的,總想把用戶的信息納入到某個用戶不感興趣的「程序對象」中。
㈦ 什麼是面向對象編程
面相對象不是某一種語言的特性,而是一種編程思想。 C也是可以編寫出很好的OO代碼的,Gtk+就是典型的例子。
我們很多初學者往往一提到面相對象就一頭霧水,我覺得很大程度上都是因為我們學習的第一們語言是C,而struct總是在後面才講到,用C實現繼承技術需要一定技巧,一般的教材上都不講,加之我們剛開始遇到的學習程序有很小,很容易一個簡單的流程就處理完了這所有因素結合在一起,就導致我們用程序解決問題的思維有了 一個定式: 任務是什麼流程? 把流程切割成哪幾塊? 每塊定義成什麼函數?
等到我們所面臨的業務比較復雜了,原本線狀的流程圖也就變成一個可怕的網狀流程,我們根本找不到哪裡是開始,哪裡是結束,自然就無從下手
個人覺得,面向過程(或面向函數)的思維方式,其實就是程序員要把整個業務畫到一個流程圖中,因果關系,邏輯關系要搞得很清楚。你們回憶一下,你們在學習 C語言時,是不是很樂意在紙上或者腦子里畫這種流程圖來幫你們利清楚思路? 這種思維的最大問題在於,當這張流程圖變成一張流程網的時候,人的腦容量是不可能對之進行管理的,而且,維護程序的時候也必須同樣面對這張網,這對於維護代碼的同事而言,簡直就是一場災難。
最初,我們只想得到一根線來幫助我們貫穿始終,但後來這條線越來越長,又多了許多分支,於是變成了一張網;最終,網越來越密,等到我們無法繼續時,我們才發現,我們一直都在作繭自縛:)
下面,我舉個例子來說明面向過程和面向對象的一點區別。
假設在一段游戲的代碼中,有這樣一個場景:有1000噸的貨物,要從西安運到北京。
而面向對象(OO)的思維則會這樣思考:-
定義類(封裝性):
恩,這么復雜的送貨任務,總要有個人來做吧:) OK,是得搞個押運員去弄。 於是,要定義一個類:Escort。 稍後給它定義好新的方法:)-繼承:
這個押運員得是個人吧,應該有人的一切屬性(如眼耳鼻舌,受想行識),好吧,我不用重新實現這些,游戲中一般都有People的角色,從那裡繼承就好了, 於是,Escort 就成了People的子類,他可以享用People的一切屬性和方法這就是繼承。你不必為了Escort再重寫那麼多代碼,因為已經有寫好可用的了。 要知道,People中很多方法在Escort中都是用得到的。-定義方法:
好了,現在再分析一下Escort可能遇到的問題,以及他面對 問題所應具有的解決問題的能力就是他具有的方法。 山洪?地震?泥石流? 這些都是自然災害,沒辦法避免,OK,那就繞道而行吧! 得,第一個方法有了: Escort::choseWay()。 那麼,他怎麼知道哪裡有自然災害導致道路不通呢? 廢話!聽廣播,看電視撒! 哦,很好,我們的Escort是從People中繼承下來的,而這些方法我們都在People中實現了,這里已經沒有多少事情做了。-
現在我們假設有這樣一種情況:所有的人(People)都可能半路遇到兇殘的土匪,如果是你,你會怎麼做? 我想一般人都會跟我一樣:把錢給人家保命。 所以,People中處理土匪的方法會這么定義:{棄財保命}。 但是,作為一個Escort,你要是把貨物都丟了,這個Escort就失敗了,你們看看《闖關東》上的垛爺怎麼做的:爺們兒,碰了,這幾個錢個林子後面 的弟兄們買酒喝。所以,我們的Escort要重新實現處理土匪的方法,就是 { 按照道兒上的規矩,打手勢,棄小財而保全貨物 }。
現在,我們知道,所有的people都具有處理土匪的能力,但是不同的people對土匪的處理行為可能會不同。 再設想一下,某個山寨區域的代碼是由另外一個同事,甚至另外一個團隊編寫的,他們只知道他們的土匪面對的對象類型都是People,他們不知道 People還有沒有子類,還有多少子類等等。 幸運的是,OO的多態可以讓這些設計山寨區域的團隊不必考慮這些問題,他們只需要調用People的處理土匪方法,在運行時刻,
程序會自動根據實際傳入的對象來判斷最終要真正執行的方法。這種
調用同一基類介面,在運行時根據對象來執行相應對象類型中所定義的方法的行為就是多態
。 註: 這個定義是我自己給出的,如果您發現有不正確,請指出來,也方便我即使改正。 在很多C++教程中,多態的定義多為:多態是指父類指針調用子類方法。 我覺得這種說法欠妥,多態是很多OO語言的共性,比如python中沒有指針,但照樣有多態的功能。不過python是直接根據對象類型識別的,所以這個 概念在python的教材中淡出了。-
面向對象的擴展性:
相對於面向過程(函數)的編程思想,面向對象思想更易於編寫易擴展空間。比如上面的送貨的例子,這個游戲可能只是一個戰爭類游戲。後來,老闆為了刺激 消費,要把它像《虛擬人生》那樣的方向改進。具體一點,老闆希望游戲中可以有一些性方面的設計這個雖然不健康,但是在市場上卻往往很管用。這個時候, 你不必在每個人,每個分支上都添加關於性方面的代碼,你只需要給People類添加一個People::makeLove(People who)方法(參數的配偶對象)就OK了。至於which people, with who, where, when這些問題,留給那些處理具體場景的人去做就好了。-
面向對象與面向過程的聯系:
面向對象和面向過程不是水火不容的,對象中是有過程的。在編程工作中,你永遠無法避免對流程的處理,面向對象的思想只是給你提供了一種更合理的方式來你規 劃程序中的流程,如果你是一個team leader,或者總體設計師,這將更有利於你把任務分配給你的隊員。嘗試這用OO思維去認識身邊的事物,去規劃自己的程序,很快你就會轉入OOP的模 式,你會發現這種思路的確可以減輕大腦負荷。
㈧ 面向對象編程是什麼意思
它是一種編程風格,就是把一切東西看成一個個對象,比如人,車,麵包,等等,然後把這些對象擁有的屬性變數,比如年齡,民族,工作地點,變質期,壽命,還有操作這些屬性變數的函數打包成一個類來表示,這個類的一個抽象就是一個對象,比如人這個類包含一些屬性,比如年齡,名字,住址等,他還有一些對別人告訴這些屬性的功能,比如:說,看,走等!!這就是的面向對象的特點!!!
㈨ 什麼是面向對象的編程語言啊
面向對象語言(Object-Oriented Language)是一類以對象作為基本程序結構單位的程序設計語言。指用於描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。
其特點如下:
(1)任何事物都是對象。
(2)運行期的基本實體,也是一個包括數據和操作這些數據的代碼的邏輯實體。
(3)每個對象可以有自己的內存空間包含其他對象。
(4)類是具有相同類型的對象的抽象。一個對象所包含的所有數據和代碼可以通過類來構造。
(5)程序由一系列的對象組合,它們通過發送消息告訴彼此做什麼。
(6)封裝是將數據和代碼捆綁到一起,避免了外界的干擾和不確定性。
(7)一個特定類型的所有對象都可以接受同樣的消息。
(8)繼承是讓某個類型的對象獲得另一個類型的對象的特徵。
(9)每一個對象都有類型。
(10)多態是指不同事物具有不同表現形式的能力。
注意事項:
Java是一門面向對象編程語言,具有功能強大和簡單易用兩個特徵。
C語言是面向過程的程序設計語言,與C++,Java等面向對象的編程語言有所不同。
VB是一種面向對象的可視化程序設計語言,採取了事件驅動的編程機制。
(9)對象編程擴展閱讀:
面向對象編程的優點:
易維護 :可讀性高,由於繼承的存在,即使改變需求,那麼維護也只是在局部模塊。
易擴展 :通過繼承,我們可以大幅減少多餘的代碼,並擴展現有代碼的用途;
模塊化 :封裝可以定義對象的屬性和方法的訪問級別,通過不同的訪問修飾符對外暴露安全的介面,防止內部數據在不安全的情況下被修改。
方便建模:很多時候可以使用現實生活中對象的概念抽象後稍作修改來進行建模,極大方便了建模的過程。
㈩ 什麼是面向對象的編程方法
面向對象編程(Object Oriented Programming,OOP,面向對象程序設計)是一種計算機編程架構。OOP 的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或對象組合而成。OOP 達到了軟體工程的三個主要目標:重用性、靈活性和擴展性。為了實現整體運算,每個對象都能夠接收信息、處理數據和向其它對象發送信息。