面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第1頁
面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第2頁
面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第3頁
面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第4頁
面向?qū)ο蟪绦蛟O(shè)計(jì)概述_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

面向?qū)ο蟪绦蛟O(shè)計(jì)C++主講教師:邵蘭潔辦公地點(diǎn):F103電子郵箱:shlj789@163.com(答疑郵箱)公共郵箱:homeworkcpp@163.COM郵箱密碼:beifang(“北方”的漢語拼音)(放與課程相關(guān)的資料、課后作業(yè)等)面向?qū)ο蟪绦蛟O(shè)計(jì)C++課程性質(zhì):專業(yè)基礎(chǔ)課(考試課)學(xué)時(shí)數(shù):64學(xué)時(shí)(其中上機(jī)32學(xué)時(shí))

學(xué)分?jǐn)?shù):4學(xué)分面向?qū)ο蟪绦蛟O(shè)計(jì)C++所用教材:《C++程序設(shè)計(jì)》參考資料:1.《C++程序設(shè)計(jì)上機(jī)指導(dǎo)與補(bǔ)充習(xí)題》(電子版)

2.《高質(zhì)量C++/C編程指南》林銳(電子版)3.《C++面向?qū)ο蟪绦蛟O(shè)計(jì)》郭有強(qiáng)等編著,清華大學(xué)出版社,2009年。(PPT課件)面向?qū)ο蟪绦蛟O(shè)計(jì)C++參考資料:4.《C++編程思想》第1卷(第2版):標(biāo)準(zhǔn)C++導(dǎo)引

(美)BruceEckel著劉宗田等譯機(jī)械工業(yè)出版社5.《C++編程思想》第2卷:實(shí)用編程技術(shù)

(美)BruceEckel、ChuckAllison著刁成嘉等譯機(jī)械工業(yè)出版社面向?qū)ο蟪绦蛟O(shè)計(jì)C++參考資料:6.《全國計(jì)算機(jī)等級(jí)考試二級(jí)C++程序設(shè)計(jì)--考點(diǎn)精講例題解析強(qiáng)化訓(xùn)練》.全國計(jì)算機(jī)等級(jí)考試命題研究組.7.《全國計(jì)算機(jī)等級(jí)考試二級(jí)教程--C++語言程序設(shè)計(jì)》教育部考試中心.面向?qū)ο蟪绦蛟O(shè)計(jì)C++上機(jī)時(shí)間:

08軟件:每周四5,6節(jié)(1-16周)08計(jì)科:每周四7,8節(jié)(1-16周)

上機(jī)地點(diǎn):08軟件:A411+A30908計(jì)科:A310+A313

面向?qū)ο蟪绦蛟O(shè)計(jì)C++成績?cè)u(píng)定:總成績=平時(shí)(20%)+期中(10%)+大作業(yè)(10%)+期末(60%)

平時(shí):包括考勤(10%)+作業(yè)(10%)

期中考試:上機(jī)考試

期末考試:筆試面向?qū)ο蟪绦蛟O(shè)計(jì)C++面向?qū)ο蟪绦蛟O(shè)計(jì)C++C++C對(duì)C語言功能的增強(qiáng)增加了面對(duì)對(duì)象的機(jī)制程序設(shè)計(jì)方法面對(duì)對(duì)象程序設(shè)計(jì)面向過程程序設(shè)計(jì)目錄§1§2§3§4面向?qū)ο蟪绦蛟O(shè)計(jì)概述§5C++基礎(chǔ)知識(shí)類和對(duì)象繼承與組合多態(tài)性與虛函數(shù)目錄§6§7§8§9面向?qū)ο蟮耐讌f(xié)§10運(yùn)算符重載模板輸入輸出流異常處理本課程學(xué)習(xí)目標(biāo)理解面向?qū)ο缶幊痰幕舅枷胝莆彰嫦驅(qū)ο缶幊痰幕痉椒ㄕ莆誄++面向?qū)ο缶幊碳夹g(shù),學(xué)會(huì)利用C++語言進(jìn)行一般面向?qū)ο蟪绦虻脑O(shè)計(jì),解決一般應(yīng)用問題,并為后續(xù)專業(yè)課程(VC、Java)的學(xué)習(xí)奠定程序設(shè)計(jì)基礎(chǔ)。學(xué)習(xí)方法:

