面向過程和麪向對象的區別
面向對象是相對於面向過程而言的,在早期編程中,比如實現1+2+3=6.
通過設計一個簡單的算法就能實現。
隨着計算機技術的不斷提高,計算機被用於解決越來越複雜的問題。一切事物皆對象,通過面向對象的方式,將現實世界的事物抽象成對象,現實世界中的關係抽象成類、繼承,幫助人們實現對現實世界的抽象與數字建模。通過面向對象的方法,更利於用人理解的方式對複雜系統進行分析、設計與編程。
對象的含義是指具體的某一個事物,即在現實生活中能夠看得見摸得着的事物。在面向對象程序設計中,對象所指的是計算機系統中的某一個成分。在面向對象程序設計中,對象包含兩個含義,其中一個是數據,另外一個是動作。對象則是數據和動作的結合體。對象不僅能夠進行操作,同時還能夠及時記錄下操作結果。
比如人類的描述:
屬性:姓名,身高,體重,膚色,性別,等等
行爲:十月懷胎,喫飯,上廁所等等
符合上述描述的,可以稱之爲類,類:就是類別,類別,一類事物的統稱,抽象概念,類並不存在。
而對象則是:類的實例(實實在在的案例)
上述描述說明在面向對象編程時候需要先創建類,再對類進行實例化生成對象。
python中如何創建類和對象
"""
python中定義一個類,使用class關鍵字
class 類名稱 類的命名規範:大駝峯法
潛規則
"""
# 直接這樣定義一個類
# class User:
class User(object):
# 定義類的屬性(靜態的特徵)
# 覆蓋(重新)__init__方法
def __init__(self):
#類的成員變量
self.name = "波波哥"
self.age = "20"
self.gender = "男"
self.email = "[email protected]"
#定義了類的屬性,還可以定義類的行爲
def study(self):
print("study python")
print("閉門之中,請勿打擾!")
def eat(self,food):
print("我的名字是{},今年{},愛喫{}".format(self.name,self.age,food))
由上,一個簡單的類就創建好了。下面就對類進行實例化。
if __name__ == '__main__':
#創建對象
u1 = People()
'''
##調用對象的屬性
print(u1.name)
print(u1.age)
print(u1.gender)
print(u1.email)
#調用對象的方法
u1.study()
u1.eat("油潑辣子面")
'''
u1.name = "柳下惠"
u1.age = 25
u1.gender = "男"
u1.study()
u1.eat("饅頭")
上面通過類生成對象u1,調用類中的屬性和方法,也可以修改類中的屬性。
上述代碼執行的結果是,注意觀察未註釋部分:
上面可以看到,是先對類的屬性進行了固定,下面再對類的屬性進行修改,下面採用生成對象時候傳入參數而創建對象。
# -*- coding: utf-8 -*-
class Cat:
def __init__(self,name,age,color,gender):
self.name = name
self.age = age
self.color = color
self.gender = gender
def sperk(self):
print("喵喵喵,嗷嗷嗷!!我是{}".format(self.name))
if __name__ == '__main__':
c1 = Cat("建宏",20,"黑色","公")
print(c1.name)
c1.sperk()
代碼執行結果,將創建對象時候傳入的參數來生成對象。
在創建類的時候要注意什麼纔是這個類唯一的屬性?
比如,圓類的屬性應該是什麼呢?我覺得屬性是半徑R比較合適,方法可以寫輸出圓的周長,面積等。
可以寫爲如下:
# -*- coding: utf-8 -*-
import math
class Circle:
def __init__(self,r):
self.r = r
def get_area(self):
return self.r*self.r*math.pi
def get_cal(self):
return 2*self.r*math.pi
if __name__ == '__main__':
radius = float(input("請輸入圓的半徑"))#還可以加上對輸入的值進行判斷是否大於0.
r1 = Circle(radius)
print("該圓的周長是{:.3f}".format(r1.get_cal()))
print("該圓的面積是{:.3f}".format(r1.get_area()))#{:.3f}進行格式化輸出,保留三位小數
執行結果。
今天的面向對象分享就到這裏,你可以嘗試着練習下面這些題目:
1、定義一個圓類(Circle),求圓的面積和周長
2、定義一個三角形類(Strange),屬性是三邊的長度,求三角形的面積和周長
3.創建一個學員類(Student),並設計三個字段用於表示學生的成績
(語文、數學、英語);然後定義一個列表list表示一個班
的學生(10人),依次輸入每個學生的信息和成績,輸入
的同時將學員的每科成績劃分等級(100-90:A 89-80:
B 79-70:C 69-60:D 60以下:E)最後輸出所有學員的
信息
4.編一個關於求多個某門功課總分和平均分的程序。
1.每個學生信息包括姓名和某門功課成績。
2.假設5個學生。
3.類和對象的處理要合理
5.設計一個遊戲角色類
字段:角色名、血量、魔法、狀態
方法:釋放技能 被傷害
要求:設計要合理
答案可參考點這裏