Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROYECTO:
Tarea Académica I
Integrantes:
Pashanaste Ramirez, Johan Xander
Escamilo Mendoza, Richard Manuel
Calisaya Bendezú, Elmer Josué
Docente:
Rosa Abregú
Lima-Perú
2023
pág. 1
Índice
I. Introducción.........................................................................................................................3
II. Desarrollo...........................................................................................................................4
1. Lenguaje de Programación Python.....................................................................................4
1.1 Clases persistentes con Python.....................................................................................4
Ejercicio 1: Crear una Clase Persistente simple..............................................................5
Ejercicio 2: Uso de shelvepara persistencia de datos......................................................6
2. Lenguaje de Programación C#............................................................................................6
2.1 Clases Persistentes con C#............................................................................................7
Ejercicio 1: Crear una Clase Persistente en C#...............................................................8
Ejercicio 2: Serialización Binaria con BinaryFormatter.................................................9
3. Lenguaje de Programación Scala......................................................................................11
3.2 Clases persistentes con Scala......................................................................................11
Ejercicio 1: Serialización con Serializable....................................................................12
Ejercicio 2: Decapado con scala.decapado...................................................................13
III. Conclusión......................................................................................................................14
Bibliografía...........................................................................................................................15
pág. 2
I. Introducción
En la presente tarea académica se explicará la aplicación de la persistencia a través de
clases persistentes en los programas siguientes: C#, Python y Scala. Detallando que se
llama persistencia a la capacidad de un objeto para existir fuera de un programa, proceso,
función o hilo de control; de manera que se conserva su estado y su comportamiento. Esto
quiere decir que la persistencia hace que la información de un programa sea capaz de
guardarse para volver a utilizarse en otro momento.
Es lo que los usuarios conocen como Guardar el archivo y después Abrir el archivo. Para la
programación puede significar más cosas y suele involucrar un proceso de serialización de
los datos a un archivo o a una base de datos o a algún otro medio similar, y el proceso
inverso de recuperar los datos a partir de la información serializada
pág. 3
II. Desarrollo
La capa de persistencia está formada por un conjunto de clases y
componentes responsables del almacenamiento y recuperación de datos, a y desde una o
más fuentes de datos. Esta capa, necesariamente incluye un modelo de las entidades del
modelo del negocio.
Las clases persistentes, por lo tanto, son clases situadas en la capa de persistencia que
implementan las entidades del negocio del problema. El término clase
persistente no implica que una clase es persistente. Es más, significa que los objetos de esa
clase y su estado son gestionados por el servicio de persistencia
pág. 4
Serialización y Deserialización:
class Persona:
def __init__(self, nombre, edad):
self.nombre = nombre
self.edad = edad
pág. 5
Ejercicio 2: Uso de shelvepara persistencia de datos
import shelve
class Libro:
def __init__(self, titulo, autor):
self.titulo = titulo
self.autor = autor
# Recuperar el libro
with shelve.open("biblioteca") as biblioteca:
libro_recuperado = biblioteca["libro1"]
2. Lenguaje de Programación C#
C# o C Sharp es un lenguaje de programación creado por Microsoft. Fue creado en el año
2000. Este lenguaje nació con todas las herramientas que contaban sus principales rivales
de esa época; C++ y Java. Nació como un lenguaje orientado objetos, que en ese momento
estaba en auge, como una de las herramientas más poderosas de desarrollo de software y
aún lo sigues siendo, ya que esta forma de trabajo nos permite reutilizar grandes cantidades
de códigos así pudiendo crear nuestras propias herramientas a través de las famosas clases.
C# tiene sus orígenes en la familia de lenguajes C y su primera versión, se parecía mucho a
Java. De hecho, se creó con el fin de ser una alternativa viable en este en Windows. Muchas
de sus características fueron evolucionando y mejorando hasta llegar a la versión actual.
Ahora el lenguaje de C# admite los conceptos de encapsulación, herencia polimorfismo y
facilita el desarrollo de componentes de software mediante varias construcciones de
lenguaje innovadoras.
pág. 6
2.1 Clases Persistentes con C#
Una clase es un molde del que luego se pueden crear múltiples objetos, con similares
características. Una clase es una estructura de datos que combina estados (campos) y
acciones (métodos y otros miembros de función) en una sola unidad. Una clase proporciona
una definición para instancias de la clase, también conocidas como objetos. Las clases
admiten herencia y polimorfismo, mecanismos por los que las clases derivadas pueden
extender y especializar clases base.. En C#, las clases persistentes implican la capacidad de
almacenar y recuperar el estado de los objetos para que persistan más allá del tiempo de
ejecución del programa. La serialización y deserialización son conceptos clave en este
contexto.
Ejemplo:
class Cliente
{
private string nombre;
private int monto;
public Cliente(string nom)
{
nombre = nom;
monto = 0;
}
public void Depositar(int m)
{
monto = monto + m;
}
public void Extraer(int m)
{
monto = monto - m;
}
public int RetornarMonto()
{
pág. 7
return monto;
}
public void Imprimir()
{
Console.WriteLine(nombre + " tiene depositado la suma de " + monto);
}
}
Serialización y Deserialización:
[Serializable]
class Persona
{
pág. 8
public string Nombre { get; set; }
public int Edad { get; set; }
}
class Program
{
static void Main()
{
// Serializar la instancia de Persona
Persona miPersona = new Persona { Nombre = "Maria", Edad = 25 };
pág. 9
Ejercicio 2: Serialización Binaria con BinaryFormatter
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
class Libro
{
public string Titulo { get; set; }
public string Autor { get; set; }
}
class Program
{
static void Main()
{
Libro miLibro = new Libro { Titulo = "C# 101", Autor = "John Doe" };
pág. 10
Libro libroRecuperado = (Libro)formatter.Deserialize(fs);
Console.WriteLine($"Título: {libroRecuperado.Titulo}, Autor:
{libroRecuperado.Autor}");
}
}
}
pág. 11
{
println("Nombre de la empresa : " + nomEmp);
println("Total de modelos lanzados: " + number);
}
}
object Main
{
// Main method def main(args: Array[String])
{
// Class object
var obj = new Smartphone();
obj.Display();
}
}
Serializable en Scala:
pág. 12
val miPersona = new Persona("Carlos", 28)
pág. 13
// Deserializar el JSON desde el archivo
val libroDeserializado = scala.tools.nsc.io.File("libro.json").slurpString.unpickle[Libro]
III. Conclusión
En términos muy simples, una capa de persistencia es una forma de GUARDAR y
RECUPERAR elementos que utiliza la aplicación. También se usa para aquel objeto que se
crea y luego sea guardado en la base de datos. La persistencia permite al programador
almacenar, transferir y recuperar el estado de los objetos. Para que una clase sea persistente
se debe seguir cierto tipo de pasos dependiendo del software usado. Un programa puede
grabar objetos persistentes y luego recuperarlos en un tiempo posterior
pág. 14
Bibliografía
Guagliano, C. (2019). Programación en Python II: Programación orientada a objetos.
RedUsers.
Guía de aprendizaje de Python. (s/f). Com.uy. Recuperado el 16 de noviembre de 2023, de
https://spectrum.com.uy/sitio/wp-content/uploads/2015/09/tutpython.pdf
Cabedo, R., Pérez, J., Ali, N., Ramos, I., & Carsí, J. Á. (s/f). Implementación Orientada a
Aspectos en C# de un Sistema Robótico Tele-operado. Uclm.es. Recuperado el 16 de
noviembre de 2023, de
https://www.dsi.uclm.es/personal/elenanavarro/DSOA/papersCR/CabedoDSOA.pdf
Debrauwer, L. (2012). Patrones de diseño para C#: Los 23 modelos de diseño: descripción
y soluciones ilustradas en UML 2 y C#. Ediciones ENI.
Ríos, A. J. (2014). Programación Funcional y Herencia de Clases: Tipos de Datos
Algebraicos Extensibles en Scala. https://rephip.unr.edu.ar/items/1fc52cd9-2b99-43b1-
8702-dd165ddadf75
Introducción. (s/f). Scala Documentation. Recuperado el 16 de noviembre de 2023, de
https://docs.scala-lang.org/es/tour/tour-of-scala.html
pág. 15