R 编程中的封装
在 R 编程中,OOP 提供类和对象作为其降低和管理程序复杂性的关键工具。 R 是一种使用 OOP 概念的函数式语言。我们可以把类想象成汽车的草图。它包含有关model_name、model_no、引擎等的所有详细信息。根据这些描述,我们选择了一辆汽车。车是对象。每个汽车对象都有自己的特点和特点。对象也称为类的实例,创建此对象的过程称为实例化。 OOPs 具有以下特点:
- 班级
- 目的
- 抽象
- 封装
- 多态性
- 遗产
因此,在本文中,让我们讨论 R 编程中的封装特性。
R中的封装
在处理类和处理敏感数据时,实现对程序代码中使用的所有变量的全局访问并不是一个好的选择,因为这样会增加对数据进行调整的机会。为此,面向对象的编程语言具有封装的概念。封装通过对所有其他对象可用的接口隐藏操作和状态的实现,确保对象的外部视图与对象的内部视图清楚地分开。
Note: An object is a collection of operations that shares a state. The collection of operations define the behavior of an object.
封装是:
- 将数据与操作它的代码绑定。
- 它使数据和代码免受外部干扰
一种常见的封装方式是,当你去餐厅时,服务员过来问你想吃什么,然后你点了服务员你想吃的东西,然后服务员把你做的菜委托给你向餐厅的厨师提出要求,并为您带来点菜。你不能直接去找厨师说你想吃什么。这不适合餐厅和您。类也是如此,当您希望两个类相互通信时,实际上是这些类的对象相互通信并完成工作。没有两个类可以直接相互通信,因为这样数据就会变得脆弱且易于调整。就像这样,可以通过使用专门为此目的定义的方法来更新、修改或删除变量中的数据。使用这种编程方法的好处是改进了对输入数据的控制和更好的安全性。封装有助于创建松散耦合的代码。因为细节是隐藏的,它降低了其他对象直接修改一个对象的状态和行为的能力。
示例 1:
R
l <- list(name = "Geeksforgeeks",
state = "UP", sector= 136)
# Class name declared as 'info'
class(l) <- "info"
# Object creation of class 'info'
l
R
s <- list(country = "India",
state = "Delhi", street_no.= 110)
# Class name declared as 'address'
class(s) <- "address"
# Object creation of class 'address'.
s
输出:
$name
[1] "Geeksforgeeks"
$state
[1] "UP"
$sector
[1] 136
attr(, "class")
[1] "info"
示例 2:
电阻
s <- list(country = "India",
state = "Delhi", street_no.= 110)
# Class name declared as 'address'
class(s) <- "address"
# Object creation of class 'address'.
s
输出:
$country
[1] "India"
$state
[1] "Delhi"
$street_no.
[1] 110
attr(, "class")
[1] "address"
这样的类比有助于更好地理解——当用户从网站上订购东西时,他只想支付和接收他的产品。让用户知道系统的内部工作以及他的订单是如何放置的以及它的去向并不是一件好事。使用上述任何封装代码时,您应该了解以下内容:
- 每个人都知道如何访问它。
- 无论实现细节如何,都可以轻松使用。
- 代码对应用程序的其余部分不应该有任何副作用。
封装可以通过帮助阻止代码更改的连锁反应来帮助构建更易于维护的代码。通过减少对对象状态和行为的直接访问,它还有助于创建松散耦合的代码。