面向对象和基于对象

面向对象和基于对象的区别 面向对象和基于对象的区别是多态,和继承无关。            基于对象仅仅支持了抽象数据类型的功能,继承也不过体现了一种is-a的关系,也是抽象数据类型,只是建立了一个层次体系。但是什么是面向对象呢?就是根据对象的实际类型不同,可以自动完成不同的行为,而仅仅通过一致的调用形式。换句话说,也就是虚函数实现的多态。以上观点,在OO设计中已经得到了公认,多态的另一种实现方法是泛型。   阅读详情

面向对象大家都很熟悉,可是基于对象就不一定了。两个听起来好象是同一回事,而事实上它们却千差万别。基于对象是指:我们采用对象封装技术,将数据和操作捆绑在一起,但是并没有合理地使用多态、继承等面向对象技术进行软件设计。其中的“没有合理使用”这一修饰非常重要,它道出了面向对象和基于对象的本质区别。


虽然,听起来面向对象我们很是熟悉,但就我的观察,很多以前从事C程序开发的人,当他采用面向对象的编程语言(如C++)进行开发时,写出来的程序却是基于对象的。或者说他们是采用面向对象的语言编写面向过程的程序!

要掌握面向对象技术不是一件容易的事,这要求我们对于所有的编程事务从“对象”的角度来考虑,是一种全新的思考问题的方法。我想错用最近面试过的一位工程师的话来说明什么是面向对象开发,他说“现实世界是什么,那么程序当中就应当是什么”。

从我的学习经验来看,一开始其实并不明白为什么要用对象来封装。记得1999年刚从C转向C++时,只觉得C++是另一种形式的“C”,那时并没有深刻地领悟到C++语言中所蕴涵的面向对象的强大表达能力。后来,因为工作的需要,需对来自Microsoft MSDN中的Drawcli例程进行扩展,这一工作使得自己对面向对象编程这一技术的知识有了很好的掌握,但仍没有达到随心所欲地运用的境界。这好比我们学会了一套军体拳,但却不用会用其中的各个招式去格斗。

学习面向对象编程需要一段时间通过模仿好的设计(比如前面提到的Drawcli例程),并随着模仿的深入而逐渐掌握。对面向对象编程的真正掌握,是从我们体会到其好处开始的。在我的成长经历中,曾在某一项目上对一个复杂管理问题编程很是苦恼,当时突然想到了从其中抽象出一个类来做管理,那一刻所有的复杂度似乎都消失了。之前之所以复杂是因为采用面向过程的思考方式去解决问题,而当换成面向对象的方式时无形中简化了问题。从这一经历开始,我真正领悟到了面向对象设计的好处,这也是我从模糊的理解到真正掌握的一个根本转折点。

VC经典绘图程序DrawCli VC经典绘图程序示例DrawCli,参照这个例子可以进行绘图设计与编程 立即下载

相关推荐

组态王6.5源代码.rar_C++工业_VC 组态软件_组态_组态王_组态软件

工业组态软件最新版本完整源代码。 属于工业用软件,vc编写

DRAWCLI

SCRIBBLE   示例:MFC   MDI   绘图应用程序 DRAWCLI   示例:阐释活动容器支持与特定于应用程序的功能的集成 JTDraw www.codeguru.com 它定义了CDrawObj和CDrawTool两个基类,各种图形分别继承与两个类,画图的时候根据不同的ID,使用不同的工具(多态),而工具又和它的某个CDrawXXX关联...好好看看,我觉得MS还是比较牛的想

quasiceo 3428

VC DrawCli氏量绘图,填充、直线等效果集

摘要:VC/C++源码,图形处理,氏量绘图  DrawCli源码,综合了氏量绘图、画圆形、椭圆形、三角形等多种规则的图形,可填充图案、绘制直线、曲线、设置图形组合顺序等各种画图功能,确实是不错的绘图例子。

Drawcli分析

当前环境:windows7 32位旗舰版、VS2010旗舰版   Drawcli介绍: Drawcli是VS2010中的一个示例程序,能够进行简单的绘图操作,例如线、矩形、圆角矩形、多边形等,位于VS安装目录"Microsoft Visual Studio 10.0\Samples\2052 \VC2010Samples\C++\MFC\ole\drawcli"下。   1、对象的绘画

dc11223344的专栏 4313

模型剪枝实战 | Torch-Pruning 库在YOLOv8上的应用指南

本文详细介绍了如何使用Torch-Pruning库对YOLOv8模型进行结构化剪枝,以实现模型“瘦身”。通过DepGraph(依赖图)技术自动处理层间依赖,确保剪枝安全。文章提供了从环境搭建、核心原理理解到完整剪枝流程的实战指南,并强调了剪枝后的微调与性能评估,帮助开发者在保持精度的同时显著提升模型推理速度。