1.抓好三個(gè)環(huán)節(jié):課前、課上、課后

2.多編程、多上機(jī):課堂紀(jì)律:面向?qū)ο蟪绦蛟O(shè)計(jì)C++第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述本章從一個(gè)小型的學(xué)生信息管理系統(tǒng)的面向過程程序設(shè)計(jì)出發(fā),討論了傳統(tǒng)的面向過程程序設(shè)計(jì)方法的不足,進(jìn)而引出面向?qū)ο蟪绦蛟O(shè)計(jì)方法,介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的編程思想,面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念,面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)。最后簡單介紹面向?qū)ο蟮能浖_發(fā)。本章內(nèi)容簡介第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述本章學(xué)習(xí)目標(biāo)1.了解傳統(tǒng)的面向過程程序設(shè)計(jì)方法的不足2.理解面向?qū)ο蟪绦蛟O(shè)計(jì)的編程思想3.理解并掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念4.領(lǐng)會(huì)面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)5.了解面向?qū)ο蟮能浖_發(fā)過程第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述面向過程程序設(shè)計(jì)的基本思想:

功能分解、逐步求精、模塊化、結(jié)構(gòu)化。

1.1面向過程程序設(shè)計(jì)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述【例1-1】運(yùn)用面向過程程序設(shè)計(jì)方法設(shè)計(jì)一個(gè)小型的學(xué)生信息管理系統(tǒng)。該系統(tǒng)要管理的學(xué)生信息包括:學(xué)號(hào)(Num)、姓名(Name)、性別(Sex)、出生日期(Birthday)、三門課成績﹝英語(English)、數(shù)據(jù)結(jié)構(gòu)(DataStructure)、C++程序設(shè)計(jì)(CPlusPlus)

﹞、總成績(Sum)、平均成績(Average),學(xué)生信息表如表1-1所示。1.1面向過程程序設(shè)計(jì)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述學(xué)號(hào)姓名性別出生日期英語成績數(shù)據(jù)結(jié)構(gòu)成績C++成績總成績平均成績20070202001鄧光輝男89-02-0587889026588.320070202002杜麗麗女90-09-2079807523478.020070202003姜志遠(yuǎn)男90-11-0868847022274.020070202004張大偉男88-08-0570678221973.0………………………表1-1學(xué)生信息表

第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述該學(xué)生信息管理系統(tǒng)要具有如下功能:(1)顯示學(xué)生信息:顯示全部學(xué)生的信息。(2)查詢學(xué)生信息:按學(xué)號(hào)或姓名查詢學(xué)生信息,查詢結(jié)果直接顯示在屏幕上。(3)添加學(xué)生信息:對(duì)學(xué)生信息進(jìn)行添加。(4)修改學(xué)生信息:按學(xué)號(hào)修改學(xué)生信息。1.1面向過程程序設(shè)計(jì)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述該學(xué)生信息管理系統(tǒng)要具有如下功能:(5)刪除學(xué)生信息:按學(xué)號(hào)刪除學(xué)生信息。(6)統(tǒng)計(jì)學(xué)生成績:統(tǒng)計(jì)每個(gè)學(xué)生的總成績和平均成績,或統(tǒng)計(jì)所有學(xué)生某一門課的總成績和平均成績。(7)學(xué)生信息排序:按學(xué)號(hào)、總成績或某一門課成績排序。(8)備份學(xué)生信息:把所有學(xué)生信息備份一份。1.1面向過程程序設(shè)計(jì)實(shí)現(xiàn)該系統(tǒng)的C程序框架/*學(xué)生信息管理系統(tǒng)C語言源代碼student.c*/#include<stdio.h>/*包含輸入/輸出頭文件*/#include<string.h>/*包含字符串處理頭文件*/typedef

struct{/*用于存放生日信息的結(jié)構(gòu)體*/

intyear;

intmonth;

intday;}Date;實(shí)現(xiàn)該系統(tǒng)的C程序框架typedef

