# 类和对象
## 目标
* 类和对象的概念
* 类和对象的关系
* 类的设计
## 01. 类和对象的概念
**类** 和 **对象** 是 **面向对象编程的 两个 核心概念**
### 1.1 类
* 类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。
* **特征** 被称为 **属性**
* **行为** 被称为 **方法**
* **类** 就相当于制造飞机时的**图纸**,是一个 **模板**,是 **负责创建对象的**
![](https://pic.downk.cc/item/5e85cd55504f4bcb0437789e.jpg)
### 1.2 对象
* **对象** 是 **由类创建出来的一个具体存在**,可以直接使用
* 由哪一个类创建出来的对象,就拥有在哪一个类中定义的:
* 属性
* 方法
* **对象** 就相当于用 **图纸** **制造** 的飞机
> 在程序开发中,应该 **先有类,再有对象**
![](https://pic.downk.cc/item/5e85cda0504f4bcb043978b1.jpg)
## 02. 类和对象的关系
* **类是模板**,**对象** 是根据 **类** 这个模板创建出来的,应该 **先有类,再有对象**
* 类只有一个,而对象可以有很多个
* **不同的对象** 之间 **属性** 可能会各不相同
* **类** 中定义了什么 **属性和方法**,**对象** 中就有什么属性和方法,**不可能多,也不可能少**
## 03. 类的设计
在使用面相对象开发前,应该首先分析需求,确定一下,程序中需要包含哪些类!
![](https://pic.downk.cc/item/5e85cc5e504f4bcb0430f2b0.jpg)
在程序开发中,要设计一个类,通常需要满足一下三个要素:
1. **类名** 这类事物的名字,**满足大驼峰命名法**
2. **属性** 这类事物具有什么样的特征
3. **方法** 这类事物具有什么样的行为
### 大驼峰命名法
~~~
CapWords
~~~
1. 每一个单词的首字母大写
2. 单词与单词之间没有下划线
### 3.1 类名的确定
**名词提炼法** 分析 **整个业务流程**,出现的 **名词**,通常就是找到的类
### 3.2 属性和方法的确定
* 对 **对象的特征描述**,通常可以定义成 **属性**
* **对象具有的行为**(动词),通常可以定义成 **方法**
> 提示:需求中没有涉及的属性或者方法在设计类时,不需要考虑
### 练习 1
**需求**
* **小明** 今年 **18 岁**,**身高 1.75**,每天早上 **跑** 完步,会去 **吃** 东西
* **小美** 今年 **17 岁**,**身高 1.65**,小美不跑步,小美喜欢 **吃** 东西
![](https://pic.downk.cc/item/5e85ce4b504f4bcb043e1296.jpg)
### 练习 2
**需求**
* 一只 **黄颜色** 的 **狗狗** 叫 **大黄**
* 看见生人 **汪汪叫**
* 看见家人 **摇尾巴**
![](https://pic.downk.cc/item/5e85ce5d504f4bcb043e92e0.jpg)

- linux基础
- 01_Python基础课程安排
- 02_操作系统(科普章节)
- 03_操作系统的发展史(科普章节)
- 04_文件和目录(理解)
- 05_Ubuntu图形界面入门
- 06_常用Linux命令的基本使用
- 07_Linux终端命令格式
- 08_文件和目录常用命令
- 09_远程管理常用命令
- 10_用户权限相关命令
- 11_系统信息相关命令
- 12_其他命令
- python基础
- 01_认识 Python
- 02_第一个Python 程序
- 03_PyCharm的初始设置(知道)
- 04_多文件项目的演练
- 05_注释
- 06_算数运算符
- 07_程序执行原理(科普)
- 08_变量的基本使用
- 09_变量的命名
- 10_判断(if)语句
- 11_运算符
- 12_循环
- 13_函数基础
- 14_高级变量类型
- 15_综合应用——名片管理系统
- 16_变量进阶(理解)
- 17_函数进阶.md
- 面向对象
- 01_面向对象(OOP)基本概念
- 02_类和对象
- 03_面向对象基础语法
- 04_面向对象封装案例
- 05_面向对象封装案例 II