VC++--小编分享面向对象特征及其优点

2012-03-09  来源:本站原创  分类:转贴的文章  人气:0 

VC++——小编分享面向对象特征及其优点

作者:娜 来源: 程序员之家 发布者:admin
时间:2009-10-23 11:06:19 点击:626

昨天看到程序员之家论坛里有位网友提问,问题大概是不理解程序的面向对象思想,所以今天小编说下面向对象编程的四个基本特征以及面向对象编程的优点。好了言归正传。

面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计。面向对象程序设计技术的提出,主要是为了解决传统程序设计方法——结构化程序设计所不能解决的代码重用问题。

面向对象的编程方法具有四个基本特征:

1.抽象

抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。比如,我们要设计一个学生成绩管理系统,考察学生这个对象时,我们只关心他的班级、学号、成绩等,而不用去关心他的身高、体重这些信息。抽象包括两个方面,一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。

2.继承

继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。这也体现了大自然中一般与特殊的关系。继承性很好的解决了软件的可重用性问题。比如说,所有的Windows应用程序都有一个窗口,它们可以看作都是从一个窗口类派生出来的。但是有的应用程序用于文字处理,有的应用程序用于绘图,这是由于派生出了不同的子类,各个子类添加了不同的特性。

3.封装

封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,则有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示内部状态。在这个阶段定义对象的接口。通常,应禁止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装则为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的内部,因而可以将应用程序修改带来的影响减少到最低限度。

4. 多态性:

多态性是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

面向对象程序设计具有许多优点:

开发时间短,效率高,可靠性高,所开发的程序更强壮。由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短了开发时间。

应用程序更易于维护、更新和升级。继承和封装使得应用程序的修改带来的影响更加局部化。

Windows的最初开发是在80年代早期,在C++出现之前,但是当时已经提出了面向对象式的程序设计思想。Windows的开发者们已经意识到将界面上不同的项看作对象的好处,但是他们仍然被迫采用传统的C语言来处理这些对象。在Windows的界面设计和软件开发环境中,可以说处处贯穿着面向对象的思想。

在Windows中,程序的基本单位不是过程和函数,而是窗口。一个窗口是一组数据的集合和处理这些数据的方法和窗口函数。从面向对象的角度来看,窗口本身就是一个对象。Windows程序的执行过程本身就是窗口和其他对象的创建、处理和消亡过程。Windows中的消息的发送可以理解为一个窗口对象向别的窗口对象请求对象的服务过程。因此,用面向对象方法来进行Windows程序的设计与开发是极其方便的和自然的。

采用面向对象的方法来进行Windows程序设计还可以简化对资源的管理。当我们将资源映射成一个C++对象时,对资源的使用可以翻译成以下C++顺序:

1.创建一个对象:如定义一个画笔对象

2.使用对象:用画笔绘图

3.撤消该对象

一个对象的创建是对一个对象的定义过程,可以由对象的构造函数处理对资源的请求过程。当某一个对象退出活动范围时,它的撤消可以由编译器来自动管理。各种资源和Windows结构都能以这种方式处理,如设备上下文、画笔、字体、画刷

转载请注明出处:程序员之家 http://www.sunxin.org

原文链接:http://blog.csdn.net/augusdi/article/details/5413825

