版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
面
象技術與C++程序設計第1章C++面象程序設計概述高文超2015年4月TIOBE編程語言社區(qū)榜TOP
10C++應用系統(tǒng)級架構高性能實時計算應用程序平臺其他多應用CADCAECAM1.開發(fā)應用角度看:面向系統(tǒ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++數據庫:Oracle
:主要為C++MySQL
:C++SQL
Server
:匯編->C->C++應用:商務、網絡、信息管理、通信、圖形圖象處理辦公: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ā)大型電子商務開發(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++從教學上看:數據結構、算法設計都用的C和C++從設計方法上看:支持面
象從就業(yè)上看:C++程序員、
工程師仍有較大的需求C++
工程師職位描述:(1)負責項目的開發(fā)、
;能夠理解用戶需求,完成項目分析、設計、編碼、測試和
工作;負責完成技術文檔的編寫;完成團隊安排的其它工作。任職要求:計算機相關專業(yè),本科及以上學歷;精通C++編程,熟悉OO分析及設計方法,了解設計模式,能熟練使用UML交流程序設計;熟悉計算機網絡協議,有網絡編程經驗;扎實的C/C++語言基礎,對算法和數據結構有深入理解;精通Windows平臺下的系統(tǒng)級開發(fā),熟悉網絡和多線程編程;熟練掌握Oracle等數據庫開發(fā)技術;責任心強,有良好的溝通能力和團隊合作精神;良好的系統(tǒng)設計能力、文檔能力和溝通能力,能很好地融入團隊工作;良好的代碼編寫
,有較強的學習能力和解決問題的能力。華北計算技術事業(yè)單位C/C++研發(fā)工程師學歷要求:本科及以上專業(yè)要求:計算機、通信工程及相關專業(yè)崗位要求:1、熟練掌握C、C++編程語言;2、熟悉Linux/Unix/Solaris等操作系統(tǒng),并熟練掌握系統(tǒng)操作命令;3、熟悉網絡編程,多線程編程,熟悉數據結構及常用的算法;
4、具有基于Oracle、SQLServer、Mysql等關系數據庫項目開發(fā)經驗;5、優(yōu)秀的職業(yè)素養(yǎng),能夠承受工作壓力,富有進取心;6、具有良好的溝通能力、語言及文字能力、應變能力。公司電力科學電力控制系統(tǒng)國有企業(yè)C/C++高級工程師/資深工程師工作內容:負責系統(tǒng)架構設計或程序開發(fā)工作任職要求:兩年以上的開發(fā)經驗,計算機相關專業(yè),本科及以上學歷;熟悉C/C++,能熟練在linux環(huán)境進行代碼編寫、編譯、和調試;具備良好的程序數據結構、算法設計能力,能快速、高效、高質量進行程序設計、開發(fā)與調試;有地理信息系統(tǒng)開發(fā)經驗者優(yōu)先。有互聯網項目架構設計經驗者優(yōu)先。阿里巴巴合資企業(yè)Windows環(huán)境下C++客戶端開發(fā)工程師&
linux環(huán)境下C++服務器開發(fā)工程師;任職要求1、師出名門——應屆統(tǒng)招本科及以上學歷,計算機相關專業(yè), 優(yōu)先;2、孜孜不倦——熱愛技術,認真踏實,喜歡閱讀英文原版技術文檔和書籍;3、海納百川——具有較強的團隊意識與良好的溝通能力,較強的學習能力以及快速解決問題的能力。完美世界()網絡技術外企獨資
世界上第一個程序員是女的
學習開車,首先要學習交通規(guī)則,然后才能驅車上路
千里之行,始于足下!態(tài)度決定一切!培養(yǎng)
(沒
,收效小,多看
發(fā)展的人物)腳踏實地,不要找捷徑
(想一下成高手很難)手腦勤(多動手實踐)多參考程序代碼(了解別人程序設計思想,有助于自己)注意提高英文閱讀能力資源h參考書籍《C++
Primer》
--
中國電力,
StanleyB.Lippman
著,潘愛民,
譯《C++Primer》Stanley
B.Lippman《C++Primer
Plus》《C++程序設計語言》--機械工業(yè)版社,BjarneStroustrup
著,
譯《The
C++
ProgrammingLanguage》BjarneStroustrup《C++
Howto
Program》FifthEditionH.
M.
Dei本章主要講述:計算機程序設計語言發(fā)展程序設計方法的發(fā)展歷程面
象的程序設計語言C++語言的發(fā)展歷史C++程序的開發(fā)過程人與計算機交流的鴻溝計算機硬件僅知道0和1有問題需要計算機解決的人交流的鴻溝計算機硬件僅僅知道0和1有問題需要計算機解決的人程序設計語言硬
件
軟件=程序+文檔計算機的工作是用程序來控制的程序是指令的集合指令是計算機可以識別
令機器語言指令就是指計算機能夠識別
令,它們是一些由0和1組
的二進制編碼。指令系統(tǒng)計算機硬件系統(tǒng)能夠識別的所有指令的集合。機器語言最早的程序設計語言,它由計算機能夠識別的二進制指令系統(tǒng)構成。例如1011
1111
1101缺點:難懂,不易修改,移植性差匯編語言1、匯編語言用一些便于的符號代替機器語言中的二進制指令代碼,就將二進制的機器語言轉換成了一種便于的符號語言,這就是匯編語言。2、與機器語言的比較匯編語言編程比機器語言簡單。例如ADDCX,DX缺點:匯編語言與自然語言的差距較大。不能立即執(zhí)行,需要匯編,變成目標程序。移植性差,效率低。匯編語言源程序匯編程序系統(tǒng)機器語言目標程序結果匯編執(zhí)行匯編語言的匯編與執(zhí)行高級語言高級語言的概念及特征高級語言了與機器硬件相關的細節(jié),采用具有一定含義名符號和容易理解的程序語句進行程序設計,不僅大大降低了程序設計的難度,而且也使程序易們理解。例如:if
y<1z=x+y;優(yōu)點:與人們自然思維很接近,編程更容易、簡單高級語言程序的通用性和可移植性更高源程序初始數據解釋程序運行結果編譯程序目標程序源程序目標程序運行結果初始數據解釋方式編譯方式交互性好,運行效率低運行效率高本節(jié)主要介紹程序設計方法的發(fā)展歷程:面向過程->面向結構->面
象過程最早的程序程序目的:用于數學計算主要工作:設計求解問題的過程缺點:對于龐大、復雜的程序難以開發(fā)和過程
結構化設計思路:自頂向下、逐步求精。采用模塊分解與功能抽象,自頂向下、分而治之。程序結構:按功能劃分為若干個基本模塊,形成一個樹狀結構。各模塊間的關系盡可能簡單,功能上相對獨立;每一模塊
均是由順序、選擇和循環(huán)三種基本結構組成。其模塊化實現的具體方法是使用子程序。機制:將數據與操作數據的函數分開。圍繞功能實現或操作流程來設計程序。程序=數據結構+算法形式:主模塊+若干個子模塊優(yōu)點:有效地將一個較復雜的程序系統(tǒng)設計任務分解成許多易于控制和處理的子任務,便于開發(fā)和
。缺點:可重用性差、數據安全性差、效率低、難以開發(fā)大型
圖形界面的應用
。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(){……//調用前面編寫的函數,完成
數據處……}結構化程序的案例——個人程序定義數據結構定義全局數據定義操作數據的函數主函數控制程序流程局部變量函數A局部變量函數B只有函數A才能只有函數B才能全局變量
全局變量可被任何函數結構化程序的問題——數據與算法分離,程序數據和操作數據的函數是分離的。大型程序中,有很多全局數據和全局函數,這導致了函數和數據之間數目巨大的潛在連接!若全局數據有所改動,可能會導致所有
這個數據的全部函數重寫.全局數據全局數據全局數據函數函數函數函數結構化程序設計范型象1、設計觀點將數據及對數據的操作方法封裝在一起,作為一個相互依存、不可分離的整體——對象。對同類型對象抽象出其共性,形成類。類通過一個簡單的外部接口,與外界對象與對象之間通過消息進行通信。2、設計目的實現
設計的
。。3、設計方法:使用面仿并處理現實問題。象的觀點來描述模程序=對象+消息要求:高度概括、分類和抽象。4、優(yōu)點:程序模塊間的關系更為簡單,程序模塊的獨立性、數據的安全性就有了良好的保障。通過繼承與多態(tài)性,可以大大提高程序的可重用性,使得
的開發(fā)和
都更為方便。5、基本概念對象客觀存在的實體稱為對象屬性描述對象的特征的數據行為對象自身的行為,對現實世界某些信息的響應.對象之間通過傳遞消息相互影響屬性行為對象由屬性和行為構成char
name[10];charaddr[20];char
phone[11];public:voidInitData(){……}void
SearchAddr(char
*name){……};…void
SearchPhone(char
*name){……};};6、classprivate:程序在C++中的類代碼形式{將客觀事物的屬性和行為抽象成數據和操作數據的函數,并把它們組一個不可分割的整體(即對象)的方法能夠實現對客觀世界的真實模擬,反映出世界的本來面目。從客觀世界中抽象出一個個對象,對象之間能夠傳遞消息
.數據成員函數成員函數數據成員函數成員函數數據成員函數成員函數對象1對象2對象3消息消息消息7、面象模型面象的程序設計語言本節(jié)主要介紹類與對象的基本概念,以及面
象程序設計的主要特征對象是現實世界中實際存在的事物。將現實中的對象經過抽象,
為中的對象。1對象?對象:
客觀存在的實體稱為對象。一個對象具有一組屬性和行為屬性:紅色,車牌對象的基本概念行為:加速、、剎車....類:是具有相同屬性和行為的一組對象的集合,它為屬于該類的全部對象提供了抽象的描述,包括屬性和行為兩個主要部分。類的基本概念青花瓷器這個概念是類還是對象?這個概念是類還是對象?,是由類定義所對象是實際存在的該類事物的產生出來的實例類和對象的關系?類類似于藍圖對象是類的實例類和對象的關系:類
對象抽象定義
實例類對象舉例學生
學生課程
面象技術與C++程序設計類型
變量,如C
語言中的int
和int
x類是一種用戶自定義類型,class類名稱{public:形式:公有成員(外部接口)private:私有成員protected:保護型成員};類的
形式公有類型成員:在關鍵字public后面外部的接口,任何外部函數都可以函數。,它們是類與公有類型數據和私有類型成員:在關鍵字private后面,只允許本類中的函數 ,而類外部的任何函數都不能。私有成員,則關鍵字如果緊跟在類名稱的后面private可以省略。保護類型成員:與private類似,其差別表現在繼承與派生時對派生類的影響不同。對象的
形式類名 對象名;類中成員互訪直接使用成員名類外使用“對象名.成員名”方式的成員public
屬性抽象是對具體對象(問題)進行概括,抽出這一類對象的公共性質并加以描述的過程。數據抽象:描述某類對象的屬性或狀態(tài)(對象相互區(qū)別的物理量)。代碼抽象:描述某類對象的共有的行為特征或具有的功能。抽象的實現:通過類的
。抽象數據抽象: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();};將抽象出的數據成員、代碼成員相結合,將它們視為一個整體。目的是增強安全性和簡化編程,使用者不必了解具體的實現細節(jié),而只需要通過外部接口,以特定的權限,來使用類的成員。實現封裝:類
中的{}封裝class
Clock{private:int
Hour,Minute,Second;void
run();public:void
setHour(int
h);void
setMinute(int
m);void
setSecond(int
s);void
dispTime();邊界};特定的權限外部接口public
成員1public
成員2public
成員nprivate直接private是的抽象與封裝形成了程序接口與實現的分離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()
{…}用戶接口,對用戶可見實現細節(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、繼承的基本概念繼承:對象之間的相互關系,使得某類對象可以繼承另外一類對象(祖先)的特征和功能。類間具有繼承關系的特性:類間具有共享特征:遺傳類間具有細微差別或新增部分:變異類間具有層次結構(同人類通過繼承構成了關系一樣)保持已有類的特性而構造新類的過程稱為繼承。在已有類的基礎上新增自己的特性而產生新類的過程稱為派生。被繼承的已有類稱為基類(或父類)。派生出的新類稱為派生類(或子類)。【例】一個繼承的例子2、繼承分類從繼承源上劃分:單繼承(一個派生類只有一個基類)、多繼承(一個派生類有多個基類)3、繼承目的實現代碼重用code
reuse4、派生的目的當新的問題出現,原有程序無法解決(或不能完全解決)時,需要對原有程序進行改造。1、多態(tài)對象根據所接受的消息而做出動作,同樣的消息為不同的對象接受時可導致完全不同的行動,該現象稱為多態(tài)性。1.3.5
多態(tài)2、多態(tài)性的實現運行時多態(tài)性:虛函數編譯時多態(tài)性:重載舉例:sqrt_i
(int
i),sqrt_f
(float
f)sqrt
(int
i),sqrt
(float
f)作用:減輕程序員負擔降低程序員出錯機率3、多態(tài)的一個案例圖中同名函數area()作用在Circle、Triangle等不同類上時,將執(zhí)行不同的“計算面積”的方法,這就是多態(tài)。面象的三大特征是封裝性、繼承性和多態(tài)性。
封裝性:將客觀事物抽象成類,每個類對自身的數據和方法實行protection(private,protected,public)。繼承性:對象之間的相互關系,使得某類對象可以繼承另外一類對象(祖先)的特征和功能。多態(tài)性:對象根據所接受的消息而做出動作,同樣的消息為不同的對象接受時可導致完全不同的行動,該現象稱為多態(tài)性。1960年出現了一種面向問題的高級語言ALGOL
60。1963年,英國的
大學推出了CPL(CombinedProgrammingLanguage)語言,后來經簡化為BCPL語言。1970年,Bell
的KenThompson又以BCPL語言為基礎,設計出更加簡單并接近硬件的語言,取其第一字母B,稱為B語言。C語言的產生1972年,
Dennis
M.
Ritchie,
貝爾M.Ritchie為克服B語言的諸多不足,在B語言的基礎上重新設計了一種語言,取其第二字母C,故稱為C語言。與Ken
Thompson用C語言重寫了UNIX系統(tǒng)。因此,他還是名副其實的UNIX之父?!++的產生20世紀80年代初,Bjarne
Stroustrup,貝爾/~bs/本
·對c增加了面 象部分,叫帶類的c,1983年正式命名c++1998年,ANSI/ISO
C++標準建立C++的特點兼容C,支持面向過程的程序設計class
C{};class
CPlusPlus
:
public
C
{};支持面
象的機制具有高效性、靈活性、可移植性豐富的數據類型C++C++語言是一種高級程序設計語言,它的開發(fā)過其他高級語言程序開發(fā)過程類似,一般要經過四個步驟:編輯edit
編譯compile
link
執(zhí)行build編輯把按照C++語
則編寫的程序代碼通過編輯器輸入計算機,并存盤。在存盤時,C++源文件的擴展名為.CPP。編譯將編輯好的C++源程序通過編譯器轉換為目標文件(OBJ文件)。即生成該源文件的目標代碼。將用戶程序生成的多個目標代碼文件(.obj)和系統(tǒng)提供的庫文件(.lib)中的某些代碼連接在一起,生成一個可執(zhí)行文件(.exe)。執(zhí)行把生成的可執(zhí)行文件運行,在屏幕上顯示運行結果。用戶可以根據運行結果來判斷程序是否出錯。(.OBJ)文件(.CPP
.h)文件C++庫文件(.EXE)文件編輯工程文件執(zhí)行編譯器器存盤出錯出錯al.cppa2.cppa3.cppb1.hb2.h翻譯單元1翻譯單元2翻譯單元3A1.obja2.obja3.obj.libC++的標準庫函數標準類庫.exe可執(zhí)行文件編譯(Compile)預處理(Link)#include#include測試和調試bug:程序中的錯誤。Debug(調
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023年廢棄資源和廢舊材料回收加工品項目融資計劃書
- 2023年家庭投影儀項目融資計劃書
- 2024秋新滬科版物理八年級上冊課件 第六章 熟悉而陌生的力 第3節(jié) 來自地球的力
- 2023年綠化噴灑車項目融資計劃書
- 電力電纜模擬試題(附答案)
- 養(yǎng)老院老人生活設施維修人員表彰制度
- 養(yǎng)老院老人財務委托管理制度
- 2024年版香港離婚簡易協議樣本版B版
- 2024年版自卸汽車租賃條款3篇
- 2025年中衛(wèi)貨運資格證考試題答案
- 物聯網與人工智能技術融合發(fā)展年度報告
- 婦產科醫(yī)生醫(yī)患溝通技巧
- 內科學糖尿病教案
- 《高尿酸血癥》課件
- 微量泵的操作及報警處置課件查房
- 云南省昆明市西山區(qū)2023-2024學年七年級上學期期末語文試卷
- 人教版小學數學四年級上冊5 1《平行與垂直》練習
- 市政設施養(yǎng)護面年度計劃表
- 公差配合與技術測量技術教案
- 堅持教育、科技、人才“三位一體”為高質量發(fā)展貢獻高校力量
- 污水處理廠工藝設計及計算
評論
0/150
提交評論