这一章节我们来讨论一下怎么理解对象?
1.服务提供者
对象:来源于“Object”,中文说的比较抽象,个人更倾向于台湾香港的译法“物件”,个人实实在在的感觉,不用那么虚,当然,如果叫实例也是比较好理解。
对象,我们可以想象成服务的提供者。它包含了一组数据以及一些可执行的方法。
例如:
package com.ray.ch01;
public class Bird {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
private void say() {
}
public static void main(String[] args) {
Bird bird1 = new Bird();
bird1.say();
Bird bird2 = new Bird();
bird2.say();
System.out.println(bird1.equals(bird2));
}
}
在上面的代码里面得出:
Bird,我们称为类,其实它就是我们自己定义的数据类型,映射实际世界里面的“鸟”。
在main方法里面的bird1和bird2,我们称之为对象,或者实例,或者物件等等,这两个实例属于了Bird这个数据类型,里面含有name这个属性,还有say这个方法。
这里,我们可以把bird1看作服务提供商,这个对象给我们提供say这个执行的方法。
2.分解对象
上面提到服务提供商,那么我们可以引入下面例子。
例如:黑白双方在设计五子棋时,可分为行为是相同的黑白双方,负责绘制画面的棋盘系统,负责判定犯规、输赢等的规则 系统。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种 变化,同时利用第三类对象(规则系统)来对棋局进行判定问题的步骤中的行为。
又例如:在分析学生管理系统,第一类对象是用户,负责输入数据,第二类对象是显示对象,赋值显示返回,第三类对象是逻辑处理对象,主要负责处理数据。
3.高内聚
既然上面提到了分解对象,那么必须提到高内聚。
高内聚:从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事
我们下面给出反面例子:
package com.ray.testobject;
public class Bird {
private String name;
private void sing() {
}
private void fly() {
}
}
上面的例子很明显,sing这个方法应该属于歌唱家的,而fly是属于鸟的,因此这个类的内聚不高。由于内聚不高,因此当调用sing的方法的时候,就可能耦合bird这个类,造成以后维护的麻烦。
总结,这一章节介绍了对象作为服务提供者使用,并且延伸到分解对象和内聚。
这一章节就到这里,谢谢。
-----------------------------------
目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
CS 1.2:数据结构简介 课程说明 本课程将深入研究数据结构和算法,以了解数组,链接列表和哈希表的工作方式。 学生将从头开始构建这些结构,分析复杂性,并在应用程序中进行基准测试性能,以了解现实中的权衡取舍。 ...
从头写React-like框架的工程搭建实现 最近在网上看到了 Build your own React 这篇文章,作者从零开始实现了一个简易类 React 框架,虽然没有过多的优化,但 React 中的核心思想 Concurrent Mode,Fiber ...
你将学习如何从头开始编写Web服务以及集成现有服务到你的Java应用程序中。有了这《Java Web 服务:构建与运行(影印版)》,你将: · 理解基于SOAP的和REST样式的服务的区别 · 编写、部署和使用基于SOAP的核心...
从头开始学习Java课程-资料来源PillsInformática。
视频 https://www.bilibili.com/video/BV1914y1s7hi
视频 https://www.bilibili.com/video/BV1914y1s7hi
外卖订餐java源码 你会学到什么 通过 Java 片段的构建块,您将能够立即了解 Java 编程的要点。 你需要什么 勇敢地浏览存储库! 或替代开源 JDK 1.8 版本 截至今天,该存储库已通过测试 Oracle JDK 1.8 OpenJDK 1.8 ...
军工行业2021年度投资策略:而今迈步从头越-20201115-招商证券.pdf
Java-3D游戏引擎与基本游戏Java中使用LWJGL,OpenGL,OpenAL等的3D游戏引擎。 从头开始
赖世雄英语从头学 下载-附件资源
本资料是UCSF DOCK的使用案例分享的输入资料,将使用DOCK 6.11自带的片段库,使用DOCK/RDKit的 DOCK_D3N功能从头设计分子。便于使用者直接从这部分设计工作开始,不需花时间来准备输入文件。
乙二醇2020年度策略报告:“熊”关漫道真如铁,而今迈步从头越-20191230-光大期货-36页.rar
java实现验证码功能源码 Java Periphery 是一个高性能库,用于用户空间 Linux 中的 GPIO、LED、PWM、SPI、I2C、MMIO 和串行外设 I/O 接口访问。 我没有尝试从头开始构建它并生成 JNI 包装器。 这节省了大量手动编码...
开发人员零java-Mentorama 在此存储库中,将从头开始插入Java Developer模块的Mentorama课程期间开发的所有练习。
3D游戏从头编-网上收集,很基础. 第一回:开发环境 第二回:3D基本概念 第三回:第一个D3D程序 第四回:渲染顶点 第五回:渲染索引顶点 第六回:摄象机 第七回:灯光 第八回:纹理 第九回:3D模型(.x)
java源码字符串缓冲区 这是 Java String 、 StringBuilder和StringBuffer方法/API 的完整指南。 本指南的源代码示例在我们的本地开发环境中进行了良好的测试,您可以将这些示例用作无错误。 您可以在 上了解更多信息...
Java-TCP-GUI-聊天 介绍 作为我的理学学士学位的交流课程的一个项目,我被要求制作一个聊天应用程序。 我完全是从头开始制作此程序的,没有从其他来源复制任何功能。 我知道代码不是很完美,但是在我还承担其他学术...
Java机器人 这是一个从头开始编写JavaScript机器人
如果您了解一点C或JavaScript,本指南就是从头开始学习Java。 这是一个正在进行的工作,应该在下一个Java LTS(Java 17)发布时准备就绪。 所有代码都在启用预览功能的Java 14上运行。 注意:如果您只希望查看...
Java系列13-Spring Boot 实际上,我们将从头开始逐步开发项目。 我们将详细检查Spring Boot开发环境和体系结构。 借助Spring Boot,我们将探索公司Java项目的基础架构。 您可以通过Spring Framework为自己带来美好的...