struct{/*用于存放學(xué)生信息的結(jié)構(gòu)體*/charNum[15];charName[10];charSex;floatEnglish;/*英語課成績*/floatDataStructure;/*數(shù)據(jù)結(jié)構(gòu)課成績*/floatCPlusPlus;/*C++課成績*/floatSum,Average;/*總成績、平均成績*/}Student;

實(shí)現(xiàn)該系統(tǒng)的C程序框架/*用于存放讀入內(nèi)存中的所有學(xué)生信息的全局?jǐn)?shù)組*/Studentstud[100];intcount=0;/*存放實(shí)際學(xué)生人數(shù)的全局變量*/

/*各自定義函數(shù)原型聲明*/voidReadData();/*讀取學(xué)生信息到全局?jǐn)?shù)組stud中*/voidDisplay();/*顯示學(xué)生信息*/voidSearch();/*查詢學(xué)生信息*/voidSearchNum();/*按學(xué)號(hào)查詢學(xué)生信息*/voidSearchName();/*按姓名查詢學(xué)生信息*/…voidBackupData();/*備份學(xué)生信息*/實(shí)現(xiàn)該系統(tǒng)的C程序框架voidmain(){/*系統(tǒng)功能以菜單的形式提供給用戶*/charchoice;

ReadData();for(;;){/*顯示系統(tǒng)功能菜單*/

printf("**********學(xué)生信息管理系統(tǒng)***************\n");

printf("***********************************************\n");

printf(“**********1.顯示學(xué)生信息***************\n");

printf("**********2.查詢學(xué)生信息***************\n");…實(shí)現(xiàn)該系統(tǒng)的C程序框架printf("**********8.備份學(xué)生信息***************\n");printf(“**********0.退出系統(tǒng)***************\n");printf("***********************************************\n");printf("請(qǐng)選擇要執(zhí)行的操作(0~8):_\n");scanf("%c",&choice);switch(choice){case'1':Display();break;case'2':Search();break;…case'0':return;default:printf("選擇錯(cuò)誤!請(qǐng)重新選擇。\n");}/*switch結(jié)束*/實(shí)現(xiàn)該系統(tǒng)的C程序框架

}/*for結(jié)束*/}/*main函數(shù)結(jié)束*//*各自定義函數(shù)實(shí)現(xiàn)代碼*/voidReadData(){…}voidDisplay(){…}voidSearch(){…}…第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述從上述學(xué)生信息管理系統(tǒng)的C程序框架可以看出,運(yùn)用面向過程程序設(shè)計(jì)方法所設(shè)計(jì)出來的程序,數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)是分離的。所有數(shù)據(jù)都是公用的,一個(gè)函數(shù)可以使用任何一組數(shù)據(jù),而一組數(shù)據(jù)又能被多個(gè)函數(shù)所使用。用面向過程程序設(shè)計(jì)方法所設(shè)計(jì)出來的程序模型如圖1-1所示。1.1面向過程程序設(shè)計(jì)圖1-1面向過程程序設(shè)計(jì)的程序模型第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述面向過程的結(jié)構(gòu)化程序設(shè)計(jì)在20世紀(jì)60年代末、70年代初從一定程度上緩解了當(dāng)時(shí)的“軟件危機(jī)”,它在處理較小規(guī)模的程序時(shí)比較有效。但是,隨著人們對(duì)大規(guī)模軟件需求的增長,面向過程的結(jié)構(gòu)化程序設(shè)計(jì)逐漸顯示出它的不足,具體表現(xiàn)在:1.1面向過程程序設(shè)計(jì)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述面向過程的結(jié)構(gòu)化程序設(shè)計(jì)的不足:1.程序設(shè)計(jì)困難,生產(chǎn)率低下2.?dāng)?shù)據(jù)不安全3.程序修改困難4.代碼重用程度低1.1面向過程程序設(shè)計(jì)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述圖1-1面向過程程序設(shè)計(jì)的程序模型圖1-2面向?qū)ο蟪绦蛟O(shè)計(jì)的程序模型第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述要使某一個(gè)對(duì)象實(shí)現(xiàn)某一個(gè)行為,應(yīng)當(dāng)向它傳遞相應(yīng)的消息。數(shù)據(jù)成員函數(shù)成員函數(shù)數(shù)據(jù)成員函數(shù)成員函數(shù)數(shù)據(jù)成員函數(shù)成員函數(shù)對(duì)象1對(duì)象2對(duì)象3消息消息消息第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述在面向過程的結(jié)構(gòu)化程序設(shè)計(jì)中,人們常使用這樣的公式來表述程序:

