PROGRAMACIN FUNCIONAL vs PROGRAMACIN ORIENTADA A OBJETOS ING
PROGRAMACIÓN FUNCIONAL vs. PROGRAMACIÓN ORIENTADA A OBJETOS ING. MARÍA YUSARA FARAH CHÁVEZ
Introducción Existen muchos paradigmas de programación diferentes, cada uno de ellos tiene sus propias características y tratan de solucionar los problemas clásicos del desarrollo de software desde diferentes perspectivas y filosofías. Hoy vamos a ver algunas diferencias entre paradigmas de programación populares.
Paradigmas de Programación Los paradigmas de programación solo son propuestas tecnológicas adoptadas por la Comunidad de desarrolladores que se enfocan a resolver uno o varios problemas definidos y delimitados. Existen muchos paradigmas de programación diferentes, posiblemente el más ampliamente utilizado hoy en día sea el de la programación orientada a objetos.
Paradigmas de Programación Algunos lenguajes de programación puede soportar múltiples paradigmas de programación. Por ejemplo, C++ puede ser empleado para desarrollar software utilizando para ello un modelo de programación puramente orientado a objetos o bien puramente estructurado. En casos como el de C++, somos los programadores los que decidimos que utilizar.
Paradigmas de Programación Por otro lado, algunos lenguajes han sido diseñados para soportar un único paradigma de programación, ese es el caso de Smalltalk que soporta únicamente la programación orientada a objetos o Haskell que solo soporta la programación funcional.
La Programación
Programación Imperativa y Programación Declarativa Diferencias principales La principal diferencia entre ambos paradigmas es que en la programación imperativa se describe paso a paso un conjunto de instrucciones que han de ejecutarse con la finalidad de variar el estado del programa y resolver un problema para hallar una solución. Y en la programación declarativa solo se describe el problema pero no los pasos necesarios para llegar a su solución, la cual es hallada mediante mecanismos internos de inferencia de información a partir de la descripción del problema en si. La programación imperativa se basa en la máquina de Turing mientras que la programación declarativa se basa en el cálculo lambda.
PROGRAMACIÓN ORIENTADA A OBJETOS
Definición de la P. O. O. La programación orientada a Objetos básicamente define una serie de conceptos y técnicas de programación para representar acciones o cosas de la vida real basada en objetos.
Reglas Principales Existen tres importantes partes en la definición: la programación orientada a objetos: 1) utiliza objetos, no algoritmos, como bloques de construcción lógicos; 2) cada objeto es una instancia de una clase; 3) las clases se relacionan unas con otras por medio de relaciones de herencia. Es importante remarcar que si alguna de estas características no se cumple no se trata de programación orientada a objetos.
Pilares Fundamentales de la POO HERENCIA ABSTRACCION POO ENCAPSULAMIENTO POLIMORFISMO
Ejemplo de clase Persona en POO public class Person{ String firstname; String lastname; int age; float height; String phone. Number; String flavor; }
PROGRAMACIÓN FUNCIONAL
Definición La programación funcional define las salidas de un programa como una función matemática de sus entradas, sin noción de estado interno, y, por tanto sin efectos de borde. Es un paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado. Enfatiza la aplicación de funciones en contraste con el estilo de programación imperativa, que enfatiza los cambios de estado.
Ejemplo de clase Person en Haskell En el primer cuadro se realiza la declaración de las variables y el tipo de datos, para luego especificar el tipo. El tipo de dato resultante es exactamente el mismo. La principal diferencia es que de esta forma se crean funciones que obtienen esos campos del tipo de dato. Al usar la sintaxis de registro con este tipo de dato, Haskell automáticamente crea estas funciones: first. Name, last. Name, age, height, phone. Number y flavor.
Conclusiones Programación Funcional Programación Orientada a objetos FINALIDAD Describe un programa en términos de proposiciones y afirmaciones, sin especificar los pasos para resolverlo Describe un programa en términos de instrucciones y condiciones para llegar a un resultado. VALORES Evita cambiar el estado de un programa al prevenir la mutación de valores. Modifica el estado de un programa al permitir mutación de valores. Utiliza funciones puramente matemáticas que carecen de efectos secundarios. Utiliza procedimientos o funciones impuras como mecanismos de control, que potencialmente generan efectos secundarios. ESTRUCTUR AS No existen estructuras cíclicas, la única forma de iterar es a través de la recursión o de funciones de alto nivel tales como map, reduce o filter. Existen estructuras cíclicas de programación para iterar tales como while, for, loop. ASIGNACIÓN DE VARIABLES No hay asignación destructiva de variables, por lo que una variable no puede ser asignada mas de una vez. Asignación destructiva de variables, una variable puede ser re-asignada tantas veces como requiera. LINEAS DE CÓDIGO Programas más expresivos y relativamente más cortos. Programas más verbosos y generalmente se requieren más líneas de código. FUNCIONES
" DIFERENCIA EN SINTAXIS public class Person{ String firstname; firstname: : String, String lastname; lastname: : String, int age; age: : int, float height; height: : float, String phone. Number; phone. Number: : String, flavor: : String } String flavor; } Public static void main (String [args ]){ Person obj=new Person (“Buddy”, “Finklestein”, 43, 184, 2, ” 526 -2928”, “Chocolate”); } Data Person= { ghci> let guy = Person "Buddy" "Finklestein" 43 184. 2 "526 -2928" "Chocolate”
GRACIAS POR SU ATENCIÓN !!!
- Slides: 18