由于笔者本非软件专业起家,而早期一直被困于在结构化中。因此对于面向对象的认识是经历一段曲折,同时也有一些外行的体会。

从前C语言的出现大大地推动了结构化编程思想,函数式的体系将许多需求转化为数学问题,本人深感其伟大,也亲密接触了“电子猪脑”的奇妙。但随着软件工程 和软件需求的极速发展,猪脑面对很多事情渐显无耐,而计算机也慢慢有了一定的自主性,不再是个只能听命程序员的猪脑。由此从“怎么做”到“做什么”的转变 也促成结构化到对象化的前进。程序中主要有变量、常量和函数,而面向对象则全部凝结到了类和对象,其它的都是细节可以暂时忽略甚至让电脑自己处理。伴随面 向对象的是UML等一系列的配套技术和理论,这巨大的提升了软件的生产效率,程序和语言表现出了前所未有的智慧,而我们开发者们反而开始沦为“瓶颈”。
    我眼见很多同仁们大喊OO但却编程及设计是努力地重用各种函数,更有高手画着一手漂亮的UML图,但代码中仍在为一些方法设定无数的参数,并给出使用此函 数的参数组合的全面说明。另有一些人认为C等一些技术已经是古董级的文物,那是与面向对象不相容的,可实际上当前的很多OO语言平台都是用C写的。所以我 认为对象不只是口号、标准、方式或手段,而是一种理念,你看他明白了!
     现在说点实际的,面向对象的精华是类和对象,并由此派生出属性、方法、继承、多态、组合、接口等等不尽的概念,其实所有这些不过都是想让“猪脑”能趋向智 能来节省我们的一些简单重复工作。软件是为了解决特写的实际问题,这些是在社会生活中存在的并可能在从前是由人工来完成,我们写软件来教电脑怎么做。以前 的结构化是把计算机看成一头猪,并要告诉它先怎么做,再怎么做,如果遇到什么就怎么做,通常只有由一个人来训练。但面向对象认为一项工作就由多头猪完成, 这样我们先确定一些猪,然后分别训练每头猪相互认识并进行合作,如果你是高级人员则可以让程序员去训练每只猪。
      由些看来,类说是一种猪,它有一定的特点并且会做一些工作,而对象则就是一只活生生的猪。所有具体细致编码工作全浓缩到了猪的内部,因而重用性、鲁棒性、 扩展性等自然会相当好。依据这样的逻辑那将一种猪再配以其它的特性和技能就是所谓的继承了,比如给瘦肉型的猪配以警服再教它如何咬人就出现了传说中美国的 “警猪”,当然这其中能减少许多相当的工作。现在我们再进一步让一群猪合作进行表演并让其作为一团队,此即专业上所谓的组合了,这时它们是以前的一只 “猪”,也不是单纯的“合”,而是受各模式理论推崇且时下流行的“猪合”,常被 认为是优于继承的。  有这么一种猪的泛指,它不会有成一个实际的猪也是就不能实例化,抽象类是一定要被继承的。例如“肥猪”就是抽象的,但我们可以以此定义各种各样的具体化的 肥猪。有时我需要猪有一些技能细节不要被定死,而是让其它用它的来定,就是要有一种接口。比方说,猪是要吃过才睡的,但吃什么、什么时候吃不能确定,那就 留个接口让不同程序员去定。有人一定会说猪还会繁衍,的确我们的电子猪目前只会克隆,长得壮的和吃得少的猪会生下什么宝宝很难说,况且还要考虑性别,也许 就因此而很多OO语言不支持多重继承。
      综合上面的歪理,看来作个真正的IT养猪专业人事还是有些麻烦的。但有几点是能够肯定的,我们首先要知道我们要做什么,然后要确定需要有哪些较小的工作, 接着对各工作再分析直到较为独立,最后才是完成特定的每个小部分。这是大的方面和流程。千万不要过多沉沉溺于地具体的技巧,否则你永远只是个饲养员要面对 痛苦的代码。软件工程没有固定的对错和明确答案,只要能完成既定的要求,我们的目标是“让猪工作的尽量简单些,让猪干的尽量多一些”。

