Conceptos Básicos PDF

Title Conceptos Básicos
Course Programacion Orientada a Objetos
Institution Instituto Tecnológico de Celaya
Pages 19
File Size 774.2 KB
File Type PDF
Total Downloads 90
Total Views 141

Summary

Los fundamentos o primeros conceptos, incluye historia de los paradigmas, reconocimiento de objetos y clases, elementos de la P.O.O, ¿Qué es la abstracción, encapsulamiento, modularidad, polimorfismo, jerarquía y herencia. El ciclo de vida del software, Análisis y Diseño. ...


Description

INSTITUTO TECNOLÓGICO DE CELAYA

Fundamentos de Programación Conceptos básicos del modelo orientado a objetos.

CONTENIDO 1.1

Historia de los paradigmas del desarrollo de software ................................................ 2

1.2

Reconocimiento de objetos y clases en el mundo real y la interacción entre ellos. ..... 4

1.2.2 Elementos fundamentales de la P.O.O ......................................................................... 5 1.3.1 Abstracción, Encapsulamiento, Modularidad, Polimorfismo, Jerarquía y herencia. ..... 6 1.3.2 La P.O.O y la complejidad del software. ....................................................................... 9 1.4.1 Conceptos del ciclo de vida del software. ................................................................... 10 1.5.1 Ejemplos de modelos de ciclo de vida del software. ................................................. 11 1.5.2 Análisis y diseño P.O.O ............................................................................................ 14 1.5.2.1 Especificaciones de requerimientos. ......................................................................... 16 1.5.2.2 Análisis Orientado a Objetos..................................................................................... 17 1.5.2.3 Diseño Orientado a Objetos. ..................................................................................... 17 1.5.2.4 Programación Orientada a Objetos ........................................................................... 18

1

1.1 Historia de los paradigmas del desarrollo de software Los paradigmas de programación son aquellas propuestas tecnológicas adoptadas por las comunidades de programadores y/o desarrolladores cuyo objetivo es resolver problemas y el enfoque a tomar para resolver estos, es decir, son estilos de programación. Cabe destacar que están cambiando constantemente pues surgen nuevos paradigmas con nuevas aportaciones y soluciones, sin embargo no es necesario ceñirse de forma pura a alguno de ellos, según el problema es habitual que se mezclen dando lugar a un multiparadigma o lenguajes de programación combinados. Algunos de los más importantes son: Lenguaje en Maquina (Machine Lenguage): Es el primer lenguaje de programación que surge aproximadamente en el año 1935, en el los programadores insertaban su código mediante el lenguaje de ceros y unos (lenguaje Binario) que representaban dos niveles de voltaje, el encendido y el apagado respectivamente. Dos switchs que servían para dar información a la máquina y con los cuales se podían formar secuencias que servían de órdenes, el problema es que no todo el mundo era capaz de comprender este nuevo “idioma”, era muy fácil cometer errores y echar a perder todo el trabajo, sin mencionar que dar órdenes a un ser humano es muy diferente a dar órdenes a una computadora Lenguaje Ensamblador (Assambly Lenguage): Después del lenguaje en maquina se pensó en usar la propia máquina para traducir su lenguaje, gracias a esto surgieron los primeros compiladores. La característica de este lenguaje es que comenzó a utilizar nemotécnicos y acrónimos del mundo de los humanos en lugar de 0 y 1, por ejemplo, ADD, SUB, SWAP, Etc… Con él se pueden programar microprocesadores y desarrollar controladores de dispositivos (drivers) Programación Spaghetti ( Spaghetti Code): Este tipo de paradigma es parte de los antiguos lenguajes de programación que por primera vez incorporan las instrucciones de salto basadas en condicionales, el problema como dice su nombre es que tenía una estructura compleja, anudada e indescifrable debido a utilizar muchas condicionales anudadas y el abuso de GOTO (salto incondicional) asemejando así a un plato de spaghetti. Por lo tanto era muy difícil la comprensión para alguien ajeno a su propio código al grado que hoy en día se considera su práctica como un anti-patrón que debe ser evitado lo más posible si eres un programador profesional. Lenguaje de alto nivel pascal: El lenguaje Pascal fue creado por el profesor suizo Niklaus Wirth a mediados de los 60’s y publicado en 1970, utilizando la programación estructurada pues está nació orientada a mejorar la calidad, claridad y tiempo de desarrollo de un programa utilizando sub rutinas, tres condicionales (if, switch y while) y código dividido en porciones legibles llamadas funciones o procedimientos que acabo con la programación monolítica además de la necesidad de declarar el tipo de dato previamente su uso. Fue de alta popularidad y las ventajas con las que contaba es que era relativamente fácil de utilizar, con él se podía hacer manejo hardware y era ideal 2

