Facultad de Ingeniería de Sistemas y Electrónica: "Tarea Académica 1"

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 14

Facultad de Ingeniería de Sistemas y

Electrónica

Tema del proyecto


“Tarea Académica 1”

Autor (es):
Hancco Cerdan Jordy Fernando
Ruiz Pachamango Ivonne Yamille
Rivera Morales Fabian Mauro
Briceño Paucar Joaquin Melbin
Chumbirayco Calderon Mirko

Programación orientada a objetos

Lima - Perú, 2022


1. OBJETIVOS DE LA INVESTIGACIÓN

En el presente trabajo de investigación se pretende explicar con bases teóricas

las características , importancia y funcionalidad de la persistencia en los lenguajes

de programación mencionados así como también la aplicación de patrones de

diseño(GOF) que se trabaja en la programación orientada a objetos.

2. MARCO TEÓRICO

Clases

Las clases en Programación se usan para generar modelos computacionales de


objetos, dichos objetos tienen la posibilidad de ser modelos de cualquier cosa, a
partir de objetos tangibles de todo el mundo real hasta objetos abstractos que
cumplan una cierta funcionalidad. Ejemplificando tenemos la posibilidad de
modelar un objeto de clase «Árbol», en el que seleccionaremos las propiedades y
funcionalidades más importantes de los árboles, dependiendo del grado de
dificultad de nuestro modelo.La información y funcionalidades correctas para
realizar la conducta del objeto están definidas en la clase de programación.

Clases persistentes
En una aplicación, 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 (por ejemplo Cliente y Pedido en una aplicación de
comercio electrónico).

1
Python

Python es un lenguaje de programación multiparadigma. Python usa tipado


dinámico y conteo de referencias para la administración de memoria.
Una característica fundamental de Python es la resolución dinámica de nombres;
o sea, lo cual enlaza un procedimiento y un nombre de variable a lo largo de la
ejecución del programa.
Aunque la programación en Python podría considerarse en varias situaciones
hostil a la programación servible clásico del Lisp, hay bastantes analogías entre
Python y los idiomas minimalistas del núcleo familiar Lisp como podría ser
Scheme.

C#
C# es un lenguaje de programación orientado a elementos, orientado a objetos.
C# otorga estructuras de lenguaje para reconocer de manera directa dichos
conceptos, por lo cual hablamos de un lenguaje natural en el cual generar y
utilizar elementos de programa. A partir de su origen, C# ha añadido propiedades
para reconocer novedosas cargas de trabajo y prácticas de diseño de programa
emergentes. En el fondo, C# es un lenguaje orientado a objetos.

Scala
Scala es un lenguaje servible en el sentido que toda funcionalidad es un costo.
Aguanta funcionalidades de primer orden, posibilita que las funcionalidades sean
anidadas, y aguanta currying. Las clases caso de Scala y las estructuras
incorporadas al lenguaje para reconocimiento de patrones modelan tipos
algebráicos utilizados en varios idiomas de programación funcionales. Además, la
idea de reconocimiento de patrones de Scala se puede prolongar naturalmente al
procesamiento de datos XML gracias a patrones de secuencias que igonoran a la
derecha. En este entorno, seq comprehensions resultan útiles para formular
consultas.

2
Patrones GoF
Los patrones de diseño (design patterns) son elementos reutilizables creados
para resolver problemas comunes. Es decir que con su aplicación y utilización
podremos corregir diferentes problemas que presenta nuestro código de una
manera segura, estable y testeada por cientos de programadores de todo el
mundo.Dentro de los patrones clásicos tenemos los GoF (Gang of
Four),estudiados por Erich Gamma, Richard Helm, Ralph Johnson y John
Vlissides en su mítico libro “Design Patterns”.
Según el tipo de problemas que resuelven, los patrones de diseño se clasifican en
3 categorías:
-Patrones de creación: tratan de la inicialización y configuración de clases y
objetos
-Patrones estructurales: Tratan de desacoplar interfaz e implementación de clases
y objetos.
-Patrones de comportamiento tratan de las interacciones dinámicas entre
sociedades de clases y objetos

3. DESARROLLO DE LA INVESTIGACIÓN

Clases en Python
Las definiciones de clases, como las definiciones de funciones (def), deben
ejecutarse antes de que tengan algún efecto. (Una definición de clase también se
puede colocar dentro de una rama de una declaración if o dentro de una función.)
En la práctica, las declaraciones dentro de una definición de clase suelen ser
definiciones de función, pero otras declaraciones son posibles y, a veces, útiles.
Más sobre esto más adelante. Una definición de función en una clase
generalmente tiene una forma específica de lista de argumentos determinada por
la convención de llamada de método. Esto también se explicará más adelante.

