1. 程式人生 > >面向物件程式設計介紹,類和物件

面向物件程式設計介紹,類和物件

想一想
請用程式描述如下事情:

A同學報道登記資訊
B同學報道登記資訊
C同學報道登記資訊
A同學做自我介紹
B同學做自我介紹
C同學做自我介紹
stu_a = {
“name”:“A”,
“age”:21,
“gender”:1,
“hometown”:“河北”
}
stu_b = {
“name”:“B”,
“age”:22,
“gender”:0,
“hometown”:“山東”
}
stu_c = {
“name”:“C”,
“age”:20,
“gender”:1,
“hometown”:“安徽”
}
def stu_intro(stu):
“”“自我介紹”""
for key, value in stu.items():
print(“key=%s, value=%d”%(key,value))

stu_intro(stu_a)
stu_intro(stu_b)
stu_intro(stu_c)
考慮現實生活中,我們的思維方式是放在學生這個個人上,是學生做了自我介紹。而不是像我們剛剛寫出的程式碼,先有了介紹的行為,再去看介紹了誰。
用我們的現實思維方式該怎麼用程式表達呢?
stu_a = Student(個人資訊)
stu_b = Student(個人資訊)
stu_c = Student(個人資訊)
stu_a.intro()
stu_b.intro()
stu_c.intro()
面向過程:根據業務邏輯從上到下寫程式碼
面向物件:將資料與函式繫結到一起,進行封裝,這樣能夠更快速的開發程式,減少了重複程式碼的重寫過程
面向過程程式設計最易被初學者接受,其往往用一長段程式碼來實現指定功能,開發過程的思路是將資料與函式按照執行的邏輯順序組織在一起,資料與函式分開考慮。

今天我們來學習一種新的程式設計方式:面向物件程式設計(Object Oriented Programming,OOP,面向物件程式設計)

1)解決菜鳥買電腦的故事

第一種方式:

1)在網上查詢資料

2)根據自己預算和需求定電腦的型號 MacBook 15 頂配 1W8

3)去市場找到蘋果店各種店無法甄別真假 隨便找了一家

4)找到業務員,業務員推薦了另外一款 配置更高價格便宜,也是蘋果系統的 1W

5)砍價30分鐘 付款9999

6)成交

回去之後發現各種問題

第二種方式 :

1)找一個靠譜的電腦高手

2)給錢交易

面向物件和麵向過程都是解決問題的一種思路而已

買電腦的第一種方式:

強調的是步驟、過程、每一步都是自己親自去實現的
這種解決問題的思路我們就叫做面向過程
買電腦的第二種方式:

強調的是電腦高手, 電腦高手是處理這件事的主角,對我們而言,我們並不必親自實現整個步驟只需要呼叫電腦高手就可以解決問題
這種解決問題的思路就 是面向物件
用面向物件的思維解決問題的重點

當遇到一個需求的時候不用自己去實現,如果自己一步步實現那就是面向過程
應該找一個專門做這個事的人來做
面向物件是基於面向過程的
2)解決吃啤酒鴨的問題

第一種方式(面向過程):

1)養鴨子

2)鴨子長成

3)殺

4)作料

5)烹飪

6)吃

7)卒

第二種方式(面向物件):

1)找個賣啤酒鴨的人

2)給錢 交易

3)吃

4)胖6斤

需要了解的定義性文字:

面向物件(object-oriented ;簡稱: OO) 至今還沒有統一的概念 我這裡把它定義為: 按人們 認識客觀世界的系統思維方式,採用基於物件(實體) 的概念建立模型,模擬客觀世界分析、設 計、實現軟體的辦法。

面向物件程式設計(Object Oriented Programming-OOP) 是一種解決軟體複用的設計和程式設計方法。 這種方法把軟體系統中相近相似的操作邏輯和操作 應用資料、狀態,以類的型式描述出來,以物件例項的形式在軟體系統中複用,以達到提高軟體開發效率的作用。

面向物件程式設計的2個非常重要的概念:類和物件

物件是面向物件程式設計的核心,在使用物件的過程中,為了將具有共同特徵和行為的一組物件抽象定義,提出了另外一個新的概念——類

類就相當於製造飛機時的圖紙,用它來進行建立的飛機就相當於物件


  1. 人以類聚 物以群分。
    具有相似內部狀態和運動規律的實體的集合(或統稱為抽象)。
    具有相同屬性和行為事物的統稱
    類是抽象的,在使用的時候通常會找到這個類的一個具體的存在,使用這個具體的存在。一個類可以找到多個物件

在這裡插入圖片描述

  1. 物件
    某一個具體事物的存在 ,在現實世界中可以是看得見摸得著的。

可以是直接使用的
在這裡插入圖片描述

  1. 類和物件之間的關係

小總結:類就是建立物件的模板

  1. 練習:區分類和物件
    賓士汽車 類
    賓士smart 類
    張三的那輛賓士smart 物件
    狗 類
    大黃狗 類
    李四家那隻大黃狗 物件
    水果 類
    蘋果 類
    紅蘋果 類 紅富士蘋果 類
    我嘴裡吃了一半的蘋果 物件
  2. 類的構成
    類(Class) 由3個部分構成

類的名稱:類名
類的屬性:一組資料
類的方法:允許對進行操作的方法 (行為)
<1> 舉例:
1)人類設計,只關心3樣東西:

事物名稱(類名):人(Person)
屬性:身高(height)、年齡(age)
方法(行為/功能):跑(run)、打架(fight)
2)狗類的設計

類名:狗(Dog)
屬性:品種 、毛色、性別、名字、 腿兒的數量
方法(行為/功能):叫 、跑、咬人、吃、搖尾巴
在這裡插入圖片描述

  1. 類的抽象
    如何把日常生活中的事物抽象成程式中的類?

擁有相同(或者類似)屬性和行為的物件都可以抽像出一個類

方法:一般名詞都是類(名詞提煉法)

<1> 坦克發射3顆炮彈轟掉了2架飛機
坦克–》可以抽象成 類
炮彈–》可以抽象成類
飛機-》可以抽象成類
<2> 小明在公車上牽著一條叼著熱狗的狗
小明–》 人類
公車–》 交通工具類
熱狗–》 食物類
狗–》 狗類
<3>【想一想】如下圖中,有哪些類呢?
在這裡插入圖片描述

說明:



子彈
手榴彈
刀子
箱子
<4>【想一想】如下圖中,有哪些類呢?
在這裡插入圖片描述

說明:

向日葵
類名: xrk
屬性:
行為: 放陽光
豌豆
類名: wd
屬性: 顏色 、髮型,血量
行為:發炮, 搖頭
堅果:
類名:jg
屬性:血量 型別
行為:阻擋;
殭屍:
類名:js
屬性:顏色、血量、 型別、速度
行為:走 跑跳 吃 死