一、面對對象編程:是一種程序設計範型,同時也是一種程序開發的方法,實現OOP的程序但願可以在程序中包含各類獨立而又相互調用的對象,每個對象又都應該可以接受數據、數據處理並將數據傳達給其餘對象,所以每個對象均可以被當作一個小型的機器,而整個程序塊系統就是由這些小的機器相互協助、組合構建起來的。java
二、面向對象分析:即根據抽象關鍵的問題域來分解系統。python
三、面向對象設計:是一種提供符號設計系統的面向對象的實現過程,它用很是接近時機領域屬於的方法把系統構形成現實世界的對象。c++
類(class)告訴python建立新類型的東西算法
對象(object):兩個意思,即最基本的東西,或者某樣東西的實例編程
對象(object):是數據和操做數據方法的結合。對象之間的通訊:對象之間進行通訊的結構叫作消息,當一個消息發送給某個對象時,應該包含如下幾種信息:數據結構
1)接收消息的對象名(目的對象名);2)接受消息去執行某種操做的信息(調用方法名);3)發送給該對象參數,參數可使改對象有的變量名,或者是誰有對象都知道搜的全局變量名;4)發送給該對象的消息名(源消息名)app
類(class):對象的抽象是類,類的具體個性化就是對象。函數
類的結構關係:1)通常/具體結構稱爲分類結構,也能夠說是is-a關係。用來描述在繼承中子類與父類的關係,即一個派生類的實例化對象是其父類的一個例子,因此是is-a關係;2)總體與部分結構稱爲組裝結構,他們之間的關係是has a關係。組合是實現繼承的方式之一,在組合繼承中,一個子類能夠有多個父類,即一個子類has a 一個父類。設計
面向對象的三要素:對象
一、封裝:概念:描述了對數據信息進行隱藏的觀念,它對數據屬性提供接口(接口函數)和訪問方法。在類的設計時,微數據提供此相應的接口,一面向客戶程序經過不規範的操做來存取封裝的屬性。
咱們通常用語法「def」定義封裝內部的函數,以前認知是「程序 = 數據結構 + 算法」,加上簡單的封裝後,能夠理解爲「程序 = 對象 + 消息」。
二、繼承:概念:繼承令不一樣類之間擁有了必定的結構與關係。
類之間的關係:1)經過繼承建立的新類稱爲「子類」或「派生類」;2)被繼承的類稱爲「基類」、「父類」或「超類」。
特有名詞概念:1)泛化:表示全部子類與其父類及祖先類有着同樣的特色;
2)特化:描述全部的子類的自定義,也就是說,什麼屬性讓它與其父類一同;
3)實現繼承的方式:能夠經過繼承和組合來實現,其中繼承又有實現繼承和可視繼承,組合又有接口繼承和純虛類;
4)實現繼承:子類的屬性和方法徹底繼承與父類;
5)可視繼承:子類繼承父類的外觀方法;
6)接口繼承:子類的屬性名和方法名繼承於父類,可是具體的屬性值和方法實現由子類重寫;
7)多重繼承:即組合繼承,在java和c++中使用接口概念來實現多重繼承的效果,而python中定義類的時候,能夠直接繼承多個父類來實現多重繼承。在實現多重繼承時,若是繼承的多個父類中均有名稱相同的方法時,須要注意繼承的順序。
三、多態:概念:指出了不一樣對象如何經過他們共同的屬性動做來操做以及訪問,而不須要考慮他們的具體的類,多態代表了動態綁定(運行時)的存在,容許重載及運行時類型肯定的驗證。
多態的做用:實現接口的重用,保證了在類發生繼承或派生時,咱們仍然能正確調用這些相關類的實例化對象的屬性和方法。
1、設計一個三維向量類,並實現向量的加法、減法以及向量與標量的乘法和除法:
class vector3: def __init__(self, x_ = 0, y_ = 0, z_ = 0): self.x = x_ self.y = y_ self.z = z_ def __add__(self, obj): return vector3(self.x+obj.x, self.y+obj.y, self.z+obj.z) def __sub__(self, obj): return vector3(self.x-obj.x, self.y-obj.y, self.z-obj.z) def __mul__(self, obj): return vector3(self.x*obj.x, self.y*obj.y, self.z*obj.z) def __pow__(self, obj): return vector3(self.y*obj.z-obj.y*self.z, self.z*obj.x-self.x*obj.z, self.x*obj.y-obj.x*self.y) def __str__(self): return str(self.x)+','+str(self.y)+','+str(self.z) v1 = vector3(1, 2, 3) v2 = vector3(0, 1, 2) print (v1 + v2) print (v1 - v2) print (v1 * v2) print (v1 ** v2)
2、編寫一個程序(類),用戶輸入一段英文,而後輸出這段英文中全部長度爲3個字母的單詞,而且若是單詞有連續重複了2次,只輸出一個:
import re a=[] words=input("Input the words:") l=re.split('[\. ]+',words) i=0 for i in l: if len(i)==3: if i not in a: a.append(i) else: continue for k in range(0,len(a)): print(a[k],end=' ')