面对对象的思考(二)

LED背光驱动电路解析:从MP3394芯片到液晶屏灯管控制 本文深入解析了以MP3394芯片为核心的LED背光驱动电路工作原理。从升压电路的能量转换到多路LED的均流控制,详细阐述了其作为液晶屏背光“大脑”的关键作用,并提供了黑屏、闪屏、亮度不均等常见故障的实战检修思路与排查方法。 阅读详情

面对对象的思考(二)

    如今,面对对象方法几乎成为了成功、先进、效率的代名词。使用面对对象的方法设计和实现一个软件几乎成为了开发者们的默认选择。但是,这种方法是否已经真正取得了成功了呢?真的达到了在他产生时候宣称的优势呢?很显然对于这样的问题大多数人是迷惑,不能作出肯定的回答。面对对象的方法在软件分析和设计方面仍然遇到了困难,这些困难主要有这些表现:
     1、抽象现实问题的方法不容易被开发者真正掌握。分解问题域中对象一般的思考方式有以下两种,一种是抽象对象的性质,这种方法实际上就是对象继承,第二种就是对象组合的方法。在经典的理论中认为对象的继承是面对对象方法的实质,但是不符合大多数人的思维习惯。对于一个轮胎而言,人们更愿把它看成轮箍、外胎、内胎等等结构的组合体,而不是抽象成这样的层次关系,橡胶-〉含有金属的橡胶-含有金属的圆形橡胶-〉轮胎。
     2、分析到设计仍然不能平滑的过渡,在分析阶段产生对象,往往有很多现实的名词,这影响了设计者的思考,使他们不能关注对象在问题域中的关系,往往受到这些名词其他含义影响。假定普通的企业管理系统中,分析作了人-〉公司职员-〉高级职员-〉经理的抽象,设计人员往往会被人、经理、高级职员这些名词的影响,不能把这样的现实对象很好的映射到程序结构中去,甚至会去定义人的姓名、年龄这些属性,然而这些属性在问题域中是不关心的,实际上在程序结构中人这个对象会和真正的人概念完全不一样,之所以抽象这些对象实际上为了提取问题域中的静态关系和动态关系,现实的名词干扰了设计者。
     3、面对对象方法产生的软件没有完全实现宣称的软件复用和简化维护的目标。在没有完全采用抽象对象性质的方法的时候,实际上完全采用也是很困难的,大多数人习惯于把复杂的事物分解成一组组合的对象,把简单的事物进行抽象,在这种情况下产生的软件结构是复杂的,对象组合之间必然充满了复杂的消息,要进行重复使用和维护当然是不容易的。
    4、缺乏评价一个面对对象设计的标准,一个设计,或者说怎样做出一个能够实现软件复用、降低软件复杂性的设计,没有很好的理论支持。这本身就是由于对象抽象的灵活性造成的,不同的人对同样的问题完全会有不同的抽象方法,面对对象的方法不限制人们抽象的方法,或者说根本没有一套抽象的方法。我说的是抽象,和对象组合对应。缺乏标准,也必然造成软件复用困难。
     为了解决这些问题,很多人进行了回归,我要说一些大逆不道的话了。第一个概念把继承分解为接口继承和实现继承,认为对象实际上是实现和宣称的方法集组成的,在现实的设计活动中,他们找到了复用的好办法,因为他们把接口和实现分离,这样在通过同样的接口就可以操纵不同的对象,而不用关心背后对象的细节,这样降低了对象之间的关联程度。第二个概念,尽量使用对象组合而不是继承,在把继承分解以后,就会很自然的发现,纯虚的基类实际上成为了对象的接口,而且为了复用的方便,几乎完全不要实现继承,因为复用是对象本身,而不是用它的基类,所以定义一个良好的组合成为了关键,而且继承也会为这种复用带来麻烦。我把这种解决方法称为回归,这是面对对象向结构化的回归,或者说结构化方法的延伸。在对象进行复用的时候,一般不使用已经成型的对象,而是使用基类,复用的是基类已经实现的方法,当然这样做,需要深刻理解原作者的意图。一个只有一个纯虚基类的对象和一个模块有什么差别呢?这是模块的复用。复用的只是接口,也就是一组定义,要实现支持同样接口的不同对象,需要完全重新设计,实际上并没有代码复用。他把实现的复杂性推给了后面的设计者。如果仅仅把接口复用当成分析,在实现这个借口对象的时候仍然坚持实现继承,也就是实现的时候仍然分层,那么这当然是可取的,但是我看不出需要接口继承的意义。在这种方法下,设计者更倾向于进行问题的功能分解,举个例子,设计企业的管理系统,设计者很可能在这种思考方式的主导下,划分成财务部,人事部,业务部。这完全背离了面对对象方法的初衷。
    大多数问题是复杂的,习惯总是明智的,把一个大的问题分解成小问题,在解决小问题的时候使用抽象的方法,可以说是一个很好的折衷,也是很有效率的。但是不能把整个问题都细化,或者说完全取消实现继承,如果那样我看不出这还是面对对象。我更愿意看到结构化方法和面对对象方法的融合,而不是盗用了面对对象的概念行结构化的做法。在对于评价分层抽象,或者说分层抽象指导原则、模式,几乎没有,这不能说是完整的。就像气宗和剑宗构成了华山派一样,独孤九剑好像是绝种的剑宗武功,虽然难炼,但是杀了岳不群。

