PRINCIPIOS DE PROGRAMACIÓN Mtro. en Ingeniería de Software. Especialidad en e-commerce Ismael Jiménez Hernández Objetivos específicos: Al termino de esta clase el alumno: • Sabrá cuantos tipos de programación existen y que es cada uno ellas. • Identificar las características de los tipos de programación. • Conocerá los lenguajes de programación que se emplean en los distintos tipos de programación. Clase 2 Principios de Programación INTRODUCCIÓN. Programación Estructurada. Es un paradigma de programación (método disciplinado) que consiste en escribir programas en módulos de fácil comprensión utilizando subrutinas y estructuras de control. Basada en el teorema del programa estructurado Propuesto por Böhm-Jacopini. finales de los años 1970 Se basa de lo general a lo particular. Se realiza a través de diagramas de flujo, la cuál es representada por programas con sus entradas, procesos y salidas. Principios de Programación 3 Estructuras Básicas de la Programación Estructurada. 1. Estructura Secuencial (Lineal): Donde las instrucciones de un programa se ejecutan después de la otra, en el mismo orden en el que aparecen en el programa. 2. Estructura Selectiva: Plantea la selección entre dos alternativas con base en el resultado de la evaluación de una condición. Es equivalente a la instrucción IF de los lenguajes de programación. 3. Estructura Repetitiva (Iterativa): Corresponde a la ejecución repetida de una instrucción mientras se cumpla una determinada condición. Principios de Programación Programación Orientada a Eventos. Es el paradigma de programación en el que la estructura y ejecución del programa dependen de los sucesos (eventos) que ocurran en el sistema o que ellos mismos provoquen. En este estilo de programación los programadores definen los eventos a los cuales el programa reaccionara y las acciones que seguirán al presentarse cada uno, esto se conoce como manejador de eventos. • Programación orientada a eventos permite interactuar con el usuario en cualquier momento de la ejecución. Principios de Programación Características de la Programación dirigida por Eventos • Es la base de lo que llamamos interfaz de usuario (GUI), aunque puede emplearse para desarrollar interfaces entre componentes de Software como módulos del núcleo también. • Permite interactuar con el usuario en cualquier momento de la ejecución. • El flujo de ejecución del software escapa al control del programador. • Uno de los periféricos que ha cobrado mayor importancia tras la aparición de los programas orientados a eventos ha sido el ratón, gracias también en parte a la aparición de los sistemas operativos modernos con sus interfaces gráficas. Principios de Programación Programación Orientada a Objetos (OOP). Es un paradigma de programación que consiste en desarrollar aplicaciones basadas en objetos, con técnicas de herencia, polimorfismo, abstracción, modularidad, principio de ocultación, encapsulamiento y recolección de basura. Este estilo de programación tiene sus orígenes en Simula67, lenguaje creado por el Noruego Ole-Johan Dahl y Kristen Nygaard. principios de los años 1990 • En la programación estructurada solo se escriben funciones que procesan datos. • Los programadores que emplean POO, en cambio, primero definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí mismos. “Lo que caracteriza a la POO es que intenta llevar al mundo del código lo mismo que encontramos en El Mundo Real”. Principios de Programación Características de la OOP. • Abstracción: Consiste en separar una entidad (elemento) de su contexto de realidad y representarlo mediante un objeto. • Encapsulamiento: Es el empaquetamiento de las variables de un objeto con la protección de sus métodos . • Modularidad: Es una propiedad que permite dividir una aplicación en partes más pequeñas llamadas módulos. • Principio de Ocultación: Es un método que permite la protección de los objetos contra la modificación, por quien no tenga privilegios de accesar a ellos. • Polimorfismo (sobrecarga de parámetros): Capacidad de los objetos de una clase de responder al mismo mensaje o evento en función de los parámetros utilizados durante su invocación. • Herencia: Es un mecanismo donde una clase se deriva a partir de otra de manera que pueda extender su funcionalidad, logrando con ello la reutilización y la extensibilidad. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. • Recolección de Basura: Llamado también garbage collector, es una técnica que permite desvincular la memoria asociada a los objetos que se hallan quedado en ejecución infinita. El programador no debe preocuparse por la asignación o liberación de memoria. Principios de Programación Programación Orientada a Aspectos (POA). Es un paradigma de programación relativamente reciente cuyo objetivo es complementar ciertos aspectos de la POO que esta no puede cumplir. El principal objetivo de la POA es la separación de las: • Funcionalidades comunes a lo largo de la aplicación. • Funcionalidades propias de cada modulo. Programación orientada a aspectos, permite encapsular las diferentes funcionalidades de una aplicación en entidades bien definidas, eliminado las dependencias entre cada uno de los módulos para que así sean fácilmente reutilizables. Principios de Programación Cuando una funcionalidad no puede ser encapsulada (logging, el tratamiento de transacciones, tratamiento de excepciones…) en una determinada clase sino que es compartida por varias características de la aplicación. En estos casos es necesario incrustar código de las partes de logging y del manejo de transacciones por ejemplo dentro de nuestras clases de acceso a datos, con el inconviente que se crea un acoplamiento entre los distintos módulos de nuestra aplicación y que la modificación en alguno de ellos normalmente repercute en los otros. Aquí es donde interviene la programación orientada a aspectos para tratar de desacoplar y independizar los distintos módulos de nuestra aplicación. Principios de Programación Características de la Programación Orientada a Aspectos. Provee un mecanismo para separar casa uno de los módulos de nuestra aplicación y poder hacer llamadas entre ellos de una manera mas limpia. • Evita que se duplique código, por ejemplo para hacer una auditoria cada vez que se modifique una de las propiedades de nuestras clases, habría que duplicar la llamada a nuestra clase de auditoria en cada una de ellas. • Mejora el testeo de nuestras aplicaciones pudiendo testear aspectos de nuestra aplicación de manera mas independiente pudiendo diferenciar mas rápidamente cual de los aspectos implicados en un modulo es el que falla. • El mantenimiento del código se vuelve mas flexible, ya que se en lugar de mostrar una ventana cada vez que salte una excepción simplemente queremos que lo indique es un fichero habría que cambiar esto en muchas partes de la aplicación. Principios de Programación