Está en la página 1de 12

UNIVERSIDAD POLITÉCNICA SALESIANA

PROGRAMACIÓN
INGENIERÍA CIVIL
Nombre: Tamia Vega Terán Fecha: 18/10/2018
Grupo: G1 Tarea: N° 2
Tema: Consulta de Metodologías de Programación

A. Metodología POO (Programación orientada a objetos)

Descripción de la metodología.

La Programación Orientada a Objetos (POO u OOP) es un paradigma de programación


que define los programas en términos de “clases de objetos”, objetos que son entidades
que combinan estado (propiedades o datos), comportamiento (procedimientos o métodos)
e identidad (propiedad del objeto que lo diferencia del resto).

Es una forma especial de programar, más cercana a como expresaríamos las cosas en la
vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar
las cosas de una manera distinta, para escribir nuestros programas en términos de objetos,
propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y
dar una pequeña base que permita soltarnos un poco con este tipo de programación.

Características de la Metodología.

Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las


características siguientes son las más importantes:

Abstracción: Denota las características esenciales de un objeto, donde se capturan sus


comportamientos. El proceso de abstracción permite seleccionar las características
relevantes dentro de un conjunto e identificar comportamientos comunes para definir
nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de
análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un
conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.
Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse
pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite
aumentar la cohesión de los componentes del sistema.

Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y
cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden
interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un
objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los
propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros
objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas,
eliminando efectos secundarios e interacciones inesperadas.

Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden


compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento
correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las
colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un
comportamiento en una referencia producirá el comportamiento correcto para el tipo real
del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última
característica se llama asignación tardía o asignación dinámica.

Herencia: Las clases no están aisladas, sino que se relacionan entre sí, formando una
jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de
todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Esto suele hacerse habitualmente agrupando los
objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común.
Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

Recolección de basura: La recolección de basura o garbage collector es la técnica por la


cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular
la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos.

Aplicación de la metodología.

Teniendo en cuenta la siguiente frase: “cada elemento en el mundo real puede ser
modelado e implementado como un objeto”, las aplicaciones del paradigma de la
programación orientada a objetos son muy variadas puesto que cualquier entidad real
puede ser transformada a un objeto en el campo de la programación. Algunas de las
aplicaciones del paradigma son descritas en seguida.

Bases de datos orientadas a objetos: En las DB (DataBases) la información es


representada en forma de objetos. Una base de datos orientada a objetos es una base de
datos que incorpora todos los conceptos importantes del paradigma de objetos:
encapsulamiento, herencia y polimorfismo.

En estas bases de datos, los usuarios pueden definir operaciones sobre los datos como
parte de la definición de la base de datos. Una operación (llamada función) se especifica
en dos partes, la interfaz (o signatura) de una operación incluye el nombre de la operación
y los tipos de datos de sus argumentos (o parámetros) y la implementación (o método),
que hace referencia a la operación de descripción, especificación y modificación sin
afectar la interfaz.

Gestión de recursos: Las aplicaciones orientadas a objetos demandan normalmente más


recursos del sistema que las aplicaciones procedurales. La creación dinámica de objetos,
que ocupa un lugar en la memoria del ordenador, puede acarrear graves problemas. Una
de las soluciones, que incluye alguno delos lenguajes OOP, es liberar a menudo el espacio
que los objetos dejan de utilizar.

Interface de usuario: El interface de usuario es uno de los aspectos más importantes en


la programación actual. La aparición de sistemas de explotación que soportan un interface
gráfico de usuario como Windows, X-Windows o Presentation Manager hace que la
mayoría de los usuarios prefieran que sus programas corran bajo este tipo de interface.
Este es uno de los puntos fuertes para la elección de un lenguaje OOP.

Ejemplo.

Definir una clase Conjunto que contenga:


 Un array de valores de cualquier tipo
 Un método intersección que tome como argumento otro conjunto, y devuelva un
