




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Delphi歷史Delphi特性Delphi 7開發(fā)環(huán)境介紹面向?qū)ο蟪绦蛟O(shè)計(OOP)Object Pascal基本語法1995年 delphi1發(fā)布1996年 delphi 2發(fā)布1999年 delphi5發(fā)布2002年 delphi7發(fā)布2007年 delphi2007發(fā)布2010年 delphi2010發(fā)布快速開發(fā)工具最好的C/S程序開發(fā)工具支持各種程序的開發(fā)Win32原生程序快速開發(fā)工具delphi語法:Object Pascal,是一種面向?qū)ο蟮挠嬎銠C語言, 程序語法嚴(yán)謹(jǐn),易學(xué)易用。VCL庫:提供豐富的可視化組件庫,程序人員可根據(jù)需要直接進行調(diào)用。 IDE開發(fā)環(huán)境:集編碼、設(shè)計、調(diào)試
2、如一身,大大方便了程序的開發(fā)調(diào)試。最好的C/S程序開發(fā)工具支持所有的常用數(shù)據(jù)庫可開發(fā)兩層結(jié)構(gòu)、三層結(jié)構(gòu)的管理軟件非常棒的VCL控件支持開發(fā)的程序易于發(fā)布支持各種程序的開發(fā)數(shù)據(jù)庫應(yīng)用程序的開發(fā)網(wǎng)絡(luò)應(yīng)用軟件的開發(fā)游戲軟件的開發(fā)其它應(yīng)用軟件文件類型pas:單元文件dfm:窗體文件dpr:項目文件dpl:壓縮庫文件dpk:包文件res:資源文件dcu:編譯文件定制工具欄ViewToolbarsCustomize常用工具按鈕介紹定制代碼編輯器ToolsEditor Properties保存定制開發(fā)環(huán)境ViewDesktopSave Desktop項目目錄設(shè)置ProjectOptions組件庫路徑設(shè)置To
3、olsEnvironment Options從當(dāng)前工程已有基類繼承斷點設(shè)置與調(diào)試常用快捷鍵F3:繼續(xù)查找F4:運行程序至光標(biāo)處F5:設(shè)置斷點F7:跟蹤調(diào)試F8:單步調(diào)試F9:運行程序F11:在Form/Unit和Object Inspector(對象查看器)之間切換F12:在Form和Unit之間切換Ctrl+F9:編譯Ctrl+Alt+F11:彈出Project Options(工程管理器)Ctrl+Shift+上/下方向鍵:在過程的聲明和實現(xiàn)間切換Ctrl+J:插入標(biāo)準(zhǔn)語法代碼Ctrl+Shift+U,Ctrl+Shift+I:將所選擇的代碼整體右移或者左移Ctrl+Shift+C:完成已
4、聲明類的實現(xiàn)Shift+Alt+F11:對象樹狀視圖運算符常量和變量過程和函數(shù)數(shù)據(jù)類型程序流程控制單元的組織結(jié)構(gòu)一、運算符1、賦值運算符運算符運算符PascalPascalC/C+C/C+JavaJava賦值:=2、比較運算符運算符運算符PascalPascalC/C+C/C+JavaJava等于=不等于!=!=小于小于等于=3、邏輯運算符運算符運算符PascalPascalC/C+C/C+JavaJava與and&或or|非not!4、算術(shù)運算符運算符運算符PascalPascalC/C+C/C+JavaJava加+減-乘*除(浮點數(shù))/除(整數(shù))div/取模mod%5、按位運算符運
5、算符運算符PascalPascalC/C+C/C+JavaJava與and&取反not或or|異或xor左移shl6、其他運算 對象類型的轉(zhuǎn)化: a、使用is進行類型兼容性判斷,然后用as轉(zhuǎn)化b、使用Tobject.InheritsFrom代替is運算符二、常量與變量1、聲明常量:const變量:var2、有類型常量和無類型常量const i = 5; ErrMsg = 被除不能為0; s: String=123456;3、全局變量和局部變量注:全局變量可指定初始值,但局部變量不可以三、過程與函數(shù)區(qū)別:函數(shù),有返回值;過程,無返回值。聲明:函數(shù),function;過程,procedur
6、e。原則:先聲明,后使用。參數(shù)值傳遞與參數(shù)地址傳遞參數(shù)值傳遞:procedure ChangeMsg(s: String);參數(shù)地址傳遞:procedure ChangeMsg(var s: String);procedure TForm1.btn1Click(Sender: TObject);var Str: string;begin Str := StrVar; ChangeMsg1(Str); ShowMessage(Str); /StrVar ChangeMsg2(Str); ShowMessage(Str); /StrVarisChangedend;procedure TForm1.
7、ChangeMsg1(s: String);begin s := s+isChanged;end;procedure TForm1.ChangeMsg2(var s: String);begin s := s+isChanged;end;OUT參數(shù)輸出參數(shù),它傳遞的也是一個引用。然而,對于OUT參數(shù),將其傳遞到過程/函數(shù)中時,初始量會被丟棄。procedure TForm1.btn1Click(Sender: TObject);var Str: string;begin Str := Message; ChangeMsg3(Str); ShowMessage(Str); /Changedend
8、;procedure TForm1.ChangeMsg3(out s: String);begin ShowMessage(s); /顯示空字符串 s := Changed;end;四、數(shù)據(jù)類型常用類型: 復(fù)雜類型:整數(shù)(integer) 集合(Set)實數(shù)(Real) 數(shù)組(Array)布爾(Boolean) 記錄(Record)字符(串)(Char,String) 文件(File)枚舉(Enumerated)類(Class)子界(Subrange)接口(Interface)可變類型(Variant)枚舉數(shù)據(jù)類型1、定義2、枚舉數(shù)據(jù)類型特點u枚舉元素只能是標(biāo)識符 type days=(sun
9、,mon,tue,wed,thu,fri,sat); colors=(red,yellow,blue,white,black,green); var Week: days; FormColor: colors; type colortype=(red,yellow,blue,white); numbers=(1,3,5,7,9);u枚舉類型屬于順序類型根據(jù)定義類型時各枚舉元素的排列順序確定它們的序號,且序號從0開始。例如:type days=(sun,mon,tue,wed,thu,fri,sat);則: ord(sun)=0,ord(mon)=1,,以此類推。枚舉類型中的第一個元素?zé)o前趨,最
10、后一個元素?zé)o后繼。 pred(sat)=fri; succ(sun)=mon; ord(sat)=6;u同一個枚舉元素不能出現(xiàn)在兩個或兩個以上的枚舉類型定義中type color1=(red,yellow,white); color2=(blue,red,black);u枚舉類型變量只能進行賦值運算和關(guān)系運算,不能進行算術(shù)運算和邏輯運算。在枚舉元素比較時,實際上是對其序號的比較。例如:type days=(sun,mon,tue,wed,thu,fri,sat); colors=(red,yellow,blue,white,black,green);var color:colors; week
11、day:days;則下面語句是合法的: weekday:=mon; if weekday=sun then ShowMessage();3、枚舉數(shù)據(jù)類型的應(yīng)用子界數(shù)據(jù)類型介紹1、定義及定義規(guī)則 type 子界類型標(biāo)識符=常量1.常量2 常量1稱為子界的下界,常量2稱為子界的上界;下界和上界必須是同一順序類型(該類型稱為子界類型的基類型),且上界的序號必須大于下界的序號。如: type age=1.100; letter=a .z;可以直接在變量說明中定義子界類型。如:type letter=a. z ; var ch1,ch2:letter; var ch1,ch2:a.z;2、子界類型數(shù)據(jù)的
12、運算規(guī)則 凡可使用基類型的運算規(guī)則同樣適用該類型的子界類型。 基類型相同的不同子界類型數(shù)據(jù)可以進行混合運算。 var liInt1: 1.10; liInt2: 10.20; liInt3: Integer; begin liInt1 := 5; liInt2 := 11; liInt3 := liInt1+liint2; ShowMessage(IntToStr(liInt3); end;集合數(shù)據(jù)類型介紹1、定義type 集合類型名稱 = Set of 基類型;基類型可以為:字符型、布爾型、枚舉型和子界型。例:type numbers = set of 0.9; ch = set of ch
13、ar; var n: numbers; c: ch; d: set of (sun,mon,tue,wed,thu,fri,sat);注:集合的元素個數(shù)不超過256個,因此 var s:set of integer; 是錯誤的。2、集合的值 a、 集合的值放在一對方括號中,中間各元素之間用逗號隔開 。如:1,2,5 和 a,e,i 都是集合。 b、 為空集。 c、在集合中,如果元素的值是連續(xù)的,則可用子界型的表示方法表示。例如:1,2,3,4,5, 10,15可以表示成: 1.5,10,15 d、集合的值與方括號內(nèi)元素出現(xiàn)的次序無關(guān)。例如1,5,8 和5,1,8的值相等。 e、在集合中同一元素
14、的重復(fù)出現(xiàn)對集合的值沒有影響。例如,1,8,5,1,8與1,5,8的值相等。 f、每個元素可用基類型所允許的表達式來表示。如1,1+2、succ(ch)。3、集合的運算集合類型變量不能進行算術(shù)運算;集合是無序的,不能使用ord、pred、succ等函數(shù)。a、賦值運算var liInt: set of 0.9; liInt := 0;b、集合的并、交、差運算 var A: Set of X,Y,Z; B: Set of X; 并:A+B為X,Y,Z 交:A*B為X 差:A-B為Y,Zc、集合的關(guān)系運算 關(guān)系運算符: 相等“=”、不等“”、包含“=”、被包含“=”以及“IN”。 例:A,B=B,A
15、 True A,BB,A False A,B=B,A True A,B=B True A=A,B False A=A,B True A in A,B True4、集合的應(yīng)用Var Language: set of (English,German,France);procedure TForm1.chkEnglishClick(Sender: TObject);begin if (Sender as TCheckBox).Checked then Language := Language + English else Language := Language - English;end;proc
16、edure TForm1.btn1Click(Sender: TObject);begin if English = Language then ShowMessage(English被選中);end;數(shù)組數(shù)據(jù)類型介紹1、靜態(tài)數(shù)組定義一維:數(shù)組名:array下標(biāo)類型 of 元素類型二維:數(shù)組名:array下標(biāo)類型1, 下標(biāo)類型2 of 元素類型 2、動態(tài)數(shù)組定義一維:數(shù)組名:array of 元素類型二維:數(shù)組名:array of array of 元素類型注:動態(tài)數(shù)組定義后需分配內(nèi)存空間 SetLength(動態(tài)數(shù)組名,數(shù)組長度,數(shù)組長度)3、數(shù)組應(yīng)用const MyArray: array
17、 0.2 of string = (English,German,France);var i: Integer;begin for i:=Low(MyArray) to High(MyArray) do ShowMessage(MyArrayi);end;var MyArray: array of array of Integer; i,j: Integer;begin SetLength(MyArray,2,2); for i:=Low(MyArray) to High(Myarray) do begin for j:=Low(MyArray) to High(MyArray) do beg
18、in MyArrayi,j := Random(10); end; end;end;記錄數(shù)據(jù)類型介紹1、定義 type 類型標(biāo)識符=record 變量標(biāo)識符1:類型; 變量標(biāo)識符2:類型; : : : : 變量標(biāo)識符n:類型; end;2、記錄類型應(yīng)用type Students = record name: String20; age: 6.30; case className: Char of /變體記錄,共享內(nèi)存 A:(English: Real); B:(Math:Real); end;var Stu1,Stu2: Students;begin S := 張三; Stu1
19、.age := 13; Stu1.className := A; Stu1.English := 88.2; ShowMessage(FloatToStr(Stu1.Math); /88.2end;五、程序流程控制條件語句:循環(huán)語句:控制語句:Break: 跳出當(dāng)前循環(huán)。Continue: 結(jié)束本次循環(huán),執(zhí)行下一次循環(huán)。Exit:退出當(dāng)前代碼塊,如果當(dāng)前代碼塊是主程序,則程序終止,如果程序塊是被調(diào)用的模塊,則跳到上一層程序繼續(xù)執(zhí)行。Halt: 強制終止程序,返回操作系統(tǒng)。Abort: 中止程序運行,保留主程序。Goto: 跳轉(zhuǎn)。六、單元的組織結(jié)構(gòu) dpr(項目文件) 唯一 pas(單元文件)
20、工程項目 dfm(窗體文件) 其它文件(如res(資源文件)一個不一定項目文件(program)組織結(jié)構(gòu)單元文件(Unit)組織結(jié)構(gòu)單元的循環(huán)引用循環(huán)引用的意思是:A引用了B,而B又引用了A,且都是在interface部分進行引用。如下面的單元則通不過編譯:unit Unit1;unit Unit2;interfaceinterfaceusesuses Unit2; Unit1;至于有一個引用放置在implementation部分類的概念: 指某一類事物共同特征的抽象描述。類使用屬性和方法來描述某一事物的具體特征和行為。對象的概念: 即類的實例化。面向?qū)ο缶幊痰谋憩F(xiàn)形式: 封裝 繼承 多態(tài)封裝
21、代碼模塊化指利用類將數(shù)據(jù)和方法封裝起來,從而實現(xiàn)功能的隱匿,即控制功能的可見性。1、訪問控制符私有成員訪問符(private)受保護成員訪問符(protected)公有成員訪問符(public)發(fā)布的成員訪問符(published)自動的成員訪問符(automated)/不再使用,向后兼容保留2、封裝方式a、邏輯封裝對類進行操作,將業(yè)務(wù)的功能和行為以類的形式呈現(xiàn)。b、物理封裝表現(xiàn)形式:如動態(tài)鏈接庫(DLL)。繼承代碼重用繼承就是根據(jù)已有的類創(chuàng)建一個新類的過程。繼承的類稱為子類,被繼承的類稱基類。子類的功能就是完善與擴展基類。子類可以繼承基類的變量、屬性和方法。1、屬性的繼承屬性通過繼承不但可以
22、增加可見性,還可以對其功能進行擴展。2、方法的繼承方法靜態(tài)方法:默認(rèn)類型虛方法(virtual)動態(tài)方法(dynamic)抽象方法(abstract):基類無需實現(xiàn),子類必須實現(xiàn)。 當(dāng)代碼被編譯時,編譯器會給靜態(tài)方法一個地址;子類繼承時,只是將基類方法的地址賦給了子類。代碼運行時通過動態(tài)查找VMT/DMT來指定地址。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TFo
23、rm) edt1: TEdit; btn1: TButton; procedure btn1Click(Sender: TObject); private Private declarations public Public declarations end;type TMyBaseClass = class public procedure BaseSetEdt; end;type TMyChildClass = class(TMyBaseClass) public procedure ChildSetEdt; end;var Form1: TForm1;implementation$R *
24、.dfm TMyBaseClass procedure TMyBaseClass.BaseSetEdt;begin Form1.edt1.Text := Form1.edt1.Text + 基類;end; TMyChildClass procedure TMyChildClass.ChildSetEdt;begin Form1.edt1.Text := Form1.edt1.Text + 子類;end; TForm1procedure TForm1.btn1Click(Sender: TObject);var MyChildClass: TMyChildClass;begin MyChildC
25、lass := TMyChildClass.Create; MyChildClass.BaseSetEdt; MyChildClass.ChildSetEdt;end;end.多態(tài)接口重用多態(tài)性是允許你將父對象設(shè)置成為和一個或更多的他的子對象相等的技術(shù),賦值之后,父對象就可以根據(jù)當(dāng)前賦值給它的子對象的特性以不同的方式運作(摘自“Delphi4 編程技術(shù)內(nèi)幕”)。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。覆蓋(override)和虛方法是多態(tài)的主要表現(xiàn)形式。注意:重載(overload)只是一種語言特性,與多態(tài)無關(guān),與面向?qū)ο鬅o關(guān)!重載(overload):1、方法名一定相
26、同。2、參數(shù)個數(shù)、參數(shù)類型及參數(shù)順序不同。3、在Delphi中,返回值不同,不能區(qū)分兩個重載的方法。例:function ShowMsg(psStr: String;piInt: integer): String;overload; function ShowMsg(piInt: integer;psStr: String): String;overload; function ShowMsg(piInt: Integer): String;overload;procedure ShowMsg(piInt: Integer);overload; function ShowMsg(piInt:
27、integer): Integer;overload;unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,ExtCtrls, StdCtrls;type TMyPanel = class(TPanel) public procedure SetColor;virtual;abstract; end;type TForm1 = class(TForm) btn1: TButton; procedure btn1Click(Sender
28、: TObject); private public procedure CreatePanel(poPanel: TMyPanel;piWidth,piHeight,piTop,piLeft: Integer;psCaption: String); end;type TMyPanelA = class(TMyPanel) public procedure SetColor;override; end;type TMyPanelB = class(TMyPanel) public procedure SetColor;override; end;var Form1: TForm1;implem
29、entation$R *.dfm TMyPanel procedure TMyPanel.SetColor;begin Self.Color := clGreen;end; TMyPanelA procedure TMyPanelA.SetColor;begin /inherited; Self.Color := clRed;end; TMyPanelB procedure TMyPanelB.SetColor;begin /inherited; Self.Color := clBlue;end; TForm1 procedure TForm1.CreatePanel(poPanel: TMy
30、Panel; piWidth, piHeight, piTop, piLeft: Integer; psCaption: String);begin with poPanel do begin Caption := psCaption; Left := piLeft; Top := piTop; Width := piWidth; Height := piHeight; Parent := Self; SetColor; end;end;procedure TForm1.btn1Click(Sender: TObject);var loMyPanel: TMyPanel; loPanelA:
31、TMyPanelA; loPanelB: TMyPanelB;begin loMyPanel := TMyPanel.Create(Self); CreatePanel(loMyPanel,100,100,50,20,基類Panel); loPanelA := TMyPanelA.Create(Self); CreatePanel(loPanelA,100,100,50,130,PanelA); loPanelB := TMyPanelB.Create(Self); CreatePanel(loPanelB,100,100,50,240,PanelB);end;end.VCL是可視化組件庫(V
32、isual Component Library)的簡稱;它是一個龐大的類、組件庫,Delphi和C+Builder使用的組件庫都是VCL。類似于C+的MFC。VCL架構(gòu)VCL采用單根架構(gòu)(Single-rooted Hierarchy),即所有類的祖先都是Tobject,且每次只能從一個類派生子類(即單繼承而非多繼承)。JAVA也采用單根架構(gòu),而C+不是。使用VCL1、靜態(tài)方式設(shè)計時加入組件進行屬性和事件設(shè)計。2、動態(tài)方式用代碼創(chuàng)建類的實例(對象),然后使用它提供的功能,最后銷毀它。擴展VCL自定義組件當(dāng)現(xiàn)有的類和組件無法滿足我們的需要時,可以從VCL的現(xiàn)有類和組件上派生新的子類和子組件。SQL語言組成: 數(shù)據(jù)定義語言(DDL)例如:CREATE、DROP、ALTER等語句。 數(shù)據(jù)操作語言(DML)例如:INSERT(插入)、UPDATE(修改)、DELETE(刪除)語句。 數(shù)據(jù)查詢語言(DQL)例如:SELECT語句。 數(shù)據(jù)控制語言(DCL)例如:GRANT、REVOKE、COMMIT、ROLLBACK等語句數(shù)據(jù)查詢語言(DQL)SELECTALL|DIS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年湖南城建職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案1套
- 2025年合成橡膠型膠粘劑項目合作計劃書
- 精神科護理學(xué)測試題與參考答案
- 2024安徽蚌埠市臨港新城建設(shè)發(fā)展有限公司及所屬公司人才招聘6人筆試參考題庫附帶答案詳解
- 教育學(xué)原理練習(xí)題庫
- 2025年河北省秦皇島市單招職業(yè)適應(yīng)性測試題庫及答案1套
- 幼兒保教知識與能力-教師資格考試《幼兒保教知識與能力》??荚嚲?
- 2024-2025學(xué)年人教版(2024)七年級英語上冊 寒假教學(xué)設(shè)計day 1
- 2024四川瀘州市公共交通集團有限公司招聘1人筆試參考題庫附帶答案詳解
- 第五章自然環(huán)境的整體性與差異性單元教學(xué)設(shè)計2023-2024學(xué)年高中地理人教版(2019)選擇性必修1
- 產(chǎn)品結(jié)構(gòu)設(shè)計概述課件
- 八年級下綜合實踐教案全套
- 胸痹心痛中醫(yī)診療方案及臨床路徑
- 第8課《山山水水》教學(xué)設(shè)計(新人教版小學(xué)美術(shù)六年級上冊)
- word 公章 模板
- 泛讀2unit2-music
- 世界技能大賽PPT幻燈片課件(PPT 21頁)
- 中學(xué)生防溺水安全教育課件(PPT 44頁)
- Python程序設(shè)計ppt課件完整版
- T∕ZSQX 008-2020 建設(shè)工程全過程質(zhì)量行為導(dǎo)則
- 《腹膜透析》ppt課件
評論
0/150
提交評論