程序开发并非一定要面向对象不可,面向对象是一种方式,但是不是唯一的方式,这种方式很多时候有用,不代表任何时候都是最高效的,更不是唯一的真理。
面向对象将相关的状态属性和操作方法放在一个实体中,起到了归类和分而治之的作用。
对于一个系统来说,这个是最根本的方法。但是面向对象的分而治之并不完美。面向过程也有分而治之的思想和能力,这就是模块开发。对象是复杂的,他有生命过程,有复制克隆的需要,有保持状态的需要,他是一个复杂的实体。而很多时候我们不需要这么多的东西,而只要一个函数,一个过程,一个状态。
第二个,面向对象的类型系统非常复杂。
第三个,面向对象的封装不彻底,默认的实践是接口和实现同为一个对象实体,如果要分离处界面和实体就显得难以编程。
程序开发的技巧是:简单明了,分而治之,抽象化编程。
面向对象在这三个方面都有违反的表现,比如如果建立多个对象,对象间的相互关系变得非常复杂。程序员需要掌握非常多得实体概念。
分而治之就是面向对象对界面的分离和封装上没有做到很严格。没有一个系统的解决方案。父类对子类的影响,对象直接都是直接操作。
抽象化并不是面向对象的专利,比如unix系统的文件就是典型的非面向对象的抽象。抽象是算法的范畴,一个出色的算法,必然高度抽象他操作的对象,让算法适应更多的场合,而对象的类型系统反而会限制了抽象。

面向对象并不是必要的相关推荐

  1. 【AJAX】JavaScript的面向对象

    Ajax中后端数据返回后需要前端通过JavaScript来实现动态数据更新的问题.所以,在Ajax中加深了一遍JavaScript面向对象的印象. 基础部分: JavaScript中创建对象并简单对象 ...

  2. 面向过程(或者叫结构化)分析方法与面向对象分析方法到底区别在哪里?

    AutoSAR入门到精通系列讲解 将从2019年开始更新关于AutoSAR的知识,从入门到精通,博主xyfx和大家一起进步 雪云飞星 ¥29.90 去订阅 简单地说结构化分析方法主要用来分析系统的功能 ...

  3. 2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类

    目录 scala面向对象 MAVEN依赖 类 - 掌握 创建类和对象 - 掌握 getter/setter - 了解 类的构造器 - 掌握 scala面向对象 MAVEN依赖 <?xml ver ...

  4. php面向对象程序设计,PHP面向对象程序设计类的定义与用法简单示例

    本文实例讲述了PHP面向对象程序设计类的定义与用法.分享给大家供大家参考,具体如下: class Person { private $name; private $sex; private $age; ...

  5. java面向过程和面向对象

    面向过程(Procedure Oriented):说的是功能的行为 面向对象(Object Oriented,简称OO):说的是功能的对象 面向过程理解: 当学习java的时候先了解java语言优良的 ...

  6. day22_面向对象

    面向过程: 优点是:极大的降低了写程序的复杂度,只需要顺着要执行的步骤,堆叠代码即可. 缺点是:一套流水线或者流程就是用来解决一个问题,代码牵一发而动全身. 面向对象: 优点是:解决了程序的扩展性.对 ...

  7. java面向对象-------静态初始化块

    1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...

  8. 7.12 其他面向对象设计原则3: 依赖倒置原则DIP

    其他面向对象设计原则3: 依赖倒置原则DIP  The Dependency Inversion Principle 7.1 依赖倒置原则DIP The Dependency Inversion P ...

  9. Day-16 面向对象03 类与类之间的关系

    一.类与类之间的依赖关系 我用着你,但是你不属于我,这种关系是最弱的,比如,公司和雇员之间,对于正式员工,肯定要签订劳动合同,还得小心伺候着,但是如果是兼职,那无所谓,需要了你就来,不需要你就可以拜拜 ...

  10. 09_Java面向对象_第9天(类、封装)_讲义

    今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 A: 面向过程与面向对 ...

最新文章

  1. 不看不知道 Vista回收站暗藏的大秘密
  2. c语言指针和结构体难点,C语言指针和结构体
  3. python 温度插值nan处理_Python处理inf和Nan值,pytorch,nan,数值
  4. linux限制单个ip频繁连接,限制单个IP并发TCP连接的方法
  5. 图Graph--拓扑排序(Topological Sorting)
  6. mac的safari浏览器调试h5
  7. jqgrid学习(二)
  8. C语言程序设计(第三版)何钦铭著 习题2-6
  9. 计算机无法安装新字体,xp系统电脑安装新字体后无法使用的解决方法
  10. python装逼代码_能够让你装逼的10个Python小技巧
  11. 红鸟网络:棋牌游戏开发运营,细分领域是关键
  12. android win7 共享网络打印机,详解win7共享打印机如何设置
  13. python turtle 乌龟赛跑_海龟快跑,turtle碰撞检测小游戏
  14. 乐视贾跃亭任酷派集团执行董事 成酷派第二股东
  15. 用计算机如何扫描仪,扫描仪的使用方法 扫描仪怎么用
  16. kali 控制安卓手机
  17. 【AI能否取代设计师】「Stable Diffusion」AI绘画黑科技将告诉你答案
  18. 免费顺丰快递鸟单号查询不限次数api接口申请步骤
  19. 3-meshing-网格划分-二
  20. springboot大学生课堂考勤管理系统的设计与实现

热门文章

  1. mysql查询后调用mysql_free_result_怎么释放_关于mysql_free_result和mysql_close的解惑
  2. golang mysql封装_自己封装的golang 操作数据库方法
  3. 2017年9月计算机二级c语言,2017年9月计算机二级C语言程序设计练习题
  4. 前端vue后端java,Vue调用后端java接口的实例代码_亦心_前端开发者
  5. matlab 神经网络dpi,基于DPI和BP神经网络的P2P流量识别研究
  6. powerdesigner mysql 自增主键_PowerDesigner Mysql 主键自增、初始值、字符集
  7. elemntui icon 大小_自定义elementui中的图标
  8. DVWA File Inclusion——Writeup
  9. apple quicktime怎么在ppt中用_PPT情感专题大赏No. 007:一份这就是街舞第三季主题PPT(上集)...
  10. python数据预处理 重复行统计_Python数据分析之数据预处理(数据清洗、数据合并、数据重塑、数据转换)学习笔记...