相关文章
  • VC++--小编分享面向对象特征及其优点 2012-03-09

    VC++--小编分享面向对象特征及其优点 作者:娜 来源: 程序员之家 发布者:admin 时间:2009-10-23 11:06:19 点击:626 昨天看到程序员之家论坛里有位网友提问,问题大概是不理解程序的面向对象思想,所以今天小编说下面向对象编程的四个基本特征以及面向对象编程的优点.好了言归正传. 面向对象技术是目前流行的系统设计开发技术,它包括面向对象分析和面向对象程序设计.面向对象程序设计技术的提出,主要是为了解决传统程序设计方法--结构化程序设计所不能解决的代码重用问题. 面向对象

  • Nodejs实现多人同时在线移动鼠标的小游戏分享 2013-10-21

    这篇文章主要介绍了Nodejs实现多人同时在线移动鼠标的小游戏分享,本文给出了服务器端和客户端代码以及运行方法,需要的朋友可以参考下 最近因为项目需要,所以研究了一下nodejs的websocket实现,socket.io,这是nodejs后台应用websocket广泛使用的框架. 准备工作 1.安装socket.io,使用命令npm install socket.io 2.windows系统的话,需要vc编译环境,因为安装socket.io的时候,会编译vc代码 游戏基本原理 1.服务器监听客

  • VC小技巧汇总之对话框技巧 2014-06-26

    这篇文章主要介绍了VC小技巧汇总之对话框技巧,非常实用!对于进行VC开发有一定的参考借鉴价值,需要的朋友可以参考下 本文搜集汇总了VC中关于对话框常用的一些技巧,对于进行VC开发由于一定的参考借鉴价值. 1.如何修改对话框的背景色: 在对话框的OnPaint()函数中加入下面语句: CRect rect; GetClientRect(&rect); //计算对话框的尺寸 dc.FillSolidRect(&rect,RGB(192,248,202)); //绘制对话框背景色 2.如何让弹出

  • MySql insert插入操作的3个小技巧分享 2014-08-12

    这篇文章主要介绍了MySql insert插入操作的3个小技巧分享,本文讲解了插入的数据来源自其他表.插入时排除(忽略)重复记录.插入时遇到重复记录做更新操作三个小技巧,需要的朋友可以参考下 1.插入的数据来源自其他表 表A有id, cola 字段 表B有id, cola, colb...等字段,其中id都为主键,cola为相同名字的列 现想将表B中colb>1000的记录都插入表A中,SQL语句可以这样写: insert into A(id,cola) select id,cola from

  • 15个jquery常用方法.小技巧分享 2014-10-19

    这篇文章主要介绍了15个jquery常用方法.小技巧分享,本文总结了一些开发中常用的方法,例如获取td的行标和列标.判断是否是回车按下.全选和反选等,需要的朋友可以参考下 1.获取td的行标和列标 $(this).prop('cellIndex') 2.判断是否是回车按下 复制代码 代码如下: var myEvent = event || window.event; var key = myEvent.keyCode; if(key == 13){ //此时为回车按下 } 3.全选和反选 复制代

  • VC小技巧汇总之控件技巧 2014-10-22

    这篇文章主要介绍了VC小技巧汇总之控件技巧,对于VC的开发很有借鉴价值,需要的朋友可以参考下 本文搜集汇总了VC小技巧的控件技巧,对于进行VC开发来说有一定的借鉴价值,具体如下: 1.如何隐藏和显示控件 用CWnd类的函数BOOL ShowWindow(int nCmdShow)可以隐藏或显示一个控件. 例1: CWnd *pWnd; pWnd = GetDlgItem( IDC_EDIT1 ); //获取控件指针,IDC_EDIT为控件ID号 pWnd->ShowWindow( SW_HIDE

  • VC小技巧汇总之5则实用小技巧 2014-12-16

    这篇文章主要介绍了VC小技巧汇总之5则实用小技巧,需要的朋友可以参考下 本文搜集汇总VC的5则小技巧,非常实用,对于VC程序设计有很好的参考借鉴价值,详情如下: 1.如何获取程序所在的路径 也就是获取你这个程序本身所在的路径. 在应用程序类CxxApp的头文件中定义一个变量CString m_exePath;用来放置程序的路径名,在应用程序类CxxApp的InitInstance()函数中加入如下语句: TCHAR m_Path[MAX_PATH]; GetModuleFileName( NUL

  • js实现俄罗斯方块小游戏分享 2015-01-25

    这篇文章主要介绍了js实现俄罗斯方块小游戏分享,,需要的朋友可以参考下 <!doctype html><html><head><style type="text/css"> body { background:#000; font:25px/25px 宋体;} #box { float:left;width:252px;border:#999 20px ridge;color:#9f9;text-shadow:2px 3px 1px #0

  • 收集的几个Python小技巧分享 2015-03-29

    这篇文章主要介绍了收集的几个Python小技巧分享,如获得当前机器的名字.获取当前工作路径.获取系统的临时目录等,需要的朋友可以参考下 获得当前机器的名字: def hostname(): sys = os.name if sys == 'nt': hostname = os.getenv('computername') return hostname elif sys == 'posix': host = os.popen('echo $HOSTNAME') try: hostname = h

  • VC小技巧汇总之窗口技巧 2015-04-18

    这篇文章主要介绍了VC小技巧汇总之窗口技巧,功能非常实用,对于VC开发有一定借鉴价值,需要的朋友可以参考下 本文搜集汇总了VC小技巧的窗口技巧,对于VC程序开发的窗口设计而言有一定的借鉴价值,详情如下: 1.让窗口一启动就最大化 把应用程序类(CxxxApp)的 InitInstance() 函数中的 m_pMainWnd->ShowWindow(SW_SHOW); 改为 m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); 则窗口一启动就最大化显示. 2.如何设

  • 小编热荐:美图秀秀打造超可爱大头照 2013-11-22

    这几天,妹妹一直缠着我给她找个傻瓜式的图片处理软件.说是同学没长得她好看,只P了几张"非主流"风格照片就招得小男生们很是喜欢!无奈我这个小编姐姐只好亲自出马,可Photoshop太复杂,忽然脑子一闪,哈,有了,就用现在最热的美图秀秀(xiuxiu.meitu.com)吧!1分钟就能搞定,效果又快又好! 说虽这样说,我还是亲自试用了一番,她可是一定要比同学的好看才行!看看下面的效果对比!. 先找张妹妹普通大头照 用美图秀秀不到一分钟的华丽丽效果图闪亮登场!! 哈,相信这是不靠photos

  • 多玩小编与你见证赛尔号年终巨献 引小赛尔空前轰动 2015-04-14

    赛尔号12月31日更新,官方宣布会在12月31日20点整开始,至21点整,通过抽赛尔金蛋的方式有机会获得神秘精灵. 小编在20点整准时登陆游戏,游戏服务器大多爆满 每个游戏地图也都是爆满,甚至很难点中赛尔金蛋(酷勤网赛尔号(www.kuqin.com/article/20091230/76839.html)温馨提示:游戏不可多玩,学业不可荒废) 游戏规定普通玩家每次有一次机会抽赛尔金蛋,拥有超能nono的玩家每次都有两次机会抽赛尔金蛋,但是此次活动还是令不少小玩家失望而归. 稀有精灵果然是很难获

  • 小窍门分享:如何使用Chrome控制台创建表格 2013-10-13

    概述:分享一个Chrome使用小窍门,在Chrome控制台使用console.table创建表格. 试一试这个我刚发现的小窍门.在Chrome中使用console.table以一个很不错的展现效果格式化数据. 打开Chrome开发者工具(按F12).创建一个散列数组的数据.散列键就会被用于表格列,然后值就会用于表格行. 自己左右做一个简单的例子.让我们简单地列举字母,列出大写.十六进制. 我使用了下面的代码,有兴趣的朋友可以复制到谷歌浏览器的开发者控制台: 1 2 3 4 5 6 7 8 9 1

  • 25个好玩的JavaScript小游戏分享 2013-10-21

    JavaScript 早已不只是一门写写网页特效的脚本语言了,如今广泛用于网站的前端交互. 值得一提的是,当下Web开发者们追捧的 Node.js 使得 JavaScript 能够在更多环境下运行,甚至是网站的服务器端,使得这门语言再次受到大家的关注.今天,本文与大家分享25个好玩的 JavaScript 小游戏,感受一下 JavaScript 的魅力. Bunny Hunt Travians Ajax Chinese Chess Digg Attack Invaders From Mars S

  • 17个Python小技巧分享 2013-11-10

    这篇文章主要给大家分享了17个Python小技巧,都是些基础的非常常用也非常实用的小技巧,这里推荐给大家. 1.交换变量 x = 6 y = 5 x, y = y, x print x >>> 5 print y >>> 6 2.if 语句在行内 复制代码 代码如下: print "Hello" if True else "World" >>> Hello 3.连接 下面的最后一种方式在绑定两个不同类型的对象时显

  • javascript中关于&& 和 || 表达式的小技巧分享 2014-02-11

    我将会介绍和解析12个简单但是强大的JavaScript技巧. 这些技巧所有的JavaScript程序员都可以马上使用, 你不需要成为JavaScript高手才能理解这些.下面我们开始本系列的第一篇文章,介绍下强大的&& 和 || 表达式 如果你还是新手, 而且读完所有这些技巧的详解和每种技巧是如果工作的以后运用它们, 你会写出更加简练高效的JavaScript程序. 确实, JavaScript高手已经运用这些技巧写出了很多强大, 高效的JavaScript程序. 但是你可以这样. 强大

  • C#面向对象特征的具体实现及作用详解 2014-05-08

    所有的面相对象思想,归根结底是为了简化代码,减少代码量,构建更符合现实生活逻辑的程序代码,从而减轻程序员的负担.不能一味地或者说刻意地去使用面相对象的思想而忽略了程序所实现的功能或者框架,要根据实际情况 众所周知,面向对象编程的特点为:封装.继承.多态.C#是一门完全面向对象的语言,由于比Java推出的时间还要晚,所以对面向对象的思想的体现比Java还要完美,那么在C#中如何体现封装.继承和多态呢?下面举例并进行说明. 1.封装 封装的好处有以下几点: ①数据不外泄,可以做到一定的保护 ②类的使

  • 编程人员阅读代码的一些小技巧分享 2014-07-13

    阅读别人的代码作为研发人员是一件经常要做的事情.一个是学习新的编程语言的时候通过阅读别人的代码是个最佳的学习方法,另外是积累编程经验. 代码阅读的必要性 阅读别人的代码作为研发人员是一件经常要做的事情.一个是学习新的编程语言的时候通过阅读别人的代码是个最佳的学习方法,另外是积累编程经验.如果你有机 会阅读一些操作系统的代码会帮助你理解一些基本的原理.更有就是在你作为一个质量确保人员或一个小领导的时候如果你要做白盒测试的时候没有阅读代码的能力 是不能完成相应的任务.最后一个就是如果你中途接手一个项

  • 使用js操作cookie的一点小收获分享 2014-12-28

    js操作cookie想必大家并不陌生吧,本文积累了一点小经验,在此与大家分享下,希望对大家有所帮助 为了说清楚这个问题,必须从头说起. 首先从后台配置一个参数,放到一个字段里,该字段叫做keywords,这个参数的值叫做efmis://|efmfj|username|2200|0||2014|http://10.20.1.54:7001/cssServerportal222012/|||||02,姑且不去管这个值有什么含义,相信很多人都遇到过比这个更复杂的字符串.后台配置以后,前台可以这么来显示

  • django模型中的字段和model名显示为中文小技巧分享 2015-01-29

    这里给大家分享2个可以让django模型中的字段和model名显示为中文的小技巧,非常的简单实用,给需要的小伙伴参考下. 简单方法: models.py class IceCreamBar(models.Model): title = models.CharField(max_length=200,db_index=True,verbose_name="名称") shell = models.CharField(max_length=100,verbose_name='外皮') fil