- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章定义类别.PDF
第10章 定義類別
第10章 定義類別
(1) 物件簡介
(1) 物件簡介
- 物件(Object) :
* 物件是一種主動式資料型態,知道某些事情而且可以做某些事情。物件包含:
# 相關的資訊
# 一組操作(Operation) ,能處理這些資訊
* 物件的資訊儲存在物件的實例變數(Instance variable) 中
* 物件的操作是透過定義在物件之中的函式(Function) ,亦稱為方法(Method)
* 每個物件都是某個類別(Class) 的一個實例(Instance) ,類別決定了一個物件會有哪些
特性(Attribute) ,也就說明了該物件知道什麼以及能做什麼
* 一個新物件是透過呼叫一個建構子(Constructor)來產生,就像工廠裡使用一個模具
來產生許多產品一樣
* 例如:以下指令產生一個新的圓物件
myCircle = Circle(Point(0, 0), 20)
# 其中 Circle 是類別名稱,用來呼叫建構子產生新的實例物件,然後將物件的參考
設定給 myCircle 變數
# 產生實例後,就可以呼叫它的方法來操作此物件
myCircle.draw(win)
myCircle.move(dx, dy)
...
(2) 利用類別來進行資料處理
(2) 利用類別來進行資料處理
- 物件用於將描述一件物體、一件事、或一個人的許多資訊組合起來
- 例如:大學課程
* 學生在大學所修習的課程,包含下列資訊:
# 該課程的學分數(Credits)
# 成績等級(Grade) :分為A 、B 、C 、 、及F 共 5 個等級
# 等級點數(Point) :A 、B 、C 、 、F 分別為4 、3 、2 、1 、0 點
# 平均等級點數(Grade point average, GPA) :將各門課程所得等級乘以點數,加總
後再除以總學分數
* 假設使用一個資料檔來紀錄學生的分數資訊,每一行包含學生姓名、學分點數、
分數等級,此3 項資料以定位鍵間隔,例如 students.dat :
張三 127 228
李四 100 400
王五 18 41.5
趙六 48.5 155
陳七 37 125.33
* 我們所要做的是:撰寫一個程式讀入這些資訊,找出GPA 最高的學生姓名、學分
數、及其 GPA
* 第一件事:建立學生類別
cla Student:
def __init__(self, name, credits, points):
self.name = name
self.credits = float(credits)
10-1
self.points = float(points)
# 使用 float()讓 credits 及 point 的型態彈性更大:可以是整數、實數、甚至字串
* 接著產生學生物件(利用物件可以將有關一個學生的許多資訊都存在一個變數中)
aStudent = Student('張三', 127, 228)
* 然後,決定學生物件應該需要哪些方法,很顯然的,我們需要讀取學生的各項資
訊並且計算 GPA :
def getName(self):
return self.name
def getCredits(self):
return self.credit
def getPoints(self):
return self.point
def gpa(self):
return self.points/self.credit
* 最後解決問題的虛擬程式碼:
Get the file name from the user
Open the file for reading
Set best to be the first student
For ea
文档评论(0)