para familiarizarse con la jerga de programación estructurada si eras un principiante, sus desventajas eran las pocas funciones con que trabajar. Lenguaje de alto nivel C: Este lenguaje de programación fue originalmente desarrollado por Dennis Ritchie a principios de los 70’s fue fuertemente influenciado por su antecesor el lenguaje B y al igual que el estaba orientado a la implementación de sistemas operativos, concretamente Unix. Es apreciado por la eficacia de código que tiene y desde su creación es el lenguaje de creación de software más popular que existe aún hoy en la actualidad. A pesar de contar con opciones como “goto” y “break” se considera que es incorrecto su uso. Algunas de sus ventajas eran un lenguaje simple, flexible, con funciones matemáticas, y reducido a palabras clave. Sus desventajas eran las múltiples carencias de funciones y soporte además de la cantidad de tiempo que requería para hacer un programa en especial si eras principiante, además de lo difícil y costoso que podía ser el mantenimiento. Programación orientada a objetos (Object-oriented programming): Finalmente la P.O.O u O.O.P según sus siglas en ingles llego en los 70’s a innovar la forma de obtener resultados. Aunque no fue popular hasta finales de los 80’s y principios de los 90’s se característica que en lugar de pensar en algoritmos se busca que pensar en objetos desglosando el problema en problemas más pequeños. En este tipo de programación son muy importantes las características/atributos y los comportamientos/métodos. Esto se logra atreves de la abstracción de los hechos del mundo humano aplicado para emular su comportamiento en el mundo computacional. Hay muchísimos lenguajes orientados a objetos, el primero de ellos fue simula y algunos más de estos puros e híbridos son: Eiffel, Java, Oz, PHP, Python, Pauscal y Ruby entre otros.

3

1.2 Reconocimiento de objetos y clases en el mundo real y la interacción entre ellos.

Primero, tenemos que preguntarnos “¿qué es un objeto?” Los objetos son todo aquello que existe, en el mundo real van desde un avión, una casa, una tienda hasta juguetes, helicópteros, ventiladores y animales. Cada uno si se observa a profundidad está formado por más objetos, por ejemplo, una casa tiene habitaciones, ventanas, puertas, etc… Y cada una de estas tiene su propia manera de funcionar para crear en conjunto a la casa. Esa manera o característica específica es lo que conocemos como una clase del mundo real.

4

1.2.2 Elementos fundamentales de la P.O.O

La programación orientada a objetos difiere de otros tipos de programación principalmente por que enfatiza la creación e interacción de objetos. Por lo tanto, cuenta con sus propios elementos que son vitales conocer para el manejo de estos paradigmas. Algunos son: – Objetos: Los objetos son la combinación de atributos + métodos, en instancia son una clase capaz de almacenar información de las operaciones y modificaciones. Estos pueden representar cosas tangibles como personas y carros, eventos como devolución, interacciones como préstamo y registro, localizaciones como puntos de venta y bodegas, o dispositivos como sensor, teclado y pantalla. Se dice que en una programación orientada a objetos tienes que separar el problema en problemas más pequeños que en el caso de los objetos seria desglasarlos hasta tener los componentes que más nos convienen.

– Métodos: Básicamente son operaciones sobre los objetos, pues definen su comportamiento enviándoles y recibiendo mensajes.

– Clases: En algunos lenguajes las clases son tomadas como objetos, mientras que en otros son categorías abstractas de objetos con propiedades y operaciones comunes, representan a un conjunto de objetos con un comportamiento e interfaz común. Describen la forma en que están estructurados internamente los objetos, es decir, al momento de crear un objeto se ha de especificar de qué clase es para que el compilador comprenda su comportamiento y características.

5

