課件-ch緒論面向?qū)ο蠹夹g(shù)與程序設(shè)計_第1頁
課件-ch緒論面向?qū)ο蠹夹g(shù)與程序設(shè)計_第2頁
課件-ch緒論面向?qū)ο蠹夹g(shù)與程序設(shè)計_第3頁
課件-ch緒論面向?qū)ο蠹夹g(shù)與程序設(shè)計_第4頁
課件-ch緒論面向?qū)ο蠹夹g(shù)與程序設(shè)計_第5頁
免費預(yù)覽已結(jié)束,剩余77頁可下載查看

下載本文檔

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

文檔簡介

象技術(shù)與C++程序設(shè)計第1章C++面象程序設(shè)計概述高文超2015年4月TIOBE編程語言社區(qū)榜TOP

10C++應(yīng)用系統(tǒng)級架構(gòu)高性能實時計算應(yīng)用程序平臺其他多應(yīng)用CADCAECAM1.開發(fā)應(yīng)用角度看:面向系統(tǒng)、應(yīng)用、系統(tǒng)工具)系統(tǒng):OS、DBMS、操作系統(tǒng):Windows

:匯編->C->C++Apple

MacOS

:主要為C,部分為C++Symbian

OS

:主要為C++

(諾基亞

RIM

BlackBerry

OS

4.x

:黑莓C++數(shù)據(jù)庫:Oracle

:主要為C++MySQL

:C++SQL

Server

:匯編->C->C++應(yīng)用:商務(wù)、網(wǎng)絡(luò)、信息管理、通信、圖形圖象處理辦公:Office

:匯編->C->穩(wěn)定在C++Adobe

Systems

Acrobat

Reader/Distiller

:C++瀏覽器:Internet

Explorer

:C++Mozilla

Firefox

C++Safari

:(2003年1月發(fā)布)C++Chrome

:(2008的發(fā)布)C++Opera

:C++

(郵件客戶端:搜索引擎:上占用率比較大)Outlook

C++:主要為C++圖形界面層:Windows

UI

:C++Apple

MacOS

UI(Aqua):C++KDE(Linux圖形界面)

:C++圖形處理:Adobe

Photoshop&

ImageReady

:C++Maya:蜘蛛人、指環(huán)王的電腦特技制作著名::C++

和PHP:使用C++程序開發(fā)大型電子商務(wù)開發(fā)集成環(huán)境:Visual

Studio

:C++Eclipse

:Java

(其圖形界面SWT基于C/C++)虛擬機:.Net

CLR

(.NET的虛擬機):C++Java

Virtual

Machine(JVM):Java

虛擬機:C++編譯器:Visual

C++編譯器:C++Visual

Basic

解釋、編譯器:C++Visual

C#編譯器:C++Perl

C++從教學(xué)上看:數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計都用的C和C++從設(shè)計方法上看:支持面

象從就業(yè)上看:C++程序員、

工程師仍有較大的需求C++

工程師職位描述:(1)負責(zé)項目的開發(fā)、

;能夠理解用戶需求,完成項目分析、設(shè)計、編碼、測試和

工作;負責(zé)完成技術(shù)文檔的編寫;完成團隊安排的其它工作。任職要求:計算機相關(guān)專業(yè),本科及以上學(xué)歷;精通C++編程,熟悉OO分析及設(shè)計方法,了解設(shè)計模式,能熟練使用UML交流程序設(shè)計;熟悉計算機網(wǎng)絡(luò)協(xié)議,有網(wǎng)絡(luò)編程經(jīng)驗;扎實的C/C++語言基礎(chǔ),對算法和數(shù)據(jù)結(jié)構(gòu)有深入理解;精通Windows平臺下的系統(tǒng)級開發(fā),熟悉網(wǎng)絡(luò)和多線程編程;熟練掌握Oracle等數(shù)據(jù)庫開發(fā)技術(shù);責(zé)任心強,有良好的溝通能力和團隊合作精神;良好的系統(tǒng)設(shè)計能力、文檔能力和溝通能力,能很好地融入團隊工作;良好的代碼編寫

,有較強的學(xué)習(xí)能力和解決問題的能力。華北計算技術(shù)事業(yè)單位C/C++研發(fā)工程師學(xué)歷要求:本科及以上專業(yè)要求:計算機、通信工程及相關(guān)專業(yè)崗位要求:1、熟練掌握C、C++編程語言;2、熟悉Linux/Unix/Solaris等操作系統(tǒng),并熟練掌握系統(tǒng)操作命令;3、熟悉網(wǎng)絡(luò)編程,多線程編程,熟悉數(shù)據(jù)結(jié)構(gòu)及常用的算法;

4、具有基于Oracle、SQLServer、Mysql等關(guān)系數(shù)據(jù)庫項目開發(fā)經(jīng)驗;5、優(yōu)秀的職業(yè)素養(yǎng),能夠承受工作壓力,富有進取心;6、具有良好的溝通能力、語言及文字能力、應(yīng)變能力。公司電力科學(xué)電力控制系統(tǒng)國有企業(yè)C/C++高級工程師/資深工程師工作內(nèi)容:負責(zé)系統(tǒng)架構(gòu)設(shè)計或程序開發(fā)工作任職要求:兩年以上的開發(fā)經(jīng)驗,計算機相關(guān)專業(yè),本科及以上學(xué)歷;熟悉C/C++,能熟練在linux環(huán)境進行代碼編寫、編譯、和調(diào)試;具備良好的程序數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計能力,能快速、高效、高質(zhì)量進行程序設(shè)計、開發(fā)與調(diào)試;有地理信息系統(tǒng)開發(fā)經(jīng)驗者優(yōu)先。有互聯(lián)網(wǎng)項目架構(gòu)設(shè)計經(jīng)驗者優(yōu)先。阿里巴巴合資企業(yè)Windows環(huán)境下C++客戶端開發(fā)工程師&

linux環(huán)境下C++服務(wù)器開發(fā)工程師;任職要求1、師出名門——應(yīng)屆統(tǒng)招本科及以上學(xué)歷,計算機相關(guān)專業(yè), 優(yōu)先;2、孜孜不倦——熱愛技術(shù),認真踏實,喜歡閱讀英文原版技術(shù)文檔和書籍;3、海納百川——具有較強的團隊意識與良好的溝通能力,較強的學(xué)習(xí)能力以及快速解決問題的能力。完美世界()網(wǎng)絡(luò)技術(shù)外企獨資

世界上第一個程序員是女的

學(xué)習(xí)開車,首先要學(xué)習(xí)交通規(guī)則,然后才能驅(qū)車上路

千里之行,始于足下!態(tài)度決定一切!培養(yǎng)

(沒

,收效小,多看

發(fā)展的人物)腳踏實地,不要找捷徑

(想一下成高手很難)手腦勤(多動手實踐)多參考程序代碼(了解別人程序設(shè)計思想,有助于自己)注意提高英文閱讀能力資源h參考書籍《C++

Primer》

--

中國電力,

StanleyB.Lippman

著,潘愛民,

譯《C++Primer》Stanley

B.Lippman《C++Primer

Plus》《C++程序設(shè)計語言》--機械工業(yè)版社,BjarneStroustrup

著,

譯《The

C++

ProgrammingLanguage》BjarneStroustrup《C++

Howto

Program》FifthEditionH.

M.

Dei本章主要講述:計算機程序設(shè)計語言發(fā)展程序設(shè)計方法的發(fā)展歷程面

象的程序設(shè)計語言C++語言的發(fā)展歷史C++程序的開發(fā)過程人與計算機交流的鴻溝計算機硬件僅知道0和1有問題需要計算機解決的人交流的鴻溝計算機硬件僅僅知道0和1有問題需要計算機解決的人程序設(shè)計語言硬

軟件=程序+文檔計算機的工作是用程序來控制的程序是指令的集合指令是計算機可以識別

令機器語言指令就是指計算機能夠識別

令,它們是一些由0和1組

的二進制編碼。指令系統(tǒng)計算機硬件系統(tǒng)能夠識別的所有指令的集合。機器語言最早的程序設(shè)計語言,它由計算機能夠識別的二進制指令系統(tǒng)構(gòu)成。例如1011

1111

1101缺點:難懂,不易修改,移植性差匯編語言1、匯編語言用一些便于的符號代替機器語言中的二進制指令代碼,就將二進制的機器語言轉(zhuǎn)換成了一種便于的符號語言,這就是匯編語言。2、與機器語言的比較匯編語言編程比機器語言簡單。例如ADDCX,DX缺點:匯編語言與自然語言的差距較大。不能立即執(zhí)行,需要匯編,變成目標程序。移植性差,效率低。匯編語言源程序匯編程序系統(tǒng)機器語言目標程序結(jié)果匯編執(zhí)行匯編語言的匯編與執(zhí)行高級語言高級語言的概念及特征高級語言了與機器硬件相關(guān)的細節(jié),采用具有一定含義名符號和容易理解的程序語句進行程序設(shè)計,不僅大大降低了程序設(shè)計的難度,而且也使程序易們理解。例如:if

y<1z=x+y;優(yōu)點:與人們自然思維很接近,編程更容易、簡單高級語言程序的通用性和可移植性更高源程序初始數(shù)據(jù)解釋程序運行結(jié)果編譯程序目標程序源程序目標程序運行結(jié)果初始數(shù)據(jù)解釋方式編譯方式交互性好,運行效率低運行效率高本節(jié)主要介紹程序設(shè)計方法的發(fā)展歷程:面向過程->面向結(jié)構(gòu)->面

象過程最早的程序程序目的:用于數(shù)學(xué)計算主要工作:設(shè)計求解問題的過程缺點:對于龐大、復(fù)雜的程序難以開發(fā)和過程

結(jié)構(gòu)化設(shè)計思路:自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。程序結(jié)構(gòu):按功能劃分為若干個基本模塊,形成一個樹狀結(jié)構(gòu)。各模塊間的關(guān)系盡可能簡單,功能上相對獨立;每一模塊

均是由順序、選擇和循環(huán)三種基本結(jié)構(gòu)組成。其模塊化實現(xiàn)的具體方法是使用子程序。機制:將數(shù)據(jù)與操作數(shù)據(jù)的函數(shù)分開。圍繞功能實現(xiàn)或操作流程來設(shè)計程序。程序=數(shù)據(jù)結(jié)構(gòu)+算法形式:主模塊+若干個子模塊優(yōu)點:有效地將一個較復(fù)雜的程序系統(tǒng)設(shè)計任務(wù)分解成許多易于控制和處理的子任務(wù),便于開發(fā)和

。缺點:可重用性差、數(shù)據(jù)安全性差、效率低、難以開發(fā)大型

圖形界面的應(yīng)用

。struct

{charname[10];char

addr[20];char

phone[11];}p[100];int

n=0;void

InputData(){

......}void

SearchAddr(char

*name){void

SearchPhone(char

*name){……}void

PrintData(){……}void

main(){……//調(diào)用前面編寫的函數(shù),完成

數(shù)據(jù)處……}結(jié)構(gòu)化程序的案例——個人程序定義數(shù)據(jù)結(jié)構(gòu)定義全局數(shù)據(jù)定義操作數(shù)據(jù)的函數(shù)主函數(shù)控制程序流程局部變量函數(shù)A局部變量函數(shù)B只有函數(shù)A才能只有函數(shù)B才能全局變量

全局變量可被任何函數(shù)結(jié)構(gòu)化程序的問題——數(shù)據(jù)與算法分離,程序數(shù)據(jù)和操作數(shù)據(jù)的函數(shù)是分離的。大型程序中,有很多全局數(shù)據(jù)和全局函數(shù),這導(dǎo)致了函數(shù)和數(shù)據(jù)之間數(shù)目巨大的潛在連接!若全局數(shù)據(jù)有所改動,可能會導(dǎo)致所有

這個數(shù)據(jù)的全部函數(shù)重寫.全局數(shù)據(jù)全局數(shù)據(jù)全局數(shù)據(jù)函數(shù)函數(shù)函數(shù)函數(shù)結(jié)構(gòu)化程序設(shè)計范型象1、設(shè)計觀點將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起,作為一個相互依存、不可分離的整體——對象。對同類型對象抽象出其共性,形成類。類通過一個簡單的外部接口,與外界對象與對象之間通過消息進行通信。2、設(shè)計目的實現(xiàn)

設(shè)計的

。。3、設(shè)計方法:使用面仿并處理現(xiàn)實問題。象的觀點來描述模程序=對象+消息要求:高度概括、分類和抽象。4、優(yōu)點:程序模塊間的關(guān)系更為簡單,程序模塊的獨立性、數(shù)據(jù)的安全性就有了良好的保障。通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得

的開發(fā)和

都更為方便。5、基本概念對象客觀存在的實體稱為對象屬性描述對象的特征的數(shù)據(jù)行為對象自身的行為,對現(xiàn)實世界某些信息的響應(yīng).對象之間通過傳遞消息相互影響屬性行為對象由屬性和行為構(gòu)成char

name[10];charaddr[20];char

phone[11];public:voidInitData(){……}void

SearchAddr(char

*name){……};…void

SearchPhone(char

*name){……};};6、classprivate:程序在C++中的類代碼形式{將客觀事物的屬性和行為抽象成數(shù)據(jù)和操作數(shù)據(jù)的函數(shù),并把它們組一個不可分割的整體(即對象)的方法能夠?qū)崿F(xiàn)對客觀世界的真實模擬,反映出世界的本來面目。從客觀世界中抽象出一個個對象,對象之間能夠傳遞消息

.?dāng)?shù)據(jù)成員函數(shù)成員函數(shù)數(shù)據(jù)成員函數(shù)成員函數(shù)數(shù)據(jù)成員函數(shù)成員函數(shù)對象1對象2對象3消息消息消息7、面象模型面象的程序設(shè)計語言本節(jié)主要介紹類與對象的基本概念,以及面