程序=算法+數(shù)據(jù)結(jié)構(gòu)而面向?qū)ο蟪绦蛟O(shè)計(jì)則把算法和數(shù)據(jù)結(jié)構(gòu)封裝在對(duì)象中。在面向?qū)ο蟪绦蛟O(shè)計(jì),我們可以這樣來表述程序:程序=(對(duì)象+對(duì)象+對(duì)象+…)+消息

或程序=對(duì)象s+消息對(duì)象=算法+數(shù)據(jù)結(jié)構(gòu)圖1-2面向?qū)ο蟪绦蛟O(shè)計(jì)的程序模型第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述數(shù)據(jù)函數(shù)函數(shù)數(shù)據(jù)函數(shù)函數(shù)數(shù)據(jù)函數(shù)函數(shù)對(duì)象1對(duì)象2對(duì)象3消息消息消息屬性行為行為實(shí)體第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.對(duì)象

可以從兩個(gè)角度來理解對(duì)象。一個(gè)角度是現(xiàn)實(shí)世界,另一個(gè)角度是我們所建立的軟件系統(tǒng)。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.對(duì)象現(xiàn)實(shí)世界中客觀存在的任何一個(gè)事物都可以看成一個(gè)對(duì)象(object)?;蛘哒f,現(xiàn)實(shí)世界是由千千萬萬個(gè)對(duì)象組成的。對(duì)象可以是有形的,如汽車、房屋、張三等,也可以是無形的,如社會(huì)生活中的一種邏輯結(jié)構(gòu):學(xué)校、軍隊(duì),甚至一篇文章、一個(gè)圖形、一項(xiàng)計(jì)劃等都可視作對(duì)象。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.對(duì)象對(duì)象可大可小。例如學(xué)校是一個(gè)對(duì)象,一個(gè)班級(jí)也是一個(gè)對(duì)象,一個(gè)學(xué)生也是一個(gè)對(duì)象。同樣,軍隊(duì)中的一個(gè)師,一個(gè)團(tuán),一個(gè)連,一個(gè)班都是對(duì)象。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.對(duì)象任何一個(gè)對(duì)象都具有兩個(gè)要素:屬性和行為屬性:用于描述客觀事物的靜態(tài)特征行為:用于描述事物的動(dòng)態(tài)特征。例如,一個(gè)人是一個(gè)對(duì)象,他有姓名、性別、身高、體重等屬性,有走路、講話、打手勢(shì)、學(xué)習(xí)和工作等行為。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.對(duì)象在一個(gè)系統(tǒng)中的多個(gè)對(duì)象之間通過一定的渠道相互聯(lián)系,如圖1-2所示。圖1-2面向?qū)ο蟪绦蛟O(shè)計(jì)的程序模型第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述要使某一個(gè)對(duì)象實(shí)現(xiàn)某一個(gè)行為,應(yīng)當(dāng)向它傳遞相應(yīng)的消息。數(shù)據(jù)成員函數(shù)成員函數(shù)數(shù)據(jù)成員函數(shù)成員函數(shù)數(shù)據(jù)成員函數(shù)成員函數(shù)對(duì)象1對(duì)象2對(duì)象3消息消息消息第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.對(duì)象在面向?qū)ο蟮能浖治鱿到y(tǒng)中,對(duì)象是用來描述客觀事物的一個(gè)相對(duì)獨(dú)立體,是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操縱的一組操作組成。屬性是用來描述對(duì)象靜態(tài)特征的一個(gè)數(shù)據(jù)項(xiàng),操作是用來描述對(duì)象行為的一個(gè)動(dòng)作序列。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.對(duì)象在開發(fā)軟件系統(tǒng)時(shí),首先要對(duì)現(xiàn)實(shí)世界中的對(duì)象進(jìn)行分析和歸納,以此為基礎(chǔ)來定義軟件系統(tǒng)中的對(duì)象。軟件系統(tǒng)中的一部分對(duì)象是對(duì)現(xiàn)實(shí)世界中的對(duì)象的抽象,但其內(nèi)容不是全盤照搬,這些對(duì)象只包含與所解決的現(xiàn)實(shí)問題有關(guān)的那些內(nèi)容;系統(tǒng)中的另一部分對(duì)象是為了構(gòu)建系統(tǒng)而設(shè)立的。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.類類是對(duì)客觀世界中具有相同屬性和行為的一組對(duì)象的抽象,它為屬于該類的全部對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)容包括屬性和操作。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.類在尋找類時(shí),要用到一個(gè)概念:抽象。所謂抽象,是指忽略事物的非本質(zhì)特征,只注意那些與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征,從而找出事物的共性,把具有共性的事物劃分為一類,得出一個(gè)抽象的概念。例如,人可以作為一個(gè)類,它是世界上所有實(shí)體人如張三、李四、王五等的抽象,而實(shí)體人張三、李四、王五等則是人這個(gè)類的具體實(shí)例。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.類類和對(duì)象的關(guān)系可表述為:類是對(duì)象的抽象,而對(duì)象則是類的實(shí)例,或者說是類的具體表現(xiàn)形式。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.封裝在面向?qū)ο蠓椒ㄖ?,所謂“封裝”,指兩方面的含義:一是用對(duì)象把屬性和操縱這些屬性的操作包裝起來,形成一個(gè)基本單位,各個(gè)對(duì)象之間相對(duì)獨(dú)立,互不干擾。二是將對(duì)象中某些部分對(duì)外隱蔽,即隱藏其內(nèi)部細(xì)節(jié),只留下少量接口,以便與外界聯(lián)系,接收外界的消息。這種對(duì)外界隱蔽的做法稱為信息隱蔽(informationhiding)。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.繼承所謂“繼承”,是指特殊類自動(dòng)地?fù)碛谢螂[含地復(fù)制其一般類的全部屬性與操作。繼承具有“是一種”的含義。

汽車卡車轎車圖1-3繼承示例一般類(也稱為基類、父類)特殊類(也稱為派生類、子類)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述圖1-4繼承的層次與抽象原則的運(yùn)用汽車卡車轎車火車車輛輪船飛機(jī)運(yùn)輸工具較多地忽略事物之間的差別,

得到較一般的類

較多地注意事物之間的差別,

得到較特殊的類第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述有時(shí)一個(gè)類要同時(shí)繼承兩個(gè)或兩個(gè)以上一般類中的屬性和操作,把這種允許一個(gè)特殊類具有一個(gè)以上一般類的繼承模式稱作多繼承。圖1-5多重繼承示例銷售經(jīng)理管理人員兼職技術(shù)人員銷售人員雇員第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.消息在面向?qū)ο蠓椒ㄖ?,把向?qū)ο蟀l(fā)出的操作請(qǐng)求稱為消息(message)。對(duì)象之間通過消息進(jìn)行通信,實(shí)現(xiàn)了對(duì)象之間的動(dòng)態(tài)聯(lián)系。至于消息的具體用途,它們有很多種,例如,讀取或設(shè)置對(duì)象本身的某個(gè)(些)屬性的值,請(qǐng)求其他對(duì)象的操作。在C++中,消息其實(shí)就是函數(shù)調(diào)用。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.關(guān)聯(lián)關(guān)聯(lián)(association)是兩個(gè)或多個(gè)類之間的一種靜態(tài)關(guān)系。教師指導(dǎo)畢業(yè)論文學(xué)生1*圖1-6關(guān)聯(lián)示例第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.組合組合描述的是類與類之間的整體與部分的關(guān)系。例如,汽車與發(fā)動(dòng)機(jī)之間的關(guān)系,計(jì)算機(jī)與主板間的關(guān)系。組合是具有“整體——部分”關(guān)系語義的關(guān)聯(lián),也就是說,組合是關(guān)聯(lián)的一種,只是它還具有明顯的“整體——部分”含義。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.2面向?qū)ο蟮幕靖拍?.多態(tài)性如果有幾個(gè)相似而不完全相同的對(duì)象,有時(shí)人們要求在向它們發(fā)出同一個(gè)消息時(shí),它們的反應(yīng)各不相同,分別執(zhí)行不同的操作,這種情況就是多態(tài)現(xiàn)象。在面向?qū)ο蠓椒ㄖ校^多態(tài)性(polymorphism)是指由繼承而產(chǎn)生的相關(guān)而不同的類,其對(duì)象對(duì)同一消息會(huì)作出不同的響應(yīng)。多態(tài)性是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)重要特征,使用它能增加程序的靈活性。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.1面向?qū)ο蟮木幊趟枷刖唧w地講,面向?qū)ο缶幊痰幕舅枷肴缦拢?.客觀世界中的事物都是對(duì)象(object),對(duì)象之間存在一定的關(guān)系。2.用對(duì)象的屬性(attribute)描述事物的靜態(tài)特征,用對(duì)象的操作(operation)描述事物的行為(動(dòng)態(tài)特征)。1.2面向?qū)ο蟪绦蛟O(shè)計(jì)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.1面向?qū)ο蟮木幊趟枷?/p>