3
Cuando se ingresa una definición de clase, se crea un nuevo espacio de nombres
y se usa como ámbito local. Entonces, todas las asignaciones a variables locales
van a este nuevo espacio de nombres. Específicamente, la definición de función
contiene el nombre de la nueva función aquí. La forma más simple de definición
de clase se ve así:

class ClassName:
<statement-1> .
.
.
<statement-N>

La creación de instancias de clases utiliza la notación de funciones. Simplemente


suponga que el objeto de la clase es una función sin parámetros que devuelve
una nueva instancia de la clase. Por ejemplo:

x = MyClass()

crea una nueva instancia de la clase y asigna este objeto a la variable local x. La
operación de creación de instancias ("llamar" a un objeto de clase) crea un objeto
vacío. A muchas clases les gusta crear objetos con instancias personalizadas
para un estado inicial específico. Por lo tanto, una clase puede definir un método
especial llamado __init__(), así:

def __init__(self):
self.data = []

Cuando una clase define un __init__() método, la creación de instancias de clase


invoca automáticamente __init__()la instancia de clase recién creada, se puede
obtener una nueva instancia inicializada mediante:

x = MyClass()

4
Por supuesto, una función de lenguaje no merecería el nombre de "clase" sin
soporte de herencia. La sintaxis de definición de clase derivada se ve así:

class DerivedClassName(BaseClassName):
<statement-1>
.
.
.
<statement-N>

Ejecutar una definición de clase derivada es lo mismo que ejecutar una clase
base. Cuando se construye un objeto de clase, recuerda la clase base. Esto se
utiliza para resolver referencias de atributos. Si el atributo solicitado no se
encuentra en la clase, la búsqueda continúa buscando en la clase base. Esta
regla se aplica recursivamente si la propia clase base se deriva de otra clase.

Python también admite una forma de herencia múltiple. Una definición de clase
con múltiples clases base se ve así:

class DerivedClassName(Base1, Base2, Base3):


<statement-1>
.
.
.
<statement-N>

Para la mayoría de los propósitos, en los casos más simples, puede pensar en
buscar primero las propiedades heredadas de la profundidad de la clase principal,
de izquierda a derecha, sin buscar la misma clase dos veces si hay una
superposición en la jerarquía. Por lo tanto, si no se encuentra el atributo en
DerivedClassName, se busca Base1, luego (recursivamente) las clases base de
Base1, y si no se encuentra ninguna, se busca Base2, y así sucesivamente.

5
Clases persistentes en Python

La persistencia es una función en la que la información del objeto se almacena


permanentemente y se restaura. Una clase constante de Python es similar a una
clase regular o base. Cuando el programa deja de ejecutarse, se elimina el estado
de los objetos que contiene. Sin embargo, hay varias formas de habilitar la
persistencia del estado del objeto. Python tiene un módulo pickle que puede
guardar el estado de un objeto en un archivo.

funcion load(): La función load() del módulo Pickle le permite cargar un objeto
desde un archivo y devolverlo a Pickle.

funcion dumps(): La función dump() del módulo Pickle le permite convertir el


estado de un objeto en un objeto de byte.

función loads(): La función loads() módulo pickle, regresa un objeto con el


estado almacenado es un objeto de tipo bytes.

Patrones de diseño GOF en Python

Los patrones de diseño facilitan el desacoplamiento del código, lo que vuelve más
sencillo agregar o remover funciones y también nos dan la seguridad de que son
soluciones que ya han sido probadas una y otra vez.así mismo los patrones
pueden combinarse entre sí en sistemas complejos. Sin embargo hay ciertos
patrones bastante populares que son los que han sido recopilados para ponerse
en la mayoría de los libros que tratan este tema. para ejemplificar el caso
mostraré algunos casos de patrones de diseño:

singleton: Se usa cuando se quiere prevenir la creación de múltiples instancias


de un mismo objeto. Los métodos getattr y setattr están modificados para obtener
y asignar los atributos de la clase que se encuentra definida en el atributo
instance.

6
Patrón observador: Permite a un objeto mantenerse al tanto sobre los cambios
de estado de otro objeto. Cada observador posea un método update() (o como
desee llamarlo), este método será llamado por el Observable, en esta clase, por
medio de un callback que es una función anónima. De esta manera tendremos un
desacoplamiento de las clases que observan, pues estas no necesitan conocer
ningún método del objeto, únicamente necesitan contar con un método update().

Patrón template: En este patrón se busca utilizar el decorador @abstractmethod


