`
啸笑天
  • 浏览: 3437953 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

快速入门面向对象设计

阅读更多

 

面向对象设计把握一个重要的经验:谁拥有数据,谁就对外提供操作这些数据的方法。

几个典型的案例:
·人在黑板上画圆:有人对象、黑板对象、圆对象,画圆这个动作必须用到了圆心坐标x、y和半径r,而x、y、r是圆内部的数据,圆拥有这些数据,所以这个动作时圆的,而不是黑板的,更不是人的。
·列车司机紧急刹车:有列车对象和司机对象。刹车动作是列车执行的。
·售货员统计收获小票的金额:有售货员对象,小票对象。商品的金额在小票上,所以统计金额的行为属于小票。
·你把门关上了:有人对象、门对象。关门的行为属于门,因为门旋转,撞到门框然后门锁锁上了。
学员的两个面向对象的面试题,用面向对象的方式设计如下情景。
两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子
球从一根绳子的一段移动到了另一端, 

用面向对象的方式设计如下情景:
·球从一根绳子的一段移动到了另一端
/*有绳子和小球两个对象*/
//绳子给小球引导了滚动的方向,把绳子想成是由若干的点组成
class Rope{
private Point start;
private Point end;
public Rope(Point start,Point end){//小球移动需要绳子对象,所以传进来一个绳子
this.start=start;
this.end=end;
}
//获取某个点的下个点
public Point nextPoint(Point currentPoint){
/*通过两点一线的数学公式可以计算出当前点的下一个点,这个细节不属于设计阶段要考虑的问题,如果当前点是终止点,则返回

null,如果当前点不是线上的点,则抛出一异常*/
}
}

class Ball{
private Rope rope;
private Point currentPoint;//小球的当前坐标,小球移动时改变当前的坐标
public Ball(Rope rope,startPint){//小球移动需要绳子,
this.rope=rope;
this.currentPont=startPoint;
}

public void move(){
currentPoint=rope.nextPoint(currentPoint);
System.out.println("小球移动到了"+currentPoint);
}
}

//小球和绳子是协作关系,小球移动时要问绳子要下一个点的坐标,因为绳子有点的坐标,所以返回下个点的坐标只能有绳子提供。小球移动是改变的小球的当前位置,所以移动这个动作由小球提供。--->谁有数据谁就有控制数据的方法。


·两块石头磨成一把石刀,石刀可以砍树,砍成木材,木材做成椅子
有 Stone对象,StoneKnife对象,Tree对象 ,Wood对象,Chair对象 五个对象。
两块石头磨成一把石刀,这个方法不是Stone对象自己提供的,否则Stone对象自己就没了,这个不可能的,也不是其他四个对象提供的,所以是有其他对象提供,假设有个石刀加工厂做的:StoneKnife=KnifeFactory.createKnife(store,store)
石刀可以砍树,砍成木材:这个方法有StoneKnife对象提供:Wood cut(tree)
木材做成椅子:这个方法也是由椅子加工厂完成  Chair=ChairFactory.makeChair(wood)

分享到:
评论

相关推荐

    Labview面向对象编程快速入门.pdf

    Labview面向对象编程快速入门

    Java面向对象程序设计

    Java面向对象程序设计,内含PPT详细课件,每个章节的详细例子代码。是学习Java基础非常实用和高效的资源。能够帮助你JAVA快速入门。

    Python快速入门-面对对象程序设计

    Python+小白+初学者+快速入门+面向对象程序设计

    面向对象程序设计 JAVA版

    让你快速掌握面向对象程序设计灵魂。。。。。。

    DELPHI快速入门

    DELPHI快速入门教程 DELPHI基础教程 目录  第一章 Delphi快速入门(一)  第一章 Delphi快速入门(二)  第一章 Delphi快速入门(三)  第一章 Delphi快速入门(四)  第一章 Delphi快速入门(五) ...

    c#面向对象23种设计模式手册

    全书分为四个部分,首先介绍了C#语言和面向对象程序设计的一般原则,可作为C#程序设计的快速入门教程;然后分别讲述了创建型模式、结构型模式和行为型模式。每一类设计模式又包括若干种具体模式,共有23种。在介绍每...

    Visual C++ MFC 简明教程 快速入门 PDF

    Visual C++ MFC 简明教程 快速入门 Visual C++ 不仅仅是一个编译器。它是一个全面的应用程序开发环境,使用它你充分 利用具有面向对象特性的 C++ 来开发出专业级的 Windows 应用程序。为了能充分利用这 些特性,你...

    快速入门-Delphi

    它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language),是当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序...

    C#初学者快速入门教材(教程)

    对于C#初学者来说是本不错的入门书籍,文章分五部分: 第一部分:C#语言概述 第二部分:C#程序设计 第三部分:面向对象的C# 第四部分:深入了解C# 第五部分:附录

    Spring基础与快速入门

    3 IOC:控制反转,谓之“依赖关系的转移”,如果以前都是依赖于实现,那么现在反转为依赖于抽象吧,其实它的核心思想就是要面向接口编程,至于何谓接口何谓抽象,以及它们的好处,多看看设计模式吧,这里就不费口舌...

    Delphi快速入门(基础到入门)

    它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发...

    Python快速入门魔力手册.pdf

    ython 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Python...

    Java SE编程入门教程 javaGUI编程快速入门(1)(共82页).pptx

    Java SE编程入门教程 javaGUI编程快速入门(1)(共82页).pptx Java SE编程入门教程 java包装器(共9页).pptx Java SE编程入门教程 java反射机制(共16页).pptx Java SE编程入门教程 java泛型(共11页).pptx Java ...

    C++ MFC快速超简单入门

    在学习MFC之前,你必须对C++的 “类和对象有一定的认识和理解,因为MFC就是C++完全的面向对象设计,它里面封装了好多类,我们只要调用就OK,就像C语言调用库函数一样,直接使用,这就是C++

    delphi经典编程入门

    第一章 Delphi快速入门(一)  第一章 Delphi快速入门(二)  第一章 Delphi快速入门(三)  第一章 Delphi快速入门(四)  第一章 Delphi快速入门(五)  第二章 Delphi面向对象的编程方法(一)  ...

    C# 快速入门必备教程

    四、C#中的面向对象 五、数据类型; 六、流程控制语句; 七、变量和常量; .......... 第四部分:深入了解C# .......... 接口; 文件操作; 注册表编程; 版本控制; 代码优化; 第五部分:附录 ........ 关键字; ...

    tp3.2.3快速入门

    tp3.2.3构架快速入门,ThinkPHP是一个快速、简单的基于MVC和面向对象的轻量级PHP开发框架,遵循Apache2开源协议发 布,从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,尤其注重开发体 ...

    Java SE编程入门教程 java设计模式(共17页).pptx

    Java SE编程入门教程 javaGUI编程快速入门(1)(共82页).pptx Java SE编程入门教程 java包装器(共9页).pptx Java SE编程入门教程 java反射机制(共16页).pptx Java SE编程入门教程 java泛型(共11页).pptx Java ...

    C#快速入门教材(四个部分对c#深入研究)

    C#快速入门教材第一部分:c#概述 第二部分:c#程序设计基础 第三部分:面向对象C# 第四部分:深入了解c#

Global site tag (gtag.js) - Google Analytics