目的:认识类,对面向对象产生认识
📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊
7.1 面向对象程序设计方法概述
1.C++并不是一种纯粹的面相对象语言,而是一种基于过程和面相对象的混合型的语言
2.基于过程和基于对象的对比:
a:程序:函数是构成程序的基本部分,程序面对的是一个个函数,每个函数都是独立存在于程序中,程序面对的是一个个的函数
b:对象:除主函数外,其他函数基本都是出现在类中,只有通过类才能调用类中函数
2.基于对象的程序:凡是以类对象为基本构成单位的程序都是基于对象的程序
3.面相对象程序设计有4个主要特点:封装、抽象、多态性和继承
a:C++的类对象体现了抽象和封装的特性,在此基础上再利用继承和多态性,就成为真正的面向对象的程序设计
b:往往把基于对象程序设计和面向对象程序设计统称为面向对象程序设计(基于+面向=面向)
4.对象和类
a:任何一个对象都应该具有两个要素:静态特征(别称:属性)+动态特征(别称:行为/方法),对象是由一组属性和一组行为构成的
b:在一个系统中的多个对象之间通过一定的渠道相互联系,要使某一个对象实现某一种行为(即操作),应当向它传送相应的消息
c:对象:描述客观事物的一个实体由数据(体现了属性)和函数/方法(即操作代码)组成
5.封装和信息隐蔽
a:封装:有两个含义
(1)将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰
(2)将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接受外界的信息
b:对外界隐蔽的做法称为信息隐蔽(imformation hiding)
6.抽象
a:作用:抽象的作用是表示同一类事物的本质
b:类是对象的抽象,而对象则是类的特例,即类的具体表现形式
7.继承与重用
a:基本特称就可以称为父类或称为基类,从基类继承过来的称为子类或派生类
8.多态性
a:多态现象:如果有几个相似而不完全相同的对象,有时人们要求在向他们发出同一个消息时,他们的反应各不相同,分别执行不同的操作,就是多态现象
b:多态性(polymorphism):由继承而产生不同的派生类,其对象对同一消息会做出不同的相应,多态性时面对对象程序设计的一个重要特征,能增加程序灵活性
8.其他
a:算法+数据结构=程序;(对象+对象+······)+消息=程序 或 对象s+消息=程序
b:消息的作用就是对对象的控制
9.面向对象的软件工程包括以下几部分:
面向对象分析(object oriented analysis,OOA)+面向对象设计(object oriented design,OOD)+面向对象编程(object oriented programming,OOP)+面向对象的测试(object oriented test,OOT)+面向对象软件维护(object oriented software maintenance,OOSM?)
📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊📊
8.2 类的声明和对象的定义
1.类和对象的关系:类是对象的抽象,而对象是类的具体实例
2.声明类类型:
a:如果在类的定义即不指定private,也不指定public,则系统默认为私有的
b:成员访问限定符:protected、public、private
b:形式:class 类名
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ?private:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 私有的数据和成员数据;
? ? ? ? ? ? ? ? ? ? ? ?public:?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 公用的数据和成员函数;
? ? ? ? ? ? ? };
c:private和public称为成员访问限定符,被声明为私有的成员,只能被本类中的成员函数引用,类外不能调用,被声明为公用的成员,既可以被本类中的成员函数所引用,也可以被类的作用域内的其他函数引用
d:还有一种成员时protected,用protected声明的成员称为受保护成员,他不能被类外访问,但可以被派生类的成员函数访问
3.定义对象的方法
a:先声明类类型,然后在定义对象
形式:class? 类名? 对象名;或者 类名? ?对象名;(以下两种形式效果一样)
class Stu x1,x2;
Stu x1,x2;
b:在声明类的同时定义对象(但不提倡这种写法)
#include<iostream>
using namespace std;
class Student
{
public:
void display()
{
cout<<"num:"<<num<<endl;
}
private:
int num;
char name[20];
char sex;
}x1,x2;
c:不出现类名,直接定义对象
class
{
private:
·····
public:
·····
}x1,x2;
共同学习,欢迎指正!