3.對(duì)象的屬性和操作結(jié)合為一體,形成一個(gè)相對(duì)獨(dú)立、不可分的實(shí)體。對(duì)象對(duì)外屏蔽其內(nèi)部細(xì)節(jié),只留下少量接口,以便與外界聯(lián)系。4.通過抽象對(duì)對(duì)象進(jìn)行分類,把具有相同屬性和相同操作的對(duì)象歸為一類,類是這些對(duì)象的抽象描述,每個(gè)對(duì)象是其所屬類的一個(gè)實(shí)例。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.1面向?qū)ο蟮木幊趟枷?.復(fù)雜的對(duì)象可以用簡單的對(duì)象作為其構(gòu)成部分。6.通過在不同程度上運(yùn)用抽象的原則,可以得到一般類和特殊類。特殊類繼承一般類的屬性與操作,從而簡化系統(tǒng)的構(gòu)造過程。7.對(duì)象之間通過傳遞消息進(jìn)行通信,以實(shí)現(xiàn)對(duì)象之間的動(dòng)態(tài)聯(lián)系。8.通過關(guān)聯(lián)表達(dá)類之間的靜態(tài)關(guān)系。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.3面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)1.從認(rèn)識(shí)論的角度看,面向?qū)ο蟪绦蛟O(shè)計(jì)改變了軟件開發(fā)的方式面向?qū)ο蟪绦蛟O(shè)計(jì)強(qiáng)調(diào)從對(duì)象出發(fā)認(rèn)識(shí)問題域,對(duì)象對(duì)應(yīng)著問題域中的事物,其屬性和操作分別刻畫了事物的靜態(tài)特征和動(dòng)態(tài)行為,對(duì)象之間的繼承、組合、關(guān)聯(lián)和依賴關(guān)系如實(shí)地表達(dá)了問題域中事物實(shí)際存在的各種關(guān)系。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.3面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)因此,無論是軟件系統(tǒng)的構(gòu)成成分,還是通過這些成分之間的關(guān)系而體現(xiàn)的軟件系統(tǒng)結(jié)構(gòu),都可直接地映射到問題域。軟件開發(fā)人員能夠利用人類認(rèn)識(shí)事物所采用的一般思維方式來進(jìn)行軟件開發(fā)。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.3面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)2.面向?qū)ο蟪绦蛑械臄?shù)據(jù)的安全性高面向?qū)ο蟪绦蛑械臄?shù)據(jù)及對(duì)數(shù)據(jù)的操作捆綁在一起,被封裝在不同的對(duì)象中。對(duì)象對(duì)外隱蔽其內(nèi)部細(xì)節(jié),只留下少量的接口,以便與外界聯(lián)系。外界只能通過對(duì)象提供的對(duì)外接口操作對(duì)象中的數(shù)據(jù),這可以有效保護(hù)數(shù)據(jù)的安全。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.3面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)3.面向?qū)ο蟪绦蛟O(shè)計(jì)有助于軟件的維護(hù)與復(fù)用某類對(duì)象數(shù)據(jù)結(jié)構(gòu)的改變只會(huì)引起該類對(duì)象操作代碼的改變,只要其對(duì)外提供的接口不發(fā)生變化,程序的其余部分就不需要做任何改動(dòng),從而把程序代碼的修改維護(hù)局限在一個(gè)很小的范圍內(nèi)。這就對(duì)用戶需求的變化有較強(qiáng)的適應(yīng)性。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.2.3面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn)3.面向?qū)ο蟪绦蛟O(shè)計(jì)有助于軟件的維護(hù)與復(fù)用面向?qū)ο蟪绦蛟O(shè)計(jì)中類的繼承機(jī)制有效解決了代碼復(fù)用的問題。在設(shè)計(jì)新類時(shí),可通過繼承引用已有類的屬性和操作,并可在已有類的基礎(chǔ)上增加新的數(shù)據(jù)結(jié)構(gòu)和操作,延伸和擴(kuò)充已有類的功能,這種延伸和擴(kuò)充一點(diǎn)不影響原有類的使用。人們可以像使用集成電路(IC)構(gòu)造計(jì)算機(jī)硬件那樣,比較方便地重用對(duì)象類來構(gòu)造軟件系統(tǒng)。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述面向?qū)ο蟮能浖こ贪ㄒ韵聨讉€(gè)階段:1.面向?qū)ο蠓治觯╫bjectorientedanalysis,OOA)2.面向?qū)ο笤O(shè)計(jì)(objectorienteddesign,OOD)3.面向?qū)ο缶幊蹋╫bjectorientedprogramming,

