Você está na página 1de 72

La complejidad del software

- complejidad del dominio del problema. - La dificulta de gestionar el dominio del desarrollo. - La posible flexibilidad a travs del software.

Problemas del lenguaje


O Debe estar basado en objetos,

basado en clases y capaz de tenerherenciade clases. Muchos lenguajes cumplen uno o dos de estos puntos; muchos menos cumplen los tres. La barrera ms difcil de sortear es usualmente la herencia. O La dificultad de gestionar el proceso de desarrollo. O Es necesario descomponer el problema en centenares de mdulos independientes

Otros problemas
O problemas de fiabilidad,

mantenimiento, adaptacin a los cambios y escalabilidad. O LA flexibilidad a travs del software. O Tenemos en cuenta otros tipos de lenguajes de programacin que facilitan el rendimiento solicitado para una implementacin

Crisis del software


O Los proyectos no terminaban en

plazo. O Los proyectos no se ajustaban alpresupuestoinicial. O Baja calidad del software generado. O Software que no cumpla las especificaciones. O Cdigosin mantener que dificultaba la gestin y evolucin del proyecto.

Ciclo de vida del software


O Anlisis O Diseo O Implementacin O Depuracin O Mantenimiento

Calidad del software


O Funcionalidad O Confiabilidad O Usabilidad O Eficiencia O Sostenibilidad O Portabilidad O Escalabilidad

Programacin
O Laprogramacines el proceso de

disear, codificar,depurary mantener elcdigo fuentede programas computacionales. El cdigo fuente es escrito en unlenguaje de programacin.

Abstraccin
O Laabstraccinconsiste en aislar

un elemento de su contexto o del resto de los elementos que lo acompaan.

El papel de la abstraccin
O A grandes rasgos, laabstraccin, permite que

dispongamos de las caractersticas de un objeto que necesitemos. Si necesitamos el objetoPersona, podramos poner nombre, edad, direccin, estado civil, etc. Si lo necesitamos en unsistemaadministrativo, pero, si lo requerimos para el rea debiologa , dentro de sus atributos quiz tengamos, ADN, RND, Gen x1, Gen x2, etc. Y los atributos antes mencionados no sean requeridos. En general, podemos decir quePersonacuenta con todos los atributos mencionados aqu, pero, por el proceso deabstraccinexcluimos todos aquellos, que no tiene cabida en nuestrosistema. Se define como un mtodo por el cual rescata los datos relevantes e ignora los datos irrelevantes.

Modelo mental
O Un modelo mental es una vista simplificada de

cmo funcionan las cosas de modo que se pueda interactuar con ellas. O En resumen el proceso mental de construccin de modelos es lo mismo que el diseo del software aunque este es el nico. O Cuando la programacin era basada en instrucciones binarias, esta era manejada por los programadores a travs de abstracciones para evitar que tuvieran que recordar la secuencias de bits. O Los procedimientos y funciones fueron unos de los primeros mecanismos de abstraccin que se utilizaron ampliamente en los lenguajes de programacin. El procedimiento proporciono la primera posibilidad de ocultacin de la informacin.

TAD
O Untipo de dato abstracto(TDA)

oTipo abstracto de datos(TAD) es unmodelo matemticocompuesto por una coleccin deoperacionesdefinidas sobre un conjunto dedatospara el modelo.

Programacin Estructurada
O Laprogramacin estructuradaes

una tcnica para escribir programas (programacindecomputadora) de maneraclara. Para ello se utilizan nicamente tres estructuras: secuencia, seleccin e iteracin; siendo innecesario el uso de la instruccin o instrucciones detransferencia incondicional(GOTO, EXIT FUNCTION, EXIT SUB o mltiples RETURN).

Paradigmas de programacin
O conjunto de teoras, y mtodos que

juntos representan un medio de organizacin del conocimiento. O 1. El Paradigma Concurrente 2. El Paradigma Lgico 3. El paradigma funcional

O Jenkins y Glasgow sugieren que

existen cuatro clases de estilos de programacin: O 1. orientado a procedimientos (algoritmos) O 2. orientado a objetos (clases y objetos) O 3. orientado a lgica (expresado en clculo de predicados) O 4. orientado a reglas (reglas if-then)

Razones de POO
O La OO (orientacin a objetos) es especialmente O

O O