面向对象之养猪专业户相关推荐

  1. 设计模式之 面向对象的养猪厂的故事,C#演示(一)

    对于设计模式, 从本质上说, 其最大的用途就是适应需求的变化. 因为有了设计模式,我们可以在设计阶段就为未来可能发生的变化留下足够的空间. 我们通过一个建造现代化养猪场的故事, 来讨论一下设计模式与需 ...

  2. 猪脸识别?!阿里和京东这次要AI养猪了

    击上方"码农突围",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 提到养猪,你会想到什么?一个偏远的乡村,农民辛勤的劳作,数百头猪圈养在猪圈中,吃了睡睡了吃,不断生长,不 ...

  3. 冠军奖30万!刘强东搞了个“猪脸识别”比赛,中美两地同时启动(附比赛详细日程及赛题说明)

    编辑 | Katerina Donna 润色 | 鸽子 11月6日,由京东金融与红杉资本联合主办的首届"JDD-2017京东金融全球数据探索者大会"在751大罐举行,同时,大会宣布 ...

  4. 程序员在囧途之我是一头牛

    注意:以下内容来自于民间程序员的个人访谈经历进行小说化改编.非作者本人事迹. 正文开始: (一) 好不容易熬到了大四下半学期. 说实在的,我真不想用这个"熬"字来形容我的大学四年. ...

  5. 如何给孩子的作文下评语

    如何给孩子的作文下评语 2011年07月14日 [b]作文评价要评出学生的自信[/b] 评改是作文教学中的重要一环,给学生作文下评语,则是这一环节的点睛之笔.然而,传统的作文评语大多公式化.模式化,诸 ...

  6. 转:090630 欠揍短信加笑话

    1.跟你当这么久的朋友,你一直都很关心我, 我却时常给你添麻烦,真不知该怎么报答你... 所以...下辈子作牛作马....我一定会拔草给你吃的... 2.很想你,可是又不好意思打给你, 怕你正在忙,怕 ...

  7. 前端--HTML入门

    开始学HTML了 第一次写博客,内容方面可能略显杂乱,尽本人之所能做到详略得当,表单 部分是重点,需要多方面横向学习,各项关键词在使用时还需要多查一下拓展用法. 感谢@遇见狂神说 https://ww ...

  8. 在OpenCV里用drawContours画轮廓

    在OpenCV里,找到物体的轮廓是最常用的功能,为什么这样说呢?因为太多的应用要使用这个功能了,比如数物体的个数,在种子实验室里常常要使用计算种子的个数,这时就需要拍照种子的照片,然后根据照片来数出种 ...

  9. 一文读懂马云、马化腾、李彦宏、库克等互联网大佬们都在乌镇干了啥

    马云厌恶网上病夫,如今 90% 的评论都是没有脑子的评论?  游戏王马化腾是爱玩<王者荣耀>还是吃鸡游戏?  一向急躁的颠覆者周鸿祎为何收敛? 这两天,身处 IT 圈的人都应该知道,最热闹 ...

最新文章

  1. Nat. Commun. | 序列到功能的深度学习框架加速工程核糖调节剂设计和优化
  2. 揪出MySQL延迟上千秒的元凶
  3. 大数据技术:分布式系统和分布式事务
  4. 游戏设计、原型与开发:基于Unity与C#从构思到实现pdf
  5. [css] 你最希望css拥有什么样的特性?(目前没有的)
  6. rust怎么传送到队友_王者荣耀原初法阵怎么传送?原初法阵最多传送几个人?...
  7. 数据运营小白如何搭建“初期用户生命周期体系”?
  8. window自动备件软件
  9. keras中TimeDistributed的用法
  10. androidsettitle方法_android去掉标题方法
  11. Redis 菜鸟教程学习笔记- 概念
  12. xp系统能安装32位的python吗-32位XP系统 Python3.4.4安装scrapy1.6.0
  13. 两个故事理解时间管理的必要
  14. 怎么把PDF文件拆分开来?教你两种拆分方法
  15. 实验二 实现中点分割直线段裁剪算法
  16. 第一章 行列式(知识点部分)
  17. 评论区抽奖程序2.0
  18. jq和js的关系_jQuery与JavaScript有什么关系?
  19. 不知道O2O产品的APP该如何运营推广?
  20. 回顾百度“凤巢”计划

热门文章

  1. MySQL启动报错:mysql拒绝访问错误5
  2. 判断一个数值是否为正数、负数、零、整数。
  3. 「我的孩子最终没有出生,你们却还在推送育儿广告」
  4. string库的简介和使用
  5. java设计模式|门面模式
  6. Verilog 之 generate语句块用法
  7. 以太坊 api php,Php如何调用以太坊接口
  8. R 计算 空间基尼系数
  9. ABAP AMDP编写
  10. git长时间未清理无法拉取代码( git Auto packing the repository in background for optimum performance)