> For the complete documentation index, see [llms.txt](https://wanlinruo.gitbook.io/androidbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wanlinruo.gitbook.io/androidbook/java/01-junior/02-object-oriented/01-oop.md).

# 01-面向对象思想

## 基本概念：

面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物，这些事物之间存在着各种各样的联系。在程序中

使用对象来映射现实中的事物使用对象的关系来描述事物之间的联系，这种思想就是面向对象。

## OOP：

面向对象就是使用对象进行程序设计，简写成OOP。

### 理解：

1. 旨在计算机程序中模拟现实世界的概念
2. 在OOP中，现实世界所有的所有事物都被视为对象
3. 在计算机程序中用相似的实体模拟现实世界中的实体
4. 设计和实现软件系统的方法

## SP和OOP的区别：

|      | 面向过程（SP）       | 面向对象（OOP）         |
| ---- | -------------- | ----------------- |
| 设计思路 | 自顶而下、层次化、分解    | 自底而上、对象化、综合       |
| 程序单元 | 函数模块           | 对象                |
| 设计方法 | 程序 = 算法 + 数据结构 | 程序 = 对象 = 数据 + 方法 |
| 优点   | 相互独立，代码共享      | 接近人的思维方式，模拟客观世界   |
| 缺点   | 数据与程序不一致，维护困难  | 客观世界无序性，概念不成熟     |
