R语言 封装
在R编程中,OOPs提供了类和对象作为其关键工具来减少和管理程序的复杂性。R是一种使用OOPs概念的功能语言。我们可以把类看作是汽车的草图。它包含了所有关于车型名称、车型编号、发动机等的细节。基于这些描述,我们选择一辆汽车。汽车是一个对象。每个汽车对象都有自己的特点和特征。一个对象也被称为一个类的实例,创建这个对象的过程被称为实例化。OOPs有以下特点。
- 类
- 对象
- 抽象
- 封闭性
- 多态性
- 继承性
在这篇文章中,让我们来讨论R编程中的封装功能。
R语言中的封装
在使用类和处理敏感数据时,对程序代码中使用的所有变量实现全局访问并不是一个好的选择,因为这样一来,数据被篡改的机会就会增加。为此,面向对象的编程语言有一个封装的概念。封装确保对象的外部视图与对象的内部视图明确分开,将操作和状态的实现隐藏在所有其他对象可用的接口中。
注: 一个对象是一个共享状态的操作集合。操作的集合定义了一个对象的行为。
封装是。
- 将数据与操作它的代码结合起来。
- 它使数据和代码不受外界干扰。
思考封装的一个常见方法是,当你去一家餐馆时,服务员来问你想吃什么,然后你用你想吃的东西命令服务员,然后服务员将你要求的东西委托给餐馆的厨师烹饪,并给你带来所订购的菜肴。你不能直接去找厨师,告诉他你想吃什么。这对餐厅和你来说都是不合适的。班级也是如此,当你想让两个班级相互交流时,实际上是这些班级的对象在相互交流,并进行工作。没有两个类可以直接相互交流,因为那样的话,数据就会变得很脆弱,很容易被脾气。就像这样,更新、修改或删除变量的数据可以通过使用专门定义的方法来完成。使用这种编程方法的好处是提高了对输入数据的控制和更好的安全性。封装有助于创建松散耦合的代码。由于细节被隐藏起来,它减少了其他对象直接修改一个对象的状态和行为的能力。
例子1 :
l <- list(name = "Geeksforgeeks",
state = "UP", sector= 136)
# Class name declared as 'info'
class(l) <- "info"
# Object creation of class 'info'
l
输出
$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"
这样的比喻有助于更好地理解–当用户从网站上订购东西时,他只想付款并收到他的产品。如果让用户知道系统的内部工作,知道他的订单是如何下达的,以及订单的去向,那就不是一件好事了。 在使用上述的任何封装代码时,你应该知道以下几点。
- 每个人都知道如何访问它。
- 无论实现细节如何,都可以轻松使用。
- 代码不应该有任何副作用,对应用程序的其他部分有影响。
封装可以帮助建立更多的可维护的代码,帮助阻止代码变化的连锁反应。它还有助于通过减少对对象的状态和行为的直接访问来创建松散耦合的代码。