面向对象程序设计的第一步,就是在问题领域中识别出有效的对象,然后从识别出的对象中抽象出类来。面对纷繁复杂的现实问题,往往存在多种对象划分的方式,而不同的划分会带来类的设计以至于程序结构的各种不同。对象划分有一些理论,但是不是这门面向对象的入门课程能覆盖的。而且目前的理论也还不是放诸四海皆准的简单操作指南。我们举了一个数字钟的例子,希望通过这个例子表明对象划分的重要性,给你一个感性认识。在今后面对实际的问题领域时,可以试试用这里提到的概念来做对象的划分和类的设计。但是这只是一个例子,遇到具体情况一定是具体分析,按照问题领域的实际情况来做。
一个对象当然可以由其他类的对象来组成,就像一个人体里面有心脏、肠胃一样。对象是由其他对象组成的,而类定义了这样的组合关系。
那么下一个问题,就是当一个对象里有多个对象的时候,那些对象之间是如何交互的,对象和对象之间的联系是如何建立的,对象如何和其他对象交流。对象和对象之间的联系紧密程度叫做耦合。对象和对象的耦合程度越紧,表现在源代码上,就是它们的代码是互相依赖、互相牵制的。我们理想的模型,是对象和对象之间的耦合要尽可能的松,平行的对象要尽量减少直接联系,让更高层次的对象来提供通信服务。这些就是在我们这个非常简单的数字钟的例子中所体现的。
要实现一个数字钟非常简单,如果只是实现功能,入门课程里的一个循环就可以了。这里所体现的,是更深层次的面向对象设计的理念。

如:11:30 这样的时钟, 可以识别出对象分为 “小时”对象和“分钟”对象,(在问题领域中识别出有效的对象),然后设计一个类来构造这两个对象,一个表达“小时”对象和一个表达“分钟”对象(从识别出的对象中抽象出类来), 由此可以我们可以创建一个Display类,类中包含了两个对象都有的属性 value值(当前值)和limit值(上限);初始化上限值的构造函数(方法),以及获取当前值的函数(方法)

将需求里的名词画出来名词就是可能的类或属性,动词可能是方法,然后优化设计(关系),根据设计画类图![在这里插入图片描述]


面向对象程序设计步骤相关推荐

  1. 常惠琢 201771010102《面向对象程序设计(java)》第七周学习总结

    实验七 继承附加实验 实验时间 2018-10-11 1.实验目的与要求 (1)进一步理解4个成员访问权限修饰符的用途: (2)掌握Object类的常用API用法: (3)掌握ArrayList类用法 ...

  2. 2017《面向对象程序设计》寒假作业一

    1.你有什么技能比大多人(超过70%以上)更好? 我看电影比一般人多一点点:我听英文歌比一般人多一点点:我有一把尤克里里和一个滑板.我有很多爱好,但都没能发展成我的特长,它们给我的生活增添了情趣,又不 ...

  3. JavaScript中的面向对象程序设计

    本文内容目录顺序: 1.Object概念讲述: 2.面向对象程序设计特点: 3.JavaScript中类和实例对象的创建: 4.原型概念: 5.原型API: 6.原型对象的具体使用:7.深入理解使用原 ...

  4. java面向对象程序设计第三版_JAVA面向对象程序设计之创建型设计模式

    [本文详细介绍了JAVA面向对象程序设计中的创建型设计模式,欢迎读者朋友们阅读.转发和收藏!] 1 基本概念 1.1 什么是设计模式 设计模式( Design pattern )是一套被反复使用.多数 ...

  5. 201771010106东文财《面向对象程序设计(java)》实验12

    实验十二  图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: (2) 掌握Java GUI中2D图形绘制常用类的AP ...

  6. 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结

    达拉草201771010105<面向对象程序设计(java)>第十六周学习总结 第一部分:理论知识 1.程序与进程的概念: (1)程序是一段静态的代码,它是应用程序执行的蓝 本. (2)进 ...

  7. 面向对象程序设计基本概念

    面向对象程序设计基本概念 重点: C++中的 多态 和 指针间接赋值 1): 多态的三个条件         a: 子类继承父类         b: 虚函数(虚表及虚表指针)         c: ...

  8. 《面向对象程序设计》第11章在线测试

    <面向对象程序设计>第11章在线测试  <面向对象程序设计>第11章在线测试 剩余时间: 59:56  答题须知:1.本卷满分20分.            2.答完题后,请一 ...

  9. 《面向对象程序设计》第12章在线测试

    <面向对象程序设计>第12章在线测试  <面向对象程序设计>第12章在线测试 剩余时间: 59:55  答题须知:1.本卷满分20分.            2.答完题后,请一 ...

最新文章

  1. Chromium 组件DotNetBrowser V1.12发布 | Chromium引擎升级到版本60
  2. shell-awk常见用法
  3. mysql 只导数据不含表结构
  4. Google AutoML最新技术解析:AutoML-Zero,从0构建模型
  5. linux 获取CPU NUMA内存节点信息
  6. JLBH – Java延迟基准线束介绍
  7. 清理SYSAUX表空间
  8. mysql分窗函数_频谱分析中如何选择合适的窗函数
  9. 总被业务当工具人,数据IT人怎么才能提高自己在公司的地位?
  10. 16.定位模板,布局和样式
  11. 通俗易懂的USB协议详解(转)
  12. Linux安装python第三方库
  13. Win10在Dev-C++配置Npcap
  14. ERStudio 安装
  15. html产生圆点列表符号的列表,HTML 测验
  16. 一、OpenAI ChatGPT 注册使用
  17. 红帽子企业版RHEL5.0 的软件包管理
  18. 中国烟草和水烟行业市场供需与战略研究报告
  19. 这是个404的时代 各种404的搞笑图片
  20. 随机产生单词java_JavaGUI实现随机单词答题游戏

热门文章

  1. 2022年实时最新省市区县乡镇街道geojson行政边界数据获取方法
  2. NR PDCCH(二)下行控制信息DCI
  3. MySQL中如何随机产生验证码,MySQL 生成随机数字 UUID MySQL 生成随机数字、字符串、日期、验证码及 UUID的方法...
  4. 巧妙修改vc++生成的dll名称
  5. Spark支持的Join类型、Join的3种实现
  6. QT 计算两个日期时间差?(时间转时间戳)
  7. 易点易动设备管理系统帮助水泥厂实现智能设备巡检
  8. Linux系统开机自启动程序设置
  9. tkinter Label Button 显示图片的问题解决
  10. 【论文阅读】NEF:用于从多视图重建 3D 参数曲线的神经边缘场