adecuada para realizar determinadas aplicaciones, sobre todo realizacin de prototipos y simulacin de programas Los mecanismos de encapsulacin de POO soportan un alto grado de reutilizacin de cdigo, que se incrementa por sus mecanismos de herencia. En el entorno de la base de datos, la OO se adjunta bien a los modelos semnticos de datos para solucionar las limitaciones de los modelos tradicionales. Aumento espectacular de los lenguajes de programacin orientados a objetos. Interfaces de usuarios grficos (por iconos) y visuales. Las interfaces de usuarios de una aplicacin manipulan la entrada y salida del usuario. Por consiguiente, su funcin principal es la comunicacin con el usuario final.

Orientacin a objetos
O Conjunto de disciplinas que

desarrollan y novelizan software que facilitan la construccin de sistemas complejos a partir de componentes. O Los conceptos y herramientas orientados a objetos son tecnologas que permiten que los problemas del mundo real sean expresado de modo fcil y natural.

Abstraccin
O Es uno de los medios con el cual nos

enfrentamos con la complejidad inherente al software.

Encapsulamiento
O EnProgramacin modular, y ms

especficamente enprogramacin orientada a objetos, se denominaencapsulamientoal ocultamiento del estado, es decir, de los datos miembro, de un objeto de manera que slo se puede cambiar mediante las operaciones definidas para ese objeto. O Cadaobjetoest aislado del exterior, es un mdulo natural, y la aplicacin entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados a un objeto contra su modificacin por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones.

Modularidad
O Lamodularidades la capacidad

que tiene unsistemade ser estudiado, visto o entendido como la unin de varias partes que interactan entre s y que trabajan para alcanzar un objetivo comn, realizando cada una de ellas una tarea necesaria para la consecucin de dicho objetivo.

Jerarqua
O Propiedad que permite una

ordenacin de las abstracciones. Las dos jerarquas mas importantes de un sistema complejo son: O Estructura de clase O Estructura de objetos

Polimorfismo
O Enprogramacin orientada a

objetoselpolimorfismose refiere a la capacidad para que variasclasesderivadas de una antecesora utilicen un mismo mtodo de forma diferente.

Otras propiedades
O El modelo objeto ideal no slo tiene

las propiedades anteriormente citadas, existes las siguientes: O Concurrencia O Persistencia O Generosidad O Manejo de excepciones

Reutilizacin del software


O Se define la reutilizacin de software

como el uso de cualquier tipo de artefacto (tambin llamado activo), o parte del mismo, creado con anterioridad, en un nuevo proyecto.

Reglas para la modularidad


O Correspondencia directa O Pocas interfaces O Interfaces pequeas (acoplamiento

dbil) O Interfaces explcitas O Ocultacin de informacin

Diseo de mdulos
O Divisin de un sistema grande en

mdulos ms pequeos y a la vez manejables, no siempre esta divisin es garanta de un sistema bien garantizado. O Como la propiedad de un sistema que ha sido descompuesto en un conjunto de mdulos cohesivos y dbilmente acoplados.

Acoplamiento de mdulos
O El acoplamiento es una medida del

grado de interdependencia entre mdulos. El objetivo es minimizar el acoplamiento entre mdulos, es decir, minimizar su interdependencia, de modo que un mdulo sea afectado lo menos posible por la estructura de otro mdulo.

O Sin embargo, dado que un sistema

debe realizar un conjunto de funciones o tareas de un modo organizado, no puede constar de un conjunto de mdulos totalmente desacoplados. O Como define Booch, un sistema modular dbilmente acoplado facilita. O La sustitucin de un mdulo por otro, de modo que slo unos pocos mdulos sern afectados por el cambio.

Cohesin de modulos
O Se define como lamedida de fuerza

o relacin funcional existente entre las sentencias o grupos de sentencias de un mismo mdulo. Un mdulocohesionado ejecutar una nica tarea sencilla interactuando muy poco o nada con el resto de mdulos del programa. Se persigue que los mdulos tengan una alta cohesin.

Tipos de datos
O Un tipo de dato es un conjunto de

valores y conjunto de operaciones definidas por esos valores. O Un valor depende de su representacin y de la interpretacin de la representacin, por lo que una definicin informal de un tipo de dato es: O Representacin + operaciones.