1.3.1 Abstracción, Encapsulamiento, Modularidad, Polimorfismo, Jerarquía y herencia.



Abstracción

Abstraer es enfocarse en la visión externa de un objeto que separa el comportamiento específico, es decir, suprimir u ocultar algunos detalles de proceso o elemento, para resaltar algún aspecto, detalle o estructura específicos. A esto también se le conoce como barrera de abstracción Encapsulamiento

El encapsulamiento conlleva reunir todos los elementos de la misma entidad al mismo nivel de abstracción organizándolos en una estructura tipo “caja negra” a su vez también evitando el acceso a estos datos por cualquier 6

método distinto a los especificados garantizando la integridad de aquello que contiene el objeto. Modularidad

La modularidad es otro método divisor, esta consiste en dividir un programa en módulos que puedan cumplirse por separado pero manteniendo la conexión. También es la capacidad de descomponer un sistema complejo, componer atreves de módulos y la comprensión del sistema en partes. Cada módulo es precisamente un sub-programa del sistema completo, con cada parte separada es más fácil comprender el código y si el sistema necesita modificaciones además de ayudar a quien mantendrá el código en el futuro.

Polimorfismo El polimorfismo es la habilidad de no necesariamente tener un tipo de clase específica para aceptar al objeto sino un tipo de “familiar a” o “heredados de”, es decir, los derivados, de esta forma no tienes que especificar cada tipo de objeto diferente sin la necesidad de modificar la clase principal pues aceptara otras siempre y cuando sean heredadas de otra.

7



Jerarquía

Las jerarquías frecuentemente son las abstracciones ya ordenadas y clasificadas. Simplemente define en quien hereda de quien organizando la complejidad de generalización a especificación.

Herencia

La herencia es la relación de clases más importante, es esencial en los sistemas orientados a objetos pues es la que define una relación entre clases en la que una de ellas brinda la estructura de comportamiento defina una o más clases

8

1.3.2 La P.O.O y la complejidad del software.

La Programación orientada a objetos 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. Gracias a la P.O.O tenemos que aprender a pensar las cosas de una manera distinta, tener un pensamiento entre el mundo humano y entre el mundo de las maquinas, pues hay que pensar en términos de objetos, propiedades, y métodos entre otras. La complejidad del software radica en las personas hábiles para recopilar información necesaria para resolver una problemática del sistema para lo cual se ven enfocados a tratar el problema y después hacer una gestión para desarrollar el software y así llevarlo a la practica con la flexibilidad necesaria. Sin los anteriores paradigmas y lenguajes no hubiera sido posible llegar al nivel actual, pues se fueron perfeccionando los errores, por ejemplo, antes no había una reutilización de código y ahora se trata de aprovechar al máximo todos los recursos incluyendo el código. Ahora sabemos que la P.O.O básicamente se conforma de tener un dominio del problema presentado, gestionar el proceso de desarrollo y comprender la amplia gama de expresiones para que el programa se ejecute.

Sistema información

Software/programa(s) Complejo = Modulo o integración de sistemas.

9

1.4.1 Conceptos del ciclo de vida del software.

Las metodologías del desarrollo de software son las técnicas que nos permiten alcanzar la meta de finalizar un programa con éxito, pues gracias a estas se hace el planteamiento de “¿Cuáles son las mejores opciones para este problema?, ¿Qué métodos debería usar?, “¿Cumpliré con la fecha límite?”, según las demandas. Además nos permite pensar en la estructura y organización que nos llevará a cumplir con los objetivos dispuestos. Los pasos básicos por lo general son entender el problema, diseñar la solución, codificar, hacer pruebas y depuraciones, documentar. Hay diferentes métodos pero no hay ninguno mejor que otro pues están pensados en adaptarse a los requerimientos de la mejor manera posible, ya que si se usa el mismo método para todos los problemas puede dar lugar a la insatisfacción del cliente.

10

1.5.1 Ejemplos de modelos de ciclo de vida del software.

Cascada (Waterfall)

Prototipo (Prototyping) 11



Espiral (Spiral)



12

Programación Extrema (Extreme Programming)



13

Programación de Kruchten (+1)

1.5.2 Análisis y diseño P.O.O

