一、面向過程的思想和面向對象的思想
面向對象和面向過程的思想有著本質上的區(qū)別,作為面向對象的思維來說,當你拿到一個問題時,你分析這個問題不再是第一步先做什么,第二步再做什么,這是面向過程的思維,你應該分析這個問題里面有哪些類和對象,這是第一點,然后再分析這些類和對象應該具有哪些屬性和方法。這是第二點。最后分析類和類之間具體有什么關系,這是第三點。
面向對象有一個非常重要的設計思維:合適的方法應該出現(xiàn)在合適的類里面
二、簡單理解面向對象
就是在程序里面首先分解出來的應該是注意不再是一步一步的過程了,而是首先考慮在這個問題域里面或者程序里面應該具有有哪些對象,所以從現(xiàn)在開始考慮任何問題腦子里不要再想著我實現(xiàn)這件事我第一步應該干什么,第二步應該干什么,如果這樣想,那就是面向過程的思維了。面向對象的思維是,當我碰到這個問題域的時候,碰到這個程序的時候,我首先應該把這個問題里有哪些對象,對象與對象之間有什么關系抽象出來。
三、面向對象的設計思想
面向對象的基本思想是,從現(xiàn)實世界中客觀存在的事物出發(fā)來構造軟件系統(tǒng),并在系統(tǒng)的構造中盡可能運用人類的自然思維方式。
面向對象更加強調運用人類在日常生活的邏輯思維中經常采用的思想方法與原則,如抽象、分類,繼承、聚合、多態(tài)等。
人在思考的時候,首先眼睛里看到的是一個一個的對象。
四、對象和類的概念
對象是用于計算機語言對問題域中事物的描述,對象通過“屬性(attribute)”和“方法(method)”來分別對應事物所具有的靜態(tài)屬性和動態(tài)屬性。
類是用于描述同一類的對象的一個抽象的概念,類中定義了這一類對象所具有的靜態(tài)屬性和動態(tài)屬性
類可以看成一類對象的模板,對象可以看成該類的一個具體實例。
eg.什么叫瓶子?
瓶子的定義:具有某些類特征的東西就是瓶子,比分說什么樣的形狀,比方說有個口,能倒水,能裝水,一般有個蓋等等。給瓶子下定義的過程,其實就是把瓶子里的某些東西抽象出來了,所以瓶子在這里是叫做一類事物的一個抽象,在你腦子里有瓶子的概念,可瓶子的概念在你腦子里到底是什么呢?瓶子的概念在你腦子里叫做一類事物的一個抽象。怎么抽象的呢?你往往抽象的是這兩個方面:第一個方面我們叫它靜態(tài)的屬性,瓶子應該具有哪些特征,比分說瓶子應有個口,這是它的具有的一個靜態(tài)屬性,瓶子一般有一個蓋,這也是它的具有一個靜態(tài)屬性,除此之外,你還可能給它總結動態(tài)的屬性,什么動態(tài)的屬性呢?比放說瓶子能倒水,這是它的動態(tài)屬性。瓶子這個概念在你腦子里如果你細細的思維的話,其實你給它做了兩方面的總結,一方面是靜態(tài)的,一方面是動態(tài)的。反映到JAVA的類上,一個就是成員變量(靜態(tài)屬性),一個就是方法(動態(tài)屬性)方法是可以執(zhí)行的,可以動的。成員變量是某一個類的靜態(tài)屬性。所以你腦子里瓶子的概念實際上是一類事物的一個抽象,這種東西我們叫它類,椅子是類,桌子是類,學生是類。什么是對象呢?這一類事物的具體的某個實例就叫做對象。所以一類事物的具體的某一個東西,符合這類事物具體的特征的某個東西就叫做對象。瓶子是一個類,某個瓶子就是瓶子這個類里面的一個對象。
六、類(對象)之間的關系
? ? ?一.關聯(lián)關系(最弱的一種關系)
? ? ?二.繼承關系(比較強的一種關系)
? ? ?三.聚合關系(整體和部分)(比較強的一種關系)
? ? ?四.實現(xiàn)關系
? ? ? 五.多態(tài)
七、Java與面向對象

整個類可以看作是靜態(tài)的屬性還有方法他們之間的一個綜合。怎么抽象出一個類的概念,還是那句話,你必須抽象出兩個方面來,第一方面是看他們的靜態(tài)屬性,他們有哪些成員變量,第二方面是看他們的有哪些方法。
寫JAVA程序時,我們一上來寫的就是public class(聲明一個類),在這個class里面我們寫的是成員變量和方法。
每一個JAVA里面的class(類)都對應了我們現(xiàn)實生活中某一類事物的一個抽象。比如說要在JAVA里面封裝一只狗,具體怎么封裝,如何寫代碼,代碼如下:


八、為什么使用面向對象編程?
面向對象編程:一組對象互相配合通過溝通完成特定功能
做軟件苦苦追求的一種境界是可重用性(reusable),可擴展性。如果是面向過程,一般情況是屬性和方法它們是分開的,他們不是聚合的關系,不是合在一起的,這樣要復用起來比較麻煩,復用的層次只是局限于方法這個層次上,而面向對象則不同,它是把屬性和方法綜合在一個里面。綜合在一起復用的時候是整個對象進行復用。所以面向對象和面向過程相比,前者更加容易讓我們達到可重用性。