nuevo conjunto con la intersección de los dos, es decir, los elementos de la primera
lista que son equala algún elemento de la segunda.
B. Metodología Concurrente

Descripción de la metodología concurrente.

Es la división de un problema en subproblemas que se solucionan de forma individual,


para crear un programa o aplicación que no se vea afectada en tiempo real.

La programación concurrente es la ejecución simultánea de múltiples tareas


interactivamente. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución
creados por un único programa. Las tareas se pueden ejecutar en una sola CPU
(multiprogramación), en varios procesadores, o en una red de computadores distribuidos.

 Permite optimizar el uso de recursos en sistemas mono/multiprocesador.


 Fiable administración de los datos en sistemas con gran información
 Mejor aprovechamiento de la CPU
 Permite el desarrollo de aplicaciones que no se vean afectadas en tiempo real
 Permite compartir recursos entre tareas lentas y tareas rápidas para que las tareas
lentas no retrasen mucho a las rápidas.
 Velocidad de ejecución.
 Menores tiempos de respuesta.

Características de la metodología.

Los procesos concurrentes tienen las siguientes características:


1. Indeterminismo: Las acciones que se especifican en un programa secuencial
tienen un orden total, pero en un programa concurrente el orden es parcial, ya que
existe una incertidumbre sobre el orden exacto de ocurrencia de ciertos sucesos,
esto es, existe un indeterminismo en la ejecución. De esta forma si se ejecuta un
programa concurrente varias veces pude producir resultados diferentes partiendo
de los mismos datos.
2. Interacción entre procesos: Los programas concurrentes implican interacción
entre los distintos procesos que los componen:
o Los procesos que comparten recursos y compiten por el acceso a los
mismos.
o Los procesos que se comunican entre sí para intercambiar datos.
3. Gestión de recursos: Los recursos compartidos necesitan una gestión especial.
Un proceso que desee utilizar un recurso compartido debe solicitar dicho recurso,
esperar a adquirirlo, utilizarlo y después liberarlo. Si el proceso solicita el recurso
pero no puede adquirirlo en ese momento, es suspendido hasta que el recurso esté
disponible.
4. Comunicación: La comunicación entre procesos puede ser síncrona, cuando los
procesos necesitan sincronizarse para intercambiar los datos, o asíncrona, cuando
un proceso que suministra los datos no necesita esperar a que el proceso receptor
los recoja, ya que los deja en un buffer de comunicación temporal.

Aplicación de la metodología.

El primer tipo de aplicaciones se corresponde cuando ejecutamos N procesos


independientes sobre M procesadores, con N > M. Un sistema de software de
multithreading maneja simultáneamente tareas independientes, asignado los procesadores
de que dispone.

Ejemplo: Sistema de tiempo real en plantas industriales.

El segundo tipo de aplicaciones es el cómputo distribuido: una red de comunicaciones


vincula procesadores diferentes sobre los que se ejecutan procesos que se comunicación
esencialmente por mensajes. Cada componente del sistema distribuido puede hacer a su
vez multithreading.
Ejemplo: Sistema de bases de datos distribuidas (bancos, reservas de vuelos).

El procesamiento paralelo es el tercer tipo de aplicaciones. Se trata de resolver un dado


problema en el menos tiempo posible, utilizando una arquitectura multiprocesador en la
que se pueda distribuir la tarea global en tareas que puedan ejecutarse en diferentes
procesadores. Paralelismos de datos y paralelismos de procesos.

Ejemplos típicos:

 Cálculo científico. Modelo de sistemas (meteorología, movimiento planetario)


 Gráficos, procesamiento de imágenes, realidad virtual, procesamiento de video.
 Problemas combinatorios y de optimización lineal y no lineal. Modelos
econométricos.

Ejemplos.

Trenes

En abstracto, tenemos una zona de vía compartida por varios trenes y queremos controlar
la entrada de ternes por uno y otro lado.
Barrera

