1.1用面向对象设计电子宠物系统 1.1.1 为什么使用面向对象
现实世界就是“面向对象的”。现实世界中的任何事物都可以看作是“对象”,比如人、建筑、交通工具、学习用品等。而事物都有自己的属性和行为。比如人,它具有各种属性:姓名、性别、身高、体重、籍贯等,还可以做很多事情:吃饭、睡觉、劳动、锻炼等。各个事物之间还会发生各种联系,人用木材可以做成一套家具,人用笔可以写出文章等。
面向对象就是采用“现实模拟”的方法设计和开发程序。计算机软件开发规模越来越大,解决的问题也越来越复杂,导致软件开发时间、软件开发成本、软件维护费用甚至软件开发质量等日益难以控制。而面向对象技术利用“面向对象的思想”去描述“面向对象的世界”,实现了虚拟世界和现实世界的一致性,符合人们的思维习惯,使得客户和软件设计开发人员之间、软件设计开发人员内部交流更加顺畅,同时还带来了代码重用性高、可靠性高等优点,大大提高了软件尤其是大型软件的设计和开发效率。
问答
问题:面向过程和面向对象有什么区别?
解答:我们要举办一次北大青鸟的联欢晚会。如果采用面向过程的话,就是全体人员合唱青鸟之歌→主持人宣布晚会开始→领导讲话→主持人过场→演员一表演→主持人过场→演员二表演??→最后一位演员表演→主持人宣布晚会结束,即从头至尾、自上而下的实现功能。而如果采用面向对象实现的话,首先分析晚会需要哪些类:领导、主持人和演员。然后分析各种类的行为:主持人有宣布晚会开始、过场、宣布晚会结束,当然也有唱青鸟之歌。领导有讲话、唱青鸟之歌。演员主要就是表演节目,也有唱青鸟之歌。然后就利用设计好的类创建对应对象,调用相应的方法(行为)来逐步进行晚会。
面向过程的核心概念是函数,以功能为中心,实现了函数级别的代码重用。面向对象的核心概念是封装了属性和方法(行为)的类,以数据为中心,实现了类级别的代码重用。面向对象因为采用了类,具有继承和多态特性,可以进一步重用代码和简化编程,而面向过程中没有继承和多态特性。
1.1.2 使用面向对象进行设计
下面就开始电子宠物系统的设计和开发之路吧,这一章的任务是用类来描述宠物,然后实现领养宠物功能。首先需要根据需求进行面向对象的设计。
问题:
我们要设计一个电子宠物系统,其中领养宠物功能的详细需求如下。 根据控制台提示,输入领养宠物的昵称。
根据控制台提示,选择领养宠物的类型,有两种选择:狗狗和企鹅。 如果类型选择狗狗,要选择狗狗的品种,有两种选择:“聪明的拉布拉多犬”或者“酷酷的雪纳瑞”。
如果类型选择企鹅,要选择企鹅的性别:“Q仔”或“Q妹”。 所领养宠物的健康值默认是100,表示非常健康。
所领养宠物和主人的亲密度默认是0,表示和主人还不熟悉。
在控制台打印出宠物信息,包括昵称、健康值、亲密度、品种或性别,表示领养成功。
如何依据需求,使用面向对象思想来设计我们的电子宠物系统呢?
分析
面向对象设计的过程就是抽象的过程,我们分三步来完成。 第一步:发现类。
第二步:发现类的属性。 第三步:发现类的方法。
面向对象设计的过程就是抽象的过程,根据业务需求,关注与业务相关的属性和行为,忽略不必要的属性和行为,由现实世界中“对象”抽象出软件开发中的“对象”,如图1.2所示。
图1.2 面向对象设计的过程就是抽象的过程
接下来我们就按照发现类、发现类的属性和发现类的方法的步骤完成设计。 我们可以通过在需求中找出名词的方式确定类的属性,找出动词的方式确定方法。并根据需求实现业务的相关程度进行筛选。
第一步:发现类。
需求中名词有控制台、宠物、昵称、狗狗、企鹅、类型、品种、聪明的拉布拉多犬、酷酷的雪纳瑞、性别、Q仔、Q妹、健康值、亲密度和主人等。
根据仔细筛选,发现可以作为类的名词有宠物、狗狗、企鹅和主人。本章要实现领养宠物功能,主要用到