資源描述:
《《類與對象的定義》PPT課件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、面向?qū)ο蟪绦蛟O(shè)計清華大學計算機科學與技術(shù)系徐明星、黃震春、姚海龍2012春[VI-A017,III-1204]1OOP從認識“對象”開始......對象,是對現(xiàn)實世界中實際存在事物的抽象描述,它可以是有形的,也可以是無形的(1)對象具有自己的靜態(tài)特征和動態(tài)特征靜態(tài)特征——可以用某種數(shù)據(jù)來描述的特征;動態(tài)特征——對象表現(xiàn)的行為或具有的功能。(2)對象是由一組屬性數(shù)據(jù)和對這些數(shù)據(jù)進行特定操作的一組服務(wù)所構(gòu)成的“結(jié)合體”(概念)。封裝={屬性/數(shù)據(jù),服務(wù)/函數(shù)}2數(shù)據(jù),到底是什么?——看看數(shù)學家怎么說(1)
2、…在數(shù)學上,“數(shù)據(jù)”不僅有值,而且限定了在值上的操作規(guī)范(約束)和性質(zhì)。程序設(shè)計語言中的“類型”的概念與此相似,如“整數(shù)相除得整數(shù)”:3/4=0。數(shù)據(jù),到底是什么?——看看數(shù)學家怎么說(2)…數(shù)據(jù),到底是什么?——看看程序員怎么說…類型=數(shù)據(jù)的存儲與表示+數(shù)據(jù)支持的操作封裝的“裝”——數(shù)據(jù)抽象對象——從程序語言角度看一個獨立的、有約束的的實體,既有自己的狀態(tài)記憶(數(shù)據(jù)成員),又有活動能力(函數(shù)成員)。封裝使程序在描述數(shù)據(jù)的同時,能描述數(shù)據(jù)參與的運算和提供的功能,實質(zhì)是引入了一個新的類型。數(shù)據(jù)+函數(shù)——
3、從設(shè)計思想上看封裝(數(shù)據(jù)+函數(shù))是OOP的基本特征有計算能力的數(shù)據(jù),是對原先僅表示數(shù)值的“數(shù)據(jù)”這個概念的更抽象認識,即“抽象的數(shù)據(jù)”。6用結(jié)構(gòu)struct將變量定義(屬性)和函數(shù)定義(操作)包含到一起,使屬性與操作不僅在邏輯上是一個整體,而且在物理上也是一個整體。如下例中數(shù)據(jù)Name與操作show():文件前后的條件編譯選項,是為了允許頭文件被重復(fù)包含。#ifndef__STUDENT_H__#define__STUDENT_H__structStudent{charName[20];voidsho
4、w();};#endif//__STUDENT_H__#ifndef__PERSON_H__#define__PERSON_H__structPerson{charName[20];voidshow();};#endif//__PERSON_H__7C++如何進行“封裝”?#include"person.h"#includeusingnamespacestd;voidPerson::show(){cout<<"Name:"<5、lude"student.h"#includeusingnamespacestd;voidStudent::show(){cout<<"Name:"<6、#include//strcpyintmain(){PersonmanA,manB;strcpy(manA.Name,"ZhangSan");strcpy(manB.Name,"LiSi");manA.show();manB.show();Students1,s2;//變量到使用前才定義它們strcpy(s1.Name,"WangWu");strcpy(s2.Name,"ZhaoLiu");s1.show();s2.show();return0;}9電子計價器10電子計價器1.0(F
7、OP版)11電子計價器2.0(OOP版)——設(shè)計思路與步驟確定屬性——保存什么數(shù)據(jù)蘋果的價格,香蕉的價格蘋果的重量,香蕉的重量總錢數(shù)確定服務(wù)——提供什么功能(函數(shù))設(shè)置價格(蘋果香蕉分開設(shè)?一起設(shè)?)設(shè)置重量(蘋果香蕉分開設(shè)?一起設(shè)?)計算總價顯示總價(指計價器顯示屏上顯示的總價)1213分析原算法的流程計算任務(wù)如何執(zhí)行(完成)?——發(fā)送消息給對象intmain(){calcwxr_calc2;wxr_calc2.set_prices(3.5,4.2);wxr_calc2.set_weights();
8、wxr_calc2.how_much();return0;}14消息對象向?qū)ο蟀l(fā)消息,要求完成指定的任務(wù)#include//預(yù)編譯命令usingnamespacestd;structcalc{///計價器中存儲的數(shù)據(jù)floatApplePrice,BananaPrice;floatAppleWeight,BananaWeight;floatTotal;///計價器提供的操作方法與功能voidset_prices(float,float