前段时间和一个广西的朋友一起去吃早餐,朋友按照广西的说法要点一份油果,服务员半天没搞懂是什么东西,后面几经解释,说是麻球之后服务员瞬间get到意思了。

这件事情后面稍微想了一下,为什么服务员一直没搞懂油果是个什么东西。说实话,如果不是之前知道,确实很难把油果这个名词跟图片中的食物联想的起来。

想一下,这种食物用面向对象思路怎么去定义,

1:油果   继承自水果类,里面有个成员变量:油

2:麻球  继承自球抽象类,里面有个成员变量: 芝麻

第一种定义方法,水果类公共的特质,例如水果需要有生长的环境;有发芽、生长、开花、结果的生命周期。显然它不具备,所以这个名称即使在现实生活中也让人费解。

第二种定义方法,麻球,见名知意。芝麻、球状的东西,在饭店这种场景下。很容易图中食物联想起来。

代码实现其实也是现实生活场景的表达。我们在代码实现中定义事物中也可能遇到类似的场景。

油果的说法虽然浪漫,听起来更能勾起人的食欲。逻辑、实用性上可能不及麻球来的准确。

对于我们程序员,还是跟服务员说声:“幺妹儿,来份麻球”。

转载于:https://www.cnblogs.com/daghai/p/10856974.html

类的设计---麻球与油果相关推荐

  1. 转:软件设计漫谈之三:30分钟掌握面向对象类的设计原则

    转自:http://blog.csdn.net/yunhua_lee/article/details/5105524 30分钟掌握面向对象类的设计原则 看过设计模式的人不少,但看过Martin的面向对 ...

  2. VS 2010 通过 Architecture创建UML类图设计

    [赛迪网报道]类是对应用领域或应用解决方案中概念的描述.类图以类为中心进行组织,类图中的其他元素或属于某个类,或与类相关联.类也是对象的集合,展示了对象的结构及与系统交互的行为,其目的是显示建模系统的 ...

  3. UVA11021麻球繁衍

    题意:      有K只麻球,每只生存一天就会死亡,每只麻球在死之前有可能生下一些麻球,生i个麻球的概率是pi,问m天后所有的麻球都死亡的概率是多少? 思路:       涉及到全概率公式,因为麻球的 ...

  4. 一文讲透非标品的商品类目设计

    www.pmcaff.com 本文为作者 百转 于社区发布 只要做电商,商品类目设计就是绕不开的一环.好的类目设计能让供需双方更快.更好定义或找到所关心的商品,是整个电商体系的地基,是构建并链接各个模 ...

  5. java 重启线程_java 可重启线程及线程池类的设计(详解)

    了解JAVA多线程编程的人都知道,要产生一个线程有两种方法,一是类直接继承Thread类并实现其run()方法:二是类实现Runnable接口并实现其run()方法,然后新建一个以该类为构造方法参数的 ...

  6. Java黑皮书课后题第10章:*10.10(Queue类)10.6节给出一个Stock类。设计一个名为Queue的类用于存储整数。像栈一样,队列保存元素。在栈中,元素后进先出。队列中元素先进先出

    10.10(Queue类)10.6节给出一个Stock类,设计一个名为Queue的类用于存储整数 题目 程序 破题 代码 Test10.java Test10_Queue.java UML 题目 程序 ...

  7. Java黑皮书课后题第10章:10.4(MyPoint类)设计一个名为MyPoint的类,代表一个以x坐标和y坐标表示的点

    10.4(MyPoint类)设计一个名为MyPoint的类,代表一个以x坐标和y坐标表示的点 题目 程序 代码 Test4.java Test4_MyPoint.java 运行实例 UML 题目 程序 ...

  8. Java黑皮书课后题第10章:10.3(MyInteger类)设计一个名为MyInteger的类

    10.3(MyInteger类)设计一个名为MyInteger的类 题目 程序说明 代码 Test3.java Test3_MyInteger.java 运行实例 UML 题目 程序说明 测试程序:T ...

  9. Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置。

    Java黑皮书课后题第9章:**9.13(Location类)设计一个名为Location的类,定位二维数组中的最大值及其位置 题目 破题 代码 Test13 Test13_Location 运行结果 ...

最新文章

  1. 探究:如何判断Delphi中的对象指针是否可用
  2. python实现单例模式
  3. python中nltk_python2.7和NLTK安装详细教程
  4. pandas 数据索引与选取
  5. 【ExtJS】FormPanel 布局(一)
  6. ubuntu 16.04 Nginx源码部署安装
  7. 几百万的数据查找重复值_如何快速查找出Excel中的重复数据,多角度分析
  8. 从spring管理的datasource中获取connection
  9. 如何将三万行代码从 Flow 移植到 TypeScript?
  10. python3解码base64_python3base64解码混乱的换行符
  11. js页面滚动时层智能浮动定位实现(jQuery/MooTools)
  12. mysql非阻塞通信协议_NIO 的非阻塞式网络通信
  13. 如何用Java写QQ机器人 v2.0
  14. 数据库课设:简易图书管理系统
  15. 企业管理中使用凌云仓库管理软件免费版的优势
  16. Delphi时间戳Unix转换DateTimeToUnix和UnixToDateTime
  17. CCS编译错误:error #10099-D和error#10234-D unresolved symbols remain解决方法
  18. Aras Innovator: 如何在Form中放入图片
  19. Halcon学习笔记:3D_coordinates(3D标定)
  20. Pandas合并之Concat合并

热门文章

  1. Unity 触摸事件的运用
  2. 2020-12-16 今日学习Date类
  3. 服务器提示临时文件已满,win10系统提示”由于临时文件夹已满而导致“磁盘空间不足”错误的解决办法_win10教程_uc电脑园...
  4. Java里面的四种内存屏障
  5. 2018-2019-2 20165205 网络对抗技术 Exp7 网络欺诈防范
  6. Unity好用插件集合1
  7. 什么是AP,什么是CP,什么是CAP?
  8. C语言从键盘上输入年份和月份,计算并输出这一年的这一月共有多少天。
  9. 利用ESP8266+OLED(I2C)打造智能时钟(网络校时+实时天气+天气预报)
  10. 紧随时代的步伐--Java8之Lambda表达式的使用