#面向对象的程序设计
知识点:
类和对象
类是对具有共通属性和行为的事物进行抽象之后得到的概念。
当把类这个抽象概念具体化就得到了对象。
##面向对象编程
面向对象三大特性:封装,继承,多态
1、封装
意义(隐藏性):将属性和与其对应的行为放在一起,作为一个整体。对属性和行为的使用加以限制。
语法:
class 类
{
访问控制符:
成员变量;
成员函数;
}
设计一个圆类
#include <iostream>
using namespace std;//使用命名空间
void main()
{
Circle c1;//实例化,创建了圆类的具体实例
c1.r=20;//设置圆的半径
cout<<"圆的周长是"<<c1.calculate()<<endl;
Circle c2;
c2.r=10;
cout<<"圆的周长是"<<c2.calculate()<<endl;
}
const double PI=3.14;
class Circle//类名首字母大写
{
pubilc://访问控制符,public表示共有权限
int r;//属性在代码中表现为成员变量
double calculate()//行为在代码中变现为成员函数
{
return 2*PI*r;
};
}
1、设计一个学生类
2、包括学生的学号,姓名,可以显示学生类的学号和姓名。
3、再增加一个设置学生姓名的函数。
#include <iostream>
using namespace std;//使用命名空间
#include <string>
class Student
{
public:
int id;
string name;/*string是c++中的字符串类,用来取代c中的char*,要包含string头文件*/
public:
void showname()
{
cout<<name<<endl;
}
void showid()
{
cout<<id<<endl;
}
void setname(string n)
{
name=n;
}
};
void main()
{
Student s1;
s1.id=1001;
s1.setname("jack");
s1.showname;
s1.showid;
}
在c++中通过访问控制符来对属性和行为进行限制:
public 公有权限,类内可以访问,类外也可以
protected 保护权限,类内可以访问,类外不可以
private 私有权限,类内可以访问,类外不可以
(以上是现阶段的理解,在后续学习继承时,会有拓展)
设计一人类
#include <iostream>
using namespace std;//使用命名空间
#include <string>
class Person
{
public:
string m_name;//姓名,公有权限
protected:
string m_car;//汽车,保护权限
private;
int m_cardID;//银行卡密码,私有权限
public:
void showInfor()
{
cout<<m_name<<endl;//类内访问共有成员变量
cout<<m_car<<endl;//类内访问保护成员变量
cout<<m_cardID<<endl;//类内访问私有成员变量
}
};
void main()
{
Person p;//初始化对象
p.m_name="jack";//在类外访问共有成员变量
p.m_car="audio";//在类外访问保护成员变量,运行不可执行
p.m_cardID="123456";//在类外访问私有成员变量,运行不可执行
}
PS:将成员变量设置为私有的优点
1、可以控制读写权限
2、可以对数据有效性进行检测
设计两个类,分别表示怪兽(抽象为一个圆)和子弹(抽象为一个点)。
设计思路:
1、使用坐标来表示原和点
2、判断是否击中
##公式:子弹到圆心的距离
D=L1-R=?0
#include <iostream>
using namespace std;//使用命名空间
#include <string>
//Boss类的创建
class Boss
{
private:
double b_x;
double b_y;
double b_r;
public:
//用get方法来获取设定的参数
double getX()
{
return b_x;
}
double getY()
{
return b_y;
}
double getR()
{
return b_r;
}
//利用set方法来设定参数
void setX(double x)
{
b_x=x;
}
void setY(double y)
{
b_y=y;
}
void setR(double r)
{
b_r=r;
}
//子弹类的创建
class bullet
{
private:
double b_x;
double b_y;
public:
//用get方法来获取设定的参数
double getX()
{
return b_x;
}
double getY()
{
return b_y;
}
//利用set方法来设定参数
void setX(double x)
{
b_x=x;
}
void setY(double y)
{
b_y=y;
}
};
void main()
{
Boss b1;
b1.setX(160);
b1.setY(240);
b1.setR(50);
bullet b1;
b1.setX(320);
b1.setY(160);
double a=b1.setY(240)-b1.setY(160);
double b=b1.setX(320)-b1.setX(160);
double L1;
L1=a^2+b^2-r^2;
if(L1<=0)
cout<<"击中!"<<endl;
else
cout<<"让子弹飞一会!"<<endl;
}
}
总结:了解学习了c++中面向对象编程时创建类和方法,学习了c++编程中常用的get/set方法,学习了通过访问控制符来对属性和行为进行限制(一般在编程中,访问控制符用private,并且在c++中,默认的访问控制符为private)。