美文网首页
面向对象程序设计方法以及类

面向对象程序设计方法以及类

作者: 波洛的汽车电子世界 | 来源:发表于2019-05-02 17:27 被阅读0次

    注:以下大部分内容来源于 coursera 课程《C++程序设计》
    基本概念:

    1. int的大小: 操作系统16位的时候,int 2字节,操作系统32位的时候,int 4字节,由于32位系统之前占主流地位,实际现在就算是64位系统,出于兼容性考虑,int也是4字节的。

    结构化程序设计

    • 复杂的问题->层层分解/模块化->若干字问题
    • 自顶向下
      程序= 数据结构+算法
      程序=变量+函数
    • 问题:理解难;修改难;查错难;重用难

    面向对象程序设计方法

    • 面向对象程序设计方法 = 类+类+类+类
    • 分析包含了哪些具体的事物, 每个事物都有哪些的特点。不同事物种类之间又存在着怎么样的关系。 事物间呢,又是如何去作用的。
    • 构建程序的过程=构建类的过程
    • 一类事物(抽象成)数据结构/函数
      数据结构/函数(封装成)类
    一类事物 类 Class
    共同属性:数据结构 (用多个变量描述) data
    行为:函数(作用) function

    拓展——从客观事物抽象出类

    类的定义

    class 类名{
    访问范围说明符:
    成员变量1
    成员变量2
    成员函数声明1
    成员函数声明2
    };
    

    例子1:写一个程序,输入矩形的宽和高,输出面积和周长
    分析:
    矩形的属性(成员变量):宽和高
    对矩形的操作(成员函数):设置宽和高;计算面积;计算周长

    int w;
    int h;
    Init();
    Area();
    Perimeter();
    
    class CRectangle{
    public:
    int w;
    int h;
    void Init(int w_, int h_){
    w = w_;
    h = h_; }
    Area(){return w*h;};
    Perimeter(){return 2*(w+h);};
    };//必须有分号
    
    int main(){
    int w,h;
    CRectangle r; //声明一个类,r是一个对象
    cin>>w>>h;
    r.Init(w,h);
    cout<<r.Area()<<endl;<<r.Perimeter();
    return 0;
    }
    

    此例子中,类定义的变量r,也就是类的实例,就是我们称的对象。

    • 对象的大小=所有成员变量的大小之和,此处sizeof(CRectangle) =8(int是4字节的)。
    • 对象之间可以进行赋值,不能比较。

    访问类的成员变量和成员函数

    • 用法一:对象名.成员名
    CRectangle r1,r2; 
    r1.w = 5;
    r2.Init(3,4);
    
    • 用法二:指针->成员名
    CRectangle r1,r2; 
    CRectangle *p1 = &r1; 
    CRectangle *p2 = &r2; 
    p1->w = 5;
    p2->Init(3,4);
    
    • 用法三:引用名.成员名
    CRectangle r1,r2; 
    CRectangle &rr = r2; 
    rr.w = 5;
    rr.Init(3,4);
    

    调用函数的输出方式

    void PrintRectangle(CRectangle &r){
    cout<<r.Area()<<","<<r.Perimeter();
    }
    CRectangle r3; 
    rr.Init(3,4);
    PrintRectangle(r3);
    
    

    类的成员函数的另一种写法

    class CRectangle{
    public:
    int w;
    int h;
    int Area();//成员函数仅在此处声明,但是没有具体操作
    int Perimeter();
    void Init(int w_, int h_);
    };
    
    
    int main(){
    int w,h;
    CRectangle r; //声明一个类,r是一个对象
    cin>>w>>h;
    r.Init(w,h);
    cout<<r.Area()<<endl;<<r.Perimeter();
    return 0;
    }
    

    当成员函数定义在类之外,怎么区分它是一个成员函数而不是普通函数呢?用双冒号::。调用的时候也只能用对象/对象的指针/对象的引用来调用,不能当做普通函数来调用

    int CRectangle::Area(){
    return w*h;
    }
    int CRectangle::Perimeter(){
    return 2*(w+h);
    }
    int CRectangle::Init(int w_, int h_){
    w = w_;
    h = h_;
    }
    

    类成员的可访问范围

    • private
    • public
    • protected
      缺省为私有成员
      类的成员函数内部,可以访问到:1. 当前对象的全部属性,函数;2. 同类其他对象的全部属性,函数。
      类的成员函数外部,只能访问到该类对象的public成员。

    相关文章

      网友评论

          本文标题:面向对象程序设计方法以及类

          本文链接:https://www.haomeiwen.com/subject/blbnnqtx.html