Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.

Slides:



Advertisements
Presentaciones similares
el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Advertisements

Paso 1 Portada YO SOY EUROPEO Comisión Europea.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO Resumen. 24 de Junio de 2005.
4. ANÁLISIS FACTORIAL Introducción Modelo factorial ortogonal
Curso de java básico (scjp)
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Definición de Clases y Variables de referencia.
Herencia en C#.
Fundamentos de la programación orientada a objetos
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
Lenguaje de programación Java
Informática II Clase 12: Flujos Diego Fernando Serna Restrepo
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Arquitectura CLARO-TECNOTREE
REFERENCIA AL OBJETO DE LA CLASE BASE
Clase 3: Punteros y Referencias
INFORMATICA I Arreglos 1 CLASE 17.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Comité Nacional de Información Bogotá, Julio 27 de 2011 Consejo Nacional de Operación de Gas Natural 1 ESTADISTICAS NACIONALES DE OFERTA Y DEMANDA DE GAS.
Aplicación del paradigma orientado a objetos
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
PROGRAMACION ORIENTADA A OBJETOS
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Índice Sesión I Bloque I (09:30 a 10:30 Horas) Configuración Inicial
Programación Orientada a Objetos en Java
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Programación Orientada a Objetos usando C++
Medio de tele-comunicación
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Estructura de Datos En C++
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Introducción a Java II.
Lic. Rosemary Torrico Bascopé
Abstracción de los datos y Orientación a Objeto Clase 13.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Ciencias.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González ELO329.
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González Versión Original de Kip Irvine ELO329.
Programación Orientada a Objetos
Introducción a UML DIAGRAMA DE CLASES Departamento de Informática
Sesión 11: Herencia (1) – herencia simple /1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Sesión 12: Herencia (2) – herencia múltiple /1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
Sesión 10: Sobrecarga (2) /1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad.
Introducción a la Programación Orientada a Objetos (POO)
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend)‏ Agustín J. González ELO329.
UNIVERSIDAD TECNICA DE BABAHOYO EXTENSION DE QUEVEDO  Espinales Lisseth G RUPO N º 2 Temas:  Herencia  Polimorfismo  Encapsulamiento  2 Ejemplos Estudiante.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Clases “ Es una Abstracción de un elemento del mundo real ”
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Modelado UML Diagrama de Clases
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Transcripción de la presentación:

Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2

C HISTE DEL D ÍA Informática II 2011/2 2

C ONTENIDO Informática II 2011/2 3 Contención 1 Delegación Herencia privada Clases y funciones amigas

C ONTENCIÓN Informática II 2011/2 4 Una clase o estructura en C++ es capaz de contener cualquier otro tipo de datos, inclusive otras clases o estructuras class Empleado{ Telefono numTel; Nombre Nombre; } class Telefono{ int tel; } class Nombre{ char *name; } Un objeto instanciado de una clase, es declarado como miembro de otra.

Informática II 2011/2 5 C ONTENCIÓN EN C++ 5 class Carro { public: Motor suMotor; Fabricante suMarca; Color suColor; Propietario suDuenio; } class Motor { public: … private: … } class Fabricante { public: … private: … } class Propietario { public: … private: … } Se dice que la clase contiene miembros de otras clases class Color { public: … private: … }

1 Es posible acceder a estas clases miembro y a su vez a sus variables y métodos miembro mediante los operadores (.) (->) según sea el caso. 2 De este modo se puede construir una nueva clase a partir de otra sin el uso de herencia. Informática II 2011/2 6 C ONTENCIÓN

E L COSTO DE LA C ONTENCIÓN Copiando por valor Cuando se pasan objetos de la clase por valor a una función esto provoca mayor número de llamadas al constructor al crear copias de dicho objeto. Es importante notar que el uso de la clase Empleado debe pagar el precio del llamado al constructor de las clases Telefono, y Nombre y los respectivos espacios en memoria de sus variables miembro. Esto se hace evidente cada vez que se instancie un objeto tipo Empleado o cuando se haga una copia de este. Informática II 2011/2 7

C ONTENIDO Informática II 2011/2 8 Contención 1 Delegación Herencia privada Clases y funciones amigas

D ELEGACIÓN La delegación Método para otorgar funcionalidades a las clases, a partir de otras clases. Se puede llevar a cabo Al contener clases que le otorguen la funcionalidad requerida Heredar dichas funciones de otra clase base. Informática II 2011/2 9

C ONTENCIÓN Informática II 2011/2 10 H ERENCIA

H ERENCIA O C ONTENCIÓN ? Informática II 2011/2 11 Contenido. Un objeto declarado como miembro de otra clase, contenido por esa clase. Delegación. Uso de los atributos de una clase contenida para llevar a cabo funciones no disponibles para la clase que contiene. Implementar en terminos de. construcción de una clase utulizando las capacidades de otra sin usar la herencia pública.

H ERENCIA O C ONTENCIÓN ? Existe algún miembro de la clase base que no debería estar en la clase derivada? R/= Si, entonces no hay lugar a usar herencia pública. Informática II 2011/2 12 ¿La clase que usted esta creando, debe usar varias clases del mismo tipo para realizar su trabajo? R/= Si, entonces será necesario el uso de contención.

H ERENCIA O C ONTENCIÓN ? Será necesario heredar de una clase base para poder tomar ventaja de sus métodos virtuales y miembros privados? R/= Si, entonces tanto la herencia pública como la privada puede dar solución a este escenario. Informática II 2011/2 13

