作業資訊
這個作業屬於哪個課程 |
2024-2025-1-計算機基礎與程式設計 |
這個作業要求在哪裡 |
2024-2025-1計算機基礎與程式設計第八週作業 |
這個作業的目標 |
功能設計與物件導向設計,物件導向設計過程,面嚮物件語言三要素,彙編、編譯、解釋、執行 |
作業正文 |
https://www.cnblogs.com/lry666666/p/18550385 |
教材學習內容總結
1.功能設計與物件導向設計
功能設計:側重於確定系統需要實現的功能。它從使用者需求出發,詳細分析系統應具備的各項操作和行為。例如,設計一個圖書館管理系統時,功能設計會涵蓋借書、還書、查詢書籍資訊、管理使用者賬戶等功能的規劃。這種設計方法更關注系統的流程和功能實現邏輯,往往以功能模組為單位進行組織。
物件導向設計:將系統看作是由一系列相互協作的物件組成。每個物件都有自己的屬性(資料)和行為(方法)。在圖書館管理系統中,會有 “書籍” 物件(具有書名、作者、編號等屬性和借出、歸還等方法)、“使用者” 物件(姓名、賬號、借閱記錄等屬性和借書、還書等操作方法)等。物件導向設計強調物件之間的關係和互動,具有更好的可維護性、可擴充套件性和可複用性。
2.物件導向設計過程
問題域分析:深入理解需要解決的問題領域,識別其中的實體、概念和它們之間的關係。比如在設計電商系統時,要分析商品、訂單、使用者、商家等實體以及它們在購物流程中的關係。
識別物件和類:根據問題域分析的結果,找出系統中的物件,並將具有相同屬性和行為的物件抽象為類。例如,多個不同商品可以抽象為 “商品類”。
確定物件的屬性和行為:對於每個類,明確其屬性(如商品類的價格、名稱、庫存等)和行為(如購買、新增到購物車等行為對應的方法)。
設計物件之間的關係:包括關聯(如使用者和訂單之間的一對多關聯,一個使用者可以有多個訂單)、聚合(如訂單和訂單項之間的聚合關係,訂單由多個訂單項組成)、繼承(如會員使用者類繼承自普通使用者類,具有更多特殊屬性和方法)等。
建立物件模型:可以使用 UML(統一建模語言)等工具來建立類圖、物件圖等,直觀地表示系統的物件導向設計結構。
最佳化設計:檢查設計的合理性,如是否存在冗餘、是否符合開閉原則(對擴充套件開放,對修改關閉)等,並進行必要的調整。
3.面嚮物件語言三要素
封裝:將資料和運算元據的方法封裝在一個類中,對外部隱藏物件的內部實現細節。只透過特定的介面(如公共方法)來訪問和修改物件的屬性。例如,在 Java 中,使用 private 關鍵字修飾成員變數,透過 public 的 getter 和 setter 方法來訪問和修改這些變數。這樣可以提高程式碼的安全性和可維護性,防止外部程式碼隨意篡改物件的狀態。
繼承:允許建立新的類(子類)從現有的類(父類)繼承屬性和行為。子類可以重寫父類的方法來實現特定的功能。比如,在 C++ 中,class Child : public Parent 就表示 Child 類繼承自 Parent 類。繼承可以實現程式碼的複用,提高軟體開發效率,但過度使用可能導致類層次結構過於複雜。
多型:指不同的物件對同一訊息(方法呼叫)有不同的響應方式。包括編譯時多型(如函式過載,在 C++ 中,多個同名函式但引數不同)和執行時多型(透過虛擬函式實現,如在 Java 中,父類的引用可以指向子類的物件,根據物件的實際型別呼叫相應的重寫方法)。多型增強了程式的靈活性和可擴充套件性。
4.彙編、編譯、解釋、執行
彙編:是一種將組合語言源程式轉換為機器語言目標程式的過程。組合語言是一種低階程式語言,與機器硬體密切相關,它使用助記符來表示機器指令。例如,MOV AX, 10 在彙編中表示將數值 10 傳送到 AX 暫存器。彙編程式透過對彙編原始檔進行處理,生成可由計算機直接執行的機器碼檔案。
編譯:將高階程式語言(如 C、C++、Java 等)編寫的源程式一次性轉換為目標機器可執行的機器語言程式(對於 Java 等,是位元組碼等中間形式)。編譯過程包括詞法分析(將源程式分解為單詞符號)、語法分析(構建語法樹)、語義分析(檢查語義正確性)、程式碼生成等階段。例如,使用 C 編譯器(如 GCC)將.c 檔案編譯成可執行檔案。編譯後的程式執行效率通常較高,但修改源程式後需要重新編譯。
解釋:直譯器直接讀取並執行高階語言源程式,逐行或逐塊地將源程式轉換為機器指令並立即執行。例如,Python 程式就是透過直譯器來執行的。解釋型語言具有較好的跨平臺性和靈活性,在開發過程中可以快速看到結果,但執行效率相對編譯型程式可能較低,尤其是對於複雜程式。
執行:無論是編譯後的程式還是解釋執行的程式,最終都是在計算機的硬體環境中執行。對於編譯型程式,作業系統將可執行檔案載入到記憶體並分配資源後開始執行;對於解釋型程式,直譯器在執行過程中管理程式的執行狀態和資源分配。執行過程涉及到 CPU 從記憶體中讀取指令、執行指令、資料的讀寫等操作,同時可能還會涉及到作業系統的程序管理、記憶體管理等功能。
教材學習中的問題和解決過程(先問 AI)
- 問題1:IP 地址和 MAC 地址在網路通訊中的作用區別有些模糊,不太理解為什麼要有這兩種不同的地址。
- 問題1解決方案:查閱資料得知,IP 地址是網路層地址,用於在不同網路之間進行邏輯定址。它能讓資料包在複雜的網路環境中找到目標網路。例如,在網際網路上,IP 地址可以確定資料從源主機所在網路到目標主機所在網路的路徑。
MAC 地址是資料鏈路層地址,用於在同一區域網內的物理定址。當資料包到達目標網路的區域網後,透過 MAC 地址來找到目標裝置。在區域網內裝置之間通訊時,交換機就是根據 MAC 地址來轉發資料幀的。
為了加深理解,我透過搭建一個簡單的包含路由器和交換機的網路實驗環境進行實踐。在實驗中,觀察資料在不同網路段和區域網內傳輸時,IP 地址和 MAC 地址的變化情況,從而更清晰地理解它們各自的作用。
- 問題2:在學習網路拓撲結構時,對於星型拓撲和匯流排型拓撲的優缺點在實際應用場景中的體現不太清楚。
- 問題2解決方案:資料顯示,星型拓撲的優點是易於維護和管理,某個節點出現故障不會影響其他節點的正常通訊(除了與故障節點直接相連的中心節點埠),中心節點可以是交換機等裝置。例如在企業辦公網路中,如果某臺電腦故障,不會導致其他電腦之間不能通訊。缺點是對中心節點的依賴性強,如果中心節點出現故障,整個網路可能癱瘓。
匯流排型拓撲優點是結構簡單、成本低,所需電纜長度短。但缺點明顯,如同一時刻只能有一個節點傳送資料(存在衝突問題),而且如果匯流排出現故障,整個網路就無法工作。在早期的一些小型區域網中,由於成本限制可能會使用,但隨著網路規模和效能要求的提高,逐漸被其他拓撲結構替代。
我模擬了這兩種拓撲結構的小型網路,透過在不同節點模擬資料傳輸和故障情況,體會它們在實際場景中的表現,比如在匯流排型拓撲中觀察到多個節點同時嘗試傳輸資料時產生的衝突現象,從而更好地理解了它們的優缺點。
程式碼除錯中的問題和解決過程
- 問題1:忘記定義變數就直接使用
- 問題1解決方案:在使用變數之前進行定義
- 問題2:遺漏分號,編譯器報錯,有時候可能會在不該加分號的地方加分號,比如在if語句的條件後面
- 問題2解決方案:對於分號缺失的情況,在正確的位置新增分號。對於分號多餘的情況,仔細檢查邏輯語句,刪除多餘的分號
學習進度條
|
程式碼行數(新增/累積) |
部落格量(新增/累積) |
學習時間(新增/累積) |
重要成長 |
目標 |
5000行 |
30篇 |
400小時 |
|
第一週 |
200/200 |
2/2 |
20/20 |
|
第二週 |
300/500 |
0/2 |
18/38 |
|
第三週 |
500/1000 |
1/3 |
22/60 |
|
第四周 |
300/1300 |
1/4 |
30/90 |
|
第五週 |
300/1600 |
1/5 |
30/120 |
|
第六週 |
300/1900 |
1/6 |
30/150 |
|
第七週 |
300/2200 |
1/7 |
30/180 |
|
第八週 |
300/2500 |
1/8 |
30/210 |
|