2020年計組期末卷(非陳家駿班)
1.請簡述 C++程式設計語言的設計理念、演化歷程(包括主要的貢獻者),並討論 Simula 67在其中的作用。
C++程式設計語言的設計理念
C++的設計理念主要基於以下幾個核心原則:
- 高效地使用硬體:C++旨在保持與C語言的相容性,使得C++程式碼與C程式碼執行時具有相似或更好的效能。
- 零成本的抽象機制:C++提供了低成本的靈活抽象機制,包括類、繼承、模板等,使得使用者定義的型別能夠獲得與內建型別相似的效能和支援。
- 支援多種程式設計正規化:C++不僅支援物件導向程式設計,還相容C語言的程序導向程式設計,以及透過模板等特性支援泛型程式設計。
演化歷程及主要貢獻者
C++的演化歷程可以概括為以下幾個階段:
- 1979年:Bjarne Stroustrup在貝爾實驗室開始開發C++的前身,最初稱為“C with Classes”。
- 1983年:語言正式更名為C++,新增了虛擬函式、函式過載等特性。
- 1985年:釋出了《The C++ Programming Language》一書,同年C++作為商業產品被實現。
- 1989年:C++更新,引入了多重繼承、保護成員和靜態成員等特性。
- 1998年:ANSI/ISO C++標準建立,標誌著C++的正式標準化。
主要貢獻者包括:
- Bjarne Stroustrup:C++的創造者,對C++的發展做出了決定性的貢獻。
- Dennis M. Ritchie:C語言之父,對C++的早期發展有影響,因為C++是基於C語言發展起來的。
- Scott Meyers:世界頂級的C++軟體開發技術權威之一,著有多本影響深遠的C++書籍。
- Stan Lippman:早期C++編譯器開發者之一,參與了C++語言的發展。
- Herb Sutter:C++ Standard Committee的主席,對C++標準的制定和發展有重要影響。
Simula 67在C++中的作用
Simula 67是首款支援物件導向的語言,它對C++的影響主要體現在以下幾個方面:
- 物件導向程式設計的引入:Bjarne Stroustrup在準備博士論文時使用了Simula語言,並發現物件導向的思想對於軟體開發非常有用,這促使他將物件導向的概念引入C語言,從而創造了C++。
- 類和繼承的概念:C++中的類和繼承機制受到了Simula 67的直接影響,這些特性使得C++能夠有效地進行資料抽象和程式碼複用。
- 程式組織方式:C++的設計意圖是將Simula的程式組織方式與C在系統程式設計方面的效率和靈活性結合起來。
綜上所述,Simula 67在C++的發展中扮演了重要的角色,它不僅為C++提供了物件導向的概念基礎,還影響了C++的設計理念和語言特性的形成。
2017年期末卷(陳家駿教授班)
1.什麼是物件導向程式設計?
物件導向程式設計(Object-Oriented Programming,OOP)是一種程式設計正規化,它使用“物件”來設計應用程式和計算機程式。這些物件代表現實世界中的實體,並且包含資料(屬性)和處理資料的程式碼(方法)。物件導向程式設計的主要概念包括:
-
物件(Object):物件是物件導向程式設計的基本單元,它由資料和操作這些資料的方法組成。在現實世界中,物件可以是任何事物,比如人、汽車、書籍等。
-
類(Class):類是物件的藍圖或模板,它定義了一組屬性和方法,這些屬性和方法可以被類的物件(例項)所共享。類描述了物件的共同特性和行為。
-
封裝(Encapsulation):封裝是將資料(屬性)和運算元據的方法(行為)捆綁在一起的過程。它還隱藏了物件的內部狀態和實現細節,只暴露有限的介面供外部訪問,從而保護物件的完整性。
-
繼承(Inheritance):繼承是一種建立新類的方式,新類(子類)可以繼承一個或多個現有類(父類或超類)的屬性和方法。這支援程式碼的重用,並允許建立類之間的層次結構。
-
多型(Polymorphism):多型性是指物件可以有多種形式的能力。在物件導向程式設計中,多型性允許不同類的物件對同一訊息做出響應,或者允許一個介面用於不同的底層形式。這通常透過方法過載和方法覆蓋實現。
-
抽象(Abstraction):抽象是將複雜的現實世界簡化為基本特徵的過程,以便更容易理解和操作。在物件導向程式設計中,抽象允許開發者專注於物件的外部行為,而不是其內部實現。
物件導向程式設計的優點包括:
- 程式碼重用:透過繼承和多型性,可以重用程式碼,減少重複勞動。
- 模組化:程式碼被組織成模組(物件),這使得維護和擴充套件程式碼更加容易。
- 易於維護:由於封裝和模組化,修改程式碼的一部分通常不會影響其他部分。
- 可讀性:物件導向程式碼通常更接近自然語言,因此更易於理解和閱讀。
物件導向程式設計被廣泛應用於現代軟體開發中,因為它提供了一種自然的方式來模擬和解決複雜問題。