Ruby 中的数据抽象
表示重要细节和隐藏功能细节的想法称为数据抽象。接口和实现被这种编程技术隔离开来。数据抽象也是面向对象的编程特性之一。抽象试图最小化信息,以便开发人员可以一次专注于几个想法。抽象是软件开发的基础。
考虑一个打电话的真实例子。这个人唯一知道的是,输入数字并按下拨号按钮会拨打电话,他们不知道电话的内部系统或电话上的拨号按钮。这就是我们所说的抽象。
另一个抽象的现实例子是作为电视机的用户,我们可以打开或关闭它、更改频道和设置音量,而无需了解其功能如何实现的细节。
模块中的数据抽象:在 Ruby 中,模块被定义为一组方法、类和常量。例如,考虑 Math 模块中的 sqrt() 方法。每当我们需要计算非负数的平方根时,我们只需调用 Math 模块中的 sqrt() 方法并将数字作为参数发送,而无需了解实际计算数字平方根的实际算法。
类中的数据抽象:我们可以使用类在 ruby 中执行数据抽象。该类允许我们使用访问说明符(私有、受保护、公共)对信息和方法进行分组。班级将确定哪些信息应该可见,哪些不可见。
使用访问控制进行数据抽象: Ruby 中有三个级别的访问控制(私有、受保护、公共)。这些是 ruby 中最重要的数据抽象实现。例如-
- 可以从程序中的任何位置访问已在类中声明为公共的成员。
- 在类中声明为私有的成员只能从类中访问。他们是
不允许访问类之外的任何代码部分。
# Ruby program to demonstrate Data Abstraction
class Geeks
# defining publicMethod
public
def publicMethod
puts "In Public!"
# calling privateMethod inside publicMethod
privateMethod
end
# defining privateMethod
private
def privateMethod
puts "In Private!"
end
end
# creating an object of class Geeks
obj = Geeks.new
# calling the public method of class Geeks
obj.publicMethod
输出:
In Public!
In Private!
在上面的程序中,我们不能直接访问Geeks类的privateMethod(),但是我们可以调用类中的publicMethod()来访问privateMethod()。
数据抽象的优点:
- 有助于提高系统的安全性,因为只向用户提供关键细节。
- 它增加了可重用性并防止代码冗余。
- 可以在不影响用户的情况下独立更改内部类实现。