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

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

作者: 波洛的汽车电子世界 | 来源:发表于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