Programación Avanzada

Slides:



Advertisements
Presentaciones similares
Encapsulamiento y Abstracción
Advertisements

Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Herramientas de polimorfismo y herencia en C++
Patrones de Diseño Carolina Perozo Julio Padrón Anthony Accardi.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Detalles Generales sobre Java
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Diagrama de Clases SPI 2016.
2012-BM5A. Introducción Todos los lenguajes de programación son distintos entre si. Sin embargo, pueden ser agrupados según la forma de pensar y estructurar.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Sonia.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Flujos de datos Un flujo es un canal por donde fluyen los datos.
PROGRAMACIÓN ORIENTADA A OBJETOS SEGUNDA UNIDAD: “CLASES, OBJETOS Y MÉTODOS” IRVING YAIR SALAS CHÁVEZ ING. EN SISTEMAS COMPUTACIONALES - ITSLP.
Unidad Didáctica 11 Reutilización Versión 1.0.0
Clases y Objetos.
Programación Avanzada
Polimorfismo de ‘tipo’ (en la herencia)
Ingeniería Directa. Generar código a través de modelos se le conoce como ingeniería directa.
Programación Avanzada
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Herencia y Clases Abstractas
Diseño y Programación Orientada a Objetos
Herencia Implementación en Java.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Polimorfismo y Funciones Virtuales
Programación Orientada a Objetos
EL MUNDO DE LOS OBJETOS PROGRAMANDO EN JAVA.
Fundamentos de la programación orientada a objetos
Programación Avanzada
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Métodos en Java.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
IPOO 2 cuatrimestre 2017 Departamento de Ciencias e Ingeniería
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Diseño y Programación Orientada a Objetos
Persistencia y Serialización en Java con Archivos
Sonia Rueda Herencia y Polimorfismo
Polimorfismo y Métodos Virtuales
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
DIAGRAMA DE CLASES 2016 Ramos, Pablo.
Listas Dinámicas.
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia en C#.
DIAGRAMA DE CLASES.
Introducción a las estructuras de datos
Plantillas (Templates)‏
Diagrama de Clases Un diagrama de clases esta compuesto por los siguientes elementos: Clase: atributos, métodos y visibilidad. Relaciones: Herencia, Composición,
Tópicos Avanzados de Programación (TAP3501)
String, random y stream en java
Programación Modular Programación de Computadoras - Hugo Vega Grupo2: Reina Rodríguez Miriam Salluca.
IPOO 2 cuatrimestre 2018 Departamento de Ciencias e Ingeniería
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS. INTRODUCCION. ¿ Qué es UML ?. UML, por sus siglas en Ingles, Unified Modeling Languaje.(Lenguaje Unificado.
INTRODUCCIÓN A UML Oscar Miguel Alonso Moreno. INTRODUCCIÓN A UML  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
INTRODUCCIÓN A UML.  QUE ES UML?  PARA QUE SE UTILIZA  COMPONENTES  DIAGRAMAS.
Templates (en español: Pantillas, modelos, patrones)‏
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Unida III: Análisis y Diseño de Sistemas Orientado a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Clases abstractas e interfaces
Transcripción de la presentación:

Programación Avanzada Conceptos Básicos de Orientación a Objetos (2da parte)

Operación y Método Operación: especificación de una transformación o consulta que un objeto puede ser llamado a ejecutar Método: implementación de una operación para una determinada clase Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Operación y Método class Usuario { private: int idUsuario; DateTime* nacimiento; public: int getEdad() { ... // un cierto algoritmo } }; Método para getEdad() en Usuario Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Polimorfismo y Redefinición Es la capacidad de asociar diferentes métodos a la misma operación Cuando en una jerarquía de generalización se encuentra más de un método asociado a la misma operación, se dice que dicha operación está redefinida Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Redefinición de Operaciones Class Usuario { private: int permisos; // set de bits public: virtual int getPermisos(); }; int Usuario::getPermisos(){ return permisos; } class Admin: public Usuario { static int ADMIN_SISTEMA; int getPermisos(); int Admin::getPermisos(){ int p = Usuario::getPermisos(); return (p | ADMIN_SISTEMA); Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Interfaz Una interfaz “es un conjunto de operaciones al que se le aplica un nombre” No define un estado para las instancias de estos elementos, ni tampoco asocia un método a sus operaciones Este conjunto de operaciones caracteriza el (o parte del) comportamiento de instancias de clases Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Interfaz (2) Una clase realiza una interfaz en forma análoga a cómo un tipo implementa un TAD Cuando una clase C realiza una interfaz I, puede decirse que una instancia de C: “Es de C” o “es un C” pero tambien que, “Es de I” o “es un I” Esto permite quebrar las dependencias hacia “las implementaciones” cambiándolas por una sola dependencia hacia “la especificación” (la interfaz) Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Interfaz (3) Cualquier clase derivada de Archivo será un Archivo. // Una interfaz para implementar lecturas secuenciales sobre algo class Archivo { public: // lee hasta n caracteres y avanza // la última posición leída y devuelve // su contenido en el string virtual string read(int n) = 0; // pone la última posición leída al // principio del archivo virtual void rewind() = 0; // dice en qué posición se va a leer virtual int position() = 0 // dice cuántos caracteres hay disponibles virtual int available() = 0 virtual ~Archivo() {}; }; Cualquier clase derivada de Archivo será un Archivo. Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización Es una relación entre una especificación y su implementación Una forma posible de realización se produce entre una interfaz y una clase Se dice que una clase C realiza una interfaz I si C implementa todas las operaciones declaradas en I, es decir provee un método para cada una Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización (2) class CPPArchivo: public Archivo { private: fstream f; CPPArchivo(const string& ruta); // implementación de interfaz Archivo string read(int n); void rewind(); int position(); int available(); // operaciones extra void close(); void write(const string& s); void setPosition(); ~CPPArchivo(); }; Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización(3) CPPArchivo::CPPArchivo(const string& ruta): f(ruta) {} // ... string CPPArchivo::read(int n){ char *buffer = new char[n]; f.read(buffer, n); string res = string(buffer, n); delete buffer; return res; } int CPPArchivo::position(){ return f.tellg(); CPPArchivo::~CPPArchivo(){ f.close(); Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización (4) Una interfaz puede ser entendida como la especificación de un rol que algún objeto debe desempeñar en un sistema Un objeto puede desempeñar más de un rol: Una clase puede realizar cualquier cantidad de interfaces Un rol puede ser desempeñado por objetos de características diferentes: Una interfaz puede ser realizada por cualquier cantidad de clases Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización (5) Es posible tipar a un objeto (además de como es usual mediante la clase de la cual es instancia) también mediante una de las interfaces que su clase realiza Por lo que si un objeto es declarado como de tipo I (en una lista de parámetros, como atributo, etc.), siendo I una interfaz, significa que ese objeto no es una instancia de I (lo cual no tiene sentido) sino que es instancia de una clase que realiza la interfaz I Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización (5) class Comparable { public: // devuelve algo mayor a 0 si this > b // 0 si this = b, o algo negativo si this < b virtual int comparar(Comparable *b) = 0; virtual ~Comparable() {}; }; class Representable { // devuelve una representación del objeto virtual string toString(); virtual ~Representable() {}; } Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización (6) class Integer: public Comparable, public Representable { private: int val; public: Integer(int val); int getVal(); string toString(); int comparar(Comparable *c); }; ostream& operator <<(ostream& o, Representable& r) { return o << r.toString(); } void Utilidades::ordenar(Comparable **arr, int largo) { // ;) } Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización (7) Este mecanismo permite abstraerse de la implementación concreta del objeto declarado En lugar de exigir que dicho objeto presente una implementación determinada (es decir, que sea instancia de una determinada clase), se exige que presente un determinado comportamiento parcial (las operaciones declaradas en I) Este comportamiento es implementado por una clase que realice la interfaz, y de la cual el objeto en cuestión es efectivamente instancia Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Realización (8) Notar que en la definición previa se asume que la clase que realiza la interfaz es concreta Es posible sin embargo que una interfaz sea realizada por una clase abstracta En cuyo caso debe declarar todas las operaciones de la interfaz aunque no esta obligada a implementarlas a todas Si C es abstracta y realiza la interfaz I, entonces un objeto declarado como de tipo I debe ser instancia de alguna subclase concreta de C (o de otra clase que realice la interfaz I) Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)

Dependencia Es una relación asimétrica entre un par de elementos donde el elemento independiente se denomina destino y el dependiente se denomina origen En una dependencia, un cambio en el elemento destino puede afectar al elemento origen Las asociaciones, generalizaciones y realizaciones caen dentro de esta definición general Pero son una forma más fuerte de dependencia En esos casos la dependencia se considera asumida y no se expresa explícitamente (por ejemplo en Diagramas de Clases de Diseño) Programación Avanzada - Curso 2017 Conceptos Básicos de Orientación a Obj (2da parte)