Este documento presenta una revisión histórica del paradigma de programación orientada a objetos, comparando lenguajes OO y clasificando metodologías OO. Explica que la POO surgió de ideas como simulación de sistemas, sistemas operativos, abstracción de datos e inteligencia artificial, definiendo objetos como entidades lógicas o físicas autocontenidas. También describe características clave de la POO como herencia, encapsulamiento y mensajes, y compara lenguajes pioneros como Simula, Smalltalk, C++
Este documento introduce conceptos básicos de ingeniería de software. Brevemente describe la historia del software, características especiales como la complejidad, y la crisis del software que llevó al desarrollo de la ingeniería de software. Explica que la ingeniería de software aplica un método sistemático y estructurado al desarrollo, operación y mantenimiento de software.
Este documento presenta una introducción a un curso sobre el diseño de aplicaciones seguras. Explica brevemente la importancia de la seguridad en los programas, mostrando cifras sobre los costos de los fallos de seguridad. También resume algunos estudios que muestran altas tasas de fallos en programas cuando se les somete a pruebas de robustez y fuzzing.
Este documento describe la Programación Orientada a Aspectos (POA) como una alternativa para resolver los problemas de la ingeniería de software tradicional al encapsular conceptos transversales como sincronización, distribución y seguridad. Explica cómo la POA permite separar la funcionalidad básica de los aspectos a través de mecanismos de abstracción y composición. Luego, presenta un caso de estudio donde se aplica la POA al protocolo TFTP para transferir archivos.
Apresentação recuperação energética ao nível industrialConsulges
O documento descreve projetos de recuperação de energia em processos industriais têxteis e cerâmicos realizados por João Sampaio na Consulgés Formação S.A., incluindo a recuperação de calor de águas residuais, ar de exaustão e gás de combustão para reduzir o consumo de energia e emissões.
La inteligencia artificial se define como la inteligencia exhibida por sistemas creados por humanos y busca imitar la inteligencia humana. Surge como estudio filosófico de la inteligencia y la naturaleza y ha evolucionado gracias a inventos como el transistor y el desarrollo de la computación. Actualmente, la investigación se enfoca en simular procesos mentales humanos y desarrollar sistemas con capacidades como el aprendizaje y la resolución de problemas.
Este documento discute o comportamento assertivo, incluindo sua definição, exemplos de comportamentos assertivos e não assertivos, e como desenvolver habilidades assertivas. Em particular, destaca-se que o comportamento assertivo envolve expressar diretamente necessidades, emoções e opiniões sem ansiedade ou hostilidade desnecessárias.
Este documento presenta información sobre los Salones Regionales de Artistas en la Región Oriente de Colombia para 2007-2008. Describe el proyecto curatorial "Región Imaginada" y sus objetivos de investigar y dar sentido a la producción artística de la región a través de procesos de diálogo. También presenta los detalles de cinco artistas seleccionados para las exhibiciones y sus obras respectivas.
Este documento introduce conceptos básicos de ingeniería de software. Brevemente describe la historia del software, características especiales como la complejidad, y la crisis del software que llevó al desarrollo de la ingeniería de software. Explica que la ingeniería de software aplica un método sistemático y estructurado al desarrollo, operación y mantenimiento de software.
Este documento presenta una introducción a un curso sobre el diseño de aplicaciones seguras. Explica brevemente la importancia de la seguridad en los programas, mostrando cifras sobre los costos de los fallos de seguridad. También resume algunos estudios que muestran altas tasas de fallos en programas cuando se les somete a pruebas de robustez y fuzzing.
Este documento describe la Programación Orientada a Aspectos (POA) como una alternativa para resolver los problemas de la ingeniería de software tradicional al encapsular conceptos transversales como sincronización, distribución y seguridad. Explica cómo la POA permite separar la funcionalidad básica de los aspectos a través de mecanismos de abstracción y composición. Luego, presenta un caso de estudio donde se aplica la POA al protocolo TFTP para transferir archivos.
Apresentação recuperação energética ao nível industrialConsulges
O documento descreve projetos de recuperação de energia em processos industriais têxteis e cerâmicos realizados por João Sampaio na Consulgés Formação S.A., incluindo a recuperação de calor de águas residuais, ar de exaustão e gás de combustão para reduzir o consumo de energia e emissões.
La inteligencia artificial se define como la inteligencia exhibida por sistemas creados por humanos y busca imitar la inteligencia humana. Surge como estudio filosófico de la inteligencia y la naturaleza y ha evolucionado gracias a inventos como el transistor y el desarrollo de la computación. Actualmente, la investigación se enfoca en simular procesos mentales humanos y desarrollar sistemas con capacidades como el aprendizaje y la resolución de problemas.
Este documento discute o comportamento assertivo, incluindo sua definição, exemplos de comportamentos assertivos e não assertivos, e como desenvolver habilidades assertivas. Em particular, destaca-se que o comportamento assertivo envolve expressar diretamente necessidades, emoções e opiniões sem ansiedade ou hostilidade desnecessárias.
Este documento presenta información sobre los Salones Regionales de Artistas en la Región Oriente de Colombia para 2007-2008. Describe el proyecto curatorial "Región Imaginada" y sus objetivos de investigar y dar sentido a la producción artística de la región a través de procesos de diálogo. También presenta los detalles de cinco artistas seleccionados para las exhibiciones y sus obras respectivas.
La unidad trata sobre la gestión de proyectos para el desarrollo de software. Explica los conceptos clave como el ciclo de vida de un sistema de información, las etapas de desarrollo de un proyecto de software, y los factores que afectan el costo y complejidad del software como los costos ocultos por fallas.
Este documento presenta una unidad sobre metodologías para el desarrollo de software. Explica conceptos clave como ingeniería de software, procesos de software y calidad de software. Luego describe qué es una metodología y contrasta metodologías con ciclos de vida. Finalmente, introduce diferentes modelos de procesos para el desarrollo de software como modelos en cascada, incrementales y basados en prototipos. El objetivo es dotar a los estudiantes de conocimientos sobre metodologías para el desarrollo de sistemas de información.
El documento describe diferentes modelos de desarrollo de software ágil como Programación Extrema, Desarrollo Adaptativo de Software, y Modelo Scrum. Explica los principios del Manifiesto Ágil y características clave de los modelos de desarrollo ágil como entregas incrementales frecuentes y colaboración estrecha con el cliente.
Este documento presenta una metodología ágil para el desarrollo de un sistema de información para la captura y recolección de información en el proceso de inteligencia. Utilizará el lenguaje de programación Java y XML para el almacenamiento de datos. La metodología propuesta busca mejorar la comunicación de información entre agentes y organismos de inteligencia de una manera más estructurada y eficiente.
Este documento presenta una introducción a la ingeniería de software. Explica que la ingeniería de software integra procesos, métodos y herramientas para el desarrollo de software siguiendo fases genéricas como el análisis, diseño, desarrollo, pruebas e implementación. También describe algunos campos de aplicación comunes de la ingeniería de software como sistemas, tiempo real, gestión, ingeniería, empotrados y web. Concluye que los estándares son importantes para seguir normas que entreguen proyectos de buena cal
Este capítulo discute la ingeniería de software y los procesos de desarrollo de software. Explica que el desarrollo de software es una tarea difícil que involucra aspectos funcionales, ergonómicos y educativos. También introduce el concepto de proceso de software y discute los modelos y estándares internacionales de procesos de desarrollo de software. Finalmente, define la ingeniería de software y explica su importancia para el desarrollo de software de calidad.
El documento habla sobre hardware y software, así como la comunicación y colaboración en Internet. Explica definiciones de hardware y software, la clasificación del software en sistemas operativos, de programación y de aplicación. También describe el proceso de creación de software, incluyendo etapas como la captura de requisitos, diseño, codificación y pruebas. Finalmente, discute modelos de procesos como el modelo en cascada y modelos evolutivos.
El documento habla sobre hardware y software, así como sobre comunicación y colaboración en Internet. Explica definiciones de hardware y software, su clasificación y procesos de creación. Describe diferentes tipos de software como sistema, programación y aplicación. También cubre modelos de procesos como el modelo en cascada y sus ventajas y desventajas para el desarrollo de software.
El documento presenta información sobre la evolución del software, principios éticos en el desarrollo de software, riesgos asociados con el software y consideraciones éticas para desarrolladores. Describe las diferentes eras en la evolución de los sistemas informáticos y los principios que deberían guiar el comportamiento de los programadores desde una perspectiva ética. También discute posibles riesgos relacionados con el software y la importancia de la gestión de riesgos en los proyectos.
Este documento contiene las preguntas y respuestas de una clase de Ingeniería de Software. Presenta información sobre diferentes modelos de ciclo de vida de desarrollo de software como el modelo en cascada, basado en prototipos y en espiral. También cubre conceptos de la programación orientada a objetos como herencia, polimorfismo y abstracción. Finalmente, define términos como metodología, métodos genéricos de desarrollo y el protocolo ISO 12207.
Este documento presenta una introducción a conceptos clave de ingeniería de software e información como mitos, paradigmas, calidad, procesos, métodos, herramientas y sistemas de información. Explica brevemente cada tema y ofrece definiciones e ideas fundamentales sobre cada uno.
Este documento describe varias metodologías para el desarrollo de software como la cascada, la espiral, el ciclo de vida y RUP. Explica que la metodología cascada es un proceso secuencial donde cada fase se basa en la anterior, mientras que la espiral se enfoca en la evaluación y reducción de riesgos a través de iteraciones. También describe el ciclo de vida como un enfoque por fases del análisis y diseño, y RUP como un proceso que asigna tareas y responsabilidades para asegurar la calidad
Este documento describe varias metodologías para el desarrollo de software como la cascada, la espiral, el ciclo de vida y RUP. Explica que la metodología cascada es un proceso secuencial, la espiral se enfoca en la evaluación y reducción de riesgos, el ciclo de vida es un enfoque por fases, y RUP es un proceso iterativo centrado en diagramas de casos de uso y gestión de riesgos. También describe las fases del ciclo de vida como investigación preliminar, determinación de requisitos, diseño,
El documento describe el proyecto sociotecnológico como el núcleo central del programa nacional de formación en informática. Explica que los proyectos se basan en problemas reales y permiten a los participantes aplicar conocimientos de informática y trabajar en equipo. Además, detalla los diferentes trayectos de los proyectos sociotecnológicos y los temas en los que pueden enfocarse, como soporte técnico, desarrollo de sistemas de información y auditoría de sistemas.
El documento habla sobre el hardware y software, así como la comunicación y colaboración en Internet. Explica las definiciones de hardware y software, y cómo se clasifica el software en sistemas operativos, software de programación y aplicaciones. También describe el proceso de creación de software, incluyendo las etapas de requisitos, diseño, codificación, pruebas e implementación. Finalmente, discute diferentes modelos de procesos como la cascada y los modelos evolutivos.
Este documento presenta una introducción a la ingeniería de software. Define la ingeniería de software según la IEEE y explica que estudia el ciclo de desarrollo de software con énfasis en la calidad. Luego describe las principales áreas de conocimiento de la ingeniería de software como requerimientos, diseño, construcción, pruebas, calidad y mantenimiento. Finalmente, resume brevemente la historia y evolución de la disciplina desde los años 1950 hasta la actualidad.
El documento describe la evolución de la ingeniería de software desde sus inicios en las décadas de 1940 y 1950, cuando el software se desarrollaba de forma artesanal para cada aplicación, hasta la actualidad. Explica que la "crisis del software" de finales de los 1960 llevó al establecimiento de la ingeniería de software como disciplina para gestionar mejor el desarrollo de software. También resume los objetivos clave y principios de la ingeniería de software, así como algunos problemas no resueltos como la gestión de proyectos y la complejidad de la
Este documento describe diferentes enfoques y productos de la prospectiva. Describe enfoques orientados a productos tangibles como reportes y encuestas, y enfoques orientados a procesos que desarrollan capacidades. También describe un enfoque que sintetiza ambos al influir sobre las personas para que colaboren. Explica la diferencia entre productos formales e informales y los tipos de audiencias y diseminación a los que se dirigen.
Este informe resume los beneficios de la programación orientada a objetos y cómo algunos estudiantes crearon una calculadora mejorada para dispositivos móviles usando este enfoque. La programación orientada a objetos permite uniformidad, comprensión, flexibilidad y reusabilidad de código. Los estudiantes agregaron funciones trigonométricas a la calculadora convencional para smartphones. El informe concluye destacando la importancia creciente de la programación orientada a objetos.
El documento analiza la historia y crisis del desarrollo de software a finales del siglo XX. Señala que los proyectos de software a menudo sobrepasaban los presupuestos y plazos, y que la calidad y fiabilidad del software era cuestionable. Explica que factores como el aumento de la potencia computacional y la complejidad creciente del software contribuyeron a la crisis, la cual se manifestó en excesos de tiempo, costo y recursos en el desarrollo de software.
La unidad trata sobre la gestión de proyectos para el desarrollo de software. Explica los conceptos clave como el ciclo de vida de un sistema de información, las etapas de desarrollo de un proyecto de software, y los factores que afectan el costo y complejidad del software como los costos ocultos por fallas.
Este documento presenta una unidad sobre metodologías para el desarrollo de software. Explica conceptos clave como ingeniería de software, procesos de software y calidad de software. Luego describe qué es una metodología y contrasta metodologías con ciclos de vida. Finalmente, introduce diferentes modelos de procesos para el desarrollo de software como modelos en cascada, incrementales y basados en prototipos. El objetivo es dotar a los estudiantes de conocimientos sobre metodologías para el desarrollo de sistemas de información.
El documento describe diferentes modelos de desarrollo de software ágil como Programación Extrema, Desarrollo Adaptativo de Software, y Modelo Scrum. Explica los principios del Manifiesto Ágil y características clave de los modelos de desarrollo ágil como entregas incrementales frecuentes y colaboración estrecha con el cliente.
Este documento presenta una metodología ágil para el desarrollo de un sistema de información para la captura y recolección de información en el proceso de inteligencia. Utilizará el lenguaje de programación Java y XML para el almacenamiento de datos. La metodología propuesta busca mejorar la comunicación de información entre agentes y organismos de inteligencia de una manera más estructurada y eficiente.
Este documento presenta una introducción a la ingeniería de software. Explica que la ingeniería de software integra procesos, métodos y herramientas para el desarrollo de software siguiendo fases genéricas como el análisis, diseño, desarrollo, pruebas e implementación. También describe algunos campos de aplicación comunes de la ingeniería de software como sistemas, tiempo real, gestión, ingeniería, empotrados y web. Concluye que los estándares son importantes para seguir normas que entreguen proyectos de buena cal
Este capítulo discute la ingeniería de software y los procesos de desarrollo de software. Explica que el desarrollo de software es una tarea difícil que involucra aspectos funcionales, ergonómicos y educativos. También introduce el concepto de proceso de software y discute los modelos y estándares internacionales de procesos de desarrollo de software. Finalmente, define la ingeniería de software y explica su importancia para el desarrollo de software de calidad.
El documento habla sobre hardware y software, así como la comunicación y colaboración en Internet. Explica definiciones de hardware y software, la clasificación del software en sistemas operativos, de programación y de aplicación. También describe el proceso de creación de software, incluyendo etapas como la captura de requisitos, diseño, codificación y pruebas. Finalmente, discute modelos de procesos como el modelo en cascada y modelos evolutivos.
El documento habla sobre hardware y software, así como sobre comunicación y colaboración en Internet. Explica definiciones de hardware y software, su clasificación y procesos de creación. Describe diferentes tipos de software como sistema, programación y aplicación. También cubre modelos de procesos como el modelo en cascada y sus ventajas y desventajas para el desarrollo de software.
El documento presenta información sobre la evolución del software, principios éticos en el desarrollo de software, riesgos asociados con el software y consideraciones éticas para desarrolladores. Describe las diferentes eras en la evolución de los sistemas informáticos y los principios que deberían guiar el comportamiento de los programadores desde una perspectiva ética. También discute posibles riesgos relacionados con el software y la importancia de la gestión de riesgos en los proyectos.
Este documento contiene las preguntas y respuestas de una clase de Ingeniería de Software. Presenta información sobre diferentes modelos de ciclo de vida de desarrollo de software como el modelo en cascada, basado en prototipos y en espiral. También cubre conceptos de la programación orientada a objetos como herencia, polimorfismo y abstracción. Finalmente, define términos como metodología, métodos genéricos de desarrollo y el protocolo ISO 12207.
Este documento presenta una introducción a conceptos clave de ingeniería de software e información como mitos, paradigmas, calidad, procesos, métodos, herramientas y sistemas de información. Explica brevemente cada tema y ofrece definiciones e ideas fundamentales sobre cada uno.
Este documento describe varias metodologías para el desarrollo de software como la cascada, la espiral, el ciclo de vida y RUP. Explica que la metodología cascada es un proceso secuencial donde cada fase se basa en la anterior, mientras que la espiral se enfoca en la evaluación y reducción de riesgos a través de iteraciones. También describe el ciclo de vida como un enfoque por fases del análisis y diseño, y RUP como un proceso que asigna tareas y responsabilidades para asegurar la calidad
Este documento describe varias metodologías para el desarrollo de software como la cascada, la espiral, el ciclo de vida y RUP. Explica que la metodología cascada es un proceso secuencial, la espiral se enfoca en la evaluación y reducción de riesgos, el ciclo de vida es un enfoque por fases, y RUP es un proceso iterativo centrado en diagramas de casos de uso y gestión de riesgos. También describe las fases del ciclo de vida como investigación preliminar, determinación de requisitos, diseño,
El documento describe el proyecto sociotecnológico como el núcleo central del programa nacional de formación en informática. Explica que los proyectos se basan en problemas reales y permiten a los participantes aplicar conocimientos de informática y trabajar en equipo. Además, detalla los diferentes trayectos de los proyectos sociotecnológicos y los temas en los que pueden enfocarse, como soporte técnico, desarrollo de sistemas de información y auditoría de sistemas.
El documento habla sobre el hardware y software, así como la comunicación y colaboración en Internet. Explica las definiciones de hardware y software, y cómo se clasifica el software en sistemas operativos, software de programación y aplicaciones. También describe el proceso de creación de software, incluyendo las etapas de requisitos, diseño, codificación, pruebas e implementación. Finalmente, discute diferentes modelos de procesos como la cascada y los modelos evolutivos.
Este documento presenta una introducción a la ingeniería de software. Define la ingeniería de software según la IEEE y explica que estudia el ciclo de desarrollo de software con énfasis en la calidad. Luego describe las principales áreas de conocimiento de la ingeniería de software como requerimientos, diseño, construcción, pruebas, calidad y mantenimiento. Finalmente, resume brevemente la historia y evolución de la disciplina desde los años 1950 hasta la actualidad.
El documento describe la evolución de la ingeniería de software desde sus inicios en las décadas de 1940 y 1950, cuando el software se desarrollaba de forma artesanal para cada aplicación, hasta la actualidad. Explica que la "crisis del software" de finales de los 1960 llevó al establecimiento de la ingeniería de software como disciplina para gestionar mejor el desarrollo de software. También resume los objetivos clave y principios de la ingeniería de software, así como algunos problemas no resueltos como la gestión de proyectos y la complejidad de la
Este documento describe diferentes enfoques y productos de la prospectiva. Describe enfoques orientados a productos tangibles como reportes y encuestas, y enfoques orientados a procesos que desarrollan capacidades. También describe un enfoque que sintetiza ambos al influir sobre las personas para que colaboren. Explica la diferencia entre productos formales e informales y los tipos de audiencias y diseminación a los que se dirigen.
Este informe resume los beneficios de la programación orientada a objetos y cómo algunos estudiantes crearon una calculadora mejorada para dispositivos móviles usando este enfoque. La programación orientada a objetos permite uniformidad, comprensión, flexibilidad y reusabilidad de código. Los estudiantes agregaron funciones trigonométricas a la calculadora convencional para smartphones. El informe concluye destacando la importancia creciente de la programación orientada a objetos.
El documento analiza la historia y crisis del desarrollo de software a finales del siglo XX. Señala que los proyectos de software a menudo sobrepasaban los presupuestos y plazos, y que la calidad y fiabilidad del software era cuestionable. Explica que factores como el aumento de la potencia computacional y la complejidad creciente del software contribuyeron a la crisis, la cual se manifestó en excesos de tiempo, costo y recursos en el desarrollo de software.
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...JAVIER SOLIS NOYOLA
El Mtro. JAVIER SOLIS NOYOLA crea y desarrolla el “DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARIS”. Esta actividad de aprendizaje propone el reto de descubrir el la secuencia números para abrir un candado, el cual destaca la percepción geométrica y conceptual. La intención de esta actividad de aprendizaje lúdico es, promover los pensamientos lógico (convergente) y creativo (divergente o lateral), mediante modelos mentales de: atención, memoria, imaginación, percepción (Geométrica y conceptual), perspicacia, inferencia y viso-espacialidad. Didácticamente, ésta actividad de aprendizaje es transversal, y que integra áreas del conocimiento: matemático, Lenguaje, artístico y las neurociencias. Acertijo dedicado a los Juegos Olímpicos de París 2024.
En la ciudad de Pasto, estamos revolucionando el acceso a microcréditos y la formalización de microempresarios informales con nuestra aplicación CrediAvanza. Nuestro objetivo es empoderar a los emprendedores locales proporcionándoles una plataforma integral que facilite el acceso a servicios financieros y asesoría profesional.
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
Evolucion de la programacion
1. ´ ´
Evolucion de la Programacion
Orientada a Objetos
Dr. Luis Gerardo de la Fraga
Departamento de Computaci´n o
Cinvestav
Correo-e: fraga@cs.cinvestav.mx
7 de diciembre de 2006
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 1/32
2. ´
Motivacion
Se presentar´ en esta charla:
a
Una revisi´n hist´rica del
o o
paradigma OO
Situar OO contra otros
paradigmas, en especial los
lenguajes de muy alto nivel
Una cr´
ıtica personal a la
programaci´n OO
o
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 2/32
3. Contenido
Introducci´n
o
Antecedentes de la programaci´n OO
o
Caracter´
ısticas del modelo OO
Comparaci´n entre lenguajes OO
o
Clasificaci´n de los metodolog´ OO
o ıas
Los lenguajes de muy alto nivel
¿Cu´l es el mejor paradigma?
a
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 3/32
4. ´
Introduccion (1/3)
La programaci´n OO empez´ hace 30 a˜os
o o n
En los 1990s se increment´ dram´ticamente la demanda para
o a
sistemas de software OO, por la promesa en la revoluci´n en
o
el desarrollo de software.
Han aparerecido varias metodolog´ para el desarrollo de
ıas
software, que tienen que ver con algunas o todas las fases del
ciclo de vida del software, desde los requerimientos al
mantenimiento.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 4/32
5. ´
Introduccion (2/3)
Algunas caracter´
ısticas importantes de los sistemas de software
actuales son:
Complejidad: la arquitectura interna de los sistemas actuales
de software es compleja, incluyen frecuentemente concurrencia
y paralelismo. La abstracci´n en terminos de conceptos de OO
o
es una t´cnica que ayuda a tratar con la complejidad.
e
Amigabilidad: Este es un requerimiento de suma importancia
para los sistemas de software en general.
Reusabilidad: Tomar componentes creados por otros es mejor
que crearlos nuevos. La herencia es un mecanismo de OO que
estimula la reusabilidad del software. Facilita el r´pido
a
desarrollo del software.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 5/32
6. ´
Introduccion (3/3)
Las razones del r´pido desarrollo en los ultimos 15 a˜os han sido:
a ´ n
Una mejor modelaci´n de aplicaciones del mundo real
o
La posibilidad del reuso del software durante el desarrollo de
un sistema de software
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 6/32
7. Antecedentes (1/2)
Simulación Sistemas Abstracción Inteligencia
de sistemas operativos de datos artificial
Tipos de
Monitores datos
Clases + abstractos + Marcos
objetos encapsulación
Paradigma
Orientado a Objetos
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 7/32
8. Antecedentes (2/2)
La caracter´
ıstica com´n de estas ideas es que un objeto es una
u
entidad l´gica o f´
o ısica que est´ autocontenida.
a
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 8/32
9. Caracter´
ısticas
OO se define por herencia, encapsulaci´n, m´todos y
o e
mensajes, como en Smalltalk.
OO se define encapsulaci´n, abstracci´n de datos, m´todos,
o o e
mensajes, herencia y vinculaci´n din´mica.
o a
Es un modelo de simula el comportamiento ya sea de una
parte del mundo real o imaginario.
Objetos, clases y herencia. Los objetos son entidades
aut´nomas que tienen un estado y responden a mensajes. Las
o
clases agrupan los objetos por sus atributos y operaciones.
Todas tienen el com´n de usar objetos como una
u
encapsulaci´n para proteger los datos con todas las
o
operaciones legales que actuan sobre esa informaci´n oculta.
o
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 9/32
10. ´
Comparacion entre lenguajes OO (1/4)
Ensamblador
50s
Fortran
60s Lisp Algol
Simula Pascal
70s
Smalltalk C Ada CLU
Beta Modula−2
C++
80s
Flavors Actor
Loops POOL−T C−Objetivo Pascal Objetivo
CLOS ABCL Eiffel Modula−3
Orient84
90s
Java
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 10/32
11. ´
Comparacion entre lenguajes OO (2/4)
Lenguaje ensamblador:
Intrucciones de m´quina (operadores) que manipulan en
a
contenido de localidades de memoria (operandos)
Lenguaje de alto nivel:
Operadores se vuelven declaraciones y los operandos en
variables y estructuras de datos.
Los programas est´n compuestos de de una colecci´n de variables
a o
que representan alg´n dato y un conjunto de procedimientos que
u
manipulan esas variables.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 11/32
12. ´
Comparacion entre lenguajes OO (3/4)
Caracter´
ısticas Tipos Apoyo Vinculaci´n
o Biblioteca
X de de din´mica
a extensa
Lenguajes datos herencia
Simula Si Si Si No
CLU Si No Si No
Ada Si No No Si
Smalltalk Si Si Si Si
C Objetivo Si Si Si Si
C++ Si Si Si Si
CLOS Si Si Si No
Pascal Obj. Si Si Si No
Beta Si Si Si No
Eiffel Si Si Si Si
Actor Si Si Si No
Java Si Si Si Si
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 12/32
13. Clasificacion de los metodolog´ OO (1/6)
´ ıas
Varios m´todos han sido propuestos para sistematizar el proceso de
e
vida del software. Y muchas metodolog´ de desarrollo de software
ıas
han sido propuestas, y ´stas pueden clasificarse en tres categor´
e ıas:
Descomposici´n funcional.
o
Enf´sis en datos, m´s que en funciones.
a a
Ambos puntos de vista: funcional y datos.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 13/32
14. Clasificacion de los metodolog´ OO (2/6)
´ ıas
Descomposici´n funcional:
o
Dise˜o Estructural, Refinamiento por Pasos.
n
Enf´sis en datos, m´s que en funciones:
a a
Programaci´n Estructurada, Modelo Entidad-Relaci´n
o o
Ambos puntos de vista: funcional y datos:
An´lisis Estructural, An´lisis de Sistemas Estructurados,
a a
An´lisis de Sistemas Estructurados y Metodolog´ de Dise˜o.
a ıa n
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 14/32
15. Clasificacion de los metodolog´ OO (3/6)
´ ıas
Desarrollo estructural:
An´lisis estructural, dise˜o estructural y programaci´n
a n o
estructurada.
Aplicar primero el dise˜o estructural y luego la proximaci´n
n o
orientada a objetos resulta en problemas dado que no se puede
mapear apropiadamente las funciones en objetos.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 15/32
16. Clasificacion de los metodolog´ OO (4/6)
´ ıas
Metodolog´ “orientadas a objetos”:
ıas
Adaptaci´n: mezclar una aproximaci´n orientada a objetos
o o
con una metodolog´ bien conocida de desarrollo estructural.
ıa
Asimilaci´n: usar una metodolog´ orientada a objetos para
o ıa
desarrollar sistemas de software, pero que siguen el modelo
tradicional del ciclo de vida del software.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 16/32
17. Clasificacion de los metodolog´ OO (5/6)
´ ıas
Análisis Análisis
Estructurado Orientado a
Análisis
Objetos
Diagramas de
Flujo de datos + Diagramas de
MRE clases
Diseño
Diseño
Orientado a
estructural Diseño
Objetos
Tablas de
Diagramas de
estructura
clases + objetos
Programación Programación
estructurada Realización Orientada a
Objetos
Datos
Estructuras + Tipos de datos
Funciones abstractos +
Herencia
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 17/32
18. Clasificacion de los metodolog´ OO (6/6)
´ ıas
La orientaci´n a objetos tiene la necesidad de una vista organizada
o
y manejable del desarrollo del software en todas las fases del
modelo del ciclo de vida del software.
Esta demanda ha sido satisfecha por el Lenguaje de Modelado
Unificado (UML) y por herramientas CASE tales como Rational
Rose.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 18/32
19. Los lenguajes de muy alto nivel
Son lenguajes que trabajan en scripts, son de m´s alto nivel con
a
menos escritura
1000 Scripting
Instrucciones/declaración Visual Basic
100 Java
Tcl/Perl
C++
C
10
Ensamblador
Programación de sistemas
1
Grado de escritura
Ejemplos: Perl, PHP, Python, Tcl/Tk, Visual Basic
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 19/32
20. Perl
Puede verse como la uni´n de: el shell, awk y sed.
o
Tambi´n permite el uso de objetos.
e
Tiene una gran cantidad de “m´dulos”: www.cpan.org
o
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 20/32
21. ´
¿Cual es el mejor paradigma?
Procedural
Orientado a objetos
Alto nivel
Deben conocerse y dominarse todos los paradigmas
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 21/32
22. Realizaciones
Los lenguajes de alto nivel pueden usar en programas cortos,
de r´pido desarrollo, que se ejecutar´n unas pocas veces.
a a
Tambi´n en programas para tratamientos de textos.
e
Los procedurales en programas peque˜os donde queremos
n
muy alta eficiencia.
OO debe usarse en grandes proyectos de software donde se
tiene una clara identificaci´n de los objetos. Para realizar
o
interfaces de usuario.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 22/32
23. ´
Interfaces graficas con Qt
Ventana
principal
Widgets
Ventana de
dibujo
Evento de ratón
Evento de teclado
Evento de reloj
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 23/32
24. Realizaciones
¿Qu´ tanto es grande?
e
XMIPP se cambi´ a objetos en tres a˜os.
o n
El sistema de administraci´n de conferencias se hizo
o
procedural.
¿Se puede forzar el uso de objetos?
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 24/32
25. Aplicaci´n
o Comparaci´n
o Raz´n de
o Raz´n de
o
c´digo
o esfuerzo
Aplicaci´n de base
o Ver. C++: 2 meses: 60
de datos
Ver. TCL: 1 d´ ıa
Instalaci´n y prue-
o Aplicaci´n de prueba en C:
o 47 22
ba de un sistema de 272,000 lineas, 120 meses,
c´mputo
o Aplicaci´n C FIS: 90,000
o
lineas, 60 meses. Versi´n o
Tcl/Perl: 7,700 lineas, 8
meses
Biblioteca de base Versi´n en C++: 2-3 meses
o 8-12
de datos Versi´n Tcl: 1 semana
o
Escaner de seguri- Versi´n en C: 3,000 lineas,
o 10
dad: Ver. Tcl: 300 lineas
Simulador e interfaz Versi´n en Java: 3,400 li-
o 2 3-4
neas, 3-4 semanas, Versi´no
en Tcl: 1,600 lineas, < 1 se-
mana
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 25/32
26. Modelos del sistema SMC
Diagrama general de casos de uso
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 26/32
27. Diagrama de estados de un art´
ıculo
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 27/32
28. ˜
Diseno
Diagrama de subsistemas
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 28/32
29. Implementacion: Disposicion f´
´ ´ ısica de los
archivos
Disposici´n f´
o ısica de los archivos
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 29/32
30. Conclusiones
La programaci´n OO tuvo un crecimiento muy grande en los 1990s
o
Aunque todav´ se debate los beneficios de OO, a treinta a˜os de su
ıa n
invenci´n, OO todav´ seguir´ us´ndose
o ıa a a
Para usar OO deben aplicarse las t´cnicas de Ingenier´ de Software.
e ıa
Deben dominarse los tres paradigmas: alto nivel, OO, procedural.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 30/32
31. Esta presentaci´n puede encontrarse en:
o
http://delta.cs.cinvestav.mx/˜fraga/Charlas/
Referencias:
L.F. Capretz, A brief history of the Object-Oriented Approach,
Software Engineering Notes (ACM SIGSOFT), pp 1-10, vol 28, no
2, March 2003
J.K. Ousterhout, Scripting: Higher level programming for the 21st
century, IEEE Computer Magazine, pp 23-30, March 1998.
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 31/32
32. ´
El Departamento de Computacion, Cinvestav
Ofrecemos:
1. Maestr´ en Ciencias en Computaci´n
ıa o
2. Doctorado en Ciencias en Computaci´n
o
http://www.cs.cinvestav.mx
Dr. Luis Gerardo de la Fraga Cinvestav Evoluci´n de la Programaci´n Orientada a Objetos
o o 32/32