Clase II OO Modulos de software Modulo es un conjunto de rutinas y estructuras de datos para cumplir un servicio dado. Ejemplo: Las rutinas incluidas en stdio.h Un modulo se puede integrar con otros modulos y al final formar un programa Un servicio de un modulo como una funcionalidad que se le proporciona a un usuario. El usuario puede ser un programador e interactuar con el modulo via un lenguaje de programacion. Un usuario que invoca comandos para accesar a las funciones del modulo. Otro usuario tenga interaccion con el modulo usando una interfaz grafica o GUI Arquitectura de un modulo. * Tiene un conjunto de servicios. * Cada servicio tiene un nombre y se le alimenta con un conjunto de entradas predefinidas * Al invocar el servicio se aplica un procesamiento dependiendo de las entradas y se genera un resultado * El resultado se retorna como parte de la invocacion del servicio Un conjunto de modulos forman un sistema de software Las caracteristicas de un modulo son: * Correcto. Ajustarse a las especificaciones * Robusto. Debe reaccionar ante casos imprevistos. * Reutilizable. Se pueda usar con otro modulos. * Extendible. Se debe poder agregar nuevas funciones Objetos Objeto es una entidad que existe en la realidad y tiene caracteristicas que lo hacen unico. Objeto es un elemento que nos proporciona servicios. Un objeto permite almacenar informacion, es una extension del concepto de estructuras de datos. El objeto conoce la manera de manipular sus estructuras de datos internas. Es decir, los algoritmos de manipulacion existen dentro del objeto. Un objeto tiene: Propiedades o atributos. Es la informacion asociada con el objeto. Las propiedades se representan como estructuras de datos, internas al objeto. Servicios o metodos. Son un conjunto de funciones para manipular las propiedades del objeto. Acciones sobre las estructuras de datos. Objeto = Propiedades + Servicios Un objeto es un repositorio de informacion, tiene propiedades para almacenar dicha informacion y la procesa con los servicios. Un objeto es una entidad autonoma que esta esperando por ser invocada. Un mensaje es una peticion a un objeto para que aplique un servicio. El mensaje contiene los datos necesarios para invocar al servicio. Al recibir el mensaje, el objeto implanta el servicio invocando un metodo. Un metodo oculta el procesamiento interno de como se procesa el servicio. Esto se conoce como encapsulamiento. "Cuando interactuen con un objeto, se deben preguntar QUE es lo que hace, no como. No se pregunte por lo que se puede hacer con las estructuras de datos, sino lo que ellas pueden hacer por ti" Todo objeto tiene una clasificacion. La clasificacion permite definir una clase, que son las caracteristicas de un objeto, desde la perspectiva de quien lo clasifica. Instancia u objeto es un ejemplar de una clase. Un objeto puede tener varias clasificaciones o clases. Una clase puede tomar definiciones de una clase o varias clases ya existentes Existen jerarquias de clases. Una clase puede tomar HERENCIA de otras clases, que es tomar las definiciones de sus antecesores. Pueden existir clases abstractas, las cuales no tienen un ejemplo (o ejemplar) en el mundo. Un objeto tiene los servicios de la clase de la cual proviene. Si un objeto esta asociado a una jerarquia de clases, el objeto tiene los servicios de cada clase de la jerarquia. Cuando se invoca un servicio del objeto, si la clase inicial no contien dicho servicio, puede tomar el servicio de sus antecesores. Polimorfismo es la capacidad de un objeto de aplicar un servicio de distinta manera, dependiendo del medio ambiente donde se desenvuelve. Objeto, propiedad, metodo, clase, encapsulamiento, herencia, jerarquia de clases, polimorfismo, cliente, proveedor, antecesor, sucesor. Ejemplo. Tenemos que clasificar los inventos del Coyote para comerse al Correcaminos. ACME es la fabrica de objetos. Cohete, hoyo ambulante son clases y lo que compraba el coyote eran objetos o instancias de las clases. El coyote veia un catalogo de clases. Podia combinar cada objeto, por medio de la definicion de las clases del objeto, para crear un nuevo objeto. Por ejemplo, tenia un patin y un cohete, y los combinaba para crear un objeto cohete-patin El cohete patin si iba en la tierra, pues corria, esto es polimorfismo. En el aire, podia volar. En caso de error, disparaba excepciones. Sistema de computo. Un objeto es una ventana. Otro objeto es un manejador de archivos. Las clases son Venta y ManejadorArchivos. Ventana tiene como servicio mostrar informacion ManejadorArchivos tiene como servicios, crear, borrar, leer, escribir, cerrar un archivo VentanaManejadorArchivos combina las dos clases y puede mostrar, crear, borrar,leer, escribir, cerrar un archivo Programacion orientada a objetos es indicar un conjunto de instrucciones para manipular objetos y definir nuevas clases Un programa orientado a objetos es una simulacion del mundo. Al ejecutarse un POO se crean objetos y estos actuan. Lenguajes orientados a objetos. Un lenguaje orientado a objetos es aquel que por medio de sintaxis nos permite implantar una clase, herencia, polimorfismo y crear objetos. El lenguaje tiene instrucciones para construir una clase. Siempre se parte de la definicion de una clase.No se parte de la idea de un programa principal Ejemplos de lenguajes Simula. Inventado para simular eventos discretos. SmallTalk. Extendio la idea de Simula, pero introdujo nuevas definiciones genericas y la meta era que fuera un lenguaje facil de programar C++. Extiende las ideas de lenguaje C, pero tiene capacidad para definir clases, lo invento Bjarne Stroustrup. Es un lenguaje bastante utilizado, de hecho Microsoft es quien lo usa mas. Eiffel. El autor es Bertrand Meyer, su idea fue construir un lenguaje 100% orientado a objetos, con fundamentos teoricos de teoria de objetos. Objective C. Fue inventado para subsanar las deficiencias de C++ (Brad Cox es un inventor) y se utilizo mucho en una de las plataformas mas interesantes OO, NeXT. Java. El lenguaje fue inventado para ser incluido en dispositivos pequeños, con pocos recursos. Java como un lenguaje OO. Corre sobre una maquina virtual, implicando que es interpretado. Cada instruccion de la maquina virtual mide 8 bits. Inventado por Sun Microsystems, en 1995, en Mayo en el evento de Sun Programmers fue anunciado. Sus inventores son James Gosgling y Bill Joy. Java se basa en la sintaxis de C++, y suprime las definiciones complejas de C++, es un dialecto de C++. No tiene herencia multiple, pero se usa un concepto conocido como interfases Con java se asocian conceptos como Applets, servlets, Jini, Jaxta, sistemas pequeños.