基础(1)-类和对象基本概念、类设计实例

一、基本概念

封装:

​ 1)把变量和函数合成整体,封装在一起

​ 2)对变量和函数进行访问控制

访问权限:
在这里插入图片描述

类和struct区别,class中默认访问权限为Private, struct默认访问权限为public

成员变量和成员函数

将成员变量设置为Private,通过成员函数访问成员变量,可以实现“不准访问”、“只读访问”、“读写访问”,甚至你可以写出“只写访问”

class AccessLevels{
//通过成员函数对成员变量进行访问
public:
	//对只读属性进行只读访问
	int getReadOnly(){ return readOnly; }
	//对读写属性进行读写访问
	void setReadWrite(int val){ readWrite = val; }
	int getReadWrite(){ return readWrite; }
	//对只写属性进行只写访问
	void setWriteOnly(int val){ writeOnly = val; }
//成员变量设置为private
private:
	int readOnly; //对外只读访问
	int noAccess; //外部不可访问
	int readWrite; //读写访问
	int writeOnly; //只写访问
};
练习:

请设计一个Maker类,Maker类具有name和age属性,提供初始化函数(Init),并提供对name和age的读写函数(set,get),但必须确保age的赋值在有效范围内(0-100),超出有效范围,则拒绝赋值,并提供方法输出姓名和年龄.(10分钟)

class Maker{
private:
    int age;
    string name;
public:
    void Init(){
        name = "aggz";
        age = 18;
    }
    void setn(string setname){
        name = setname;
    }
    void seta(int setage){
        if(setage>=0 && setage<=100){age=setage;}
    }
    string getn(){
        return name;
    }
    int geta(){
        return age;
    }
    void print(){
        cout<<"name:"<<name<<"age:"<<age<<endl;
    }    
};
二、面向对象程序设计案例:

1.立方体类

设计立方体类(Cube),求出立方体的面积( 2ab + 2ac + 2bc )和体积( a * b * c),分别用全局函数成员函数判断两个立方体是否相等。

class Cube{
private:
   int mL;
   int mW;
   int mH;
public:
	void setL(int l){ mL = l; }
	void setW(int w){ mW = w; }
	void setH(int h){ mH = h; }
	int getL(){ return mL; }
	int getW(){ return mW; }
	int getH(){ return mH; }
    
    int calculateS(){
		return(mL*mW + mL*mH + mW*mH)*2;
    }
    
    int calculateV{returnmL * mW * mH;}
    //成员函数比较
    bool compare(Cube&c){
		if (getL() == c.getL() && getW() == c.getW() && getH() == c.getH()){
			return true;
		}
		return false;
    }
};
//全局函数比较
bool compare(Cube& c1,Cub& c2){
	if (c1.getL() == c2.getL() && c1.getW() == c2.getW() && c1.getH() == c2.getH()){
		return true;
	}
	return false;
}
//测试:
void test(){
	Cub c1, c2;
	c1.setL(10);
	c1.setW(20);
	c1.setH(30);

	c2.setL(20);
	c2.setW(20);
	c2.setH(30);

	cout << "c1面积:" << c1.caculateS() << " 体积:" << c1.caculateV() << endl;
	cout << "c2面积:" << c2.caculateS() << " 体积:" << c2.caculateV() << endl;

	//全局函数比较
	if (CubCompare(c1, c2)){
		cout << "c1和c2相等!" << endl;
	}
	else{
		cout << "c1和c2不相等!" << endl;
	}
	//c1的成员函数比较
	if (c1.CubCompare(c2)){
		cout << "c1和c2相等!" << endl;
	}
	else{
		cout << "c1和c2不相等!" << endl;
	}
}

2.点和圆的关系

设计一个圆形类(AdvCircle),和一个点类(Point),计算点和圆的关系。

假如圆心坐标为x0, y0, 半径为r,点的坐标为x1, y1:

1)点在圆上:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) == r*r

2)点在圆内:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) < r*r

3)点在圆外:(x1-x0)(x1-x0) + (y1-y0)(y1-y0) > r*r

//分文件
类声明 .h
类定义 .cpp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值