




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計主講人:武云主講人:武云中國地質(zhì)大學(xué)計算機學(xué)院中國地質(zhì)大學(xué)計算機學(xué)院面向?qū)ο蠹夹g(shù)與Visual C+-第1章2(1 1)掌握面向?qū)ο蟪绦蛟O(shè)計一般方法和)掌握面向?qū)ο蟪绦蛟O(shè)計一般方法和特點。特點。(2 2)熟練掌握)熟練掌握C+C+語言的語法語言的語法(3 3)掌握)掌握WindowsWindows程序設(shè)計的特點。程序設(shè)計的特點。(4 4)能夠開發(fā)一般的基于)能夠開發(fā)一般的基于APIAPI、MFCMFC的的WindowsWindows程序。程序。(5 5)學(xué)會)學(xué)會VCVC程序調(diào)試的一般方法。程序調(diào)試的一般方法。教學(xué)目標(biāo)0d58b4b8 符皇 C+-第1章3n上課
2、認(rèn)真聽講,下課認(rèn)真復(fù)習(xí)上課認(rèn)真聽講,下課認(rèn)真復(fù)習(xí)n多編程,勤實踐多編程,勤實踐n聯(lián)機幫助聯(lián)機幫助MSDNMSDNn多看參考書籍、資料、別人代碼多看參考書籍、資料、別人代碼學(xué)習(xí)方法面向?qū)ο蠹夹g(shù)與Visual C+-第1章4教材:教材:VC+VC+面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計戴光明,李向戴光明,李向 編著編著高等教育出版社、中山大學(xué)出版社高等教育出版社、中山大學(xué)出版社 20052005參考教材:參考教材:1.1.甘玲甘玲 邱勁邱勁 主編主編 面向?qū)ο蠹夹g(shù)與面向?qū)ο蠹夹g(shù)與Visual C+Visual C+ 清華大學(xué)出版社清華大學(xué)出版社2.2.黃維通主編黃維通主編 Visual C+Visual
3、 C+面向?qū)ο竺嫦驅(qū)ο笈c可視化程序設(shè)計與可視化程序設(shè)計清華大學(xué)出版社清華大學(xué)出版社面向?qū)ο蠹夹g(shù)與Visual C+-第1章5學(xué)時學(xué)時:講課:講課:40 40 上機:上機:1616考試形式考試形式:平時上課和上機情況:平時上課和上機情況:30%30%閉卷考試:閉卷考試:70%70%面向?qū)ο蠹夹g(shù)與Visual C+-第1章6第第1章章 面向?qū)ο蠹夹g(shù)概述面向?qū)ο蠹夹g(shù)概述n計算機程序語言的發(fā)展計算機程序語言的發(fā)展n程序設(shè)計方法發(fā)展歷程程序設(shè)計方法發(fā)展歷程n面向?qū)ο蠹夹g(shù)的基本概念面向?qū)ο蠹夹g(shù)的基本概念 : :對象,類,消息和事件對象,類,消息和事件n面向?qū)ο蠹夹g(shù)的基本特征:面向?qū)ο蠹夹g(shù)的基本特征:抽象性
4、,封裝性,繼承抽象性,封裝性,繼承性,多態(tài)性性,多態(tài)性nWindowsWindows程序設(shè)計的特點程序設(shè)計的特點n常用面向?qū)ο笳Z言簡介常用面向?qū)ο笳Z言簡介面向?qū)ο蠹夹g(shù)與Visual C+-第1章7n1.11.1程序設(shè)計語言程序設(shè)計語言計算機程序設(shè)計語言計算機程序設(shè)計語言(從低級語言到高級語言的發(fā)展過程)(從低級語言到高級語言的發(fā)展過程)第一代:機器語言第一代:機器語言 第二代:匯編語言第二代:匯編語言第三代:算法語言,又稱高級語言第三代:算法語言,又稱高級語言lFORTRANFORTRAN:科學(xué)計算、向量處理、并行處理:科學(xué)計算、向量處理、并行處理lALGOLALGOL:通用算法語言:通用算法
5、語言lCOBOL(Common Business-Oriented Language)COBOL(Common Business-Oriented Language):商用:商用數(shù)據(jù)處理數(shù)據(jù)處理lBASICBASIC、PascalPascal、C Cl面向?qū)ο笳Z言如:面向?qū)ο笳Z言如:SimulaSimula、EiffelEiffel、C+C+面向?qū)ο蠹夹g(shù)與Visual C+-第1章8機器語言和匯編語言機器語言和匯編語言n由計算機硬件系統(tǒng)可以識別的二進制指令由計算機硬件系統(tǒng)可以識別的二進制指令組成的語言稱為機器語言。組成的語言稱為機器語言。 計算機發(fā)展的初期,軟件工程師們只能用機器語言來編計算機
6、發(fā)展的初期,軟件工程師們只能用機器語言來編寫程序。這一階段,在人類的自然語言和計算機編程語寫程序。這一階段,在人類的自然語言和計算機編程語言之間存在著巨大的鴻溝。言之間存在著巨大的鴻溝。n匯編語言將機器指令映射為一些可以被人匯編語言將機器指令映射為一些可以被人讀懂的助記符,如讀懂的助記符,如ADDADD、SUBSUB等。等。 此時編程語言與人類自然語言間的鴻溝略有縮小,但仍此時編程語言與人類自然語言間的鴻溝略有縮小,但仍與人類的思維相差甚遠(yuǎn)。因為它的抽象層次太低,程序與人類的思維相差甚遠(yuǎn)。因為它的抽象層次太低,程序員需要考慮大量的機器細(xì)節(jié)。員需要考慮大量的機器細(xì)節(jié)。面向?qū)ο蠹夹g(shù)與Visual
7、C+-第1章9高級語言高級語言 高級語言屏蔽了機器的細(xì)節(jié),提高了語言的抽高級語言屏蔽了機器的細(xì)節(jié),提高了語言的抽象層次,程序中可以采用具有一定含義的數(shù)據(jù)象層次,程序中可以采用具有一定含義的數(shù)據(jù)命名和容易理解的執(zhí)行語句。這使得在書寫程命名和容易理解的執(zhí)行語句。這使得在書寫程序時可以聯(lián)系到程序所描述的具體事物。序時可以聯(lián)系到程序所描述的具體事物。面向?qū)ο蠹夹g(shù)與Visual C+-第1章10面向?qū)ο笳Z言面向?qū)ο笳Z言n出發(fā)點:出發(fā)點:q更直接地描述客觀世界中存在的事物更直接地描述客觀世界中存在的事物( (對象對象) )以及它們之間的關(guān)系。以及它們之間的關(guān)系。n特點:特點:q是高級語言。是高級語言。q將
8、客觀事物看作具有屬性和行為的對象。將客觀事物看作具有屬性和行為的對象。q通過抽象找出同一類對象的共同屬性和行通過抽象找出同一類對象的共同屬性和行為,形成類。為,形成類。q通過類的繼承與多態(tài)實現(xiàn)代碼重用通過類的繼承與多態(tài)實現(xiàn)代碼重用面向?qū)ο蠹夹g(shù)與Visual C+-第1章11 優(yōu)點:優(yōu)點: 使程序能夠比較直接地反映問題域使程序能夠比較直接地反映問題域的本來面目,軟件開發(fā)人員能夠利用人的本來面目,軟件開發(fā)人員能夠利用人類認(rèn)識事物所采用的一般思維方法來進類認(rèn)識事物所采用的一般思維方法來進行軟件開發(fā)。行軟件開發(fā)。面向?qū)ο蠹夹g(shù)與Visual C+-第1章12n 面向?qū)ο笳Z言發(fā)展歷程面向?qū)ο笳Z言發(fā)展歷程:
9、 雛形階段(六七十年代)雛形階段(六七十年代) 先驅(qū):先驅(qū):Simula語言:對象、類,支持繼承語言:對象、類,支持繼承 Ada:美國國防部,嵌入式實時系統(tǒng):美國國防部,嵌入式實時系統(tǒng) 早期的早期的Smalltalk 完善階段(八十年代初期)完善階段(八十年代初期) Smalltalk-80:大部分的面向?qū)ο蟾拍睿捍蟛糠值拿嫦驅(qū)ο蟾拍?繁榮階段(八十年代末以來)繁榮階段(八十年代末以來)大批大批OO語言產(chǎn)生語言產(chǎn)生純純OO語言:語言:Smalltalk、Eiffel、 Object-C 混合語言:混合語言:C+、Object Pascal 轉(zhuǎn)向轉(zhuǎn)向OOD和和OOA(九十年代初期以來)(九十年代
10、初期以來) 出現(xiàn)大量的出現(xiàn)大量的OOA(面向?qū)ο蟮姆治雒嫦驅(qū)ο蟮姆治?、OOD(面向?qū)ο蟮脑O(shè)計)(面向?qū)ο蟮脑O(shè)計)方法方法面向?qū)ο蠹夹g(shù)與Visual C+-第1章131.21.2程序設(shè)計方法的發(fā)展歷程程序設(shè)計方法的發(fā)展歷程一、一、面向過程面向過程的的結(jié)構(gòu)化結(jié)構(gòu)化程序設(shè)計方法程序設(shè)計方法2020世紀(jì)世紀(jì)6060年代誕生、七八十年代廣泛使用的程序設(shè)計方年代誕生、七八十年代廣泛使用的程序設(shè)計方法,語言工具有:法,語言工具有:PASCALPASCAL、C C 等。等。設(shè)計思路設(shè)計思路:自頂向下,逐步求精;程序結(jié)構(gòu)按功能劃分:自頂向下,逐步求精;程序結(jié)構(gòu)按功能劃分為若干個基本模塊,這些模塊形成一個樹型結(jié)
11、構(gòu);各模為若干個基本模塊,這些模塊形成一個樹型結(jié)構(gòu);各模塊間的關(guān)系盡可能簡單,在功能上相對獨立;每一模塊塊間的關(guān)系盡可能簡單,在功能上相對獨立;每一模塊內(nèi)部均是由內(nèi)部均是由順序、選擇、循環(huán)順序、選擇、循環(huán)三種基本結(jié)構(gòu)組成;其模三種基本結(jié)構(gòu)組成;其模塊化實現(xiàn)的具體方法是使用子程序。塊化實現(xiàn)的具體方法是使用子程序。面向?qū)ο蠹夹g(shù)與Visual C+-第1章14 優(yōu)點:優(yōu)點: 有效地將一個較復(fù)雜的程序系統(tǒng)設(shè)計任務(wù)分解成許多易有效地將一個較復(fù)雜的程序系統(tǒng)設(shè)計任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和維護。于控制和處理的子任務(wù),便于開發(fā)和維護。存在問題:存在問題:是一種是一種面向過程的程序設(shè)計方法面
12、向過程的程序設(shè)計方法,而,而“過程過程”和和“操作操作”又是不穩(wěn)定和多變的,因此不能直接反映人求解問題的思路。又是不穩(wěn)定和多變的,因此不能直接反映人求解問題的思路。維護程序的一致性困難維護程序的一致性困難。數(shù)據(jù)和過程相互獨立,存在著用。數(shù)據(jù)和過程相互獨立,存在著用正確的程序模塊調(diào)用錯誤的數(shù)據(jù),或用錯誤的程序模塊調(diào)用正確的程序模塊調(diào)用錯誤的數(shù)據(jù),或用錯誤的程序模塊調(diào)用正確的數(shù)據(jù)的可能。因此,程序員必須時刻注意需要處理的正確的數(shù)據(jù)的可能。因此,程序員必須時刻注意需要處理的數(shù)據(jù)格式。數(shù)據(jù)格式。程序代碼可重用性差程序代碼可重用性差。程序中除少數(shù)標(biāo)準(zhǔn)庫函數(shù)外,每設(shè)。程序中除少數(shù)標(biāo)準(zhǔn)庫函數(shù)外,每設(shè)計一個程
13、序時,程序員幾乎從零做起。即使重用代碼,通常計一個程序時,程序員幾乎從零做起。即使重用代碼,通常也是通過拷貝或編輯重新生成一份。也是通過拷貝或編輯重新生成一份。面向?qū)ο蠹夹g(shù)與Visual C+-第1章15二二. .面向面向?qū)ο蟪绦蛟O(shè)計方法對象程序設(shè)計方法(OOP,Object-Oriented Programming) 面向?qū)ο蟪绦蛟O(shè)計面向?qū)ο蟪绦蛟O(shè)計是一種以對象為基礎(chǔ),以事件是一種以對象為基礎(chǔ),以事件或消息來驅(qū)動對象執(zhí)行處理的程序設(shè)計技術(shù)。或消息來驅(qū)動對象執(zhí)行處理的程序設(shè)計技術(shù)。將數(shù)據(jù)及對數(shù)據(jù)的操作放在一起,作為相互依存、將數(shù)據(jù)及對數(shù)據(jù)的操作放在一起,作為相互依存、不可分割的整體來考慮,它采
14、用數(shù)據(jù)抽象和信息隱不可分割的整體來考慮,它采用數(shù)據(jù)抽象和信息隱藏技術(shù),將對象和對對象的操作抽象成一種新的數(shù)藏技術(shù),將對象和對對象的操作抽象成一種新的數(shù)據(jù)類型據(jù)類型類類。面向?qū)ο蠹夹g(shù)與Visual C+-第1章16 這種方法集抽象性、封裝性、繼承性和多態(tài)性于這種方法集抽象性、封裝性、繼承性和多態(tài)性于一體,易于實現(xiàn)模塊化、可重用、易維護、易擴充一體,易于實現(xiàn)模塊化、可重用、易維護、易擴充等功能。等功能。 優(yōu)點:優(yōu)點:l程序模塊間的關(guān)系更為簡單,程序模塊的獨立性、程序模塊間的關(guān)系更為簡單,程序模塊的獨立性、數(shù)據(jù)的安全性就有了良好的保障。數(shù)據(jù)的安全性就有了良好的保障。l通過繼承與多態(tài)性,可以大大提高程
15、序的可重用通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得軟件的開發(fā)和維護都更為方便。性,使得軟件的開發(fā)和維護都更為方便。面向?qū)ο蠹夹g(shù)與Visual C+-第1章17 結(jié)構(gòu)化程序設(shè)計的方法結(jié)構(gòu)化程序設(shè)計的方法是把程序看作是工作在數(shù)據(jù)是把程序看作是工作在數(shù)據(jù)上的一系列過程或函數(shù)的集合。上的一系列過程或函數(shù)的集合。程序的定律是:程序的定律是: 程序程序= =(算法)(算法)+ +(數(shù)據(jù)結(jié)構(gòu))(數(shù)據(jù)結(jié)構(gòu)) 面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ò殉绦蚩醋魇腔ハ鄥f(xié)作而又彼此獨立把程序看作是互相協(xié)作而又彼此獨立的對象的集合。對象間通過發(fā)送消息而相互作用。的對象的集合。對象間通過發(fā)送消息而相互作用。程序的定律是:程序
16、的定律是: 對象對象= =(算法(算法+ +數(shù)據(jù)結(jié)構(gòu))數(shù)據(jù)結(jié)構(gòu)) 程序程序= =(對象(對象+ +對象對象+ +) 面向?qū)ο蠹夹g(shù)與Visual C+-第1章18面向?qū)ο蠹夹g(shù)與Visual C+-第1章19實例:實例:棧是一種由若干個按線性次序排列的元素所構(gòu)成的復(fù)棧是一種由若干個按線性次序排列的元素所構(gòu)成的復(fù)合數(shù)據(jù),對棧能實施兩種操作:進棧(增加一個元素)和退合數(shù)據(jù),對棧能實施兩種操作:進棧(增加一個元素)和退棧(刪除一個元素棧(刪除一個元素),),并且這兩個操作必須在棧的同一端(并且這兩個操作必須在棧的同一端(棧頂)進行。后進先出(棧頂)進行。后進先出(LIFOLIFO)是棧的一個重要性質(zhì)。是
17、棧的一個重要性質(zhì)。1) 1) 結(jié)構(gòu)化方案結(jié)構(gòu)化方案#include #define STACK_SIZE 100struct Stack /棧的結(jié)構(gòu)體棧的結(jié)構(gòu)體 int top; int bufferSTACK_SIZE;void init(Stack &s) /對棧初始化的函數(shù)對棧初始化的函數(shù) s.top = -1;面向?qū)ο蠹夹g(shù)與Visual C+-第1章20bool push(Stack &s, int i) /進棧操作進棧操作 if (s.top = STACK_SIZE-1) printf( “Stack is overflow.n”); return false; else s.to
18、p+; s.buffers.top = i; return true; 面向?qū)ο蠹夹g(shù)與Visual C+-第1章21bool pop(Stack &s, int &i) /出棧操作出棧操作 if (s.top = -1) printf(“Stack is empty.n”); return false; else i = s.buffers.top; s.top-; return true; 面向?qū)ο蠹夹g(shù)與Visual C+-第1章22對棧的使用可由兩種方式:對棧的使用可由兩種方式:(1 1)可以通過提供的函數(shù)可以通過提供的函數(shù)來實現(xiàn),來實現(xiàn),Stack st; int x;init(st);
19、push(st,12);pop(st,x);(2 2)也可以直接在棧的數(shù)據(jù)表示也可以直接在棧的數(shù)據(jù)表示上直接進行上直接進行 st.top = -1;st.top+;st.bufferst.top = 12;x = st.bufferst.top;st.top-;面向?qū)ο蠹夹g(shù)與Visual C+-第1章232) 面向?qū)ο蠓桨该嫦驅(qū)ο蠓桨?include #define STACK_SIZE 100class Stack /定義定義stack類,將數(shù)據(jù)和操作放在一起類,將數(shù)據(jù)和操作放在一起 private: int top;int bufferSTACK_SIZE; public:Stack()
20、top = -1; /構(gòu)造函數(shù),對棧進行初始化構(gòu)造函數(shù),對棧進行初始化 bool push(int i); /進棧函數(shù)進棧函數(shù) if (top = STACK_SIZE-1) printf( “Stack is overflow.n”); return false; else top+; buffertop = i; return true; 面向?qū)ο蠹夹g(shù)與Visual C+-第1章24bool pop(int &i); if (top = -1) printf( “Stack is empty.n”); return false; else i = buffertop; top-; retu
21、rn true; ;Stack Stack stst; ;intint x; x;st.push(12); st.push(12); st.pop(xst.pop(x););st.topst.top = -1; /error = -1; /errorst.topst.top+; /error+; /errorst.bufferst.topst.bufferst.top = 12; /error = 12; /error面向?qū)ο蠹夹g(shù)與Visual C+-第1章251.31.3面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕靖拍頽對象(對象(ObjectObject) 一般意義上的對象:一般意義上的對象:q是現(xiàn)實
22、世界中一個實際存在的事物。是現(xiàn)實世界中一個實際存在的事物。q可以是有形的(比如一輛汽車),也可以是無形可以是有形的(比如一輛汽車),也可以是無形的(比如一項計劃)。的(比如一項計劃)。q是構(gòu)成世界的一個獨立單位,具有:是構(gòu)成世界的一個獨立單位,具有:n靜態(tài)特征:可以用某種數(shù)據(jù)來描述靜態(tài)特征:可以用某種數(shù)據(jù)來描述n動態(tài)特征:對象所表現(xiàn)的行為或具有的功能動態(tài)特征:對象所表現(xiàn)的行為或具有的功能面向?qū)ο蠹夹g(shù)與Visual C+-第1章26 面向?qū)ο蠓椒ㄖ械膶ο螅好嫦驅(qū)ο蠓椒ㄖ械膶ο螅菏窍到y(tǒng)中用來描述客觀事物的一個實體,它是是系統(tǒng)中用來描述客觀事物的一個實體,它是用來構(gòu)成系統(tǒng)的一個基本單位。對象由用來構(gòu)
23、成系統(tǒng)的一個基本單位。對象由一組屬一組屬性和一組行為性和一組行為構(gòu)成。構(gòu)成。屬性:用來描述對象靜態(tài)特征的數(shù)據(jù)項。屬性:用來描述對象靜態(tài)特征的數(shù)據(jù)項。行為:用來描述對象動態(tài)特征的操作序列行為:用來描述對象動態(tài)特征的操作序列。面向?qū)ο蠹夹g(shù)與Visual C+-第1章27例如有一個人名叫小明,性別男,身高例如有一個人名叫小明,性別男,身高1.80m1.80m,體重,體重68kg68kg,可以修電器,可以教計算機課,下面來描述這,可以修電器,可以教計算機課,下面來描述這個對象個對象對象的功能(可做的操作):對象的功能(可做的操作):回答身高回答身高回答體重回答體重 均屬于自身所承受的操作均屬于自身所承
24、受的操作 回答性別回答性別修理電器修理電器 屬于施加與其他對象的操作屬于施加與其他對象的操作教計算機課教計算機課對象名對象名: :小明小明對象的狀態(tài)對象的狀態(tài): 性別:男性別:男身高:身高:1.80m1.80m體重:體重:68kg68kg面向?qū)ο蠹夹g(shù)與Visual C+-第1章28類(類(classclass)類是具有類是具有相同屬性和行為相同屬性和行為的一組對象的集合,它的一組對象的集合,它為屬于它的全部對象提供了統(tǒng)一的抽象描述,其為屬于它的全部對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個主要部分。類是對象集內(nèi)部包括屬性和行為兩個主要部分。類是對象集合的再抽象。合的再抽象。類與實例的關(guān)
25、系類與實例的關(guān)系: 組成類的對象均為此類的實例(組成類的對象均為此類的實例(InstanceInstance)。)。 類是多個實例的綜合抽象,實例是類的個體實物。類是多個實例的綜合抽象,實例是類的個體實物。面向?qū)ο蠹夹g(shù)與Visual C+-第1章29n人類的定義人類的定義:class HUMANKINDchar *name;double weight;public:void eat( );void wear( );void sleep( );void travel( ); ;n人類的實例:人類的實例:HUMANKIND XiaoMing ; 特征、屬性、數(shù)據(jù)成員特征、屬性、數(shù)據(jù)成員行為、操作、
26、函數(shù)成員行為、操作、函數(shù)成員面向?qū)ο蠹夹g(shù)與Visual C+-第1章30消息和事件消息和事件n消息(消息(MessageMessage)是描述事件發(fā)生的信息,它)是描述事件發(fā)生的信息,它是對象之間發(fā)出的行為請求。是對象之間發(fā)出的行為請求。n多個消息構(gòu)成一個事件。多個消息構(gòu)成一個事件。 消息具有三個性質(zhì):消息具有三個性質(zhì):(1)(1)同一對象可接收不同形式的多個消息,產(chǎn)生不同的響應(yīng);同一對象可接收不同形式的多個消息,產(chǎn)生不同的響應(yīng); (2)(2)相同形式的消息可以送給不同的對象,所作出的響應(yīng)可以相同形式的消息可以送給不同的對象,所作出的響應(yīng)可以是截然不同的;是截然不同的;(3)(3)消息的發(fā)送可
27、以不考慮具體的接收者,對象可以響應(yīng)消息,消息的發(fā)送可以不考慮具體的接收者,對象可以響應(yīng)消息,也可以對消息不予理會,對消息的響應(yīng)并不是必須的。也可以對消息不予理會,對消息的響應(yīng)并不是必須的。 面向?qū)ο蠹夹g(shù)與Visual C+-第1章311.41.4面向?qū)ο蠹夹g(shù)的基本特征面向?qū)ο蠹夹g(shù)的基本特征 n抽象性抽象性(Abstract)(Abstract)q抽象就是忽略事物中與當(dāng)前目標(biāo)無關(guān)的非本質(zhì)特征,抽象就是忽略事物中與當(dāng)前目標(biāo)無關(guān)的非本質(zhì)特征,更充分地注意與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征。更充分地注意與當(dāng)前目標(biāo)有關(guān)的本質(zhì)特征。面向?qū)ο蠹夹g(shù)與Visual C+-第1章32n封裝性封裝性(Encapsulatio
28、n)(Encapsulation)q封裝封裝就是把對象的屬性和行為結(jié)合成一個獨立的單位,就是把對象的屬性和行為結(jié)合成一個獨立的單位,并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。并盡可能隱蔽對象的內(nèi)部細(xì)節(jié)。 其有兩個含義:一是其有兩個含義:一是封裝性封裝性,另一個是,另一個是“信息隱信息隱蔽蔽”。n一是把對象的全部屬性和行為結(jié)合在一起,形成一一是把對象的全部屬性和行為結(jié)合在一起,形成一個不可分割的獨立單位。個不可分割的獨立單位。 n盡可能隱蔽對象的內(nèi)部細(xì)節(jié),對外形成一道屏障,盡可能隱蔽對象的內(nèi)部細(xì)節(jié),對外形成一道屏障,與外部的聯(lián)系只能通過外部接口實現(xiàn)。與外部的聯(lián)系只能通過外部接口實現(xiàn)。 面向?qū)ο蠹夹g(shù)與Visua
29、l C+-第1章33n繼承性繼承性(Inheritance)(Inheritance)q繼承繼承是一種聯(lián)結(jié)類與類的層次模型。繼承性是指特殊是一種聯(lián)結(jié)類與類的層次模型。繼承性是指特殊類的對象擁有其一般類的屬性和行為的特性。類的對象擁有其一般類的屬性和行為的特性。q繼承意味著繼承意味著“自動地?fù)碛凶詣拥負(fù)碛小?,即特殊類中不必重新定,即特殊類中不必重新定義已在一般類中定義過的屬性和行為,而它卻自動地、義已在一般類中定義過的屬性和行為,而它卻自動地、隱含地?fù)碛衅湟话泐惖膶傩耘c行為。隱含地?fù)碛衅湟话泐惖膶傩耘c行為。 車車 灑水車灑水車父類父類/基類基類子類子類/派生類派生類繼承繼承面向?qū)ο蠹夹g(shù)與Visu
30、al C+-第1章34繼承的分類繼承的分類:1.1.按繼承源劃分:按繼承源劃分:單繼承單繼承 :每個派生類只直接繼承了一個基類的特征:每個派生類只直接繼承了一個基類的特征 多繼承多繼承:指多個基類派生出一個派生類的繼承關(guān)系,:指多個基類派生出一個派生類的繼承關(guān)系,多繼承的派生類直接繼承了不止一個基類的特征。多繼承的派生類直接繼承了不止一個基類的特征。ABCBA面向?qū)ο蠹夹g(shù)與Visual C+-第1章35n2.2.按繼承內(nèi)容劃分按繼承內(nèi)容劃分:取代繼承取代繼承:派生類對象:派生類對象完整地完整地繼承了基類的所有繼承了基類的所有“屬性屬性”和和“操作操作”,且,且沒有修改或增加沒有修改或增加新的新
31、的“屬性屬性”和和“操作操作”。包含繼承包含繼承:派生類對象:派生類對象完整地完整地繼承了所有基類的繼承了所有基類的所有所有“屬性屬性”和和“操作操作”,并,并增加增加了新的了新的“屬性屬性”和和“操作操作”。受限繼承受限繼承:派生類對象:派生類對象部分地部分地繼承了基類的繼承了基類的“屬屬性性”和和“操作操作”,并且沒有增加新的,并且沒有增加新的“屬性屬性”和和“操作操作”。特化繼承特化繼承:派生類對象繼承了基類的:派生類對象繼承了基類的“屬性屬性”和和“操作操作”,并對原有,并對原有“屬性屬性”和和“操作操作”進行了進行了修改修改。面向?qū)ο蠹夹g(shù)與Visual C+-第1章36n多態(tài)性多態(tài)性
32、(Polymorphism)(Polymorphism)q多態(tài)性是指類中同一函數(shù)名對應(yīng)多個具有相似功能的多態(tài)性是指類中同一函數(shù)名對應(yīng)多個具有相似功能的不同函數(shù),可以使用相同的調(diào)用方式來調(diào)用這些具有不同函數(shù),可以使用相同的調(diào)用方式來調(diào)用這些具有不同功能的同名函數(shù)的特性。不同功能的同名函數(shù)的特性。 C+C+支持兩種多態(tài)性:支持兩種多態(tài)性:編譯時的多態(tài)性編譯時的多態(tài)性和和運行時的多態(tài)性運行時的多態(tài)性。 重載重載:多個函數(shù)具有相同的名字但具有不同的作用。:多個函數(shù)具有相同的名字但具有不同的作用。 函數(shù)重載函數(shù)重載 操作符重載操作符重載 虛函數(shù)虛函數(shù):虛函數(shù)使用戶在一個類等級中可以使用相同:虛函數(shù)使用戶
33、在一個類等級中可以使用相同 函數(shù)的多個版本。函數(shù)的多個版本。 面向?qū)ο蠹夹g(shù)與Visual C+-第1章371.5 Windows程序設(shè)計的特點程序設(shè)計的特點 n(1 1)事件驅(qū)動的程序設(shè)計)事件驅(qū)動的程序設(shè)計 n(2 2)消息循環(huán)與輸入)消息循環(huán)與輸入 n(3 3)圖形輸出)圖形輸出 n(4 4)用戶界面對象)用戶界面對象 n(5 5)資源共享)資源共享 n(6)Windows應(yīng)用程序組成應(yīng)用程序組成 n (7) Windows應(yīng)用程序生成應(yīng)用程序生成面向?qū)ο蠹夹g(shù)與Visual C+-第1章38(1 1)驅(qū)動程序設(shè)計)驅(qū)動程序設(shè)計的特點的特點nA. A. 過程驅(qū)動過程驅(qū)動不是面向用戶的,交互性
34、差,不是面向用戶的,交互性差,用戶界面不夠友好用戶界面不夠友好 , ,用戶按程序順序設(shè)計用戶按程序順序設(shè)計nB. B. 事件驅(qū)動事件驅(qū)動是一種是一種“被動被動”式程序設(shè)計式程序設(shè)計方法,程序開始運行時,處于等待用戶輸入事方法,程序開始運行時,處于等待用戶輸入事件狀態(tài),然后取得事件并作出相應(yīng)反應(yīng),處理件狀態(tài),然后取得事件并作出相應(yīng)反應(yīng),處理完畢又返回并處于等待事件狀態(tài)完畢又返回并處于等待事件狀態(tài) 面向?qū)ο蠹夹g(shù)與Visual C+-第1章39 A.過程驅(qū)動模型 面向?qū)ο蠹夹g(shù)與Visual C+-第1章40B.B.事件驅(qū)動程序模型事件驅(qū)動程序模型 面向?qū)ο蠹夹g(shù)與Visual C+-第1章41(2 2
35、)消息循環(huán)與輸入)消息循環(huán)與輸入 nWindowsWindows應(yīng)用程序的消息來源有以下四種:應(yīng)用程序的消息來源有以下四種:n(1 1)輸入消息:包括鍵盤和鼠標(biāo)的輸入。)輸入消息:包括鍵盤和鼠標(biāo)的輸入。n(2 2)控制消息:用來與)控制消息:用來與WindowsWindows的控制對象,如列表的控制對象,如列表框、按鈕、檢查框等進行雙向通信。框、按鈕、檢查框等進行雙向通信。n(3 3)系統(tǒng)消息:對程序化的事件或系統(tǒng)時鐘中斷作)系統(tǒng)消息:對程序化的事件或系統(tǒng)時鐘中斷作出反應(yīng)。出反應(yīng)。n(4 4)用戶消息:這是程序員自己定義并在應(yīng)用程序)用戶消息:這是程序員自己定義并在應(yīng)用程序中主動發(fā)出的,一般由
36、應(yīng)用程序的某一部分內(nèi)部處理中主動發(fā)出的,一般由應(yīng)用程序的某一部分內(nèi)部處理。面向?qū)ο蠹夹g(shù)與Visual C+-第1章42nGDI(GDI(圖形設(shè)備接口圖形設(shè)備接口) ):實現(xiàn)與設(shè)備無關(guān)的圖形操作功能。:實現(xiàn)與設(shè)備無關(guān)的圖形操作功能。 屏幕上繪制像素、打印輸出,繪制用戶界面包括窗口、菜單、屏幕上繪制像素、打印輸出,繪制用戶界面包括窗口、菜單、對話框等。對話框等。n內(nèi)核內(nèi)核KERNELKERNEL支持與操作系統(tǒng)的功能支持與操作系統(tǒng)的功能:如進程加載、文件:如進程加載、文件I/OI/O,以及內(nèi)存、線程等。以及內(nèi)存、線程等。nUSERUSER為用戶界面對象提供支持,為用戶界面對象提供支持,它用于接收和管
37、理所有輸它用于接收和管理所有輸入消息、系統(tǒng)消息并把它們發(fā)給相應(yīng)的窗口的消息隊列入消息、系統(tǒng)消息并把它們發(fā)給相應(yīng)的窗口的消息隊列( (一一個系統(tǒng)定義的內(nèi)存塊,用于臨時存儲消息個系統(tǒng)定義的內(nèi)存塊,用于臨時存儲消息) )或是把消息直接或是把消息直接發(fā)給窗口過程。發(fā)給窗口過程。 每個窗口維護自己的消息隊列,并從中取出消息,利用窗每個窗口維護自己的消息隊列,并從中取出消息,利用窗口函數(shù)進行處理??诤瘮?shù)進行處理。WindowsWindows操作系統(tǒng)包括三個內(nèi)核基本元件:操作系統(tǒng)包括三個內(nèi)核基本元件:GDI, GDI, KERNEL ,USERKERNEL ,USER。面向?qū)ο蠹夹g(shù)與Visual C+-第1
38、章43面向?qū)ο蠹夹g(shù)與Visual C+-第1章44(3 3)圖形輸出)圖形輸出n1.DOS1.DOS程序獨占整個顯示屏幕程序獨占整個顯示屏幕,win,win程序控制一程序控制一部分屏幕,通過部分屏幕,通過WindowsWindows管理。管理。n2. 2. WindowsWindows程序的所有輸出都是圖形。程序的所有輸出都是圖形。WindowsWindows提供了豐富的圖形函數(shù)用于圖形輸出,提供了豐富的圖形函數(shù)用于圖形輸出,這對輸出圖形是相當(dāng)方便的這對輸出圖形是相當(dāng)方便的。n 3.Windows3.Windows下的輸出是設(shè)備無關(guān)下的輸出是設(shè)備無關(guān), , 應(yīng)用程序應(yīng)用程序是使用圖形設(shè)備接口(
39、是使用圖形設(shè)備接口(GDI-graphics device GDI-graphics device interfaceinterface)來進行圖形輸出)來進行圖形輸出 。面向?qū)ο蠹夹g(shù)與Visual C+-第1章45(4 4)用戶界面對象)用戶界面對象nWindowsWindows支持豐富的用戶接口對象,包括:窗口、圖標(biāo)、支持豐富的用戶接口對象,包括:窗口、圖標(biāo)、菜單、對話框等等。程序員只需簡單的幾十行代碼,就可菜單、對話框等等。程序員只需簡單的幾十行代碼,就可以設(shè)計出一個非常漂亮的圖形用戶界面。而在以設(shè)計出一個非常漂亮的圖形用戶界面。而在DOSDOS環(huán)境下,環(huán)境下,則需要大量的代碼來完成同樣
40、的工作,而且效果也沒有則需要大量的代碼來完成同樣的工作,而且效果也沒有WindowsWindows提供的那么好。提供的那么好。面向?qū)ο蠹夹g(shù)與Visual C+-第1章46(5)資源共享)資源共享 n占用資源形式占用資源形式 對于對于DOSDOS(單任務(wù))程序來說,它運行時獨占(單任務(wù))程序來說,它運行時獨占系統(tǒng)的全部資源,包括顯示器、內(nèi)存等,在程序系統(tǒng)的全部資源,包括顯示器、內(nèi)存等,在程序結(jié)束時才釋放資源。結(jié)束時才釋放資源。 WindowsWindows是一個多任務(wù)的操作系統(tǒng),各個應(yīng)用是一個多任務(wù)的操作系統(tǒng),各個應(yīng)用程序共享系統(tǒng)提供的資源,常見的資源包括:設(shè)程序共享系統(tǒng)提供的資源,常見的資源包
41、括:設(shè)備上下文,畫刷,畫筆,字體,對話框控制,對備上下文,畫刷,畫筆,字體,對話框控制,對話框,圖標(biāo),定時器,插入符號,通信端口,電話框,圖標(biāo),定時器,插入符號,通信端口,電話線等。話線等。面向?qū)ο蠹夹g(shù)與Visual C+-第1章47WindowsWindows應(yīng)用程序要求資源基本模式應(yīng)用程序要求資源基本模式 1.1.向向WindowsWindows系統(tǒng)請求資源系統(tǒng)請求資源 2.2.使用該資源;使用該資源;3.3.釋放該資源給釋放該資源給WindowsWindows以供別的程序使用以供別的程序使用 n訪問資源形式訪問資源形式 WindowsWindows應(yīng)用程序一般不能直接訪問內(nèi)存或其他硬應(yīng)用
42、程序一般不能直接訪問內(nèi)存或其他硬件設(shè)備,如鍵盤、鼠標(biāo)、計數(shù)器、屏幕或串口、并口件設(shè)備,如鍵盤、鼠標(biāo)、計數(shù)器、屏幕或串口、并口等。等。WindowsWindows系統(tǒng)要求絕對控制這些資源,以保證向系統(tǒng)要求絕對控制這些資源,以保證向所有的應(yīng)用程序提供公平的不中斷的運行。所有的應(yīng)用程序提供公平的不中斷的運行。 如果確實要訪問串并口,應(yīng)當(dāng)使用通過如果確實要訪問串并口,應(yīng)當(dāng)使用通過WindowsWindows提提供的函數(shù)來安全的訪問。供的函數(shù)來安全的訪問。 面向?qū)ο蠹夹g(shù)與Visual C+-第1章48(6 6)WindowsWindows應(yīng)用程序組成應(yīng)用程序組成 n 1.1.C,CPPC,CPP源程序文
43、件:源程序文件包含了應(yīng)用程序的數(shù)源程序文件:源程序文件包含了應(yīng)用程序的數(shù)據(jù)、類、功能邏輯模塊的定義。據(jù)、類、功能邏輯模塊的定義。n 2.2.H,HPPH,HPP頭文件:頭文件包含了頭文件:頭文件包含了CPPCPP、C C源文件中所有源文件中所有數(shù)據(jù)、模塊、類的聲明。當(dāng)一個數(shù)據(jù)、模塊、類的聲明。當(dāng)一個CPPCPP、C C源文件要調(diào)用源文件要調(diào)用另一個另一個CPPCPP、C C中所定義的模塊功能時,需要包含那個中所定義的模塊功能時,需要包含那個CPPCPP、C C文件對應(yīng)的頭文件。文件對應(yīng)的頭文件。n 3. 3.資源文件:包含了應(yīng)用程序所使用的全部資源定義,資源文件:包含了應(yīng)用程序所使用的全部資源
44、定義,通常以通常以.RC.RC為后綴名。為后綴名。面向?qū)ο蠹夹g(shù)與Visual C+-第1章49(7)(7)應(yīng)用程序生成過程應(yīng)用程序生成過程 面向?qū)ο蠹夹g(shù)與Visual C+-第1章501.6常用面向?qū)ο蟪绦蛟O(shè)計語言簡介常用面向?qū)ο蟪绦蛟O(shè)計語言簡介 n混合型面向?qū)ο蟪绦蛟O(shè)計語言混合型面向?qū)ο蟪绦蛟O(shè)計語言C+ n純面向?qū)ο蟪绦蛟O(shè)計語言純面向?qū)ο蟪绦蛟O(shè)計語言Java n可視化程序設(shè)計語言可視化程序設(shè)計語言Visual Basic面向?qū)ο蠹夹g(shù)與Visual C+-第1章511.1.混合型面向?qū)ο蟪绦蛟O(shè)計語言混合型面向?qū)ο蟪绦蛟O(shè)計語言C+C+ nC+C+作為一種面向?qū)ο蟪绦蛟O(shè)計語言,具有對象、類、作為一
45、種面向?qū)ο蟪绦蛟O(shè)計語言,具有對象、類、消息等概念,同時支持面向?qū)ο蠹夹g(shù)的抽象性、封消息等概念,同時支持面向?qū)ο蠹夹g(shù)的抽象性、封裝性、繼承性和多態(tài)性裝性、繼承性和多態(tài)性 。特點:特點:n語言超集語言超集,代碼質(zhì)量高、速度快、可移植性好;,代碼質(zhì)量高、速度快、可移植性好;n強類型語言強類型語言,編譯階段就能發(fā)現(xiàn)程序潛在錯誤,不,編譯階段就能發(fā)現(xiàn)程序潛在錯誤,不會將錯誤帶到運行階段;會將錯誤帶到運行階段;n表達(dá)能力強表達(dá)能力強,+的多繼承是的多繼承是JAVA, C#JAVA, C#等語言所沒等語言所沒有的;有的;n支持運算符重載支持運算符重載,對象的運算更易表達(dá)且表達(dá)更加對象的運算更易表達(dá)且表達(dá)更加
46、自然;自然;面向?qū)ο蠹夹g(shù)與Visual C+-第1章52n抽象能力強抽象能力強,函數(shù)模板和類模板提供更高級別,函數(shù)模板和類模板提供更高級別的抽象;的抽象;n內(nèi)存管理高效內(nèi)存管理高效,C+C+提供自動和人工回收兩種提供自動和人工回收兩種方式;方式;n異常處理加強異常處理加強,支持對象類型的異常;,支持對象類型的異常;n支持名字空間支持名字空間,更加有利于大型軟件工程項目;,更加有利于大型軟件工程項目;n非純面向?qū)ο蟮恼Z言非純面向?qū)ο蟮恼Z言,同時支持對象和模塊描,同時支持對象和模塊描述程序結(jié)構(gòu)。述程序結(jié)構(gòu)。 面向?qū)ο蠹夹g(shù)與Visual C+-第1章532.2.純面向?qū)ο蟪绦蛟O(shè)計語言純面向?qū)ο蟪绦蛟O(shè)
47、計語言JAVAJAVA nJavaJava是由是由SUNSUN公司公司2020世紀(jì)世紀(jì)9090年代初開發(fā)的一種純面年代初開發(fā)的一種純面向?qū)ο蟪绦蛟O(shè)計語言。向?qū)ο蟪绦蛟O(shè)計語言。nJavaJava作為一種解釋型程序設(shè)計語言,具有簡單性、作為一種解釋型程序設(shè)計語言,具有簡單性、面向?qū)ο笮?、平臺無關(guān)性、可移植性、安全性、動面向?qū)ο笮?、平臺無關(guān)性、可移植性、安全性、動態(tài)性和健壯性,不依賴于機器結(jié)構(gòu),并且提供了并態(tài)性和健壯性,不依賴于機器結(jié)構(gòu),并且提供了并發(fā)的機制,具有很高的性能;發(fā)的機制,具有很高的性能;n它最大限度地利用了網(wǎng)絡(luò),它最大限度地利用了網(wǎng)絡(luò),JavaJava的應(yīng)用程序的應(yīng)用程序(Applet
48、Applet)可在網(wǎng)絡(luò)上傳輸,可以說是網(wǎng)絡(luò)世界的)可在網(wǎng)絡(luò)上傳輸,可以說是網(wǎng)絡(luò)世界的通用語言;另外,通用語言;另外,JavaJava還提供了豐富類庫,使程序還提供了豐富類庫,使程序設(shè)計者可以方便地建立自己的系統(tǒng)。設(shè)計者可以方便地建立自己的系統(tǒng)。 面向?qū)ο蠹夹g(shù)與Visual C+-第1章54Java與與C及及C+的區(qū)別的區(qū)別不再有不再有#include 和和#define 等預(yù)處理功能等預(yù)處理功能不再有不再有structure,union及及typedef不再有指針、不再有多重繼承不再有指針、不再有多重繼承不再有操作符重載不再有操作符重載(Operatior Overloading)取消自動類型轉(zhuǎn)換取消自動類型轉(zhuǎn)換,要求強制轉(zhuǎn)換要求強制轉(zhuǎn)換面向?qū)ο蠹夹g(shù)與Visual C+-第1章553.3.可視化程序設(shè)計語言可視化程序設(shè)計語言Visual BasicVisual Basicn19911991年年MicrosoftMicrosoft公司推出了基于公司推出了基于BASICBASIC語言的可視化語言的可視化面向?qū)ο箝_發(fā)工具面向?qū)ο箝_發(fā)工具Visual BasicVisual Basic。n繼承了繼承了BASICBASIC語言所具有的語法簡單、容易學(xué)習(xí)、容語言所具有的語法簡單、容易學(xué)習(xí)、容易使用、數(shù)據(jù)處理能力強的特點,又引入了面向?qū)?/p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2024學(xué)年滬科版(2019)高中信息技術(shù)必修一3.4《分析歷史氣溫數(shù)據(jù)-設(shè)計批量數(shù)據(jù)算法》教學(xué)設(shè)計
- 2024年上海市老年醫(yī)學(xué)中心公開招聘工作人員191人筆試參考題庫附帶答案詳解
- 第12課《臺階》教學(xué)設(shè)計-2024-2025學(xué)年統(tǒng)編版語文七年級下冊
- 2024年12月犍為縣下半年公開考核公開招聘事業(yè)單位工作人員(10人)筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 2024山東青島?,樋毓捎邢薰菊衅?人筆試參考題庫附帶答案詳解
- 第5單元 探索1 互聯(lián)網(wǎng)安全風(fēng)險及其產(chǎn)生原因 教學(xué)設(shè)計+作業(yè)設(shè)計-2023蘇科版七年級下冊
- 網(wǎng)絡(luò)安全管理員-初級工練習(xí)題庫含參考答案
- 水的凈化和純化教學(xué)設(shè)計-2023-2024學(xué)年九年級化學(xué)科粵版上冊
- 編版小學(xué)語文一年級下冊第四單元教學(xué)初探2試卷含答案
- 2024云南文山州富寧縣建設(shè)投資集團有限公司選聘職業(yè)經(jīng)理人1人筆試參考題庫附帶答案詳解
- 山東教育出版社(魯教版)八年級化學(xué)全一冊教學(xué)課件
- 保密基本知識考試試題(100題含答案)
- 新聞攝影培訓(xùn)PPT
- 《外貿(mào)風(fēng)險管理》完整全套課件
- 露天煤礦防治水管理制度
- 電工電子技術(shù)與技能 程周
- PANTONE潘通色卡C面顏色
- 中藥的性能課件
- 平行四邊形的性質(zhì)說課課件- 人教版八年級數(shù)學(xué)下冊
- 2022新教科版科學(xué)六年級下冊全一冊全部課件(含32課)
- 《數(shù)學(xué)物理方程》全冊配套課件
評論
0/150
提交評論