El objetivo del Análisis Orientado a Objetos (AOO) es desarrollar un modelo que describa el software de computadora necesario para satisfacer los requisitos definidos por el cliente. El modelo de análisis contiene el funcionamiento y el comportamiento de los elementos del modelo de objetos. El lenguaje UML que funciona en diagramas es una parte fundamental de este diseño y análisis. Estos se dividen en diagramas de casos de uso, diagramas de clases y objetos, y finalmente diagramas de secuencias. Cada uno de estos tiene su propia finalidad, el primero sería entender el problema (hacer el análisis), el segundo el diagrama encargado del diseño y por último un diagrama de pseudo codificación.

Ejemplo de diagrama de casos de uso UML.

14

Ejemplo de diagrama de clases y objetos.

Ejemplo de diagrama de secuencia.

15

1.5.2.1 Especificaciones de requerimientos.

Todo programa empieza con la petición de una persona o cliente, es entonces donde comienza la investigación preliminar, que consta de tres partes: aclaración de la solicitud, estudio de factibilidad y aprobación de la solicitud. En la aclaración de la solicitud: se definen todas las especificaciones y términos que requiere el cliente, para eso hay que hacer una tanda de preguntas específicas, para dar con las claves, por ejemplo, “¿Qué es lo que hará?” y “¿cómo lo hará?”

En el estudio de la factibilidad: Se hace el análisis de que el programa requerido SÍ es posible de desarrollar tomando en cuenta el tiempo, factibilidad económica y capacitación.

La aprobación de la solicitud: Al realizar el estudio de factibilidad y más tarde comprobar que se tiene todo lo necesario para dar un proyecto de calidad se da luz verde y se comienza con la pronta realización del software.

A medida que la construcción del software se lleve a cabo se debe llevar un registro de todas las especificaciones, como se han cumplido y que variantes han surgido en el camino.

16

1.5.2.2 Análisis Orientado a Objetos.

El análisis orientado a objetos es la pregunta esencial que debemos hacernos a la hora de crear un nuevo objeto, esta sería “¿Qué hace?” debemos de cuestionarnos para poder tener un buen análisis orientado a objeto ya así deducir los tipos de objetos del mundo real que están implicados y obtener los atributos de estos objetos determinando su comportamiento e interacciones. No está restringido al diseño de programas de computadora, sino que cubre sistemas enteros de distinto tipo. Las metodologías de análisis más modernas son "casos de uso" guiados a través de requerimientos, diseño, implementación, pruebas, y despliegue.

1.5.2.3 Diseño Orientado a Objetos.

¿Cómo se hace? Para un buen diseño de programa primero se piensa en objetos del mundo real que pueden ser representados como objetos del mundo informático. Se deben especificar los objetos con mayor precisión especificando en detalle lo que los objetos conocen y lo que pueden hacer, y describir sus interacciones. Se entra en un proceso detallado de los objetos para poder capturar la información más posible que podamos utilizar para la estructuración del software. Este proceso por lo general se da en varias etapas: 1.

Comprender y definir el contexto y los modos de utilización del sistema.

2.

Diseñar la arquitectura del sistema.

3.

Identificar los objetos principales en el sistema

4.

Desarrollar los modelos de diseño.

5.

Especificar las interfaces de los objetos.

Por supuesto siempre tratando de agregarle toda la claridad posible, tener identificadas las relaciones en el sistema, utilizar cosas tangibles, utilizar un enfoque de comportamiento y un análisis gramatical de la descripción natural del sistema basado en escenarios. 17

1.5.2.4 Programación Orientada a Objetos

La programación orientada a objetos (POO, u OOP según sus siglas en inglés) es un paradigma de programación que viene a innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada para la obtención de datos de salida específicos, donde cada objeto ofrece una funcionalidad especial. Muchos de los objetos pre-diseñados de los lenguajes de programación actuales permiten la agrupación en bibliotecas o librerías, sin embargo, muchos de estos lenguajes permiten al usuario la creación de sus propias bibliotecas. Está basada en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento. Su uso se popularizó a principios de la década de 1990 y en la actualidad, existe una gran variedad de lenguajes que son orientados o por lo menos híbridos para soportar la programación orientada a objetos.

18...


Similar Free PDFs