Una barrera de N posiciones retiene las primeras N-1 threads que llegan. Cuando llega la
enésima, permite que salgan todas. La barrera queda derruida y nuevas threads pasan sin
esperar.

C. Metodología Funcional

Descripción de la metodología.

En el paradigma de la programación funcional, un programa se considera una función


matemática, la cual describe una relación entre una entrada y una salida y donde el
concepto de estado o variable se elimina completamente. Sabemos que una función
matemática es una regla que asocia a cada x de un conjunto X de valores, un único y de
otro conjunto Y de valores; se representa por: f:X → Y ó por y = f(x) Si ignoramos cómo
un programa computa sus datos y nos fijamos sólo en qué computa, podemos ver al
mismo como una función matemática que dada una entrada, devuelve una salida; se
representa por Programa : Input -> Output ó output = Programa(input). De aquí que la
implementación de un lenguaje que permita crear programas con el enfoque de una
función matemática.

En programación funcional pura no existen variables, sólo existen constantes, parámetros


y valores, aun cuando en la práctica la mayoría de los lenguajes de programación
funcionales no son puros pues retienen algunas nociones de variables y asignaciones.
Como no hay variables ni asignación, tampoco existen los ciclos al estilo de los de los
lenguajes tradicionales ya que los mismos trabajan con una variable de control que se va
reasignando (decrementando o incrementando). Esto se logra en un lenguaje funcional
mediante la recursión.
Características de la metodología.

Las características más generales de la programación funcional se resumen en:

 Ausencia de efectos colaterales


 El valor de una expresión solo depende de los valores de sus subexpresiones, si
las tiene.

Se dice que una función (f x y z) tiene un efecto colateral si los valores de x, y, y/o z
cambian en el entorno de llamada durante la aplicación de la función a sus argumentos, o
si alguna otra acción ocurre mientras se evalúa f.

Una función definida con todos los parámetros por valor y donde no se hacen
asignaciones a las variables globales, no tiene efectos colaterales.

La mayoría de las implementaciones de LISP incorporan algunos efectos colaterales y


tipos de datos integrados. Éstos han sido incluidos para hacer más sencillo un código
fácilmente legible y las implementaciones eficientes.

Aplicación de la metodología.

La programación funcional es un paradigma de propósito general, pero se destaca


especialmente en las siguientes áreas:

 Implementación de lenguajes de programación. Si alguna vez ha escrito un


compilador o interprete, estos están generalmente divido en varias etapas, de las
cuales muchas toman una estructura tipo árbol, la procesan de alguna forma y
retornan una nueva estructura tipo árbol.
 Concurrencia y sistemas paralelos. Las restricciones de no mutación en
lenguajes funcionales generalmente permite que muchos procesos accedan y
compartan los mismos datos alentando un diseño "embarrassingly parallel", donde
diferentes hilos de ejecución no necesitan comunicarse entre si para procesar la
información. En Haskell (por lo menos el subset seguro) el tipo sistema permite
que el compilador sepa cuales partes del programa puedan se automáticamente
paralelizados, al menos en teoría, lo cual es una ventaja potencial.
 Sistemas altamente seguros. Los lenguajes funcionales fuertemente tipados,
particularmente Haskell, son muy claros en las garantías de lo que el programa
puede y no puede hacer. Los lenguajes de asistencia de pruebas, como Coq, que
normalmente son muy semejantes a los lenguajes funcionales, pueden proveer
pruebas arbitrarias básicas de los programas que se escriben en ellos.

Ejemplos.

TakePersonas: dada una lista de Personas [nombre, apellido y fecha de nacimiento]


(también declare un tipo de dato Date) ordenada ascendentemente por fecha de
nacimiento; y una fecha, devuelve el segmento más largo de la lista con las personas que
nacieron antes dicha fecha.

Reversa: dada una lista de enteros, devuelve la lista con los mismos elementos de atrás
para adelante.