NVIDIA DGX Spark实战:如何在桌面上轻松运行200B参数大模型(附配置教程) 本文提供了NVIDIA DGX Spark在桌面端运行200B参数大模型的完整实战指南。详细介绍了从硬件初始化、系统配置、容器化环境搭建,到模型加载、量化、推理流水线编写及性能调优的全过程。重点阐述了如何利用其统一内存架构和TensorRT-LLM等工具进行高效本地推理,并探讨了通过双机互联扩展以应对超大规模模型的方法。 阅读详情

相关推荐

Windows 10/11 安装 HYSPLIT 气象模型全攻略(附必备工具包下载清单)

本文提供了一份详尽的Windows 10/11系统下HYSPLIT气象模型安装与配置全攻略。指南涵盖了从核心认知、必备工具包(Tcl/Tk、ImageMagick)下载,到分步安装、环境变量设置及首次运行验证的完整流程,旨在帮助研究者和学生高效部署这一用于大气轨迹模拟与污染物扩散分析的专业工具。

weixin_28335283的博客 608

面向对象

面向对象: 面向对象就是把构成问题是无分解成多个对象,建立对象不是为了完成某个步骤,而是描述某个事物在这个解决问题的步骤中的行为。一种思维方法、编程方法。 面向对象有三大特性:封装、继承、多态 封装:一些公用方法的封装 继承:将父类的属性和方法继承给子类 多态:同一方法传入不同参数是点用方式不同 面向对象和面向过程的区别和联系? 1.面向过程侧重整个问题的解决步骤,着眼局部或者具体。 2·面向对象...

weixin_45290438的博客 828

MCU中GPIO口的驱动方式

MCU中GPIO口的驱动方式 导读: MCU芯片中GPIO口的驱动方式大的可分为输出和输入两类,小的分可以分为8种。 一、四种输入方式 ①上拉输入: 上拉输入抗干扰能力强,特别适合接地信号的输入(比如低电平有效的按键信号输入)。其工作原理如图1所示。 I/O 端口与TTL 施密特触发器之前接入了一个30K~50K 欧姆的上拉电阻,当I/O 端口悬空时,此时MCU 也能读到稳定的高电平状态,...

优快云Frewen的博客 3372

list.add内容重复,解决思考

