相关疑难解决方法(0)

329
推荐指数
22
解决办法
38万
查看次数

抽象VS信息隐藏VS封装

你能告诉我在软件开发中抽象信息隐藏有什么区别吗?

我很迷惑.抽象隐藏了细节实现和信息隐藏抽象的东西的整个细节.

更新:我找到了这三个概念的好答案.请参见下面的单独答案从采取了一些引文出现.

glossary encapsulation ooad abstraction information-hiding

161
推荐指数
6
解决办法
14万
查看次数

抽象和封装有何不同?

我正在准备面试,并决定刷新我的OOP概念.有数百篇文章可供使用,但似乎每篇文章都有不同的描述. 有人

抽象是"识别具有系统变化的共同模式的过程;抽象代表了常见模式,并提供了指定使用哪种变体的方法"(Richard Gabriel).

并通过抽象类实现.

一些其他的

抽象意味着仅向对象的客户端显示必要的细节

假设您的Employee类中有一个方法"CalculateSalary",它将EmployeeId作为参数,并将当前月份的员工薪水作为整数值返回.现在,如果有人想要使用该方法.他不需要关心Employee对象如何计算薪水?他唯一需要关注的是方法的名称,输入参数和结果成员的格式,

我一遍又一遍地搜索,结果似乎没有给我一个正确的答案. 现在,封装在哪里适合所有这些? 我搜索并发现了堆栈溢出问题.即使答案到问题被混淆 在这里,它说

封装是一种用作抽象的一部分的策略.封装是指对象的状态 - 对象封装其状态并将其隐藏在外部; 类的外部用户通过其方法与之交互,但无法直接访问类状态.因此,该类抽象出与其状态相关的实现细节.

这里的另一个知名的成员说,

它们是不同的概念.

抽象是精炼对象的所有不需要/不重要的属性并且仅保留最适合您的域的特征的过程.

现在我搞砸了整个概念.我知道抽象类,继承,访问说明符和所有.我只是想知道在面试中被问及抽象和/或封装时我该如何回答.

请不要将其标记为重复.我知道有几个类似的问题.但我想避免相互矛盾的解释之间的混淆.任何人都可以提出可靠的链接吗?除非再次造成混淆,否则也欢迎链接到stackoverflow问题.:)

编辑:我需要答案,有点c#导向

c# oop encapsulation abstraction

70
推荐指数
6
解决办法
16万
查看次数

封装与抽象现实世界的例子

对于封装的示例,我可以想到用户和移动电话之间的交互.用户不需要知道移动电话的内部工作来操作,因此这称为抽象.但封装在哪里适合这个例子?有人可以对此有所了解吗?

oop programming-languages

40
推荐指数
7
解决办法
19万
查看次数

封装与信息隐藏

Ecapsulation和信息隐藏之间究竟有什么区别?

我知道将字段设为私有然后制作字段的setter和getter是ecapsulation.However封装意味着这个?

假设我有一个如下所述的课程.

public Class IsThisEncapsulation
{
    public int age;

    public void setAge(int age)
    {
       this.age=age;
    }

    public int getAge()
    {
       return age;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在是IsThisEncapsulation类是Encapsulation的一个例子吗?

现在是否会让上述类私有领域的'年龄'实现信息隐藏?

能否请您给我一些明确的例子,以帮助我清楚地区分这些概念?

java oop encapsulation information-hiding

18
推荐指数
4
解决办法
4万
查看次数