结构化设计方法
基本点是面向过程,系统被分解成若干个过程。
面向对象方法
把对象作为由数据及可以施加在这些数据上的操作所构成的统一体。对象与传统的数据有本质区别,它不是被动地等待外界对它施加操作,它是进行处理地主体。
(1)对象:是由描述该对象属性的数据以及可以对这些数据施加的所有操作封装在一起构成的一体。
静态特征:属性(数据项)
动态特性:方法(操作,服务)
(2)类:是具有相同数据和相同操作的一组相似对象的定义。
类是对象的抽象,对象是类的具体化,是类的实例
(3)消息:对象彼此之间仅能通过传递消息互相联系
(4)方法:方法就是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法。在C++语言中把方法称为成员函数。
(5)属性:属性就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。类的每个实例都有自己特有的属性值。在C++中把属性称为成员变量。
结合例子理解
同一类事物,可以用“Circle类”来定义
相同的数据:圆心坐标、半径、颜色
相同的操作:显示、放大、缩小、移动、改变颜色。
-
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
-
//
-
-
#include <iostream>
-
using
namespace std;
-
-
class
Rectangle
-
{
-
public:
-
int w, h;
//属性
-
void init(int w_, int h_);
-
int area();
-
int perimeter();
-
};
//注意方法并没有写在里面
-
-
-
void Rectangle::init(int w_, int h_)
-
{
-
w = w_;
-
h = h_;
-
}
-
-
-
int Rectangle::area() //方法
-
{
-
return w * h;
-
-
}
-
-
-
int Rectangle::perimeter()
-
{
-
return
2 * (w + h);
-
}
-
-
-
int main()
-
{
-
std::cout <<
"Hello World!\n";
-
int w, h;
-
Rectangle r;
-
cin >> w >> h;
-
r.
init(w, h);
-
cout <<
"are is:" << r.
area() << endl;
-
cout <<
"perimeter is:" << r.
perimeter() << endl;
-
return
0;
-
}
-
-
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
-
// 调试程序: F5 或调试 >“开始调试”菜单
-
-
// 入门使用技巧:
-
// 1. 使用解决方案资源管理器窗口添加/管理文件
-
// 2. 使用团队资源管理器窗口连接到源代码管理
-
// 3. 使用输出窗口查看生成输出和其他消息
-
// 4. 使用错误列表窗口查看错误
-
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
-
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
封装
对于封装而言,一个对象它所封装的是自己的属性和方法,所以它是不需要依赖其他对象就可以完成自己的操作。使用封装有三大好处:
1、良好的封装能够减少耦合。
2、类内部的结构可以自由修改。
3、可以对成员进行更精确的控制。
4、隐藏信息,实现细节。
5、有一个清晰的边界。所有的私有数据和实现操作的代码都被封装在这个边界内,在外面看不见更不可能直接访问。
6、有确定的接口(即协议)。
7、受保护的内部实现。
继承
在面向对象的软件技术中,继承是子类自动地共享基类中定义的数据和方法的机制。
继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
同时在使用继承时需要记住三句话:
1、子类拥有父类非private的属性和方法。
2、子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
3、子类可以用自己的方式实现父类的方法。
多态
所谓多态就是指程序中 定义的引用变量所指向的具体类型 和 通过该引用变量发出的方法调用 在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。
转载:https://blog.csdn.net/qq_50942093/article/details/127990381