象程序設(shè)計的主要特征對象是現(xiàn)實世界中實際存在的事物。將現(xiàn)實中的對象經(jīng)過抽象,

為中的對象。1對象?對象:

客觀存在的實體稱為對象。一個對象具有一組屬性和行為屬性:紅色,車牌對象的基本概念行為:加速、、剎車....類:是具有相同屬性和行為的一組對象的集合,它為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個主要部分。類的基本概念青花瓷器這個概念是類還是對象?這個概念是類還是對象?,是由類定義所對象是實際存在的該類事物的產(chǎn)生出來的實例類和對象的關(guān)系?類類似于藍圖對象是類的實例類和對象的關(guān)系:類

對象抽象定義

實例類對象舉例學(xué)生

學(xué)生課程

面象技術(shù)與C++程序設(shè)計類型

變量,如C

語言中的int

和int

x類是一種用戶自定義類型,class類名稱{public:形式:公有成員(外部接口)private:私有成員protected:保護型成員};類的

形式公有類型成員:在關(guān)鍵字public后面外部的接口,任何外部函數(shù)都可以函數(shù)。,它們是類與公有類型數(shù)據(jù)和私有類型成員:在關(guān)鍵字private后面,只允許本類中的函數(shù) ,而類外部的任何函數(shù)都不能。私有成員,則關(guān)鍵字如果緊跟在類名稱的后面private可以省略。保護類型成員:與private類似,其差別表現(xiàn)在繼承與派生時對派生類的影響不同。對象的

