




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
領航數位科技 編著,visual c# 2008 範例教學手冊,課程簡報大綱,第六章 集合類別與列舉型態,集合類別 列舉型態 集合類別是許多資料型態物件集合成一個單位元,各資料物件間有一定的先後關係,關係不同有不同的資料結構,也應用在不同的場合。列舉型態定義一個值域是封閉的資料型態,用來規範常數使用的安全範圍。,6-1 集合類別,集合(collection)類別 又稱 容器(container)類別,是將許多物件集合成一個單位元,像array是典型的集合類別應用。集合類別像是幫忙收集資料的容器,如撲克牌的盒子(收納撲克牌)、檔案夾(收存文件)等。stacks、queues、lists及hash tables等都是集合類別,而且都有相似的介面,也可繼承出新的集合類別以適合不同的使用狀態。,6-1-1 arraylist類別,使用陣列時必須先設定陣列的大小才可以使用,而arraylist屬於集合一種,它的大小會隨資料量大小而改變。它可以加入(add)物件元素或隨機存取(random access)某個物件元素,但也可以移除和插入(insert)物件元素。宣告的語法是: arraylist 物件名稱= new arraylist(); 或 arraylist 物件名稱= new arraylist(容量大小);,6-1-1 arraylist類別,6-1-2 linkedlist 類別,linkedlist和arraylist功能相似,不但可以隨機讀取某個物件元素,更可以移除和插入物件元素,如addfirst()、addlast()、addafter()、addbefore()、removefirst( )、removelast()等函式。linkedlist宣告的語法是: linkedlist 物件名稱= new linkedlist(); 或 linkedlist 物件名稱= .new linkedlist(元素值陣列);,6-1-2 linkedlist 類別,6-1-2 linkedlist 類別,6-1-3 hashtable類別,hashtable是(索引/資料值)成對組成的集合類別,不會對收集的元素進行排序,它的索引不能重複,資料值可以重複,它以hashcode函式比較各元素是否相等,然後以hash table方式儲存。如果元素不需依大小排序,使用hashtable處理速度較快。hashtable提供add(), remove()等處理函式。宣告的語法是: hashtable 物件名稱= .new hashtable();,6-1-3 hashtable類別,6-1-4 queue 類別,queue是物件的集合,是將物件依序儲存並供循序處理,處理方式是採先進先出(fifo, first in first out)的原則將儲存的物件加入queue一端,移除時則從另一端移除。如果加入queue的物件數到達目前容量,容量會自動增加,移除時容量不會自動減少,但可藉由引用trimtosize()函數來減少多餘的容量。queue只能由插入的另一端讀取物件,而不能隨意讀取,但可以判斷指定物件是否存在。宣告的語法是: queue物件名稱= new queue();,6-1-4 queue 類別,6-1-5 stack類別,stack是物件的集合,也是將物件依序儲存並供循序處理,但處理方式是採後進先出(lifo, last in first out)的原則將儲存的物件加入stack一端,移除時也從同一端移除。加入物件時容量會自動增加,移除時容量會自動減少。宣告的語法是: stack 物件名稱= new stack();,6-1-5 stack類別,6-2 列舉型態,6-2-1 列舉型態類別的定義 列舉型態在c#裡有兩種用法: 定義一個值域是封閉的資料型態,此資料型態的值不可以是集合以外的值,用來規範常數使用的安全範圍。定義的語法是: enum 類別名稱 常數1, 常數2, ; 另一種是用來宣告常數的集合 列舉型態內的常數集合可以透過getname()取某一個常數,或透過getnames()轉成陣列,然後以索引方式取出使用。,6-2-2 列舉型態類別的內建函式,除了上節使用到的列舉型態內建函式外,尚有一些常見的內建函式。,第七章 例外處理,何謂例外處理 c# 的例外狀況 如何處理例外狀況 利用c# 的 例外處理(exception handling)機制來控制程式執行時的錯誤,並將錯誤訊息重新定義讓操作者更容易了解訊息意義,同時也可避免程式自動終止而發生應完成而未完成的失誤。,7-1 何謂例外處理,任何程式從開發到使用階段不時會有錯誤發生,這些錯誤可分為 編譯時期的語法錯誤(syntax error),由於是編譯時期的錯誤,所以又稱為 編譯時期錯誤(compile error)。到了測試或使用時會發生結果不對或程式無法執行的情形,結果不對可能是資料的錯誤或 邏輯上的錯誤(logical error)。而程式無法順利執行的原因很多,可能是資料問題、操作問題、硬體問題、網路問題、記憶體不足或檔案遺失等問題,造成程式無法順利執行的問題稱為 執行時期錯誤(runtime error)。,7-2 c#的例外狀況,7-3 如何處理例外狀況,c# 的例外處理是由五個保留字來負責:try、catch、throw、throws與finally。首先將要監控例外(錯誤)的程式碼置於 try 的區塊內,每種可能發生例外的物件做成一個catch區塊,系統發生例外時程式執行權會自動交給對應的catch區塊,由catch區塊內的指令負責善後。程式也可主動使用保留字 throw丟出例外給對應的catch區塊。,7-3-1 try-catch-finally 的使用,例外處理的方式基本上是使用 try-catch-finally 三種區塊: try / 要監控錯誤的程式碼區塊 catch (exceptiontype1 object1) / 例外狀況一的例外處理 catch (exceptiontype2 object2) / 例外狀況二的例外處理 / finally / 在程式結束之前要執行的程式碼區塊 ,7-3-2 throw 的使用,c# 例外類別 除了被動的由c#系統監控例外的發生外,程式本身也可主動的監控並以throw指令丟出例外物件,語法為: throw throwableinstance; throwableinstance為throwable物件,要丟出例外訊息前必須先以錯誤訊息為參數,實作一個throwable例外物件: new throwable 物件(顯示的訊息); 自訂新的例外類別 除了使用c#提供的例外類別外,也可自行定義新的例外類別,如 newexception。,第八章 檔案處理,檔案處理基本觀念 檔案處理步驟 檔案是程式資料處理的對象,只有存於磁性媒體的資料才能被程式重複存取使用,因此任何應用程式都離不開檔案的處理,也就是檔案的輸入與輸出。,8-1 檔案處理基本觀念,8-1-1 資料流 資料流(stream)是往來於中央處理單元、記憶體和輸出、輸入裝置之間的一連串位元(bits)。,8-1-2 檔案與目錄,電腦執行任務時是將程式碼及資料放在記憶體中執行,在處理的程式結束或電源切掉後資料就無法再取用。但儲存在磁碟裡的資料不會因為程式結束或電源切掉而消失,如果處理的資料日後還要使用就要存到磁碟裡。儲存在磁碟裡的資料稱為 檔案file,為了存取方便我們為每個檔案取個獨一無二的名稱,叫做 檔名(file name)。 目錄(directory)又稱 檔案夾 或 資料夾(folder),也是檔案的一種,不過它所存放的不是資料檔本身,而是資料檔的位置或其他的目錄。使用目錄的目的是能夠將檔案分門別類的管理,如visual studio系統安裝好以後有個c:program filesmicrosoft visual studio 9.0vcbin的目錄出現,打開bin的目錄看到裡面有1028等目錄以及其他檔名的清單。,8-1-3 記錄與欄位,記錄 是資料檔的處理單位,它由許多相關的 欄位field所組成,每個欄位訂有名稱與其相關資料的資料型態。如學生成績檔內的欄位有字串型態的學生編號及姓名;整數型態的的平常考、期中考、期末考成績。學生成績檔的記錄看起來像下面的表格:每個橫列是 記錄,每個縱行是 欄位。,8-1-4 處理模式,當檔案開啟時必須先宣告它的 處理模式(access mode),檔案處理系統會根據宣告的處理模式做必要的檢查與處理。c#的檔案處理模式有下面三種:,8-1-5 檔案指標,c# 將檔案視為一連串的 字元(bytes),程式處理檔案時,一連串的字元像水流一般流入或流出,所以稱要處理的連串字元為 串流(stream)。,8-2 檔案處理步驟,8-2-1 檔案處理的類別 在c#的system.io命名空間下有許多的檔案處理類別,如: 處理目錄的 directory、directoryinfo、directorynotfoundexception 等類別。 處理檔案的 file、fileloadexception、filenotfoundexception 等類別。 處理資料串流 的 stream、streamreader、streamwriter 等類別。 處理檔案串流 的 filestream 等類別。,8-2-2 目錄的處理,目錄(folder) 是分門別類存置檔案的地方,通常我們是透過視窗作業系統的 檔案管理 來操作目錄的活動,但在c# 中提供有相關的類別,讓自行撰寫的程式也能操作這些活動。,8-2-3 檔案的處理,處理完目錄以後,經常要做檔案的處理,例如:檔案的複製、刪除、移動或更名等。,8-2-4 資料錄的讀寫,資料錄讀寫 是檔案io的重頭戲,資料錄在讀寫前必須先要開啟檔案,以確定資料錄可以正常讀寫;資料錄在讀寫完必須先要關閉檔案,以確定資料錄都能完整寫到儲存媒體。,8-2-5 隨機處理的檔案,前面一節介紹的檔案是 循序處理檔案 (sequential access file),檔案中每一項資料錄都是循序寫入, 而且也必須循序讀出。想要在循序檔中讀出某一個特定的資料錄,之前所有的資料錄都必須先讀出。隨機處理檔案(random access file,簡稱raf)的架構容許程式隨意讀寫任何一筆資料錄,主要是利用 檔案指標(file pointer)的移動,來標明所要讀寫資料錄的位置。filestream類別的seek()、read()、write()函式可以解決隨機處理的問題。,8-2-6 資料的連貫性,在 多工(multi-task)或 多使用者(multi-user)的環境,一個檔案可能同時被好幾個程式所讀寫,如果控制不好會造成資料的不連貫,如: 要解決這個問題,先處理的程式 要 鎖定(lock)資料,而後處理的程式 要等鎖定的資料 解除鎖定(unlock)。 如:,第九章 資料庫處理,何謂資料庫處理 資料庫中介軟體 ole db 將資料儲存在磁性媒體,隨時可以進行讀、寫及更新動作,但這些資料只能以簡單的格式存在近端的電腦,對於實際應用尚有一段距離,於是有所謂 資料庫(data base) 的出現。,9-1 何謂資料庫處理,在上一章節我們已學會將資料儲存在磁性媒體,隨時可以進行讀、寫及更新,但這些資料只能以簡單的格式存在近端的電腦,實際應用時會有許多檔案及欄位的出現,各檔案可能相互關聯,資料錄也會累積相當多,甚至必須遠程存取,這些都不是普通的檔案系統所能處理,於是有所謂 資料庫(data base)的出現,顧名思義資料庫是存放大量資料的地方,為了加快大量資料的讀寫以及遠端處理的功能,除了儲存資料有特殊的架構外,也提供資料讀寫的介面,程式設計者不須特別設計程式,就能建構複雜的資料庫系統,進行各種資料的新增、刪除、修改與查詢等動作,而且也能完成遠端存取的功能。,9-2 資料庫中介軟體,資料庫系統都有特殊的資料結構,因此在處理時不是簡單的幾個函數就能解決,而且資料庫系統發展商發展的資料庫系統各具特色,為吸引更多使用者,多會提供一個中間的轉換軟體,使各作業平台下的應用程式不須轉換,就能使用該資料庫系統。,9-2-1 何謂 dao,對於簡單的資料檔我們透過存取函數就能處理,流程是 應用程式 資料檔案。而複雜的資料庫系統就必須仰賴廠商提供的支援軟體,如dao(data access objects)就是微軟access資料庫的支援軟體,所以dao是資料處理的中介軟體,流程是 應用程式 dao access。,9-2-2 何謂 odbc,odbc (open database connectivity) 是一種使用 sql 語法、可跨越各種資料來源以處理關聯式資料的資料庫國際標準,資料庫開發業者只要提供符合標準的程式庫,應用程式開發者就不必為不同的資料庫而傷腦筋,流程是 應用程式 dao odbc 本地或遠端的各種資料庫。這裡的資料庫就不限是微軟的access了。,9-2-3 何謂 ado,ado(activex data object) 是微軟公司所定義的一種activex元件,是應用程式用來連接各種資料庫的中介軟體,透過中介軟體的驅動程式來連結各種資料庫,流程是 應用程式 ado 本地或遠端的各種資料庫。,9-2-4 何謂 ado.net,ado.net是從ado所衍生出來的一個新的物件架構。在ado.net一樣保有ado物件架構中的connection,command等物件。使用時一樣是要先透過connection物件建立與資料來源之間的連線,並且透過command物件執行存取資料的指令,所不同的是ado.net提供對xml文件的支援。,9-2-4 何謂 ado.net,9-3 ole db,9-3-1 何謂 ole db ole db是c# 透過ole支援直接存取包括 microsoft access 在內的資料庫,而不必從c# 程式切換到access或其他的資料庫系統就能存取資料。,9-3-2 ole db 與 access 資料庫,以ole db 連接到 access 資料庫 在system.data.oledb命名空間下有許多ole db相關的類別,存取access 資料庫必須先以oledbconnection類別建立連接,例如連接並開啟e:bc#codech08phonebook.mdb 資料庫。 讀取 access 資料庫 以oledbconnection類別建立連接並且開啟資料庫後,接著以oledbcommand 物件設定讀取的取樣標準,然後以 oledbdatareader 物件讀取資料。,9-3-2 ole db 與 access 資料庫,刪除 access 資料錄 以oledbconnection類別建立連接並且開啟資料庫後,接著以oledbcommand物件設定刪除的取樣標準,然後再執行物件裡的 executenonquery函數刪除資料錄。 新增access 資料錄 以oledbconnection類別建立連接並且開啟資料庫後,接著以 oledbcommand 物件設定新增的資料 ole db。,9-3-2 ole db 與 access 資料庫,更改 access 資料錄 以oledbconnection類別建立連接並且開啟資料庫後,接著以oledbcommand物件設定更改的資料內容,然後再執行物件裡的 executenonquery函數更改資料錄。 新增 access 資料檔(table)及資料錄 以 oledbconnection 類別建立連接並
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 论证与案例分析的逻辑试题及答案
- 财务成本管理中的逻辑思维技巧试题及答案
- SQL数据操作语言解析试题及答案
- 法律行为法规试题及答案
- 2025年Msoffice考前准备试题及答案
- 法律审核笔试试题及答案
- 2025租赁合同与出租合同
- C++编程技巧与心得分享试题及答案
- SQL语法应用计算机二级试题及答案
- 新学期开学主题班会18
- 2025年铁路集装箱市场前景分析
- 2024-2025中国商旅管理白皮书
- 船舶维修合同协议书
- 《比亚迪品牌历史课件》课件
- 小学心理健康家长会课件
- 2025年4月自考00160审计学答案含评分参考
- 购买木地板合同协议
- 严重开放性肢体创伤早期救治专家共识解读
- 2025年公共安全管理考试试题及答案
- 速卖通开店考试最权威答案
- 输液导管相关静脉血栓形成中国专家共识 课件
评论
0/150
提交评论