- C++面向?qū)ο蟪绦蛟O(shè)計(jì)(第三版)
- 陳維興 林小茶
- 11字
- 2019-10-25 14:55:27
1.1 面向?qū)ο蟪绦蛟O(shè)計(jì)概述
1.1.1 面向?qū)ο蟪绦蛟O(shè)計(jì)的定義
面向?qū)ο蟪绦蛟O(shè)計(jì)(Object-Oriented Programming,OOP)是一種新的程序設(shè)計(jì)范型。程序設(shè)計(jì)范型是指設(shè)計(jì)程序的規(guī)范、模型和風(fēng)格,它是一類程序設(shè)計(jì)語(yǔ)言的基礎(chǔ)。一種程序設(shè)計(jì)范型體現(xiàn)了一類語(yǔ)言的主要特征,這些特征能用以支持應(yīng)用領(lǐng)域所希望的設(shè)計(jì)風(fēng)格。不同的程序設(shè)計(jì)范型有不同的程序設(shè)計(jì)技術(shù)和方法。
面向過(guò)程程序設(shè)計(jì)范型是使用較廣泛的程序設(shè)計(jì)范型,這種范型的主要特征是:程序由過(guò)程定義和過(guò)程調(diào)用組成(簡(jiǎn)單地說(shuō),過(guò)程就是程序執(zhí)行某項(xiàng)操作的一段代碼,函數(shù)是最常用的過(guò)程)。從這個(gè)意義出發(fā),基于面向過(guò)程的程序可以用下面的公式來(lái)表述:
程序=過(guò)程+調(diào)用
基于面向過(guò)程程序設(shè)計(jì)范型的語(yǔ)言稱為面向過(guò)程性語(yǔ)言,如C、Pascal、FORTRAN、Ada等都是典型的面向過(guò)程性語(yǔ)言。除面向過(guò)程程序設(shè)計(jì)范型外,還有許多其他程序設(shè)計(jì)范型。例如,函數(shù)式程序設(shè)計(jì)范型也是較為流行的程序設(shè)計(jì)范型,它的主要特征是:程序被看作“描述輸入與輸出之間關(guān)系”的數(shù)學(xué)函數(shù),LISP是支持這種范型的典型語(yǔ)言。此外,還有模塊程序設(shè)計(jì)范型(典型語(yǔ)言是Modula)、邏輯式程序設(shè)計(jì)范型(典型語(yǔ)言是PROLOG)、進(jìn)程式程序設(shè)計(jì)范型、類型系統(tǒng)程序設(shè)計(jì)范型、事件程序設(shè)計(jì)范型、數(shù)據(jù)流程序設(shè)計(jì)范型等。
面向?qū)ο蟪绦蛟O(shè)計(jì)是一種新的程序設(shè)計(jì)范型。這種范型的主要特征是:
程序=對(duì)象+消息
面向?qū)ο蟪绦虻幕驹厥菍?duì)象,面向?qū)ο蟪绦虻闹饕Y(jié)構(gòu)特點(diǎn)是:第一,程序一般由類的定義和類的使用兩部分組成;第二,程序中的一切操作都是通過(guò)向?qū)ο蟀l(fā)送消息來(lái)實(shí)現(xiàn)的,對(duì)象接收到消息后,啟動(dòng)有關(guān)方法完成相應(yīng)的操作。一個(gè)程序中涉及的類,可以由程序設(shè)計(jì)者自己定義,也可以使用現(xiàn)成的類(包括類庫(kù)中為用戶提供的類和他人已構(gòu)建好的類)。盡量使用現(xiàn)成的類,是面向?qū)ο蟪绦蛟O(shè)計(jì)范型所倡導(dǎo)的程序設(shè)計(jì)風(fēng)格。
需要說(shuō)明的是:某一種程序設(shè)計(jì)語(yǔ)言不一定與一種程序設(shè)計(jì)范型相對(duì)應(yīng)。實(shí)際上存在具備兩種或多種范型特征的程序設(shè)計(jì)語(yǔ)言,即混合型語(yǔ)言。例如,C++就不是純粹的面向?qū)ο蟪绦蛟O(shè)計(jì)范型的語(yǔ)言,而是具有面向過(guò)程程序設(shè)計(jì)范型和面向?qū)ο蟪绦蛟O(shè)計(jì)范型的混合型程序設(shè)計(jì)語(yǔ)言。
- 程序員面試筆試寶典(第3版)
- ThinkPHP 5實(shí)戰(zhàn)
- 新一代通用視頻編碼H.266/VVC:原理、標(biāo)準(zhǔn)與實(shí)現(xiàn)
- OpenCV實(shí)例精解
- Practical Internet of Things Security
- 動(dòng)手玩轉(zhuǎn)Scratch3.0編程:人工智能科創(chuàng)教育指南
- Mastering OpenCV 4
- 人臉識(shí)別原理及算法:動(dòng)態(tài)人臉識(shí)別系統(tǒng)研究
- Raspberry Pi 2 Server Essentials
- Hands-On GPU:Accelerated Computer Vision with OpenCV and CUDA
- Learning R for Geospatial Analysis
- SQL 經(jīng)典實(shí)例
- Java語(yǔ)言程序設(shè)計(jì)教程
- Mastering Web Application Development with AngularJS
- 匯編語(yǔ)言編程基礎(chǔ):基于LoongArch