OOP)4.面向?qū)ο鬁y試(objectorientedtest,OOT)5.面向?qū)ο缶S護(hù)(objectorientedsoft

maintenance,OOSM)1.3面向?qū)ο蟮能浖_發(fā)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述1.面向?qū)ο蠓治?/p>

對(duì)系統(tǒng)進(jìn)行面向?qū)ο蠓治?,識(shí)別出系統(tǒng)中的對(duì)象,定義對(duì)象的屬性和操作,并抽象出對(duì)象類。1.4學(xué)生信息管理系統(tǒng)的面向?qū)ο蠓治雠c設(shè)計(jì)第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述(1)學(xué)生對(duì)象與學(xué)生類考慮問題域,識(shí)別系統(tǒng)中的對(duì)象與類。該系統(tǒng)是一個(gè)學(xué)生信息管理系統(tǒng),每一個(gè)被管理的學(xué)生都是該系統(tǒng)中的一個(gè)對(duì)象,所有學(xué)生對(duì)象都具有相同的屬性:學(xué)號(hào)、姓名、性別、出生日期、英語成績、數(shù)據(jù)結(jié)構(gòu)成績、C++程序設(shè)計(jì)成績、總成績、平均成績,相同的操作:計(jì)算總成績、計(jì)算平均成績。對(duì)所有學(xué)生對(duì)象的抽象,形成一個(gè)學(xué)生類。第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述

+計(jì)算總成績

+計(jì)算平均成績

-學(xué)號(hào)

-姓名

-…-平均成績學(xué)生類

+顯示學(xué)生信息

+按學(xué)號(hào)查詢學(xué)生信息

+按姓名查詢學(xué)生信息

…+打開文件

+寫文件

+新建文件“順序表”容器類1*

-學(xué)生數(shù)組

-學(xué)生總?cè)藬?shù)圖1-8學(xué)生信息管理系統(tǒng)的類圖第1章面向?qū)ο蟪绦蛟O(shè)計(jì)概述(2)順序表對(duì)象與順序表類考慮系統(tǒng)責(zé)任,把系統(tǒng)責(zé)任所要求的每一項(xiàng)功能都落實(shí)到某個(gè)或某些對(duì)象上。該系統(tǒng)要實(shí)現(xiàn)對(duì)所有需要管理的學(xué)生對(duì)象信息的輸入(從鍵盤輸入)、輸出(輸出到屏幕)、存儲(chǔ)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論