1.说明问题:在for循环中创建一个Javabean对象,然后将遍历的值通过set方法更改,将set后的JavaBean对象add到list中。他只会add最后set到的值,解决如下,代码如下: for (int i = 0; i < array.size(); i++) { //声明JavaBean对象,注意啦:在这里声明对象就会造成我们说的问题 //B_ad

Zzc_IT_log的博客 873

【个人学习总结】CRC校验原理及实现

CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 ..................

星Yeah 的博客 7967

java技术专家 【DDD(领域驱动设计)思想解读及优秀实践 22】|泛化建模(上):领域知识更抽象怎么办?

java技术专家 【DDD(领域驱动设计)思想解读及优秀实践 22】|泛化建模(上):领域知识更抽象怎么办?

大壮 1165

面对对象的思考(二) (转)

面对对象的思考(二) (转)[@more@]面对对象的思考(二) 如今,面对对象方法几乎成为了成功、先进、效率的代名词。使用面对对象的方法设计和实现一个软件几乎成为了开发者们的默认选择。但是,这种方法是否已经真正取得了成功...

csd3176的博客 74

当SLAM遇上FPGA:打造一个会“硬件加速”的激光雷达SLAM系统

点云数据的运动畸变校正特征点提取与匹配、以及ICP迭代最近点配准。在传统方案中,我们通常用ARM核完成所有计算。但点云配准中的最近邻搜索(KD-Tree)需要大量分支判断,CPU处理起来效率很低;而ICP中的矩阵分解(SVD)虽然计算量大,但非常适合并行化。ZYNQ的特殊之处在于它把ARM(PS端)和FPGA(PL端)集成在同一颗芯片上。ARM擅长跑操作系统、处理复杂逻辑和调度,FPGA擅长做高吞吐量的并行计算。两者之间通过AXI总线高速互联,数据交换延迟只有几十个时钟周期。

QQ_778132974的博客 374

面对对象的思考

面对对象的思考 在比较老一些的讨论面对对象方法的书籍中,都把继承看成了最为关键的部分。一般认为,面对对象的方法中最为核心的部分就是继承,因为从继承的角度思考问题,是和结构化设计最为明显的区别。如果,对象都没有继承,那么对象和传统的模块的概念没有太多的差别。我并不是要把这两种方法对立起来,我只是认为面对对象的方法背后的思想是应该和传统结构化的方法有所区别的。在结构化的方法中,我们首先需要

BlueTrees的专栏 2525

168、OIS光学防抖系统设计:陀螺仪标定、音圈马达驱动与滚珠式/悬丝式结构选型

本文总结了OIS光学防抖系统设计中的关键问题与解决方案。作者通过实际案例指出,陀螺仪标定需重视零偏、灵敏度和温度补偿问题,音圈马达驱动需采用电流环控制并优化相位补偿。在机械结构选型方面,滚珠式适合大角度补偿但存在回差问题,悬丝式精度高但受重力影响,需根据应用场景选择。系统联调建议从开环到闭环逐步验证,注意陀螺仪与驱动频率匹配。最后给出5条经验建议:关注陀螺仪信噪比而非分辨率、预留标定余量、重视机械结构公差、配备专业调试工具、协调OIS与电子防抖的分工配合。文章强调OIS调试需针对不同模组特性进行反复测试与标

zzfmlxs的博客 42

Python爬虫教程:抓取电商网站评论(以淘宝和京东为例)

通过本文的介绍,我们学会了如何使用Python编写爬虫,抓取淘宝和京东等电商平台的商品评论数据。我们介绍了如何使用电商平台提供的开放API以及如何通过模拟浏览器来抓取动态加载的数据。此外,我们还讨论了如何应对反爬虫技术,如何存储抓取的数据等。爬取电商平台的数据是一个强大的工具,能够为市场分析、消费者行为研究、产品优化等领域提供有力的支持。然而,在使用爬虫技术时,我们必须遵循法律法规,尊重平台的隐私政策,避免滥用数据。

2201_76125261的博客 1737

第六天 面对对象和面对过程

从语言方面的区别 对C来讲,完全面向过程的 对C++来讲,一半面向对象,一半面向过程 对Java来讲,完全面对对象 什么是面对过程的开发方式 主要特点是注重步骤,注重实现功能的步骤;也注重实现功能的因果关系 面向过程中,没有对象的概念,只有实现功能的步骤和因果关系 面向过程的缺点 高耦合,低扩展 主要是每步之间的因果关系 面对过程的优点 对于小型项目(功能),使用面向过程的方式,效率很高 原因: 不需要对象的提取和模型的建立 可以直接开始实现功能 直接编写代码的因果关系,从而达到实现功能的

weixin_45842339的博客 243

[QMT和ptrade量化交易小白入门]-112、小市值热点概念交易策略,回测5年20倍

本专栏主要是介绍QMT和ptrade的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写200篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步。

木头大左的博客 1078

Python之面对对象

你现在是一家游戏公司的开发人员,现在需要你开发一款叫做的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的属性和技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 两个角色对象生成了,狗和人还有不同的功能呀,狗会咬人,人会打狗. 怎么实现呢,。。想到了, 可以每个功能再写一个函数,想执行哪个功能,直接调用 就可以了,对不? 上面两个函数相当于造了两个模子。游戏开始,如何塑造一个具体的人或者狗的角色呢? 上面的功能实现的简直是完美...

一颗西柚的博客 6万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

面对对象

面对对象概念 面对对象概述 理解举例: 大象装进冰箱。 1,面向过程: 打开冰箱,储存大象,关上冰箱。(动作) 对于面向工程思想,强调的是过程。(动作) 2,面向对象: 对于面向对象思想,强调的是对象。(实体) 特点: 1,面对对象是一种常见的思想,符合人们的思考习惯 2,面对对象的出现,将复杂的问题简单化 3,面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者 任何个体,实体都是对象...

melody_zz的博客 331

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

面对对象总结

一、面向过程和面向对象思想 1.面向过程 面向过程思想思考问题时,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成。 这个适合简单任务,不需要过多协作的情况下。 2.面对对象 面向对象(Object)思想更契合人的思维模式。我们首先思考的是“怎么设计这个事物?”面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 二、类 1.对象 对象可以看成该类的一个具体实例 2.类可...

weixin_45571020的博客 224

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

面对对象编程细则(二)

面对对象编程补充(2) 继承细则 成员重载 子类调用父类成员 self调用 super()方法调用 父类调用子类成员 实例和类命名空间 实例和类命名空间 属性创建 类嵌套 名称解析和动态调度

weixin_54929649的博客 1775

面对对象(类与对象)

面对过程:指的所有步骤都得亲力亲为才能完成某件事。面对对象:将世间万物看成一个个对象,通过调用对象的属性和方法来完成事情。方法就是一段代码的集合体

qq_53551331的博客 369

Java面对对象编程

Java面对对象编程Java面对对象编程初识面向对象方法回顾和加深类与对象对象的创建分析面对对象三大特性static详解抽象类和接口内部类笔记 Java面对对象编程 初识面向对象 ​ 属性+方法 = 类 面向过程思想 步骤清晰简单。第一步做什么,第二步做什么 面对过程适合处理一些较为简单的问题 面对对象思想 物以类聚,分类的思维模式,思想问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节及面对过程的思索、 面对对象适合处理复杂的问题,适合处理需要多人协作的问

weixin_50860184的博客 406

初步面对对象

初步面对对象 一,了解面对对象与面对过程 1.面向对象与面向过程区别: ​ 都是一种思想,思考问题的角度,思维方式 ​ 面向过程: 关注"我应该如何实现?“按照步骤一步一步实现就可以了 ​ 面向对象: 关注"我应该找谁完成?” 这个谁就是对象,对象如何完成不关注 ​ 面向对象依赖于面向过程 2.面向对象思想的好处: ​ 1.更符合现实生活中人们的思维 ​ 2.面向对象更贴合管理者的思维角度,面向过程更贴合执行者的思维角度 ​ 3

weixin_57710547的博客 121

对JAVA面对对象编程的理解

Java面向对象编程是一种编程范式,它通过类和对象的概念将现实世界的问题转化为软件解决方案。封装、继承和多态这三个基本特征使得 Java 编程更加灵活、高效和可维护。其核心优点在于代码的可重用性、易于维护、封装性、多态性以及模块化,使得开发者能够构建结构清晰、扩展性强且易于理解的程序。

m0_74356103的博客 883

面对对象编程

面对对象编程 (Java的核心思想就是OOP) 初识面对对象 面向过程&面向对象 属性+方法=类 面对过程思想 步骤清晰简单,线性思维,一步跟一步 面对过程适合处理一些较为简单的问题 面对对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类警醒单独思考。最后,才对某个分类下的细节进行面向过程的思索 面对对象适合处理复杂的问题,适合处理需要多人协作的问题 对于描述复杂的事

weixin_52622524的博客 307

Java面对对象概念,什么是面向对象

我们都知道Java是一门面向对象的语言。什么是面向对象,它有什么特性呢,今天我们就来说一下这个"面向对象"到底是什么意思。 面向对象简称 OO(Object Oriented),20 世纪 80 年代以后,其实就有了面向对象分析(OOA)、 面向对象设计(OOD)、面向对象程序设计(OOP)等新的系统开发方式模型的研究。对面对对象设计的语言来说,一切皆是对象。把现实世界中的对象抽象地体现在编程世界中,比如一个苹果我们可以new Apple(),一个小狗我们可以new Dog(),一个对象代表了某个具体.

weixin_40243894的博客 473

面对对象基本思想

面向对象 面向“过程”思想: 步骤简单清晰,第一步做什么,第二步做什么 面对过程适合处理一些较为简单的问题。 面向“对象”思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。 面向对象适合处理复杂的问题,适合处理需要多人协作的问题! 注意:对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。 什么是面向对象

Www1657的博客 293

面对对象(OOP)

面对对象(OOP) 面对过程的思想: 步骤清晰简单,第一步作什么,第二步作什么… 面对过程适合处理一些较为简单的问题 面对对象的思想: 物以类聚,分类的思维模式,思考问题,首先会去解决这个问题需要那些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思考 面向对象适合处理复杂的问题,适合处理需要多人协作的问题! 对于描述复杂的事物,为了从宏观上把握、从整体上合理分析,我们需要使用面对对象的思路来分析整个系统。但是,具体到微观操作,依然需要面对过程的思路去处理 面向对象的本质就

cygzsw的博客 220

面对对象OOP

面向对象 面向过程思想 步骤清晰简单。 面对过程适合处理一些较为简单的问题。 面向对象思想 物以类聚,**分类**的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考,最后才对某个分类下的细节进行面向过程的思索。 面向对象适合处理复杂的问题,适合处理需要多人协作的问题。 对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,任然需要面向过程的思路去处理。 什么是面向对象 面向对象编程(Obje

weixin_48979017的博客 129
上一篇: 面对对象的思考
下一篇: 创建不规则形状的Control
BlueTrees
博客等级 码龄26年 44粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值