当前课程知识点:C++语言程序设计基础 > 第1章 绪论 > 面向对象的基本概念 > 面向对象的基本概念
面向对象的基本概念
l一般意义上的对象:现实世界中实际存在的事物。
l面向对象方法中的对象:程序中用来描述客观事物的实体。
l分类依据的原则——抽象;
l抽象出同一类对象的共同属性和行为形成类;
l类与对象是类型与实例的关系。
l隐蔽对象的内部细节;
l对外形成一个边界;
l只保留有限的对外接口;
l使用方便、安全性好。
l意义在于软件复用;
l改造、扩展已有类形成新的类。
l同样的消息作用在不同对象上,可以引起不同的行为。
那接下来呢
我给大家归纳一下
面向对象的一个几个概念
一个是对象就是Object
自然界中的一个物体
一个人个体都是一个对象
那么程序中也有相应的机制
可以模拟这个对象
还有一种就是类
类是基于分类和抽象的思维
形成的
同一类对象
我们可以抽象出它的共同属性
和行为就形成了类
比如说老师就是一类人
那么今天如果不是我
站在这儿讲课
换一个别的老师来
只要他经过考核
有这个资质的
同样可以讲这个课
为什么呢因为站在这儿
需要站在这儿讲课的
不一定是我这个人
而是需要这样一种老师
站在这儿讲课
这就是一种分类的思想
然后我会讲
今天学完了以后
大家要去做什么习题
同学们要去做什么实验
那么这是对学这门课的学生
一个统一的要求
也就是说把大家分类了
选了这门课的学生是同一类人
所以这种思维
我们都是很习惯的
那么类与对象什么概念呢
什么关系呢
这两个概念之间的关系
就是类型和这个类型的实例
之间的关系
就好像是模具和铸件的关系一样
我们再观察一下
自然界中的对象
比如说一个电视机
你要操纵它怎么操纵
用摇控器用面板上的按钮
你不能打开机壳
去调里面的东西吧
那属于维修那不属于使用吧
那钟表你怎么使用它
你要调时间要看时间
通过面板通过旋钮按钮
对吧
这都是有壳封装起来的
当然人更是封装起来的
人不能轻易被打开
打开就是跟机器维修一样
那不是好事
所以我们对象都是被封装起来的
封装起来有什么好处
当然第一是安全性
我们的脑袋是封装起来的
所以它不会受环境条件的影响
被破坏掉对吧
我们的仪器设备是封装起来的
不会被轻易地摔坏
被误操作给损伤等等这些
那好以前呢
如果没有面向对象的
这种机制的话
我们在程序里面的代码
是没有这种封装机制的
所以封装起来用着方便
你不用管里面的实现原理
还有安全性好
所以这也是面向对象的一个特点
封装
还有一点是什么是继承
继承这个词大家习惯都知道
子承父业
那你想想
如果说你能继承一个产业
在你继承产业的基础上
再去发展你就要比从零起步
发展得快文化也是这样
我们首先要继承
我们民族几千年的传统文化
在这个基础上去发扬光大
去发展
所以我们都知道继承是件好事
写程序能不能也这样呢
当然我们也希望这样
不要我每写一个程序
都一切从头开始
从刀耕火种开始
那个任务太重了
最好有现成的一些什么东西
可以被我拿来所用
继承来也许我还需要改造
然后总归比我从头
一切自己做起要好
在第七章我们会给大家讲继承
这些程序重用的一种方式
还有一个面向对象的概念
叫做多态性
多态性这个词呢
大家似乎有点陌生
英文的这个词也比较长
比较别扭 polymorphism
都不是一个很常用的词
但是多态现象
却是一个非常常见的现象
比如说
我说今天下课以后
我们去打乒乓球啦
另外一组同学说
那咱们去打篮球去
都说的是打球都用了一个打
我们打乒乓球
他们去打篮球打法一样吗
当然不一样
这是常识大家都知道
但是为什么我们说话的时候不说
我们俩用打乒乓球的方法
去打乒乓球了
那几个人为什么不说
我们哥几个用打篮球的方法
去打篮球了
如果你这样说话
大家一定觉得这个人有毛病
为什么因为我们都知道
都是打球但是打的球不一样
包括英文用的词是什么 play
你play的东西不一样
规则就不一样方法就不一样
这个大家都清楚
这个是什么这就是多态
那么程序中
能不能也支持这种思维方式呢
当然我们也希望它能支持
只有面向对象的程序
能支持这种多态的行为
这样的话呢
我们的程序就更容易写
也更容易理解了
-导学
--第1章导学
-计算机系统简介
--计算机系统简介
--计算机系统简介 测试题
-计算机语言和程序设计方法的发展
--计算机语言和程序设计方法的发展 测试题
-面向对象的基本概念
--面向对象的基本概念 测试题
-程序的开发过程
--程序的开发过程
--程序的开发过程 测试题
-信息的表示和储存
--计算机的数字系统
--数据的编码表示
--信息的表示和储存 测试题
-实验指导
-导学
--第二章导学
-C++语言概述
--C++语言概述 测试题
-基本数据类型、常量、变量
--程序举例
--基本数据类型、常量、变量 测试题
-运算与表达式
--运算与表达式 测试题
-实验二:简单程序设计(上)
-数据的输入和输出
--数据的输入和输出
--数据的输入和输出 测试题
-选择结构
--if语句
--switch语句
--选择结构 测试题
-循环结构
--for语句
--循环结构 测试题
-自定义类型
--自定义类型
--自定义类型
-第2章小结
--第二章小结
-实验二:C++简单程序设计(下)
-导学
--导学
-函数定义
--函数定义
--函数定义 测试题
-函数调用
--例3-2
--例3-3
--例3-4
--例3-5
--例3-6
--函数调用 测试题
-嵌套与递归
--例3-9
--例3-10
--嵌套与递归 测试题
-函数的参数传递
--函数的参数传递
--函数的参数传递 测试题
-引用类型
--引用类型 测试题
-含有可变参数的函数
--含有可变参数的函数 测试题
-内联函数
--内联函数 测试题
-constexpr函数
--CONSTEXPR函数课后习题
-带默认参数值的函数
--带默认参数值的函数 测试题
-函数重载
--函数重载 测试题
-C++系统函数
--C++系统函数习题
-第3章小结
--第三章小结
-实验三(上)函数的应用
-实验三(下)函数的应用
-导学
--导学
-面向对象程序的基本特点
--面向对象程序的基本特点 测试题
-类和对象
--类和对象的定义
--类和对象 测试题
-构造函数
--构造函数基本概念
--委托构造函数
--复制构造函数
--构造函数 测试题
-析构函数
--析构函数
--析构函数 测试题
-类的组合
--类的组合
--类的组合程序举例
--前向引用声明
--类的组合 测试题
-UML简介
--UML简介
--UML简介课后习题
-结构体与联合体
--结构体与联合体 测试题
-枚举类
--枚举类
--枚举类 测试题
-第4章小结
--第四章小结
-实验四(上)
--实验四(上)
-实验四(下)
--实验四(下)
-导学
--导学
-标识符的作用域与可见性
--标识符的作用域与可见性 测试题
-对象的生存期
--对象的生存期
--对象的生存期 测试题
-类的静态成员
--类的静态成员 测试题
-类的友元
--类的友元 测试题
-共享数据的保护
--共享数据的保护 测试题
-多文件结构和预编译命令
--多文件结构和预编译命令 测试题
-第5章小结
--小结
-实验五
--实验五
-导学
--导学
-数组的定义与初始化
--数组的定义与使用
--一维数组应用举例
--数组的定义与初始化 测试题
-数组作为函数的参数
--数组作为函数的参数 测试题
-对象数组
--对象数组
--对象数组 测试题
-基于范围的for循环
-指针的定义和运算
--指针的定义和运算 测试题
-综合实例
--综合实例
-实验六(上)
--实验六上
-指针与数组
--指针数组
--指针与数组 测试题
-指针与函数
--指针类型的函数
--指向函数的指针
--指针与函数 测试题
-对象指针
--对象指针
--对象指针 测试题
-动态内存分配
--动态内存分配 测试题
-智能指针
--智能指针
-vector对象
--vector对象
--vector对象 测试题
-对象复制与移动
--移动构造
--对象复制与移动 测试题
-字符串
--C风格字符串
--string类
--字符串 测试题
-第6章小结
--第六章小结
-综合实例
--综合实例
-实验六(下)
--实验六(下)