人世繁华|进行面向对象程序设计深剖,可以一学,大牛带你深入Java核心技术( 三 )
对象的这些关键特性在彼此之间相互影响着 。 例如 , 对象的状态影响它的行为 。 (如果一个订单“已送货”或“已付款” , 那么就应该拒绝调用具有增删订单中条目的方法 。 反过来 , 如果订单是“空的” , 即还没有加入预订的物品 , 那么这个订单就不应该进入“已送货”状态 。 )
传统的过程化程序设计 , 必须从顶部的main函数开始编写程序 。 当设计一个面向对象的系统时 , 没有所谓的“顶部” 。 对于学习OOP的初学者来说常常会感觉无从下手 。 答案是首先从设计类开始 , 然后再向每个类中添加方法 。
这些名词很可能形成类Item、Order等 。
接下来 , 查看动词 。 物品项目被添加到订单中 。 订单被发送或取消 。 订单货款被支付 。 对于每一个动词如:“添加”、“发送”、“取消”以及“支付” , 都要标识出主要负责完成相应动作的对象 。 例如 , 当一个新的条目添加到订单中时 , 那个订单对象就是被指定的对象 , 因为它知道如何存储条目以及如何对条目进行排序 。 也就是说 , add应该是Order类的一个方法 , 而Item对象是一个参数 。
当然 , 所谓“名词与动词”原则只是一种粗略的方法 , 在建立类的时候 , 哪些名词和动词是重要的完全取决于个人的开发经验 。
类之间的关系
在类之间 , 最常见的关系有
?依赖(“uses-a”)
?聚合(“has-a”)
?继承(“is-a”)
依赖 , 即“uses-a”关系 , 是一种最明显的、最常见的关系 。 例如 , Order类使用Account类是因为Order对象需要访问Account对象查看信用状态 。 但是Item类不依赖于Account类 , 这是因为Item对象与客户账户无关 。 因此 , 如果一个类的方法操纵另一个类的对象 , 我们就说一个类依赖于另一个类 。
?使用逐步求精的处理过程:将要完成的任务分解成若干个子任务 , 子任务再分解成更小的子任务 , 直到子任务小到可以直接实现为止(这是自顶向下的方法) 。
?编写求解简单任务的过程 , 并将它们组装成更加复杂的过程 , 直到完成需要实现的功能为止(这是自底向上的方法) 。
当然 , 大多数程序员使用自顶向下与自底向上相结合的策略来解决程序设计的问题 。 在过程化程序设计中 , 确定过程的手段与OOP中确定方法的方式基本一样 , 即查看问题描述中的动词或者动作 。 而在OOP中的最重要区别是首先从项目中分离出类 , 然后再找出这个类中需要定义哪些方法 。 除此之外 , 传统的过程和OOP方法的另一个主要区别是:在OOP中 , 每个方法都与负责执行这个操作的类相关联 。
推荐阅读
- 程序员■Java程序员必知:HashMap进行put操作会不会引起死循
- 威锋网|欧洲消费者要求苹果就“降速门”进行赔偿
- IT之家|外媒:欧洲消费者要求苹果就iPhone电池门进行赔偿
- 路飞写代码|浪潮也难以逃脱限制,自主自研迫在眉睫!美国科技霸凌背后的“获利”浪潮也被美国进行断供更大的风暴还在后面写在最后:,中兴、华为之
- 小熊带你玩科技|全新等离子体光子芯片:利用光进行超高速数据传输
- 「」华南虎当初被送到非洲,进行野化训练,这个庞然大物现在变得如何
- cnBeta|要求就iPhone电池门进行赔偿,欧洲消费者向苹果施压
- cnBeta|拥有人造羽毛进行飞行,研究人员创造BionicSwift机器人鸟
- @中国最大的一次天灾,让数亿人离开人世,否则中国人数早超20亿!
- 3D科学谷|现在进行时,3D打印驱动的下一代运动防护头盔