天天看點

軟體構造期末總結第三章

3.1Data Type and Type Checking

Static vs. dynamic data types 靜态和動态資料類型

軟體構造期末總結第三章

可變性和不可變性

final 變量能被顯式地初始化并且隻能初始化一次。不變資料類型,一旦被建立,值不可修改;

基本類型及其封裝對象類型都是不可變的;

不可變的引用是指一旦指定引用位置後,不可再次指定。

不變對象:一旦被建立,始終指向同個值/引用

可變對象:擁有方法以修改自己的值/引用

3.2 Designing Specification

規約的結構:前置條件與後置條件

規約評價的三個标準:規約的确定性,規約的陳述性,規約的強度

規約的确定性:給定一個滿足前置條件的輸入,其輸出是唯一的、明确的

3.3 Abstract Data Type (ADT)

ADT的基本概念:抽象資料類型ADT是指一個數學模型以及定義在該模型上的一組操作;即包括資料資料元素,資料關系以及相關的操作。

ADT的四種類型:

Creators(構造器):建立某個類型的新對象,⼀個建立者可能會接受⼀個對象作為參數,但是這個對象的類型不能是它建立對象對應的類型。可能實作為構造函數或靜态函數。

Producers(生産器):通過接受同類型的對象建立新的對象。

Observers(觀察器):擷取抽象類型的對象然後傳回一個不同類型的對象/值。

Mutators(變值器):改變對象屬性的方法 ,變值器通常傳回void,若為void,則必然意味着它改變了對象的某些内部狀态;當然,也可能傳回非空類型 。

學會設計和測試ADT。

3.4 Object-Oriented Programming (OOP)

對象:對象是類的一個執行個體,有狀态和行為。

類:類是一個模闆,它描述一類對象的行為和狀态。

接口:接口在JAVA程式設計語言中是一個抽象類型,用于設計和表達ADT的語言機制,其是抽象方法的集合,接口通常以interface來聲明。

抽象類:抽象類除了不能執行個體化對象之外,類的其它功能依然存在,成員變量、成員方法和構造方法的通路方式和普通類一樣

OOP核心思想:封裝,繼承,多态。

封裝:讓抽象的事物保護自身的狀态,防止非其他事物對其進行錯誤的狀态改變操作,對我們抽象完的每個事物進行自身資料的保護。

繼承:讓抽象出來的事物具有本應該具有的聯系。我們能用類來描叙一個抽象的事物,同時能用對象來描叙具體的事物,但是這些事物都是獨立的,彼此之間沒有應該有的聯系,這樣的孤立設計并不符合現實邏輯,讓事物之間的聯系得到描叙,我們就需要繼承,讓我們用繼承的關系把這兩個現實的抽象聯系起來,這樣我們就能設計出不孤立的類,而是和其他類有聯系的類。

多态:用一種解決方案來解決對一類問題,對于不同的事物解決途徑和結果不同。

3.5 Equality in ADT and OOP

等價性equals(),hashCode(),不可變類型的等價性,可變類型的等價性,觀察等價性,行為等價性