weixin_29046035的博客 503

(详细总结)python爬取 163收件箱邮件内容,收件箱列表的几种方法(urllib, requests, selenium)

需求:最近有一个需求,需要将163邮箱收件箱里面的所有邮件的内容全部copy下来,整理到一个word里面,不多也就28页的邮件(不要问我为什么有这需求,不告诉你),自己手动去ctrl+ cv 的话,估计要搞吐。然后就想能不能用python的爬虫来实现,虽然过程比较苦(后期改bug改的要吐了)。但是会后还是将需求实现了。这基本也算是入门了 urllib、requests、selenium这几个py...

man_tou_22 1万+

Comamnd模式和Factory模式在一次代码重构中的应用

作者:朱金灿来源:http://blog.youkuaiyun.com/clever101 如何应用设计模式,是一个见仁见智的问题,可能也没有一定之规。以我的水平也谈得不一定好。前段时间重构了公司软件中的二维图形交互方面的代码,总结了一些经验供大家分享,期待起一个抛砖引玉的作用。 该软件是基于MFC界面框架开发的。MFC的Doc-View架构本质上是一种MVC架构。随着软...

weixin_33866037的博客 164

代码复现——SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架

根据《SymAgent: A Neural-Symbolic Self-Learning Agent Framework for Complex Reasoning over Knowledge Graphs》(《SymAgent:一种用于知识图谱复杂推理的神经符号自学习Agent框架》)论文思路,简单复现代码,以实现SymAgent中的Agent-Planner和Agent-Executor模块。Agent-Planner利用大语言模型的归纳推理能力从知识图谱中提取符号规则,指导高效的问题分解。

qq_60040306的博客 1605

DrawCli一个简单的绘图软件

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34279246的博客 602

LMI线性矩阵不等式之非线性变量处理

​ 如果一个LMI线性矩阵不等式中的某项存在两个矩阵变量相乘,那么称该类情形为非线性矩阵不等式,而要直接求解时很困难的,而且LMI工具箱也无法求解非线性矩阵,所以需要通过变量替换法进行处理。 ​...

Mr.邹的博客 4549

网络攻防技术——MD5碰撞试验

一、题目 本次实验主要是加深大家对MD5碰撞及其原理的理解,使用SEED实验环境中的工具及编程语言,完成以下任务: a)使用md5collgen生成两个MD5值相同的文件,并利用bless十六进制编辑器查看输出的两个文件,描述你观察到的情况; b)参考Lab3_task2.c的代码,生成两个MD5值相同但输出不同的两个可执行文件。 c)参考Lab3_task3.c的代码,生成两个MD5值相同但代码行为不相同的可执行文件。 d)回答问题:通过上面的实验,请解释为什么可以做到不同行为的两个可执行文件具有相同的M

学习记录 3620

面向对象 02:区分面向过程与面向对象,类和对象的关系

本文讲述面向对象相关内容,主要包括面向过程与面向对象的区别,以及类和对象的关系。

积累,沉淀,温故而知新 1374

Vue3 - Vite运行打包时Uncaught ReferenceError: process is not defined(解决vue3+vite报错process is not defined)

vue3,vite,vue3+vite报错,process,UncaughtReferenceError:processisnotdefined,浏览器控制台报错processisnotdefined解决方法,vue3如何解决报错,vite报错怎么办,前端打包UncaughtReferenceError:processisnotdefined,npmrunbuild打包报错,vite打包时出现错误,vue3打包运行找不到process,热更新会报错UncaughtRefer

🏆 前端领域优质创作者 7737

Python面向对象编程基础之面向对象思想和特点、类和对象

面向对象是一种看待事物的思想,一种视觉角度,分析方式,我们可以把任意一个事物看成是一个对象,分析它身上具备的主要特征,这个就是面向对象思维;这样的思维方式很像数据库中的E-R图,将一种事物的特征、属性和行为给分离出来。我们一般写代码都是从开始到结束呈线性流程化模式写完整个程序,这种思想是典型的面向过程思想。而在写代码中面向对象编程,是将执行这些步骤时,把开发时要实现的功能提取出来,分成很多个小模块自定义函数去实现这些功能,而主体函数则去想使用这些自定义函数实现功能后如何运用。举个例子,就像我们打英雄联盟:面

master_hunter的博客 3029

152:vue+leaflet 判断一个点是否在一个电子围栏内