C ONTENIDO Informática II 2011/2 14 Contención 1 Delegación Herencia privada Clases y funciones amigas

H ERENCIA P UBLICA Con este tipo de herencia se respetan los comportamientos originales de las visibilidades de la clase Base en la clase Derivada. class Derivada: public Base Herencia pública: Informática II 2011/2 15

H ERENCIA P ROTEGIDA Con este tipo de herencia, todo componente público y protegido de la clase Base, será protegido en la clase Derivada, y los componentes privados, siguen siendo privados. class Derivada: protected Base Herencia protegida Todas las funciones públicas en la clase base pasana ser protegidas en la clase derivada Informática II 2011/2 16

H ERENCIA P RIVADA Con este tipo de herencia todo componente de la clase Base, será privado en la clase Derivada (las propiedades heredadas serán privadas aunque estas sean públicas en la clase Base) class Derivada: private Base Herencia privada: La herencia privada te da acceso a los miembros protegidos de la clase base No siempre se desea dejar expuesta las funcionalidades o variables miembro de una clase base dentro de una clase derivada Informática II 2011/2 17

H ERENCIA P RIVADA Es usada si se desea ocultar parte de la funcionalidad de la clase base Cuando se hereda de manera privada, todos los miembros públicos de la clase base se vuelven privados, si se desean que sea visibles, se debe colocar el nombre del método (sin valor de retorno o parámetros de entrada) en la sección pública de la clase derivada. Informática II 2011/2 18 class Base1 { public: char f() const { return 'a'; } int g() const { return 2; } float h() const { return 3.0; } }; class Derived : Base1 { // Private inheritance public: Base1::f; // Name publicizes member Base1::h; }; int main() { Derived d; d.f(); d.h(); d.g(); }

H ERENCIA P RIVADA Se dice que una clase esta implementada en términos de otra clase (oculta parte de la funcionalidad de la clase base) Los que son públicos en la superclase, pasan a ser privados en la subclase, pero son accesibles en la subclase. Los que son privados en la superclase, siguen siendo privados en la subclase e inaccesibles. En las funciones miembro de la subclase no se tiene acceso a los miembros privados heredados, pero sí a los miembros públicos heredados, aunque se hayan convertido en privados. Informática II 2011/2 19

C ONTENIDO Informática II 2011/2 20 Contención 1 Delegación Herencia privada Clases y funciones amigas

Informática II 2011/2 21 A CCEDIENDO A LOS ATRIBUTOS PRIVADOS Informática II 21 class Punto { public: float x; float y; Punto(); Show(); } class Punto { private: float x; float y; public: Punto(); Show(); float getX(){return x;} float getY(){return y;} } float Distancia(Punto p1, Punto p2) { float dx, dy; dx = p1.x – p2.x; dy = p1.y – p2.y; return sqrt(dx*dx + dy*dy) } float Distancia(Punto p1, Punto p2) { float dx, dy; dx = p1.getX() – p2.getX(); dy = p1.getY() – p2.getY(); return sqrt(dx*dx + dy*dy) }

C LASES Y FUNCIONES AMIGAS Informática II 2011/2 22 Se ha visto que todos aquellos miembros de una clase que sean declarados protegidos o privados, no podrán ser accedidos directamente desde el exterior de la clase. Existen ocasiones en que se desea que una clase pueda acceder directamente a los miembros privados de otra, en estos casos es posible declarar a la función/clase que se desea compartir como amiga. class Clase1{ public: friend class Clase2; // Clase 2 será amiga de clase 1, // por lo tanto podrá acceder a // todos los miembros de Clase 1 // directamente } class Clase2{... } La declaración de la clase amiga no es bidireccional

No siempre se desea declarar todos los miembros de una clase como amigas. En estos casos será posible declararlas explícitamente. Informática II 2011/2 23 C LASES Y FUNCIONES AMIGAS class ParteNodo { // Haciendo que otra función miembro sea amiga friend void ListaParte::Insertar(Parte *); // Haciendo amiga a una función global friend int AlgunaFuncion(); //.... }

Informática II 2011/2 24 F UNCIONES AMIGAS La implementación de la función Distancia, no hace uso del operador de ámbito (::). –Porque?? La función es amiga de Punto, pero no pertenece a la clase. Las funciones amigas no contienen el argumento implícito this. Una función puede ser amiga de una clase y miembro de otra. 24 class Punto { private: float x; float y; public: Punto(); Show(); float getX(){return x;} float getY(){return y;} friend float Distancia(Punto, Punto); } float Distancia(Punto p1, Punto p2){ float dx, dy; dx = p1.x – p2.x; dy = p1.y – p2.y; return sqrt(dx*dx + dy*dy) }

Informática II 2011/2 25 P ROBLEMAS DE SEGURIDAD ?? Uno de los pilares de la POO es la ocultación de la información. –¿Proveen entonces las funciones amigas una puerta trasera para burlar la ocultación de la información?. ¿Como se preserva esto?. –Es la clase la que dice quiénes son sus amigos y pueden acceder a sus miembros privados. –Ninguna función puede autodeclararse amiga y acceder a la privacidad de una clase sin que la propia clase tenga conocimiento de ello. 25

Informática II 2011/2 26

B IBLIOGRAFÍA Pagina de Referencia lenguaje C++: ception/exception/ ception/exception/ dexcept/ dexcept/ Sams Teach yourselft C++ in 21 days: Heading1 27 Informática II 2011/2

Informática II 2009/2 28