抽象:
在OOP中,抽象是获取信息的方法。所需的信息将以最简单的方式获取,从而仅提取所需的组件,而那些被认为不太重要的组件也不会被注意到。否则,不必要的信息将被耗尽,而仅保留敏感信息不变。在这种情况下,大多数类没有任何实现,并且大多数问题解决方法都在接口阶段完成。不存在而只是一个概念的一件事被称为抽象。抽象而言,使用抽象类和接口隐藏了实现复杂性。
抽象示例:
#include
using namespace std;
class Summation {
private:
// private variables
int a, b, c;
public:
void sum(int x, int y)
{
a = x;
b = y;
c = a + b;
cout<<"Sum of the two number is : "<
输出:
Sum of the two number is: 9
在此示例中,我们可以看到通过使用类已经实现了抽象。 “汇总”类包含私有成员a,b和c,这些成员只能由该类的成员函数访问。
封装形式:
封装是包含信息的过程或方法。它提供的信息是,仅关键数据已被隐藏,而每一个不合适的相反数据已被隐藏。在这种情况下,问题确定在实施阶段完成。封装是一种将数据隐藏在单个实体或单元中的方法,也是一种保护信息免受外界侵害的方法。封装可以将某些东西完全包裹在胶囊中,并仅显示产品的基本选项。例如,一旦有人滥用了软件包,他们就无法识别秘密写法,他们仅使用由秘密写法产生的强制性功能,这些秘密写法在文件中是安全无虞的。
封装示例:
#include
using namespace std;
class EncapsulationExample {
private:
// we declare a as private to hide it from outside
int a;
public:
// set() function to set the value of a
void set(int x)
{
a = x;
}
// get() function to return the value of a
int get()
{
return a;
}
};
// main function
int main()
{
EncapsulationExample e1;
e1.set(10);
cout<
输出:
10
在此程序中,变量a被设为私有,因此只能使用类中存在的get()和set()方法来访问和操作此变量。因此我们可以说,变量a和方法set()以及get()已绑定在一起,不过就是封装。
抽象和封装之间的区别:
S.NO | Abstraction | Encapsulation |
---|---|---|
1. | Abstraction is the process or method of gaining the information. | While encapsulation is the process or method to contain the information. |
2. | In abstraction, problems are solved at the design or interface level. | While in encapsulation, problems are solved at the implementation level. |
3. | Abstraction is the method of hiding the unwanted information. | Whereas encapsulation is a method to hide the data in a single entity or unit along with a method to protect information from outside. |
4. | We can implement abstraction using abstract class and interfaces. | Whereas encapsulation can be implemented using by access modifier i.e. private, protected and public. |
5. | In abstraction, implementation complexities are hidden using abstract classes and interfaces. | While in encapsulation, the data is hidden using methods of getters and setters. |
6. | The objects that help to perform abstraction are encapsulated. | Whereas the objects that result in encapsulation need not be abstracted. |
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。