`
啸笑天
  • 浏览: 3461013 次
  • 性别: 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面向对象编程快速入门知识点详解 #### 一、类和对象的基本概念 在面向对象编程中,**类**是一种定义通用特性的抽象模型,它描述了一组具有相同属性和行为的对象。例如,在本例中提到的“汽车”类就定义...

    UML面向对象设计基础

    《UML面向对象设计基础》是面向对象技术领域的一本经典入门书籍。它通过系统地介绍面向对象设计的基础知识、符号表示、发展历史、原理、优点和缺点,为读者提供了一个全面的、可操作的学习框架。无论是初学者还是...

    Delphi面向对象学习快速入门资料

    这份"Delphi面向对象学习快速入门资料"提供了丰富的学习资源,帮助初学者快速掌握Delphi的面向对象编程技术。 随笔1:"类与对象的关系.txt"介绍了OOP的基础,即类和对象的概念。类是创建对象的蓝图,定义了对象的...

    UML实例教程-参考手册

    学习《UML实例教程-参考手册》不仅可以帮助初学者快速入门面向对象设计和UML,也能为有经验的开发者提供一个详实的参考资源,提升他们在软件开发过程中的建模能力和沟通效率。书中包含的“面向对象设计UML实践.pdf”...

    java面向对象的程序设计入门

    本教程“Java面向对象的程序设计入门”将引导初学者进入这一领域。 首先,我们需要理解面向对象的基本概念。面向对象有三大核心原则:封装、继承和多态。封装是将数据和操作这些数据的方法绑定在一起,形成一个独立...

    用星际快速入门 PHP 面向对象编程

    面向对象编程(Object-Oriented Programming,简称 OOP)是一种编程范式,它基于“对象”的概念,将数据和操作数据的方法封装在一起。在 PHP 中,面向对象编程提供了类(Class)、对象(Object)、继承(Inheritance...

    PHP面向对象编程(用星际快速入门)

    在现代软件开发中,面向对象编程(Object-Oriented Programming, OOP)是一种广泛应用的技术,它通过将程序设计围绕“对象”来进行组织,使代码更易于理解和维护。对于初学者而言,理解OOP的概念可能有些抽象。本文...

    C# 面向对象程序设计

    本教程将深入探讨C#的基础知识,帮助初学者快速入门并掌握其面向对象编程的核心概念。 **一、C#基础** 1. **变量与数据类型**:C#支持多种基本数据类型,如整型(int)、浮点型(float/double)、字符型(char)和...

    视频教程-C#面向对象基础01

    在这个教程中,讲师苏坤来自知名的教育机构传智播客,他将深入浅出地介绍面向对象编程的核心概念,帮助学员快速掌握这一重要的编程思想。 1. **面向对象编程(Object-Oriented Programming, OOP)**:面向对象编程...

    面向对象程序设计之C#版Grady Booch.pdf

    《面向对象程序设计之C#版》是一本深入浅出、内容丰富的书籍,不仅适合初学者快速入门,也能帮助有一定基础的开发者进一步提升自己的技能。通过一系列生动有趣的例子和实践指导,本书有效地传达了面向对象编程的思想...

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

    Python 快速入门 - 面向对象程序设计 面向对象程序设计是 Python 中的一种编程范式,它提供了一种组织代码的方式,使得代码更加模块化、可维护和可扩展。本章节将介绍面向对象程序设计的基本概念,包括类的概念、...

    javascript 快速入门教程,javascript面向对象编程

    ### JavaScript 快速入门教程与面向对象编程 #### 一、概要 JavaScript 是一种广泛应用于网页开发中的脚本语言,具有轻量级、解释型等特点。它可以在客户端执行,无需服务器支持,使得网页能够更加动态和交互。 ##...

    面向对象程序设计(Java)教学课件

    面向对象程序设计(Java)是计算机科学中的一个重要概念,它是一种基于对象的编程范式,以现实世界中的实体为模型,通过类和对象来抽象和模拟复杂问题。Java语言是实现这一编程思想的典型代表,它以其强大的跨平台...

    c++面向对象设计下载教学资源

    "c++面向对象设计下载教学资源"这个压缩包可能提供了更直观、更易理解的教学材料,帮助初学者快速掌握面向对象编程的基本概念和技巧。 这个资源包很可能包含了丰富的实例代码、解释性的文字资料、可能还有互动式的...

    c#学习 C_程序设计语言与面向对象基础精简教程.pdf

    总的来说,《C#学习:C_程序设计语言与面向对象基础精简教程》是一份全面且实用的学习资源,无论你是想入门C#编程,还是希望巩固面向对象编程基础,都能从中受益。配合源码和工具的实践,相信你将能快速掌握C#编程并...

    ThinkPHP5快速入门手册

    ThinkPHP是一个轻量级、快速、简单的PHP开发框架,基于MVC设计模式和面向对象的编程思想,是PHP开发中非常流行的框架之一。 ThinkPHP5.0版本相较于以往版本,引入了很多新的特性,包括更灵活的路由管理、依赖注入、...

    C++快速入门课件全解

    作为C语言的增强版,C++不仅保留了C语言的高效性,还引入了面向对象编程(OOP)的概念,如类、对象、封装、继承、多态等,以及模板、异常处理和STL(Standard Template Library)等现代特性。 本"快速入门课件全解...

    Visual C++面向对象与可视化程序设计

    《Visual C++面向对象与可视化程序设计》是深入学习C++编程和Windows应用程序开发的重要教材。本书主要针对那些希望通过Visual C++平台掌握面向对象编程和可视化应用开发的读者。在学习过程中,理解C++的核心概念,...

Global site tag (gtag.js) - Google Analytics