『壹』 什麼是面向對象的編程方法
面向對象編程(Object Oriented Programming,OOP,面向對象程序設計)是一種計算機編程架構。OOP 的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或對象組合而成。OOP 達到了軟體工程的三個主要目標:重用性、靈活性和擴展性。為了實現整體運算,每個對象都能夠接收信息、處理數據和向其它對象發送信息。
『貳』 面向過程的編程和面向對象的編程有什麼區別
面向對象 一、面向過程與面向對象的區別: 前者是一種謂語和賓語的關系;後者是一種主語和謂語的關系 。 二、面向對象的三個特徵: ??封裝 ??繼承 ??多態 三、類與對象: 對象又稱作實例,是實際存在的該類事物的每個個體。類是對某一類事物的描述,是抽象的、概念上的 定義。 *面向對象的設計的重點是類的設計。 四、對象的比較: 1「= =」運算符與equals()方法的區別: 前者辨別實質是否相等;後者辨別長相是否相等。 五、 實現類的封裝性: 1不能讓外面的類隨意修改一個類的成員變數;2在定義一個類的成員(包括變數和方法),使用private關鍵字說明這個成員的訪問許可權,只能被這個類的其他成員方法 調用,而不能被其他的類中的方法所調用; 3為實現封裝性,常將類的成員變數 聲明為private,再通過public的方法來對這個變數進行訪問。對一個變數的操作,一般都有 讀取和賦值操作,我們一般定義兩個方法來實現這兩種操作,即:getXxx()與setXxx(); 4一個類就是一個模塊,我們應該讓模塊僅僅公開必須要讓外界知道的內容,而隱藏其他的一切內容。再進行程序設計時,應盡量避免一個模塊直接修改或操作另一個模塊的數據,模塊設計追求強內聚(許多功能盡量在類的內部獨立完成,不讓外面干預),弱耦合(提供給外部盡量少的方法調用)。 六、構造函數的定義與作用: 1、 特徵:??名稱與類相同;??不含返回值;??不能在方法中用return返回一個值注意:構造方法里不含返回值的概念是不同與void的,在定義構造方法時加了void,結果這個方法就不再被自動調用了。 2作用:當一個類的實例對象剛產生時,這個類的構造方法就會被自動調用, 我們可以在這個方法中加入要完成初始化工作的代碼。 七、若類中已定義了一個構造方法,編譯器就不再自動產生類似public Person(){ }的構造方法。 八、this引用句柄的應用: 1、 類的成員名和對其進行賦值的成員方法的形參變數同名時,使用this便於理解; 2、 假設我們有一個容器類和一個部件類,在容器類的某個方法中要創建部件類的實例對象,而部件類的構造方法要接收一個代表其所在容器的參數。 3、 構造方法是在產生對象時被java系統自動調用的,我們不能在程序中象調用其他方法一樣去調用構造方法。不是用構造方法名,而是用this的形式,根據其中的參數列表,選擇相應的構造方法。 九、 垃圾回收過程分析:java中的finalize()方法;System.gc的作用。 Finalize()的調用是在無用對象被回收前發生的。 一○、 static 靜態方法:1、 在靜態方法中只能直接調用同類中其他的靜態成員,而不能直接訪問類中的非靜態成員。原因是對於非靜態的方法和變數,需要先創建類的實例對象後才可使用,而靜態方法在使用前不用創建任何對象;2、 靜態方法不能以任何方式引用this和super關鍵字;3、 main()方法是靜態的,因此,JVM在執行main方法時不創建main方法所在的類的實例對象,因此在main()方法中,我們不能直接訪問該類中的非靜態成員,必須創建該類的一個實例對象後,才能通過這個對象去訪問類中的非靜態成員。 一一、 JVM在程序執行時,只有在調用其他類的時候,才載入這個類並將其初始化(即將構造方法及靜態變數進行載入並初始化。 一二、 單態設計模式:採取一定的方法保證在整個的軟體系統中,對某個 類只能存在一個對象實例,並且該類只能產生嚴格取得其對象實例的方法。若我們要讓類在一個虛擬機中只能產生一個對象,我們首先必須將類的構造方法的訪問許可權設置為private,這樣,就不能用new操作符在類的外部產生類的對象了,但在類的內部仍可以產生該類的對象。 一三、 內部類: 1、在類中直接定義的內部類??*嵌套類可直接訪問嵌套他的類的成員,包括private成員,但嵌套類的成員卻不能被嵌套它的類直接訪問; * 在內部類對象保存了一個對外部類對象的引用,當內部類的成員方法中訪問某一變數時,若在該方法和內部類中都沒有定義過這個變數,內部類中對this 的引用會被傳遞給那個外部類對象的引用; * 若用 static 修飾一個外部類,這個類就相當於是一個外部定義的類,所以 static 的內部類中可聲明static 成員,但非static 的內部類中的成員是不能聲明為 static 的,static 的內部類不能再使用外層封裝類的非 static 的成員變數。 例:若函數的局部變數,內部類的成員變數,外部類的成員變數重名,則應該按下面的程序代碼所使用的方式來明確指出我們真正要訪問的變數。 public class Outer { private int size; public class inner { private int size; public void doStuff(int size) { size++; //應用doStuff函數的形參 this.size++; //引用Inner類的成員變數 Outer.this.size++; // 引用Outer類的成員變數 } } } 2、在方法中定義的內部類:在方法中定義的內部類只能訪問方法中的final 類型的局部變數,用final 定義的局部變數相當於一個常量,它的生命周期超出方法運行的生命周期。3、在內部類中的方法可以訪問外部類的成員變數,而外部類的方法不能直接訪問內部類的成員變數,若要訪問,除非在內部類中再定義一個構造方法,這個構造方法的參數是外部類。 一四、在一個類中定義的局部變數,編譯器可以對他初始化,但在一個方法中定義的局部變數,編譯器不對它初始化。 現在用的最多的是ASP.Net(C#)與JSP(Java)
『叄』 面向對象方法包括什麼
面向對象方法模型包括六個要素:封裝、抽象、模塊化、層次結構、類型、並發發、持久。
面向對象方法是一種基於對象模型的程序設計方法,包括面向對象分析、面向對象設計、面向對象編程,是目前應用范圍最廣的設計方法。
面向對象是軟體開發方法。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到如資料庫系統、互動式界面、應用結構、應用平台、分布式系統、網路管理結構、CAD技術、人工智慧等領域。面向對象是一種對現實世界理解和抽象的方法,是計算機編程技術發展到一定階段後的產物。
(3)面向對象編譯方法擴展閱讀:
面向對象的系統分析:
面向對象的分析方法是利用面向對象的信息建模概念,如實體、關系、屬性等,同時運用封裝、繼承、多態等機制來構造模擬現實系統的方法。
傳統的結構化設計方法的基本點是面向過程,系統被分解成若干個過程。而面向對象的方法是採用構造模型的觀點,在系統的開發過程中,各個步驟的共同的目標是建造一個問題域的模型。在面向對象的設計中,初始元素是對象,然後將具有共同特徵的對象歸納成類,組織類之間的等級關系,構造類庫。在應用時,在類庫中選擇相應的類。
參考資料來源:網路-面向對象
『肆』 面向對象方法的主要特徵有哪些
面向對象方法的主要特徵有:
1、封裝性
封裝是一種信息隱蔽技術,它體現於類的說明,是對象的重要特性。封裝使數據和加工該數據的方法(函數)封裝為一個整體,以實現獨立性很強的模塊,使得用戶只能見到對象的外特性(對象能接受哪些消息,具有那些處理能力),而對象的內特性(保存內部狀態的私有數據和實現加工能力的演算法)對用戶是隱蔽的。
2、繼承性
繼承性是子類自動共享父類之間數據和方法的機制。它由類的派生功能體現。一個類直接繼職其它類的全部描述,同時可修改和擴充。
3、多態性
對象根據所接收的消息而做出動作。同一消息為不同的對象接受時可產生完全不同的行動,這種現象稱為多態性。利用多態性用戶可發送一個通用的信息,而將所有的實現細節都留給接受消息的對象自行決定,如是,同一消息即可調用不同的方法。
(4)面向對象編譯方法擴展閱讀
面向對象方法的優越性
(1)強調從現實世界中客觀存在的事物(對象)出發來認識問題域和構造系統,這就使系統開發者大大減少了對問題域的理解難度,從而使系統能更准確地反映問題域。
(2)運用人類日常的思維方法和原則(體現於OO方法的抽象、分類、繼承、封裝、消息通訊等基本原則)進行系統開發,有益於發揮人類的思維能力,並有效地控制了系統復雜性。
(3)對象的概念貫穿於開發過程的終,使各個開發階段的系統成分具良好的對應,從而顯著地提高了系統的開發效率與質量,並大大降低系統維護的難度。
(4)對象概念的一致性,使參與系統開發的各類人員在開發的各所段具有共同語言,有效地改善了人員之間的交流和協作。
(5)對象的相對穩定性和對易變因素隔離,增強了系統的應變能力。
(6)對象類之間的繼承關系和對象的相對獨立性,對軟體復用提供了強有力的支持。
『伍』 vc++面向對象中怎樣編寫批處理的編譯命令並保存在bat文件中
按照VC++的MSDN上面編譯器的選項去寫參數。
在VC安裝目錄下有vcvarsall.bat和vcvars32.bat兩個文件,請先依次運行這兩個BAT之後,在進行編譯工程。
先定義工程,然後依次使用cl.exe link.exe lib.exe ml.exe就可以編譯工程了。
具體內容請參見Windows SDK的說明文檔。
『陸』 介紹一下java的面向對象
1、面向對象
面向對象(Object Oriented)是一種新興的程序設計方法,或者是一種新的程序設計規范(paradigm),其基本思想是使用對象、類、繼承、封裝、多態等基本概念來進行程序設計。從現實世界中客觀存在的事物(即對象)出發來構造軟體系統,並且在系統構造中盡可能運用人類的自然思維方式。
2、對象
對象是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位。一個對象由一組屬性和對這組屬性進行操作的一組服務組成。
類的實例化可生成對象,一個對象的生命周期包括三個階段:生成、使用、消除。
當不存在對一個對象的引用時,該對象成為一個無用對象。Java的垃圾收集器自動掃描對象的動態內存區,把沒有引用的對象作為垃圾收集起來並釋放。當系統內存用盡或調用System.gc( )要求垃圾回收時,垃圾回收線程與系統同步運行。
3、類
類是具有相同屬性和方法的一組對象的集合,它為屬於該類的所有對象提供了統一的抽象描述,其內部包括屬性和方法兩個主要部分。在面向對象的編程語言中,類是一個獨立的程序單位,它應該有一個類名並包括屬性和方法兩個主要部分。
Java中的類實現包括兩個部分:類聲明和類體。
類聲明
繼承
子類的對象擁有父類的全部屬性與方法,稱作子類對父類的繼承。
Java中父類可以擁有多個子類,但是子類只能繼承一個父類,稱為單繼承。
繼承實現了代碼的復用。
Java中所有的類都是通過直接或間接地繼承java.lang.Object類得到的。
子類不能繼承父類中訪問許可權為private的成員變數和方法。
子類可以重寫父類的方法,即命名與父類同名的成員變數。
Java中通過super來實現對父類成員的訪問,super用來引用當前對象的父類。super 的使用有三種情況:
訪問父類被隱藏的成員變數,如:super.variable;
調用父類中被重寫的方法,如:super.Method([paramlist]),super()調用父類構造方法;
調用父類的構造函數,如:super([paramlist]);
多態
對象的多態性是指在父類中定義的屬性或方法被子類繼承之後,可以具有不同的數據類型或表現出不同的行為。這使得同一個屬性或方法在父類及其各個子類中具有不同的語義。例如:"幾何圖形"的"繪圖"方法,"橢圓"和"多邊形"都是"幾何圖"的子類,其"繪圖"方法功能不同。
Java的多態性體現在兩個方面:由方法重載實現的靜態多態性(編譯時多態)和方法重寫實現的動態多態性(運行時多態)。
編譯時多態:在編譯階段,具體調用哪個被重載的方法,編譯器會根據參數的不同來靜態確定調用相應的方法。
運行時多態:由於子類繼承了父類所有的屬性(私有的除外),所以子類對象可以作為父類對象使用。程序中凡是使用父類對象的地方,都可以用子類對象來代替。一個對象可以通過引用子類的實例來調用子類的方法。
重載(Overloading)
方法重載是讓類以統一的方式處理不同數據類型的手段。
一個類中可以創建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型來決定具體使用哪個方法。
返回值類型可以相同也可以不相同,無法以返回型別作為重載函數的區分標准。
重寫(Overriding)
子類對父類的方法進行重新編寫。如果在子類中的方法與其父類有相同的的方法名、返回類型和參數表,我們說該方法被重寫 (Overriding)。
如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
子類函數的訪問修飾許可權不能低於父類的。
『柒』 js面向對象的幾種方式
JavaScript中對象的創建有以下幾種方式:
(1)使用內置對象
(2)使用JSON符號
(3)自定義對象構造
一、使用內置對象
JavaScript可用的內置對象可分為兩種:
1,JavaScript語言原生對象(語言級對象),如String、Object、Function等;
2,JavaScript運行期的宿主對象(環境宿主級對象),如window、document、body等。
我們所說的使用內置對象,是指通過JavaScript語言原生對象的構造方法,實例化出一個新的對象。如:
復制代碼 代碼如下:
var str = new String("實例初始化String");
var str1 = "直接賦值的String";
var func = new Function("x","alert(x)");//示例初始化func
var o = new Object();//示例初始化一個Object
二、使用JSON符號
(i)何謂JSON ?
JSON (JavaScript Object
Notation)即JavaScript對象命名,是一種輕量級的數據交換格式,易於閱讀和編寫,同時也易於及其解析和生成。它基於
《JavaScript Programming Language, Standard ECMA-262 3rd Edition -
December 1999》的一個子集。JSON是完全獨立於語言的文本格式,因此成為數據交換的理想格式。
JSON作為
JavaScript的一個自己,同時ActionScript、C、C#、ColdFusion、E、Java、JavaScript、ML、
ObjectiveCAML、Perl、PHP、Python、Rebol、Ruby、Lua等一系列的語言都提供支持,使得JSON成為Ajax開發的
首選方案。
JSON有兩種構建方式,一種是採用簡單的「鍵/值對」的集合,在不同的語言中被理解為對象、記錄、結構、字典、哈希表、有鍵列表,或者關聯數組等,另一種採用有序的值列表,大部分語言把它理解為數組。
常用的創建方式是第一種,即採用「鍵/值對」集合的形式。在這種形式下,一個對象以「{」(左括弧)開始,「}」(右括弧)結束。每個「名稱」後跟一個「:」(冒號),「
『鍵/值' 對」之間使用「,」(逗號)分隔。
JSON具有以下特點:(1)簡單格式化的數據交換;(2)易於人們的讀寫習慣;(3)易於機器的分析和運行。
在JavaScript中,JSON被理解為對象。通過字元串形式的JSON,數據可以很方便地解析成JavaScript獨享,並進行數據的讀取傳遞。通過JSON,在一定程度上客服了JavaScript對象無法作為參數系列化傳遞的問題。
1,簡單的JSON
{name:"劉德華",age:"25",sex:"男"}
2,JSON值的類型
JSON的值可以是簡單的數據類型,例如數字、浮點、字元等,也可以是數組及對象。例如以數組作為member鍵值的JSON:
{member:[{name:"劉德華"},{name:"郭富城"},{name:"張學友"},{name:"黎明"}]}
{
book:[{name:"三國演義"},{name:"西遊記"},{name:"水滸傳"},{name:"紅樓夢"}],
author:[{name:"羅貫中"},{name:"吳承恩"},{name:"施耐安",{name:"曹雪芹"}}]
}
3,在JavaScript中使用JSON
JSON是JavaScript原生格式,這意味著在JavaScript中處理JSON數據不需要任何特殊的API或者工具包,JavaScript默認將JSON當做一個對象處理。
將對象傳遞給一個變數,例如:
復制代碼 代碼如下:
var somebooks = {
book:[{name:"三國演義"},{name:"西遊記"},{name:"水滸傳"},{name:"紅樓夢"}],
author:[{name:"羅貫中"},{name:"吳承恩"},{name:"施耐安",{name:"曹雪芹"}}]
}
JSON的每個「鍵」相當於對象的屬性,例如訪問book中的第一個條目,在JavaScript中,就可以簡單地使用「somebooks.book[0].name」來獲取「三國演義」這個值。
我們不但可以將一個JSON字元串轉化為對象,反過來將一個對象「編譯」為一個JSON字元串,以方便JavaScript中的對象的傳輸。例如:
復制代碼 代碼如下:
var Animals = new Object();
Animals.name = "dog";
Animals.sex = "Male";
Animals.age = "2";
Animals對象無法被序列化傳輸,將Animals對象轉化為JSON字元串,也就是「{name:"dog",sex:"Male",age:"2"}」。這樣,把該JSON字元串作為HTTP請求的一個參數傳遞,從而達到序列化傳輸Animals對象的目的。
(ii)JSON通過字元串形式來表達JavaScript的對象。如:
復制代碼 代碼如下:
var myObject = {nickname:"my girlfried",name:"big
pig"};
JSON
實際上充當了一種在JavaScript對象和字元串之間實現相互轉換的協議。由於JSON的「外表」可以看成但村的字元串,因此JSON在
JavaScript的對象傳輸方面可以起到一定的作用。例如把對象strObject轉換成字元串後進行傳輸,在達到目的地後通過eval方法將其還原
成對象:
復制代碼 代碼如下:
function test (o)
{
alert (o.name)
}
var strObject = '{nickname:"my girlfriend",name:"big pig"}';
test (eval_r("(" + strObject + ")"));
三、自定義對象構造
創建高級對象構造有兩種方式:使用「this」關鍵字構造、使用原型prototype構造。如:
復制代碼 代碼如下:
//使用this關鍵字定義構造的上下文屬性
function Girl()
{
this.name = "big pig";
this.age = 20;
this.standing;
this.bust;
this.waist;
this.hip;
}
//使用prototype
function Girl(){}
Girl.prototype.name = "big pig";
Girl.prototype.age = 20;
Girl.prototype.standing;
Girl.prototype.bust;
Girl.prototype.waist;
Girl.prototype.hip;
alert(new Girl().name);
上例中的兩種定義在本質上沒有區別,都是定義「Girl」對象的屬性信息。「this」與「prototype」的區別主要在於屬性訪問的順序。如:
復制代碼 代碼如下:
function Test()
{
this.text = function()
{
alert("defined by this");
}
}
Test.prototype.test = function()
{
alert("defined by prototype");
}
var _o = new Test();
_o.test();//輸出「defined by this」
當訪問對象的屬性或者方法是,將按照搜索原型鏈prototype
chain的規則進行。首先查找自身的靜態屬性、方法,繼而查找構造上下文的可訪問屬性、方法,最後查找構造的原型鏈。
「this」
與「prototype」定義的另一個不同點是屬性的佔用空間不同。使用「this」關鍵字,示例初始化時為每個實例開辟構造方法所包含的所有屬性、方法
所需的空間,而使用「prototype」定義,由於「prototype」實際上是指向父級的一種引用,僅僅是個數據的副本,因此在初始化及存儲上都比
「this」節約資源。
『捌』 編譯器是如何處理C++面向對象的
自從學習C++後,許多人都使用上了面向對像的編程方式。類是其中的一個部分,類與C語言中的結構的區別在於類的編寫中,類是由數據和方法組合在一起的。的確,在代碼在是用{}關在一起的。那麼,在實現編譯的過程中呢?以string為例,我們就可以知道類在VC++里編譯之後是什麼情況了。我們輸出string類的實例大小,發現其為8個int大小。繼續試驗後發現,對於每個實例,第1個INT中為指向實例的地址的指針。第6個INT為字元串的長度值。第7個INT有兩個值,分別為15和31時,當其為15時,字元串直接存在類里,且最長為15,字元串開始存儲在第二個INT處。當其為31時,第二個INT中為字元串的位置地址。所以,我們知道了在VC++中創建類的實例時,創建的只是為類的成員變數開辟一個空間而已。類的靜態成員變數被初始化為一個對所有類實例都相同的全局變數。而類的成員方法在內存中只有一份拷貝,每次調用其都只是把類的實例的地址傳給這些成員方法。
『玖』 面向對象的程序設計語言有哪些
1、Smalltalk:
Smalltalk,被公認為歷史上第二個面向對象的程序設計語言,和第一個真正的集成開發環境(IDE)。
Smalltalk對其它眾多的程序設計語言的產生起到了極大的推動作用,主要有:C++,C#,Objective-C,Actor,Java和Ruby等。90年代的許多軟體開發思想得利於Smalltalk,例如設計模式、敏捷編程和代碼重構等。
(9)面向對象編譯方法擴展閱讀
面向對象語言既可以用面向對象語言實現,也可以用非面向對象語言實現。面向對象程序設計語言本身就支持面向對象概念的實現,其編譯程序可以自動地實現面向對象概念到目標程序的映射。
面向對象的採用方法從問題域表示到面向對象分析,再到面向對象設計與實現始終穩定不變。一致的表示方法不但有利於在軟體開發過程中始終使用統一的概念,也有利於維護人員理解軟體的各種配置成分。