Sie sind auf Seite 1von 24

UNVERSIDAD NACIONAL

MAYOR DE SAN MARCOS


Facultad de Ingeniería de
Sistemas e Informática
EAP Ingeniería de Sistemas
Algorítmica II
Semana 01
Paradigmas de la Programación
G. A. Salinas
Agenda
1. Paradigmas de la Programación
- Evolución de los lenguajes de programación
2. Características de la POO
3. Calidad de Software
4. Referencias
1. Evolución de los lenguajes
• Los lenguajes se adaptan a los nuevos requerimientos
gracias a la mejora de la capacidad del hardware.
• La evolución de los lenguajes esta ligada a requerimientos
cada vez mas complejos.
• La forma (paradigma) de programar se acerca mas a los
conceptos del dominio del problema a resolver
(abstracción)
1. Paradigmas
Paradigma de programación:
• Conjunto de conceptos que guían el proceso de construcción de programas.
• Estos conceptos controlan o guían la forma de pensar.

Un lenguaje se identifica con algún paradigma de


programación:
Nº Paradigma Lenguajes
1 Spaguetti Fortran, Cobol, Basic
2 Estructurado y Modular Pascal, C, Python
3 Orientado a Objetos C++, Java, C#, Pyton, Eiffel
4 Funcional
5
2. Orientado a objetos
Técnica de Programación que organiza el
software como una colección de objetos para
realizar la funcionalidad de un sistema.
2. Orientado a objetos
• Estrategia de desarrollo: el software se
organiza en torno a módulos (clases) que son
deducidos de los tipos de objetos del dominio de
la aplicación.
• Es un nuevo enfoque de programación centrado
en la abstracción del dominio del problema.
- Paradigma estructurado y modular:
- Centrado en módulos o subprogramas (lo que hace el
sistema)
- Estrategia de desarrollo: refinamiento sucesivo (top down)
2. Desarrollo Orientado a objetos
• Identificar los objetos relevantes del problema.
• Describir los tipos de objetos y sus
propiedades.
• Encontrar las operaciones para los tipos de
objetos.
• Identificar relaciones entre los objetos.
• Utilizar los tipos de objetos y sus relaciones para
estructurar el software.
2. OO
• Análisis OO
Examina los requerimientos desde la perspectiva de CLASES y OBJETOS
encontrados en el vocabulario del dominio del problema.

• Diseño OO
Involucra el proceso de descomposición OO y una notación para describir
modelos lógicos y físicos, así como estáticos y dinámicos.

• Programación OO
• Utiliza OBJETOS como parte fundamental de construcción de bloques.
• Cada Objeto es una instancia de una clase.
• Las clases se relacionan entre si de varias formas incluso de herencia.
2. Ejemplo: Objeto Vehículo
Tiene propiedades como:
•Velocidad
•Color
•Tipo combustible

Operaciones que puede realizar:


•Arrancar
•Parar
•Mover
•Girar a la derecha
2. Clase de objetos
Los objetos con propiedades similares y el
mismo comportamiento se agrupan en clases:
2. Clase Vehiculo

Vehiculo
Velocidad
Color
Tipo de combustible
Arrancar()
Parar()
Mover()
Girar a la derecha()
2. Relaciones entre objetos

Existen 4 tipos de
relaciones entre A B
objetos: De uso,
asociación, agregación
y composición

A
Hay una relación
entre clases que es
la herencia
B
2. Clase Vehículo

miAuto
Persona Vehiculo

Una persona tiene información sobre el auto


que posee.
2. Clase Vehículo

Vehículo

Auto Camioneta Bus

Camioneta ES UN Vehículo.
Camioneta es una especialización de Vehículo
que tiene nuevas propiedades y funcionalidades.
3. Calidad de Software
• La ingeniería de sistemas tiene por objetivo
crear/producir sistemas de información de
calidad.
• La OO propone una técnica para mejorar la
calidad.
• La calidad de los sistemas de información se
describe como la combinación de varios
factores internos y externos.
3. Calidad de Software
• Factores externos
- Pueden ser detectados por los usuarios
(requerimientos)
- Calidad externa es la que realmente preocupa.
• Factores internos
- Solo los perciben los disenadores y programadores
- Medio para conseguir la calidad externa.
• Objetivo:

Buenas propiedades Satisfacer


internas requerimientos
3. Factores externos
• Corrección:
- Es la capacidad de los productos software de realizar con exactitud
su tarea (cumplir con su especificación).
• Robustez
- Es la capacidad de los productos software de reaccionar
adecuadamente ante situaciones excepcionales.
• Extensibilidad:
- Es la facilidad de adaptación de los productos software a los
cambios de especificación.
- La dificultad de adaptación es proporcional al tamaño de la
aplicación.
• Reutilización
- Es la capacidad de un producto software de ser utilizado en la
construcción de diferentes aplicaciones.
- Mejora de la productividad.
• Otros Factores
- Eficiencia, portabilidad, facilidad de uso, facilidad de reparación de
errores.
3. Factores internos: Modularidad
Contribuye a la calidad de los sistemas de información
•Definición:
- Propiedad que tiene un sistema que ha sido descompuesto en un
conjunto de módulos cohesivos y débilmente acoplados.
•Alta cohesión:
- Modulo con responsabilidades altamente relacionados y que no
hace gran cantidad de trabajo (modulo especializado).
• Bajo acoplamiento
-Un modulo que depende de pocos módulos
-Facilita la comprensión del código
-Limita el impacto de los errores
3. Principios de diseño Modular
• Ocultamiento de la información:
- Consiste en ocultar los detalles de la implementación al código
cliente, reduciendo así el acoplamiento.
- Se seleccionan un conjunto de propiedades que se hacen
publicas a los clientes (interfaz) y se oculta el resto
(implementación)
• Principio abierto-cerrado:
- Un modulo esta abierto si esta disponible para ser adaptado:
añadir o modificar funcionalidad.
- Un modulo esta cerrado si esta disponible para ser utilizado.
- La extensibilidad del código se ve favorecida por módulos que
estén abiertos y cerrados al mismo tiempo.
- Objetivo. Extender un modulo sin afectar al código que ya hacia
uso de ese modulo.
3. Mantenimiento de software
• Fase del ciclo de vida del sistema que sucede después
que haya sido entregado.
• Corresponde al mayor periodo en la vida de una
aplicación y se estima un costo del 70% .
• Tipos de mantenimiento:
- Adaptación a cambios en la especificación.
- Reparación de errores.
• El mantenimiento se ve favorecido Por:
- Extensibilidad.
- Facilidad de reparación de errores.
- Reutilización.
3. OO y calidad de software
• Mantenimiento
- Los objetos (conceptos) de un problema son
entidades mas estables que las funciones.
• Extensibilidad
- La estructura del software “mimetiza” los
conceptos del dominio de la aplicación.
• Reutilización
- La reutilización de código forma parte de los
conceptos básicos de la OO (herencia).
3. Programación OO
Sistemas muy Grandes

AGRUPAMIENTOS(cluster)
Las CLASES, OBJETOS y los
MODULOS no son suficientes
Referencias
Paradigmas de Programación [ultima actualización: 22.Enero.2014]
[Accesado 15.Febrero.2014, 2200 horas]

http://es.wikipedia.org/wiki/Paradigma_de_programaci%C3
%B3n

STAUGAARD C., Andrew Jr. (1998). Técnicas Estructuradas y Orientadas a


Objetos. Prentice Hall Hispanoamericana S.A..

Das könnte Ihnen auch gefallen