• C++-------------类和对象


    1、 结构化程序设计

                 程序 = 算法 + 数据结构

                 算法第一,数据结构第二

    2、面向对象程序设计OPP

                 程序 = 对象 + 对象 +...

                 关键:让每一个对象负责执行一组相关任务

    3、面向对象编程开发范式的特性

                 万物皆对象

                 程序是一组对象彼此之间在发送消息 ( 对象之间的交互构成了程序的逻辑 )

                 每个对象都有自己的内存占用,可以组装成更大对象

                 每个对象都有类型,特定类型的所有对象可以接收相同的信息

    4、类的概念

             类 是创建对象的模板蓝图 , 是一组类似对象的共同抽象定义

     

    5、对象的概念

              对象是类的实例化结果 , 对象是实实在在的存在,代表现实世界的某一事物。          (比如 类是车 , 对象是楼下的奥迪车)

    6、对象的三大关键特性

                  行为:对象能干什么     (比如  能载人)

                  状态:对象的的属性,行为的结果  ( 比如   车的价格 车的车速)

                  标识:对象的唯一身份 (比如 车的车牌号)

    7、类和对象的区别

                类是静态定义 ,  对象是动态实例 , 程序代码操作的是对象而非类, 建模得到的是类而非对象

          类和对象的联系

                类是对象的定义 , 对象的产生离不开类这个模板 , 类存在的目的是实例化得到对象

    8、 从 对象 抽象出 类

                将对象和对象的共同点 抽象出来,可以构成一个类。

    9、定义一个类的步骤

    <1>定义类名

    <2>编写类的数据成员代表属性

    <3>编写类的方法代表行为

    10、类的建模是一个抽象和封装的过程。

                 抽象:去掉不关注的、次要的信息而保留重要的信息

                 封装:信息打包

                           <1>具体一点就是:将数据和行为结合在一个包中,对对象的使用者隐藏数据的实现方式

                           <2>实现封装的关键:不能让类中的方法直接访问其他类的内部数据,只能通过公开行为方式间接访问(比如你不能直接查询别人的银行卡里的余额,但是能通过直接问的方式获知该数据)

    11、在C++中类和结构体的区别

    在C++中只有两点区别:   (主要体现在安全性上)
      (1)class中默认的成员访问权限是private的,而struct中则是public的。   
      (2)从class继承默认是private继承,而从struct继承默认是public继承。   
      除此这外无任何区别。   

                

                 结构体能做到,类都能做。

    12、在类中定义成员函数并声明 ----在.h文件中  //////当然也可以自在类中定义函数,然后在源文件内声明函数

            在C++中,类定义通常在头文件中,因此这些成员函数定义也伴随着

    # include<iostream>
    using namespace std;
    class Nian 
    {
    public:
        void set(int y,int m,int d)
        {
           year = y;
           month = m;
           day = d;
        }
        
        bool IsRun()
        {
            if((year%4==0 && year%100!=0)||year%400==0 )
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    
        void print()
        {
            cout<<year<<"/"<<month<<"/"<<day<<endl;
        }
    private:
        int year,month,day;
    };
    # include<iostream>
    # include<stdlib.h>
    # include"year.h"  //要用双引号
    using namespace std;
    int main()
    {
        Nian a;    //利用类 创建对象 a  //注意:a.day =1 是错误的 因为在main方法中,不可以访问pravite权限的值
        a.set(2004,5,4);
        bool k = a.IsRun();
        cout<<k<<endl;
        a.print();
        system("pause");
        return 0;
    }

    13、在类之后定义 成员函数

    <1>C++允许在其它位置定义成员函数

    <2>将类定义和其成员定义分开,是目前开发程序的通常做法

    <3>我们把类定义(头文件)看成是类的外部接口,类的成员函数定义看成是类的内部实现

    14、重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法

    <1>类的成员函数可以像普通函数一样重载

    <2>但不同类即使有相同的函数名也不算重载

    15、类的成员函数可以像普通函数一样设置默认值

    # include<iostream>
    using namespace std;
    class Nian 
    {
    public:
        void set(int y=2001,int m=1,int d=1)
        {
           year = y;
           month = m;
           day = d;
        }
        
       
        }
    private:
        int year,month,day;
    };

    16、调用成员函数必须指定对象和成员名

    month = 10;  这是错误的,没有指定对象而且还可能不是成员名 是变量

    Nian::month = 10;  这是错误的,没有指定对象

    Nian::set(2004,1,5); 这是错误的,没有指定对象

    17、this指针代表当前对象占用内存空间的地址

      

    void set(int y,int m,int d)
    {
            this->year = y;
            this->month = m;
            this->day = d;
    }
  • 相关阅读:
    第四十七讲 ASP.NET实例编程(六)
    第四十四讲 ASP.NET实例编程(三)
    第四十一讲 ASP.NET消息处理(二)
    第四十三讲 ASP.NET实例编程(二)
    第四十二讲 ASP.NET实例编程(一)
    第四十六讲 ASP.NET实例编程(五)
    第四十八讲 ASP.NET实战编程(一)
    第四十讲 ASP.NET消息处理(一)
    第四十五讲 ASP.NET实例编程(四)
    第三十九 ASP.NET编码
  • 原文地址:https://www.cnblogs.com/wshyj/p/6341271.html
Copyright © 2020-2023  润新知