形式類名 對象名;類中成員互訪直接使用成員名類外使用“對象名.成員名”方式的成員public

屬性抽象是對具體對象(問題)進行概括,抽出這一類對象的公共性質(zhì)并加以描述的過程。數(shù)據(jù)抽象:描述某類對象的屬性或狀態(tài)(對象相互區(qū)別的物理量)。代碼抽象:描述某類對象的共有的行為特征或具有的功能。抽象的實現(xiàn):通過類的

。抽象數(shù)據(jù)抽象:Hour,

Minute,

Second代碼抽象:run()

,dispTime()

,setHour(),setMinute(),setSecond()class

Clock{int

Hour,Minute,Second;void

setHour(int

h);

void

setMinute(int

m);void

setSecond(ints);void

dispTime();

void

run();};將抽象出的數(shù)據(jù)成員、代碼成員相結(jié)合,將它們視為一個整體。目的是增強安全性和簡化編程,使用者不必了解具體的實現(xiàn)細節(jié),而只需要通過外部接口,以特定的權(quán)限,來使用類的成員。實現(xiàn)封裝:類

中的{}封裝class

Clock{private:int

Hour,Minute,Second;void

run();public:void

setHour(int

h);void

setMinute(int

m);void

setSecond(int

s);void

dispTime();邊界};特定的權(quán)限外部接口public

