1.1 抽象過程
1.所有編程語言都提供抽象編程機制。
2.人們所能夠解決的問題的復雜性直接取決於抽象的類型(所抽象的是什麼)和質量。
3.“命令式”語言(basic,c等)都是對匯編語言的抽象,但是仍然要求解決問題時依賴計算機的結構,程序員必須建立起在機器模型(如計算機)和實際待解決問題(例如一項業務)之間的關聯。
4.對機器建模的方式就是只針對待解問題建模。如 lisp和apl,只能解決某個特定問題。
5.面向對象方式則通過向實際待解問題提供表示問題元素的工具而更進一步。這種表示方式非常通用,不會局限於特定問題。我們將實際待解問題中的元素在機器模型中的表示叫做“對象”。這種思想的實質就是:通過添加新類型的對象來使自己適應於某個特定問題。
歸納:編程語言的演變實質上是人們利用計算機解決實際問題的思維演變。
1.2 對象的基本特性
1.萬物皆為對象
2.程序是對象的集合,他們同於發送消息來告知彼此所要做的。
3.每個對象都有自己的由其他對象所構成的存儲。
4.每個對象都擁有其類型。
5.某一特定類型的所有對象都可以接受同樣消息。
對象的描述:對象具有狀態(內部數據)、行為(方法)和標識(彼此區分)。
1.3 每個對象都有一個接口
類:描述了具有相同特性(數據元素)和行為(功能)的對象集合。實際上就是一種數據類型。
(對象)類 解決了實際問題元素如何在機器模型中如何表示的問題。
要解決問題,就得按照一定的方法操作對象(實際問題元素),而請求的方法是什麼?這個則由接口來定義。接口確定了對某一個特定對象所能發出的請求。決定接口的便是類型。
例如:我們可以將男人和女人都以人的類型在機器模型中表示。而人這個類型決定了其接口可以定義:吃飯,思考這樣的請求方法。
1.4 繼承
1.類型不僅描述了作用於一個對象集合上的約束條件,同時還有與其他類型之間的關系。比如:子類繼承父類。
2補充:類:數據元素+方法+相互關系
1.5 多態
1.把一個對象不當做它所屬的特定類型來對待,而是將其當做其基類的對象對待。這使得人們編寫出不依賴特定類型的代碼。
2.當一個對象發送消息時,即使涉及向上轉型該對象也知道要執行什麼樣的正確行為。
總結:面向對象的思想就是萬物皆為對象,將實際問題中的元素以對象的形式在計算機中表示,通過對對象的歸納劃分不同的類型,根據具體類型定義對應的接口。