160 likes | 318 Views
Francisco Montoya González Programación. Programación Orientada a Objetos. Ventajas del paradigma Orientado a Objetos. Gestionar la complejidad. Facilita la reutilización de modelos ya existentes.
E N D
Francisco Montoya González Programación Programación Orientada a Objetos
Ventajas del paradigma Orientado a Objetos • Gestionar la complejidad. • Facilita la reutilización de modelos ya existentes. • Ofrece mecanismos de abstracción permitiendo modelar un sistema a diferentes niveles y utilizar el mismo formalismo en diferentes etapas del ciclo de vida de este sistema. • Producir modelos fáciles de leer y validar autorizando la descripción de interfaces de alto nivel entre componentes.
Desventajas del paradigma Orientado a Objetos • La curva de aprendizaje requiere educación y entrenamiento constante. • La tecnología está en continua evolución. • La gente necesita tiempo para cambiar de paradigma. • La gente no desea cambiar porque todavía cree en el paradigma estructurado.
Los tipos abstractos de datos o los TADS. Los tipos de datos • Valores: Datos o grupos de datos manipulados en un proceso. • Escalares: compuestos por un solo item. • Agregados: Compuestos por varios items. • Tipo de datos: Conjunto de valores a los que se le asocia una forma especifica de almacenamiento y sobre los cuales se pueden efectuar un conjunto de operaciones. • Nativos: Tipos predefinidos en los lenguajes. • Definidos por el usuario: los que define en programador.
Abstracción • Es un mecanismo de la mente humana fundamentalmente para la comprensión de fenómenos o situaciones que involucran una gran cantidad de detalles. • Abstraer es, por lo tanto, un proceso mental que tiene dos aspectos: • Destacar los detalles relevantes del objeto en estudio. • Ignorar los detalles irrelevantes del objeto. Se entienden irrelevantes en ese nivel de abstracción. Si descendemos de nivel, es probable que algunos de estos detalles pasen a ser relevantes. • La abstracción permite representar fenómenos complejos siguiendo un metodo jerárquico, es decir, por sucesivos niveles de detalle.
Tipos abstractos • Valor o valores y operaciones asociadas a los mismos que se definen mediante una especificación que es independiente de cualquier representación. • El calificativo de abstracto expresa precisamente esta cualidad de independencia de la representación. • Para definir un nuevos tipo, el programador debería comenzar por decidir que valores y despues que operaciones le parecen relevantes y útiles para operar con ellos. Es decir, debería comenzar por establecer la interfaz que van a tener los usuarios con dicho tipo.
Las clases • Conjunto de objetos que comparten: • Las misma propiedades (atributos). • El mismo comportamiento (métodos). • Las misma relaciones con otros objetos (mensajes). • La misma semántica dentro del sistema. • Las clases encapsulan los atributos y las operaciones sobre los mismos. Esto trae las siguientes ventajas: • Proteccion de los datos de accesos indebidos • Disminucion del acoplamiento entre clases • Se favorece la modularidad y el mantenimiento • Los atributos de una clase no deben ser manipulables directamente por el resto de objetos • Una clase es un molde para construir objetos.
Declarando una clase C++ class nombreClase { private: datos o metodos privados protected: datos o metodos privados public: datos o metodos privados } instacia Tenga en cuenta que al momento de crear una clase, la creacion de instancias de la clase es opcional.
Visibilidad de los miembros de una clase • Las palabras private, protected y public son opcionales. Por defectos todos los miembros de una clase son privados a menos que se indique lo contrario. Estas declaraciones se pueden colocar en cuaquier orden. • Privados (private): Solo pueden ser accedidos por una funcion miembro, de la propia clase. • Protegidos (protected): Se pueden acceder por funciones declaradas por esa clase, por cualquier clase que herede de ella. • Publicos (public): Permite el acceso a la clase desde funciones externas.
Clases: Notación Gráfica • Cada clase se representa en un rectángulo con tres compartimientos: • nombre de la clase • atributos de la clase • operaciones de la clase
Clases: Notación Gráfica • Otros ejemplos: • Circulo? • Cuenta bancaria? • Fecha?
Ejemplo. Clase Fecha class fecha {private: int mes; int dia; int anho;public: Fecha(int = 7, int = 4, int = 2008); void estFecha(int, int, int); void mostrarFecha(void); }; Fecha::Fecha(int mm, int dd, int aaaa) {mes = mm;dia = dd;anho = aaaa; } Void Fecha::estFecha(int mm, int dd, int aaaa) {mes = mm; dia = dd; anho = aaaa; } Void Fecha::mostrarFecha(void) {cout<<“La fecha es ”<< cout<<mes<<“/”<<dia<<“/”<<anho; }
Objetos • Un objeto es la instancia de una clase o categoría y se diferencian entre ellos por los valores de sus atributo (variables).
Bibliografía • Bronson, Gary J. C++ para ingeniería y ciencias. Ed. Thomson, 2007. • Larma, Craig. UML y patrones: Introducción al análisis y diseño orientado a objetos. Ed. Prentice Hall, 1999. • Joyanes Aguilar, Luis. Programación Orientada a Objetos: Concepto, modelado, diseño y condificación en C++. McGraw-Hill. 1996. • Rumbaugh, James y otros. Object-Oriented Modeling and Design. Prentice Hall. 1991. • Booch, Grady. Análisis y Diseño Orientado a Objetos con Aplicaciones. Addison Wesley. 2 edición. 1996.