Abstraccin lenguajes de programacin


O Los lenguajes de programacin son

herramientas mediante los cuales diseadores de lenguajes pueden implementar los modelos abstractos. O La abstraccin ofrecida por los lenguajes de programacin se pueden dividir en dos categoras: O Abstraccin de datos (perteneciente a los datos). O Abstraccin de control (perteneciente a las estructuras de control).

Abstraccin de control
O Describe el orden en que se ejecutan

las sentencias o grupos de sentencias (unidades de programa). Las unidades de programa se utilizan como bloques bsicos.

O Los subprogramas constituyen una

herramienta potente de abstraccin, ya que durante su implementacin el programador describe como funcionan los subprogramas. O Las abstracciones y estructuras de control se clasifican en estructuras de control a nivel de sentencia y a nivel de unidades

Abstraccin procedimental
O Se basa en la utilizacin de

procedimientos o funciones sin preocuparse de cmo se implementan. Esto es posible si conocemos que hace el procedimiento, la sntesis y semntica.

Abstraccin de datos
O Es la tcnica de programacin que

permite inventar o definir nuevos tipos de datos (tipos de datos definidos por el usuario) adecuados a la aplicacin que se desea realizar. O La abstraccin de datos es una tcnica muy potente que permite disear programas mas cortos, legibles y flexibles.

O l1. la representacin: eleccin de las

estructuras de datos. O l2. las operaciones: eleccin de los algoritmos.

TAD
O Un TAD (tipo abstracto de datos) se

compone de estructuras de datos y los procedimientos que manipulan esas estructuras de datos. O TAD = representacin (datos) + operaciones (funciones y procedimientos) O Las operaciones desde un enfoque orientado a objetos se suelen denominar mtodos. O La estructura de un tipo abstracto de dato (clase), desde un punto de vista global, se compone de interfaz y de la implementacin

Ventajas de los TAD


O Los TAD proporcionan varios beneficios

al programador como los siguientes: Permite una mejor conceptualizacin y modelamiento del mundo real. mejora la representacin y facilita la comprensin. Clarifica los objetos basados en estructuras y comportamiento comunes. Mejora la robustez del sistema. O Mejora el rendimiento O Separa la implementacin de la especificacin. O Permite la extensibilidad del sistema

Implementacin de las TAD en C


O Se hace por medio de funciones, con

ayuda de la sentencia return. O C no es capaz de realizar verificaciones de tipos durante el proceso de compilacin separada. O No existe en C ninguna estructura para encapsular datos y funciones en una sola entidad. O como C no soporta el tipo de dato clase la implementacin del TAD se realiza mediante typedef, los datos con struct y la implementacin de las operaciones con un conjunto de funciones.

Abstraccin de datos y TAD


O La abstraccin define el dominio y

estructura de los datos junto con la coleccin o conjunto de operaciones que acceden a los datos. O Permite al diseador centrarse en como se usan los datos en el sistema para resolver el problema sin tener que preocuparse de cmo se representan y tratan los datos en la memoria de la computadora

TADS en C++
O En C++ la herramienta de

abstraccin de datos que permite la creacin de nuevos tipos se denomina clase (class). una clase en C++ consta de miembros dato y funciones miembro, a travs de los cuales se puede acceder a los detalles internos de la clase.

O Una clase se define como una

estructura en C (struc), con la diferencia de que puede contener tres secciones: publica, privada y protegida, y que pude definirse con las palabras reservadas struc y class.

Clase PILA en C++


O Unapila(stackeningls) es una lista