成員1public

成員2public

成員nprivate直接private是的抽象與封裝形成了程序接口與實現(xiàn)的分離void

setHour(int

h)void

setMinute(int

m)void

setSecond(int

s)void

dispTime()int

hour;int

minute;int

second;void

setHour(int

h){…}void

setMinute(int

m)

{…}void

setSecond(int

s)

{…}void

dispTime()

{…}void

run()

{…}用戶接口,對用戶可見實現(xiàn)細節(jié),對用戶不可見,用戶不知道這些【例】Clock類及其對象的完整例程。#include<iostream>#include<string>using

namespace

std;class

Clock{public:void

setHour(int

h) {

hour=h;

}void

setMinute(int

m)

{

minute=m;

}void

setSecond(int

s)

{

second=s;

}void

dispTime(){cout<<"Now

is:

“<<hour<<":“<<minute<<":“<<second<<endl;}private:int

hour,minute,second;};int

main(){Clock

aClock,

bClock;aClock.setMinute(12);aClock.setHour(16);aClock.setSecond(27);bClock=aClock;aClock.dispTime();bClock.dispTime();}繼承1、繼承的基本概念繼承:對象之間的相互關(guān)系,使得某類對象可以繼承另外一類對象(祖先)的特征和功能。類間具有繼承關(guān)系的特性:類間具有共享特征:遺傳類間具有細微差別或新增部分:變異類間具有層次結(jié)構(gòu)(同人類通過繼承構(gòu)成了關(guān)系一樣)保持已有類的特性而構(gòu)造新類的過程稱為繼承。在已有類的基礎(chǔ)上新增自己的特性而產(chǎn)生新類的過程稱為派生。被繼承的已有類稱為基類(或父類)。派生出的新類稱為派生類(或子類)?!纠恳粋€繼承的例子2、繼承分類從繼承源上劃分:單繼承(一個派生類只有一個基類)、多繼承(一個派生類有多個基類)3、繼承目的實現(xiàn)代碼重用code