para garantizar la implementación de los métodos en una clase derivada.
Patrón decorador: Nos permite agregarle funcionalidad extra a una función sin
modificarla directamente. Se usa bastante en Django y otros frameworks para
restringir vistas de acuerdo a permisos o para verificar que un usuario esté
loggeado. Funcionan creando una función que recibe a nuestra función como
argumento, dentro de esta función crearemos un envoltorio (wrapper), que dota
del funcionamiento extra a nuestra función, nuestro decorador retornará ese
envoltorio.

Clases en C#
Las clases en C# se definen de manera parecida a los registros (struct),
únicamente que ahora, además de cambiantes que representan sus detalles
internos, y que vamos a llamar sus atributos, además incluirán funcionalidades
que son las ocupaciones que puede hacer aquel objeto, que son identificadas
como procedimientos. Atributos y procedimientos formarán parte de un todo, en
lugar de estar separados en diversas piezas del programa. Es decir lo cual se
sabe como "Encapsulación". Tenemos la posibilidad de mirar un caso muestra de
la composición de la clase en C#.

Clases persistentes en C#
Una clase persistente en C# engloba las mismas funcionalidades que en
Python solo tomando el detalle de que se implementaría los atributos, testimonio
de los get y set y al final utilización del constructor en esa clas get y set e.

7
Además, se debería tener en cuenta que estas clases en este lenguaje de
programación
viene a utilizar las 4 normas fundamentales ya mencionadas previamente:
● Utilización de un constructor sin argumentos, esto con base de ser un
constructor establecido en cual podría ser no público.
● Una propiedad identificadora o en otros términos un id.
● Clases no finales, aunque estas van a depender mucho de el testimonio de
los procedimientos públicos.
● testimonio de procedimientos.

Clases en SCALA
Una clase en Scala es una plantilla determinada por el programador desde el cual
se generan objetos combinando los campos y procedimientos en una sola unidad.
En una clase se utiliza un constructor para inicializar nuevos objetos, los campos
son cambiantes que dan el estado de la clase y sus objetos, y se utilizan
procedimientos para llevar a cabo la conducta de la clase y sus objetos. Las
clases en Scala no se declaran como públicas y puede haber algunas clases en
un documento fuente de Scala.

Clases persistentes en SCALA


Una clase persistente en Scala se define como una clase con atributos básicos,
en el que van a ser declarados y para después ser denominados por un objeto.
Los atributos no son privatizados ya que se puede entrar con mucha facilidad.
El lenguaje de programación Scala promueve la utilización de construcciones de
datos persistentes para llevar a cabo programas utilizando "Estilo servible de
objetos". Scala tiene implementaciones de muchas construcciones de datos
persistentes, incluidas listas vinculadas, árboles rojo-negro, así como intentos
mapeados de matriz hash persistentes.

Patrones de diseño GOF en SCALA

8
El patrón está compuesto a partir de buenas prácticas de diseño, que
pueden darnos solución a problemas comunes y pueden mejorar la comprensión
del código y optimizar el proceso del desarrollo.Los patrones de diseño clásicos
(generalmente conocidos como GoF) se orientan a objetos. Muestran la relación y
el comportamiento entre clases y objetos. Estos patrones no se aplican bien a los
lenguajes de programación funcionales puros, pero dado que Scala es un
lenguaje que combina POO y programación funcional, Scala puede adoptar estos
patrones, incluso en un estilo funcional.Gracias a la gramática expresiva de Scala,
muchos patrones de diseño clásicos se pueden implementar directamente.

3 Aplicaciones de patrones Gof en Scala:

De creación:

Constructor

trait Status

trait Done extends Status

trait Need extends Status

case class Built(a: Int, b: String) {}