本文介绍了一个基于Vue+Leaflet的示例,演示如何判断点是否在电子围栏内。作者大剑师兰特(优快云知名博主)展示了使用polygon.getBounds().contains(latlng)方法检测点与多边形边界的关系。代码仅需80行,通过点击地图触发判断逻辑,结果显示提示信息。该技术可广泛应用于地理围栏、位置服务等场景,需要安装turf依赖。文章提供了完整源码和配置说明,适合GIS开发者学习参考。

大剑师兰特的GIS世界 756

196、NPU的编译器开发:教程与示例代码编写

NPU编译器开发实战指南 摘要:本文分享了NPU编译器开发中的核心挑战与实战经验,通过具体代码示例展示了关键实现技术: 指令生成:必须考虑硬件特性(如地址对齐)和芯片配置抽象化 图优化:重点处理常见冗余结构(Reshape合并、BN融合),并注意数值稳定性 算子拆分:采用分块计算策略适配有限SRAM,需特别注意边界条件处理 内存分配:基于张量使用频率的贪心算法优化SRAM使用效率 文中包含多个真实踩坑案例: DMA地址未对齐导致硬件错误 BN融合时的除零风险 tile边界处理不当引起的精度下降 这些经验为开

m0_50546716的博客 79

面向对象——类和对象

一、面向对象的概念 面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。 提到面向对象,自然会想到面向过程,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤–实现, 使用的时候依次调用就可以了。面向对象则是把构成问题的事务按照一定规则划分为多个独立的对象,然后通过调用对象的方法来解决问题。当然,-个应用程序会包含多个对象,通过多个对象的相互配合来

ThisIsSunshine的博客 2346

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

类和对象——初步了解面向对象和什么是类

一篇文章认识类。

m0_73693552的博客 1005

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

面向对象&类和对象

py笔记

sz1125218970的博客 506

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

类和面向对象

​ 面向对象(Object Oriented Program,简称OOP)是一种思想,是基于面向过程而言的,就是说面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节;这种思想是将数据作为第一位,而方法或者说是算法作为其次,这是对数据一种优化,操作起来更加的方便,简化了过程。Java是一门纯面向对象的语言。用面向对象的思想来涉及程序,更符合人们对事物的认知,对大型程序的设计、扩展以及维护都非常友好。简单来说类就是对一个对象的描述,主要包括对象的属性和对象的。

WangSir 2086

Java面向对象 类和对象的关系

面向对象设计(Object-Oriented Design,OOD)是软件开发过程中的一个重要阶段,它基于面向对象分析(Object-Oriented Analysis,OOA)的结果,将分析阶段得到的概念和模型转化为实际的、可执行的代码。面向对象设计(Object-Oriented Design,OOD)是在面向对象分析(Object-Oriented Analysis,OOA)之后的一个阶段,它关注的是如何将OOA阶段得到的概念和模型转化为实际的、可执行的代码。面向过程和面向对象在性能上也有所不同。

Code-5的博客 1702

Python教程:面向对象基础和进阶

其实,在前面章节的学习中,我们已经接触了封装,比如说,将乱七八糟的数据扔进列表中,这就是一种简单的封装,是数据层面的封装;继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。区别就是,那些类是在解释器级别注册好的,而现在我们学习的是自定义类,但语法使用都是相同的。面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Person类,而实例是根据类创建出来的一个个具体的“对象”。

weixin_50556117的博客 2289

面向对象和面向过程

一、先来两小段通俗解释 面向过程(Procedure Oriented 简称PO :如C语言): 从名字可以看出它是注重过程的。当解决一个问题的时候,面向过程会把事情拆分成: 一个个函数和数据(用于方法的参数) 。然后按照一定的顺序,执行完这些方法(每个方法看作一个过程),等方法执行完了,事情就搞定了。 面向对象(Object Oriented简称OO :如C++,JAVA等语言): 看名字它是注重对象的。当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对

weixin_43751654的博客 3181

JAVA 面向对象 类和对象

本页面更新日期: 2016年07月17日前言 Java 是面向对象的程序设计语言, Java 语言提供了 定义类, 成员变量, 方法 等基本功能. 类 可以被认为是一种自定义的数据类型. 可以使用类来 定义变量,所有使用类定义的变量都是 引用变量. 它们将会引用到 类的对象. 类用于描述客观世界里 某一类对象的共同特征. 而对象则是 类的具体存在. Java

我就是认真的随便写写程序. 4213
上一篇: 通讯与互联网行业软件项目运作的一些不同
下一篇: 离开通讯业入职互联网圈的一些感悟
bamboolsu
博客等级 码龄22年 200粉丝 394原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值