D. Metodología Lógica

Descripción de la metodología.

Consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de


lenguajes de programación; no debe confundirse con la disciplina de la lógica
computacional. La programación lógica es un tipo de paradigmas de programación dentro
del paradigma de programación declarativa. El resto de los subparadigmas de
programación dentro de la programación declarativa son: programación funcional,
programación basada en restricciones, programas DSL (de dominio específico) e
híbridos. La programación lógica gira en torno al concepto de predicado, o relación entre
elementos. La programación funcional se basa en el concepto de función (que no es más
que una evolución de los predicados), de corte más matemático.

Se puede ver como una deducción controlada.

Lógica (programador): hechos y reglas para representar conocimiento

Control (interprete): deducción lógica para dar respuestas (soluciones)

Característica de la metodología.

 Unificación de términos
 Mecanismos de inferencia automática
 Recursión como estructura de control básica
 Visión lógica de la computación

La mayoría de los Lenguajes de Programación se basan en la Teoría Lógica de Primer


Orden, aunque también incorporan algunos comportamientos de orden superior, en este
sentido, destacan los lenguajes funcionales ya que se basan en el Cálculo Lambda, es la
única teoría lógica de orden superior.

La Teoría Lógica de Primer Orden o también llamada lógica de predicados: es un sistema


deductivo basado en un Lenguaje Lógico Matemático formal de gran utilidad para las
Matemáticas, Filosofía, Lingüística y Computacional. Incluye proposiciones lógicas,
predicados y cuantificadores.

Aplicación de la metodología.

 Sistemas Expertos, donde un Sistema de información mita las recomendaciones


de un experto sobre algún dominio de conocimiento.
 Demostración automática de teoremas, donde un programa genera nuevos
teoremas sobre una teoría existente.
 Reconocimiento de lenguaje natural, donde un programa es capaz de comprender
(con limitaciones) la información contenida en una expresión lingüística humana.
 Inteligencia artificial
 Sistemas de información

Ejemplo.

Crear un algoritmo mediante pseudocódigo que permita solicitar el ingreso por parte del
usuario de 4 notas y muestre por pantalla el promedio de estas.
Desarrollo:

1. Proceso cuatro notas


2. Escribir 'Ingresar nota 1';
3. Leer n1;
4. Escribir 'Ingresar nota 2';
5. Leer n2;
6. Escribir 'Ingresar nota 3';
7. Leer n3;
8. Escribir 'Ingresar nota 4';
9. Leer n4;
10. p<-(n1+n2+n3+n4)/4;
11. Escribir 'El promedio es:' ,p;
12. Fin Proceso
Linkografía:

 Ruiz J. (Septiembre, 2007) Definición de programación orientada a objetos.


Wordpress Blog. [En línea]. Recuperado de:
https://frameworkphp.wordpress.com/
 Características de la Metodología Programación orientada a objetos. (2006).
Recuperado de: http://www.lenguajes-de-programacion.com/programacion-
orientada-a-objetos.shtml
 Tejerina M. Aplicación de la metodología POO. (2008). Recuperado de:
https://www.monografias.com/trabajos14/progorie/progorie.shtml#APLIC
 Restrepo Calle F. Programación concurrente. (2018 ). Recuperado de:
http://ferestrepoca.github.io/paradigmas-
deprogramacion/progconcurrente/concurrente_teoria/index.html
 Programa concurrente. (2018). Recuperado de:
https://www.ecured.cu/Programa_Concurrente
 Aplicación de la metodología concurrente en programación. Recuperado de:
https://www.monografias.com/trabajos107/programacion-concurrente-
ii/programacion-concurrente-ii.shtml
 Programación funcional. (2018). Recuperado de:
https://www.ecured.cu/Programaci%C3%B3n_funcional
 Programación Lógica. (2009). Blogspot [En línea]. Recuperado de:
http://programacion-programacionlogica.blogspot.com/

También podría gustarte