面對向編程
Ⅰ 面向對象的程序設計語言是
相關舉例如下:

1、Smalltalk:
Smalltalk被公認為歷史上第二個面向對象的程序設計語言和第一個真正的集成開發環境(IDE)。由Alan Kay,Dan Ingalls,Ted Kaehler,Adele Goldberg等於70年代初在Xerox PARC開發。
Smalltalk對其它眾多的程序設計語言的產生起到了極大的推動作用,主要有:Objective-C,Actor, Java 和Ruby等。90年代的許多軟體開發思想得利於Smalltalk,例如Design Patterns, Extreme Programming(XP)和Refactoring等。
2、Eiffel:
Eiffel語言是繼Smalltalk-80之後的另一個"純"OOPL。這種語言是由OOP領域中著名的專家Bertrand Meyer等人20世紀80年代後期在ISE公司(Interactive Software Engineering Inc.)開發的,它的主要特點是全面的靜態類型化、有大量的開發工具、支持多繼承。
3、C++:
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
C++擅長面向對象程序設計的同時,還可以進行基於過程的程序設計,因而C++就適應的問題規模而論,大小由之。
4、Java:
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。
Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
Ⅱ 什麼是面向對象編程
面相對象不是某一種語言的特性,而是一種編程思想。 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的模 式,你會發現這種思路的確可以減輕大腦負荷。
Ⅲ 什麼叫做面向對象的編程
具個例子吧.......
用戶登陸
面向過程的寫法是
if (名字和密碼正確) {}
else if (密碼錯誤) {}
....
面向對象的寫法是
try {}
catch (密碼錯誤Exception) {}
再簡單的說
面向對象就是別人給你一個東西 比如String 你處理他就是了 你不要去想他給你的String的具體數值是什麼 你是的想法是站在"處理方"的
而面向過程就是要考慮這個東西裡面的數值 再根據具體的數值來決定走向 你的想法是站在"被處理方"的
至於什麼以上說的什麼封裝 繼承 什麼的 那都是為了完成這個而必須要用到的功能 不是說有這功能就是面向對象 我也可以用JAVA寫面向過程 一樣用封裝 用繼承
OO是一種思路 是一種模式 多從這方面想就會慢慢明白了
Ⅳ 簡述面向對象編程思想的三大特徵
1*繼承
繼承是一種聯合類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表達共性的方法。對象的一個新類可以從現有的類派中產生這個過程叫做類繼承。新類繼承了原始類的特性,新類成為原始類的派生類即子類,而原始類稱為新類的基類即父類。派生類可以從它的基類那裡繼承方法和實例變數,並且類可以修改或增加新的方法使之更加適合特殊的需求。
2*封裝
封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的畫面。面對對象計算始終與這個基礎概念及現實世界可以被描繪成一系列完全自治封閉的對象,這些對象通過一個受保護的介面訪問其他對象。
3*多態性
多態性是指不同類的對象對同一消息做出響應多態性包括參數化多態性和包含多態性。多態性語言具有靈活抽象行為共享代碼共享的優勢很好地解決了應用程序函數同名問題。
Ⅳ 試述面向過程的編程語言和面向對象的編程語言的概念、特點和區別。
在面向過程程序設計中,問題被看作一系列需要完成的任務,函數則用於完成這些任務,解決問題的焦點集中於函數。它的主要觀點是採用自頂向下、逐步求精的程序設計方法,使用三種基本控制結構構造程序,即任何程序都可由順序、選擇、循環三種基本控制結構構造。
面向對象語言(Object-Oriented Language)是一類以對象作為基本程序結構單位的程序設計語言,指用於描述的設計是以對象為核心,而對象是程序運行時刻的基本成分。語言中提供了類、繼承等成分,有識認性、多態性、類別性和繼承性四個主要特點。
兩者區別:
(1)從設計思路來看。
面向過程:程序設計的重點是分析解決問題的步驟,以及完成步驟的流程,是一種結構化自上而下的程序設計方法。
面向對象:程序設計的重點是把構成問題的事物分解成對象,從局部著手,通過迭代的方式逐步構建出整個程序,是一種以數據為核心,以類設計為主的自下而上的程序設計方法。
(2)從適用范圍來看。
面向過程:由於不涉及實例化對象等操作,程序性能更高,開銷更少,因此像切入式等對資源要求較高的系統大多都採用面向過程開發。
面向對象:由於其抽象、封裝、繼承、多態的特性,使得系統具有更好的擴展性、維護性、復用性,對於功能復雜且維護成本較高的系統採用面向對象的開發。
(3)從代碼復用來看。
二者都可以實現代碼復用,但是面向過程主要是函數,而面向對象主要是類。

(5)面對向編程擴展閱讀:
由於面向過程的編程語言對解題過程的描述採用了比較接近人們習慣的方式,因而易學、易懂、易使用,是用戶廣泛使用的一類程序設計語言。這類語言的代表有ALGOL,FORTRAN,COBOL,PL/1,PASCAL和ADA等。
