2021-2022-1學期 20212320 《網路空間安全專業導論》第四周學習總結
第八章
8.1抽象資料型別
抽象資料型別是屬性明確地與特定現實分離的容器。應用層是特定問題中的資料的檢視。
邏輯層是資料值和處理他們的操作的抽象檢視。
實現層明確表示出了存放資料項的結構,並用程式設計語言對資料的操作進行編碼。這涉及了資料結構,即一種抽象資料型別中的複合資料域的實現。
這些ADT是儲存器資料項的容器,每種ADT都具有特定的行為,稱為容器。
8.2棧
棧是一種抽象複合結構,只能從一端訪問棧中的元素。可以在第一個位置插入元素,也可以刪除第一個元素,這種型別的處理稱為LIFO。插入操作叫作PUSH,刪除操作叫作POP。我們把專案推進棧,棧沒有長度屬性,所以沒有返回棧中專案的個數的操作。
8.3佇列
佇列也是種抽象結構,佇列中的專案從一端入,從另一端出。這種稱為FIFO.
8.4列表
列表有三個屬性特徵:專案是同構的,專案是線性的,列表是變長的。線性的意思是,每個專案除了第一個都有一個獨特的組成部分在它之前,除了最後一個也都有一個獨特的組成部分在它之後。
列表通常提供插入一個專案的操作(insert),刪除delete,檢索一個專案是否存在(Isthere),報告列表中的專案(GetLength)。
注意的是,列表不能誤認為是陣列,陣列是內嵌結構,列表是抽象結構。列表也可以被形象化鏈式結構。鏈式結構以節點的概念為基礎,一個節點由兩部分構成:使用者的資料和指向列表下一個節點的連結或指標。
8.5樹
1 二叉樹 是一種抽象結構,其中每個節點可以有兩個後繼節點,叫作子女。每個子女仍然是二叉樹的節點,因此也可以有兩個節點。樹的頭部是一個起始節點,叫做根,它不是任何節點的子女。如果一個節點沒有子女,這個節點就叫做樹葉。每個節點都只有一個父母節點。
2 二叉檢索樹 具有二叉樹的形狀屬性,也就是說,二叉檢索樹的節點可以具有0,1,2個子女。二叉檢索樹還具有語義屬性來刻畫樹中節點上的值,即任何節點的值都要大於它左子樹中的所有的值,並且要小於它的右子樹中的所有節點的值。
8.6圖
圖由一組節點和連線節點的線段構成,圖中的節點叫作頂點,圖中的線段叫作邊(弧)
無向圖:其中的邊沒有方向的圖
有向圖:其中的邊是從一個頂點指向另一個頂點的圖。
兩個頂點有一條邊相連,則把他們稱為鄰頂點,兩個頂點通過一條有順序的路徑相連。
圖演算法 1深度優先搜尋 2廣度優先搜尋 3單元最短路搜尋
8.7子程式
許多子程式都是高階語言或語言附帶庫的一部分。
引數列表:程式中兩部分之間的通訊機制。形參:列在子程式後的括號中的識別符號。實參:子程式呼叫中列在括號中的識別符號
傳遞引數的方式基本有兩種,即通過傳遞和通過引用傳遞。如果一個形參是值參,呼叫單元將把實參的一個副本傳遞給子程式。如果一個形參是引用引數,呼叫單元將把實參的地址傳遞給子程式。
要訪問一個引用引數,子程式必須訪問留言板上列出的地址的內容。要訪問一個值參,子程式只需要訪問留言板自身的內容即可。
第九章
9.1設計方法
物件 是在問題背景中具有意義的事物或實體;物件類:描述了一組的類似的物件
物件之間通過傳送訊息進行通訊。類中包含的字元表示類的屬性。方法是處理物件中的資料值的制定演算法。
封裝:就是把資料和動作集中在一起,使資料和動作集中在一起,使資料和動作的邏輯順序與它們的細節分離。
9.1.3
責任演算法 1 person 類 2 name 類
9.2翻譯過程
用匯編語言編寫的程式要輸入彙編器,由它把組合語言指令翻譯成機器碼,最終執行的是彙編器輸出的機器碼。使用高階語言,我們要採用其他軟體工具協助翻譯過程。
彙編器:把要用高階語言編寫的程式翻譯成機器碼的程式。編譯器本質是一種程式,因此,要編譯一個程式,就必須要有這個編譯器在特定機器上的機器碼版本
直譯器:是一種程式,用於翻譯和執行語句序列,翻譯器在翻譯過語句後會立即執行這個語句。可以把直譯器看作理解編寫程式所使用的語言的模擬器或虛擬機器。翻譯器只用適合的機器生成等價的程式。
在java中,可移植性是最重要的特性,java被編譯成一種標準的機器語言--位元組碼。而任何具有JVM的機器可以執行編譯過的Java程式。
9.3.1命令式範型
1 面向過程的範型。面向過程程式設計是一種命令式模型,在這裡語句被分組為子程式。
2 面向物件的範型。面向物件視角是物件互動的一種方式。
9.3.2宣告式範型
是一個描述結果的模型。 1 函式式模型。 2邏輯程式設計
9.4高階程式設計語言的功能性
1 布林表示式 是一個識別符號序列,識別符號之間由相容的運算子分隔,求得的值是True或false。一個布林表示式可以是一個布林變數;一個算術表示式加一個關係運算符,再加一個算術表示式;一個布林表示式加一個布林運算子,再加一個布林表示式。
2 資料歸類 強型別化:每個變數都有一個型別,只有這種型別的值才能儲存到該變數中。 資料型別:一組值以及能夠應用這種型別的值基本操作集合的說明。
資料型別 1整數:整數資料型別表示的是一個整數值的範圍;2實數:實數的資料型別表示的是特定精度的數的範圍;3字元 4布林型 5字串,字串是一個字元序列,在某些語言中這個序列通常被看作一個數據值。用單引號圈起字元,用雙引號圈起字串。
保留字:一種語言中具有特殊意義的字,不能用它作為識別符號。
控制結構 1巢狀邏輯 在任何控制語句中被執行或跳過的語句可以是簡單的語句或塊,對於這些語句沒有任何限制。
2非同步處理 不與計算機中的其他操作同時發生,與操作不同步。
9.5.1封裝
1封裝:實施資訊遮蔽的語言特性
2物件:與問題背景相關的事物或實體(問題求解)
3類:物件的模式(實現階段)
4物件類或類 屬性和行為相似的一組物件的說明(問題求解)
5物件:類的一個例項(實現階段)
9.5.3繼承 繼承是面嚮物件語言的一種屬性,即一個類可以繼承另一個類的資料。超類是被繼承的類,派生類是繼承的類。
9.5.4多型 程式設計語言處理這種明顯的二義性的能力叫作多型。
學習中的問題:在這兩章中都出現了很多的程式碼例項,比如第八章中引數傳遞,第九章巢狀邏輯等等。這些程式碼對於我們這些初學者而言較為陌生,並不能很好地理解它的具體含義,還有如何規範地寫出這些符合語法的程式碼。
解決方法:按照書本上給出的例項,配合課後作業的一些例項,逐句理解每一句的功能是怎麼樣的。