ordinal oestructura de datosen la que el modo de acceso a sus elementos es de tipoLIFO(del inglsLast In First Out,ltimo enentrar, primero ensalir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el rea deinformticadebido a su simplicidad y ordenacin implcita de la propia estructura. O Para el manejo de los datos se cuenta con dos operaciones bsicas:apilar(push), que coloca un objeto en la pila, y su operacin inversa,retirar(o desapilar,pop), que retira el ltimo elemento apilado.

O La implementacin de un tipo

abstractos de datos es oculta. O En la mayora de los lenguajes de programacin orientados a objetos, los tipos abstractos de datos se implementan mediante clases

Que es POO
O La programacin Orientada a objetos

(POO) es una forma especial de programar, ms cercana a como expresaramos las cosas en la vida real. O Grady Booch, autor del mtodo de diseo orientado a objetos, define la POO como:

O Un mtodo de implementacin en el

que los programas se organizan como colecciones cooperativas de objetos, cada uno de los cuales representan una instancia de alguna clase, y cuyas clases son todas miembros de una jerarqua de clases unidas mediante relaciones de herencia. O 3 importantes partes en la definicin de la POO O Utiliza objetos, no algortmicos O Cada objeto es una instancia de una clase O Las clases se relacionan unas con otras.

Objeto
O Podemos definir un objeto como un

conjunto complejo de datos y programas que poseen estructura y forman parte de una organizacin. O Un objeto no es un dato simple, sino que contiene en su interior cierto nmero de componentes bien estructurados.

Mtodos
O Los mtodos son las operaciones que

pueden realizarse sobre el objeto, que normalmente estarn incorporados en forma de programas (cdigo) que el objeto es capaz de ejecutar y que tambin pone a disposicin de sus descendientes a travs de la herencia.

Mtodos y Mensajes
O Son las funcionalidades asociadas a los

objetos. Cuando estamos programando las clases las llamamos mtodos. Los mtodos son como funciones que estn asociadas a un objeto. Los procedimientos y funciones denominados mtodos o funciones miembro, determinan como actan los objetos cuando reciben un mensaje. Un mensaje es la accin que hace un objeto. Un mtodo es el procedimiento que se invoca para actuar sobre un objeto un mtodo especifica como se ejecuta un mensaje.

Clases
O Una clase es la descripcin de un

conjunto de objetos; consta de mtodos y datos que resumen caractersticas comunes de un conjunto de objetos. Una clase es la declaracin de un tipo de objeto Las clases son declaraciones de objetos, tambin se podran definir como abstracciones de objetos. O Cada vez que se construye un objeto a partir de una clase se esta creando lo que es una instancia de esa clase lo que quiere decir que un objeto no es mas que una instancia de una clase.

Definicin de objetos
O La programacin orientada a objetos

es una de las formas ms populares de programar y viene teniendo gran acogida en el desarrollo de proyectos de software desde los ltimos aos. Esta acogida se debe a sus grandes capacidades y ventajas frente a las antiguas formas de programar.

O El objeto consta de O Estado (atributos). O Operaciones o comportamiento

(mtodos invocados por mensajes).

Identificacin de objetos
O La identificacin de objetos se tiene

examinando la descripcin del problema (anlisis gramatical) y localizando los nombres o clusulas nominales. O Una vez identificados los objetos es preciso identificar los atributos y las separaciones que actan sobre ellos. O Los atributos describen la abstraccin de caractersticas individuales que poseen todos los objetos

Duracin de los objetos


O Los objetos son entidades que existen

en el tiempo; por ello deben ser creados o instanciados (a travs de otros objetos). O Estas operaciones se hace a travs de operaciones especiales llamadas constructores en C++ o inicializadores.

Objetos frente a clases


O Una variable es una instancia de un

tipo; al igual que un objeto es una instancia de una clase; sin embargo, una clase es mas expresiva que un tipo.

Diferencia entre clase y objetos


O Un objeto es un simple elemento, no O O O O O O O

importa lo complejo que pueda ser. Los objetos tienen las siguientes caractersticas: l1.Se agrupan en tipos llamados clases l2.Tiene datos internos que definen su estado actual l3.Soportan ocultacin de datos l4.Pueden heredar propiedades de otros objetos l5.Pueden comunicarse con otros objetos pasando mensajes l6.Tiene mtodos que definen su comportamiento

Datos internos
O Como primer paso vamos a plantear la

O O O O

descripcin de los registros y datos relevantes que utiliza la aplicacin, ya que son el principal medio de intercambio de informacin entre las diversas partes que componen el programa. Respecto a los siguientes puntos: Mapa completo de argumentos entre funciones. Descripcin completa de datos. Descripcin completa de parmetros, tanto en sentencias#definecomo dentro del cdigo. dudo de que la relacin esfuerzo/utilidad justifique este trabajo, largo y tedioso.

Ocultacin de objetos
O Cuando se utiliza un objetos no

necesitamos conocer todos los detalles de la implementacin. Esta practica de limitacin del acceso a cierta informacin interna se llama ocultacin de datos. O C++ soporta las caractersticas de ocultacin de datos con las palabras reservadas public, private y protected.

Comunicacin entre objetos


O ACTIVACIN DE OBJETOS O MENSAJE O PASO DE MENSAJES

Atributos
O Describen el estado del objeto;

consta de dos partes: O l* Nombre del atributo O Valor del atributo O Los objetos simples pueden constar de tipos primitivos como enteros, carcter, reales, boolean o tipos simples definidos por el usuario. Los objetos compuestos pueden constar de pilas, conjuntos, listas, etc.

Mtodos
O Describen el comportamiento

asociado a un objeto. Representen las acciones que pueden realizarse por un objeto o sobre un objeto. O Cada mtodo tiene un nombre y un cuerpo que realiza la accin o comportamiento asociado con el nombre del mtodo.

Clases
O Descripcin abstracta de un grupo de

objetos cada uno de los cuales se diferencia por un estado especifico y es capaz de realizar una serie de operaciones. O Las clases son una descripcin abstracta de un grupo de objetos que comparten caractersticas (atributos) y operaciones (mtodos). O Las propiedades de una clase deben ser significativas dentro del entorno de la aplicacin, es decir deben ayudarnos en la identificacin clara y unvoca de cada uno de los objetos.

Comparacin con tablas de datos


O Una clase se puede considerar como

la extensin de un registro. al igual que una clase, una tabla define los nombres y los tipos de datos de la informacin que contenga. O Una clase ser un mdulo y un tipo. Como mdulo la clase encapsula los recursos que ofrece a otras clases (sus clientes). Como tipo describe un conjunto de objetos o instancias que existen en tiempo de ejecucin.

O Los objetos ocupan espacio en

memoria, y en consecuencia existen en el tiempo, y debern crearse. Dos operaciones comunes en cualquier clase son: Constructor: una operacin que crea un objeto y / o analiza su estado. Destructor: una operacin que libera el estado de un objeto y / o destruye el propio objeto.

Herencia
O La herencia supone una clase base y una

jerarqua de clases que contienen las clases derivadas de la clase base. O La herencia nos permite crear estructuras jerrquicas de clases donde es posible la creacin de sub-clases que incluyan nuevas propiedades y atributos. Estas sub-clases admiten la definicin de nuevos atributos, as como crear, modificar o inhabilitar propiedades.

Clases abstractas
O Permite actuar como un depsito de

mtodos y atributos compartidos para las subclases de nivel inferior. O Las clases abstractas no tienen instancias directamente. Se utilizan para agrupar otras clases y capturar informacin que es comn al grupo. O La clase abstracta puede incluir mtodos implementados y no implementados o abstractos, miembros dato constantes y otros no constantes.

Sobrecarga
O Es una propiedad que describe una

O O O

caracterstica adecuada que utiliza el mismo nombre de operacin para representar operaciones similares que se comportan de modo diferente cuando se aplican a clases diferentes. En lenguajes de programacin estructurados o convencionales soportan sobrecarga para algunas de las operaciones de tipos de datos dentro de las cuales estn: enteros reales caracteres

Ligadura dinmica
O En lenguajes de programacin estructurados o O O O O

convencionales soportan sobrecarga para algunas de las operaciones de tipos de datos dentro de las cuales estn: enteros reales Caracteres la ligadura esttica permite un tiempo de ejecucin mas rpido que la ligadura dinmica que necesita resolver estos enlaces en tiempos de ejecucin , sin embargo en la ligadura esttica se ha de especificar en tiempo de compilacin las operaciones exactas a que responder una invocacin del mtodo especifica as como conocer sus tipos.

Polimorfismo
O Una de las caractersticas

fundamentales de la OOP es el polimorfismo, que es la posibilidad de construir varios mtodos con el mismo nombre, pero con relacin a la clase a la que pertenece cada uno, con comportamientos diferentes. Esto conlleva la habilidad de enviar un mismo mensaje a objetos de clases diferentes.

O El polimorfismo es una nueva

caracterstica aportada por la OOP. Esta propiedad indica la posibilidad de definir varias operaciones con el mismo nombre, diferencindolas nicamente en los parmetros de entrada. Dependiendo del objeto que se introduzca como parmetro de entrada, se elegir automticamente cual de las operaciones se va a realizar.

Você também pode gostar