C++程序设计——面向对象程序设计(1)

本篇博客是对学校课堂教学内容、PPT的整理。

目录

前言

一、面向对象程序设计概述

        1. 程序设计语言

        2. 程序设计方法

(1) 结构化结构程序设计方法

(2)面向对象程序设计方法

(3)面向对象方法

(4)面向对象的主要特征 

(5)面向对象编程

 二、类的定义与实现

        1. 类的定义

(1)访问控制

(2)数据成员

(3)成员函数

(4)构造函数 

        2. 类的实现

 三、语法应用举例

        1. 对象的定义

        2. 对象的使用 

总结


前言

C++相较于C,加了面向对象的部分~

学好面向对象的程序设计,就好像将问题又从抽象化为具体,对于简化代码、提高代码可读性有着无与伦比的好处,因此学好面向对象的程序设计非常重要。

课堂分两节半大课对面向对象部分进行讲解,内容分为两部分,此是第一部分。


一、面向对象程序设计概述

         1. 程序设计语言

        程序设计语言是用于描述计算机程序的语言,从硬件而上可大致分为分为机器语言汇编语言高级语言

        2. 程序设计方法

(1) 结构化结构程序设计方法

  •  自顶向下、逐步求精、模块化(函数)。程序由一个个函数组成
  •  结构定理:任何程序逻辑都可以用顺序、选择和循环三种结构表示
  •  通常将问题不断拆分为各个子问题直到能求解

(2)面向对象程序设计方法

  •  现实世界中的系统都由对象组成。将每一类对象的数据与操作封装成一个。通过对象之间的相互协调来完成整个系统。程序由一个个类组成
  •  程序的设计重点在数据,函数为数据服务
  •  数据被隐藏起来,不能为外部程序直接访问

(3)面向对象方法

  •  直接将问题求解映射到问题的认识上,将软件设计决策与客观世界的认识相匹配
  •  提供了一种有目的地将系统分解为模块的策略
  •  随着用户功能需求的增多,软件越来越庞大、复杂,面向对象方法越来越显示其优势,并逐渐成为主流

(4)面向对象的主要特征 

用一个例子来说明面向过程和面向对象设计方法的不同:

【图书管理系统】

面向过程

面向对象

关注对书的操作:

输入数据
图书出库
图书入库
打印图书信息
增加、删除、修改图书信息
添加读者
借书
还书
……

关注该系统涉及的对象

图书
属性
图书编号
图书名
图书状态
方法
打印图书信息
更新图书状态
读者
属性
读者编号
姓名
借书记录
方法
借书
还书
打印读者信息

(5)面向对象编程

 

 二、类的定义与实现

          1.类的定义

先给出一个示例:

class Reader {
private:
  long m_ID;
  char m_name[30];
  Book* m_brrBooks[10];
  int m_brrBooksNum;

public:
  Reader(int id, char name[]);
  ~Reader();
  void ChangeName(char name[]);
  void BorrowBook(Book* book);
  void ReturnBook(Book* book);
  void ShowBrrBooks();
};

 注意:类的定义一般写在.h文件中

 (1)访问控制

private   与  public (实际上还有protected )标识了对应区域数据的访问属性。

对于前两者,简单来说:

private: 下面数据是私有的,外面不可访问

public:  下面函数是公开的,外面可以访问

三个访问控制进一步说明:

  • public:公开的,可被外部访问
  • private:私有的,仅自己内部可访问
  • protected:受保护的,自己和子类可访问
  • 在用class定义的类中,默认的访问方式是private
  • 在类的定义中,三个访问说明符都可以使用多次(不提倡)

(2)数据成员

 

  • 可以定义各种类型的变量、指针、数组等,甚至是其他类的对象
  • 不能在类的定义中给数据成员赋初值
  • 数据成员一般放在private部分;也可以放在public部分,但不提倡

(3)成员函数

 

  • 用来定义类的操作
  • 可放在public部分,也可以放在private部分
  • public的成员函数可以被外部函数调用
  • private的成员函数仅能供自己的函数使用

(4)构造函数 

Reader(int id, char name[]);
  • 函数名和类名完全相同
  • 没有返回类型
  • 在对象建立时被自动调用
  • 用于初始化类的对象,保证对象在创建后其数据成员都已经被正确初始化
  • 每个类都至少有1个构造函数,若不写则编译器会自动加一个构造函数 类名(){ }
  • 创建类的对象时会自动调用构造函数初始化对象
  • 如果构造函数需要参数则声明对象时要提供相应的参数,如     Stack myStack(10);
  • 有多个构造函数时,系统根据提供的参数列表确定要调用的构造函数

(5)析构函数

~Reader();
  • 析构函数名是字符‘~’加上类名
  • 析构函数不能指定返回类型,没有参数,不能被重载
  • 当一个类没有定义任何析构函数时,系统为该类自动生成析构函数  ~类名(){ }
  • 其作用是在撤销对象前为对象做最后的清理工作
  • 一般为释放对象在生存期内动态分配的空间 
  • 在一个类的对象被撤销时,类的析构函数会被自动调用
  • 析构函数一般用来释放类的对象在生存期内动态申请的空间
  • C++动态申请的空间只能在程序中动态释放,系统无法自动回收

        2. 类的实现

先看一段代码:

Reader::Reader(int id, char name[])
{
  m_ID = id;
  strcpy(m_name, name);
  m_brrBooksNum = 0;
  for (int i = 0; i < 10; i++)
    m_brrBooks[i] = NULL;
}

void Reader::BorrowBook(Book* book)
{
  m_brrBooks[m_brrBooksNum++] = book;
}

 这是Reader对象的构造函数的定义,定义可以在类声明中,也可以放在源文件中。

 当成员函数的实现放在类的定义的外面时,应使用作用域运算符::

注意:类的实现一般在.cpp文件中 

  • 每个成员函数都必须要有实现
  • 类的实现可以写在类里面,也可以写在类的外面
  • 写在类的外面时必须要用作用域运算符,表示该函数实现为类的成员函数
  • 类的实现写在类的定义外面时一般写在对应的.cpp文件里面

 三、语法应用举例

        1. 对象的定义

        2. 对象的使用 

 


总结

本篇是面向对象篇章的第一部分,下一部分内容课程已经讲过,不日将继续发布博客予以总结

本篇内容:

  • 面向对象程序设计
  • 类的定义
  1. 访问控制
  2. 数据成员
  3. 成员函数
  4. 构造函数
  5. 析构函数
  • 类的实现
  • 对象的定义和使用
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值