reuse4、派生的目的當(dāng)新的問題出現(xiàn),原有程序無法解決(或不能完全解決)時,需要對原有程序進行改造。1、多態(tài)對象根據(jù)所接受的消息而做出動作,同樣的消息為不同的對象接受時可導(dǎo)致完全不同的行動,該現(xiàn)象稱為多態(tài)性。1.3.5

多態(tài)2、多態(tài)性的實現(xiàn)運行時多態(tài)性:虛函數(shù)編譯時多態(tài)性:重載舉例:sqrt_i

(int

i),sqrt_f

(float

f)sqrt

(int

i),sqrt

(float

f)作用:減輕程序員負擔(dān)降低程序員出錯機率3、多態(tài)的一個案例圖中同名函數(shù)area()作用在Circle、Triangle等不同類上時,將執(zhí)行不同的“計算面積”的方法,這就是多態(tài)。面象的三大特征是封裝性、繼承性和多態(tài)性。

封裝性:將客觀事物抽象成類,每個類對自身的數(shù)據(jù)和方法實行protection(private,protected,public)。繼承性:對象之間的相互關(guān)系,使得某類對象可以繼承另外一類對象(祖先)的特征和功能。多態(tài)性:對象根據(jù)所接受的消息而做出動作,同樣的消息為不同的對象接受時可導(dǎo)致完全不同的行動,該現(xiàn)象稱為多態(tài)性。1960年出現(xiàn)了一種面向問題的高級語言ALGOL

60。1963年,英國的

大學(xué)推出了CPL(CombinedProgrammingLanguage)語言,后來經(jīng)簡化為BCPL語言。1970年,Bell

的KenThompson又以BCPL語言為基礎(chǔ),設(shè)計出更加簡單并接近硬件的語言,取其第一字母B,稱為B語言。C語言的產(chǎn)生1972年,

Dennis

M.

Ritchie,

貝爾M.Ritchie為克服B語言的諸多不足,在B語言的基礎(chǔ)上重新設(shè)計了一種語言,取其第二字母C,故稱為C語言。與Ken

Thompson用C語言重寫了UNIX系統(tǒng)。因此,他還是名副其實的UNIX之父。·C++的產(chǎn)生20世紀80年代初,Bjarne

Stroustrup,貝爾/~bs/本

·對c增加了面 象部分,叫帶類的c,1983年正式命名c++1998年,ANSI/ISO

C++標準建立C++的特點兼容C,支持面向過程的程序設(shè)計class

C{};class

CPlusPlus

:

public

C

{};支持面

象的機制具有高效性、靈活性、可移植性豐富的數(shù)據(jù)類型C++C++語言是一種高級程序設(shè)計語言,它的開發(fā)過其他高級語言程序開發(fā)過程類似,一般要經(jīng)過四個步驟:編輯edit

編譯compile

link

執(zhí)行build編輯把按照C++語

則編寫的程序代碼通過編輯器輸入計算機,并存盤。在存盤時,C++源文件的擴展名為.CPP。編譯將編輯好的C++源程序通過編譯器轉(zhuǎn)換為目標文件(OBJ文件)。即生成該源文件的目標代碼。將用戶程序生成的多個目標代碼文件(.obj)和系統(tǒng)提供的庫文件(.lib)中的某些代碼連接在一起,生成一個可執(zhí)行文件(.exe)。執(zhí)行把生成的可執(zhí)行文件運行,在屏幕上顯示運行結(jié)果。用戶可以根據(jù)運行結(jié)果來判斷程序是否出錯。(.OBJ)文件(.CPP

.h)文件C++庫文件(.EXE)文件編輯工程文件執(zhí)行編譯器器存盤出錯出錯al.cppa2.cppa3.cppb1.hb2.h翻譯單元1翻譯單元2翻譯單元3A1.obja2.obja3.obj.libC++的標準庫函數(shù)標準類庫.exe可執(zhí)行文件編譯(Compile)預(yù)處理(Link)#include#include測試和調(diào)試bug:程序中的錯誤。Debug(調(diào)

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論