class Builder[A <: Status, B <: Status] private () {

private var built = Built(0,"")

def setA(a0: Int) = { built = built.copy(a = a0);


this.asInstanceOf[Builder[Done,B]] }

def setB(b0: String) = { built = built.copy(b = b0);


this.asInstanceOf[Builder[A,Done]] }

def result(implicit ev: Builder[A,B] <:< Builder[Done,Done]) =


built

9
object Builder {

def apply() = new Builder[Need, Need]

Estructurales:

Fachada: Funciona mejor en Scala que en Java porque puede tener rasgos
que llevan implementaciones parciales para que no tenga que hacer todo el
trabajo usted mismo cuando los combina.

De comportamiento:

Estrategia

Esto es casi completamente reemplazado por tener métodos que toman


funciones que implementan una estrategia, y proporcionar funciones para elegir.

def printElapsedTime(t: Long, rounding: Double => Long = math.round)


{
println(rounding(t*0.001))
}
printElapsedTime(1700, math.floor) // Change strategy

4. RECOMENDACIONES
Se considera pertinente la implementación de patrones Gof en la
programación ya que es son herramientas muy útiles a la hora de
programar.Además,los patrones ayudan a estandarizar el código, haciendo que el
diseño sea más comprensible para otros programadores.Por otro lado , podemos
evitar la tarea de buscar la solución a un problema , reciclando estructuras ya
utilizadas por otros desarrolladores durante años.

Se recomienda el suite Anaconda, que es de gran ayuda principalmente en


trabajos de machine learning y análisis de datos. También facilita la instalación y
administración de paquetes, entornos y dependencias para aplicaciones de
ciencia de datos de Python. Por otro lado, Project Jupyter es una interfaz web de

10
código abierto que le permite incrustar texto, video, audio, imágenes y código
utilizando un navegador siendo este compatible con Anaconda.

5. CONCLUSIONES
En resumen, con los 3 idiomas de programación que se ha podido
averiguar, las clases persistentes tanto en los 3 idiomas de programación
comparte 4 normas relevantes en las que Utilización de un constructor sin
argumentos, esto con base de ser un constructor establecido en cual
podría ser no público. Una propiedad identificadora o en otros términos un
id, esto vendría a ser opcional, aunque no perjudique las clases. Clases no
finales, aunque estas van a depender mucho de el testimonio de los
procedimientos públicos, además vendría a ser opcional.

testimonio de procedimientos, además vendría a ser opcional.


Ejemplificando tenemos la posibilidad de modelar un objeto de clase
«Árbol», en el que seleccionaremos las propiedades y funcionalidades más
importantes de los árboles, dependiendo del grado de dificultad de nuestro
modelo. La información y funcionalidades correctas para realizar la
conducta del objeto están definidas en la clase de programación. C# es un
lenguaje de programación orientado a elementos, orientado a objetos. En
el fondo, C# Es un lenguaje orientado a objetos. Las clases caso de Scala
y las estructuras incorporadas al lenguaje para reconocimiento de patrones
modelan tipos algebráicos utilizados en varios idiomas de programación
funcionales. Además, la idea de reconocimiento de patrones de Scala se
puede prolongar naturalmente al procesamiento de datos XML gracias a
patrones de secuencias que ignoran a la derecha. Los patrones de diseño
son elementos reutilizables creados para resolver problemas comunes.
Dentro de los patrones clásicos tenemos los GoF ,estudiados por Erich
Gamma, Richard Helm, Ralph Johnson y John Vlissides en su mítico libro
"Design Patterns".

Las definiciones de clases, como las definiciones de funciones , deben


ejecutarse antes de que tengan algún efecto. En la práctica, las

11
declaraciones dentro de una definición de clase suelen ser definiciones de
función, pero otras declaraciones son posibles y, a veces, útiles. Una
definición de función en una clase generalmente tiene una forma específica
de lista de argumentos determinada por la convención de llamada de
método. Cuando se ingresa una definición de clase, se crea un nuevo
espacio de nombres y se usa como ámbito local. Simplemente suponga
que el objeto de la clase es una función sin parámetros que devuelve una
nueva instancia de la clase. Por supuesto, una función de lenguaje no
merecería el nombre de "clase" sin soporte de herencia.

6. BIBLIOGRAFÍA
Wagner, B. (2022, 22 septiembre). Paseo por el lenguaje c#. Microsoft.

https://learn.microsoft.com/es-es/dotnet/csharp/tour-of-csharp/

Mapeado de clases persistentes. (2010, 30 julio). jtech.ua.es.

http://www.jtech.ua.es/j2ee/2006-2007/restringido/hib/sesion02-apuntes.ht

ml

Arcos, J. (2016, 26 diciembre). Serialización y persistencia de objetos en

Python. Github.

http://josearcosaneas.github.io/python/serializaci%C3%B3n/persistencia/20

16/12/26/serializacion-persistencia.html

CLASE en programación. (s. f.). GameDevTraum.

https://gamedevtraum.com/es/programacion-informatica/programacion-orie

ntada-a-objetos/que-es-una-clase-en-programacion/#:~:text=Las%20clases

%20en%20Programaci%C3%B3n%20se,que%20cumplan%20una%20dete

rminada%20funci%C3%B3n.

Qué patrón (s) de diseño GOF tiene implementación completamente

diferente (java vs scala). (2017). ajaxhispano.

12
https://ajaxhispano.com/ask/que-patron-s-de-diseno-gof-tiene-implementaci

on-completamente-diferente-java-vs-scala-83428/

Patrones de diseño en Scala. (2012).

https://programmerclick.com/article/3623618686/

Guilem, J. (2018, 16 febrero). Patrones de diseño. GoDevel.

https://godevel.com/blog/patrones-de-diseno/

13

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy