PROGRAMACION ORIENTADA A OBJETOS EN C++



Documentos relacionados
UAA-DSE Programación 2 / C++ Eduardo Serna-Pérez

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos

Unidad Didáctica 5: Introducción a la Programación Orientada a Objetos

Herencia. Implementación en Java

Clases y Objetos en C++

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Programación orientada a objetos I

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Programación orientada a Objetos (POO) La POO está compuesta por una serie de elementos que se detallan a continuación.

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Curso de Java POO: Programación orientada a objetos

PNFSI. Asignatura: Desarrollo de Software. Tema 1: Programación Orientada a Objetos

Tema: Herencia en C#.

Programación C++ (1 Parte) Dr. Oldemar Rodríguez Rojas Escuela De Informática Universidad Nacional

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

Guía práctica de estudio 08: Polimorfismo

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java

Herencia y Polimorfismo en C++

Edwin Andrés Cubillos Vega

Programación Orientada a Objetos (POO)

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

La Herencia. La primera línea de cada declaración debe incluir la sintaxis siguiente:

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos 01/02/2013 ING. PEDRO BELTRÁN CANESSA

Tema: Herencia en C#.

Curso de Java POO: Programación orientada a objetos

Modulo 11. Clases y Objetos en Java

Introducción a OOP. Programación Orientada a Objeto

Guía práctica de estudio 04: Tipos de clase

3. LA HERENCIA. Necesidad de la herencia

Conceptos Básicos. Programación Orientada a Objetos 2

PARADIGMA DE POO - CLASES

HERENCIA Y TIPOS. Articulo. Video Audio Altavoces. Amplificador

Programación Orientada a Objetos

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

Introducción a la Orientación a Objetos

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Programación Orientada a Objetos en C++

Tema 3. Herencia. Programación Avanzada. Jorge Badenas

Programación Orientada o Objetos

POO. Por tanto, una clase nos permite crear varios objetos que pueden realizar la misma función o funciones diferentes.

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

PHP orientado a objetos:

CONCEPTOS BÁSICOS PROGRAMACIÓN ORIENTADA A OBJETOS. Ing. Martha Tello

acceso Implementación de conceptos P.O.O. en Java Orientada a Objetos 2. Modificadores de en Java Temario

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

12. Tipos de atributos

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

INTRODUCCIÓN A LA POO EN C++

Introducción al Lenguaje "C++"

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

Programación de Sistemas de Archivos Secuenciales con Objetos en Lenguaje C++

Tema 2: Programación basada en Objetos

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

Introducción a Java. Introducción a Java. Programación I

Guía práctica de estudio 07: Herencia

POO: Clases y objetos

UML: Diagrama de Clases

Tema 3 Herencia en Java Parte 1. Programación Orientada a Objetos Curso 2015/2016

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

Informática I para Bachillerato

Programación orientada a objetos II

18. Interfaces Declaración de una interfaz

Introducción a la programación orientada a objetos

4. POLIMORFISMO. Figura 6: Funciones virtuales

Introducción a la Orientación a Objetos

Unidad III. Clases y objetos. 3.1 Definición de una clase.

Introducción. Introducción y conceptos de POO. En qué consiste la POO? Vocabulario. Definiciones

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

Programación Orientada a Objetos. Por Jesús Alberto Zamarripa, Northware Project Manager

Introducción y conceptos de POO

Transcripción:

PROGRAMACION ORIENTADA A OBJETOS EN C++ 1- INTRODUCCIÓN El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje clásico, muy extendido en la programación de sistemas. Se trata de una extensión del lenguaje C que presenta claras influencias del lenguaje Simula, que a su vez puede considerarse como el precursor de los lenguajes POO. El lenguaje C++ fue diseñado por Bjarne Stroustrup, cuyo objetivo era construir un C mejorado. El resultado es un lenguaje compilativo, extensión estricta del C, al que incorpora nuevas características, aunque no todas están relacionadas con la programación orientada a objetos. Los programas escritos en C son totalmente compatibles con los programas C++, aunque lo contrario no es cierto. Algunos autores dicen, que siendo C y luego C++ lenguajes muy cerca del hardware (orientados a la eficiencia), solo incorporan la POO en lo que no los degrade. Sin embargo, si lo comparamos con un lenguaje puro, digamos Smalltalk (esta comparación la hace Ravi Sethi en Lenguajes de Programación ) vemos que no hay nada que falte a C++. Es verdad que es híbrido, en C++ podemos programar en el estilo estructurado también, pero es esto un pecado? En C++ un programa consta de objetos. Los objetos son como los tipos abstractos de datos: Son un tipo de datos definido por el programador junto con un conjunto de operaciones que se pueden realizar sobre ellos. Son abstractos para diferenciarlos de los tipos de datos básicos definidos, por ejemplo int, char y double. Un objeto es una unidad que contiene datos y las funciones que operan sobre esos datos. A los elementos de un objeto se los conoce como miembros: las funciones que operan sobre los objetos se denominan métodos (o funciones miembro) y los datos se denominan miembros datos. Los objetos soportan una serie de características específicas de los mismos: Se agrupan en tipos denominados clases. Contienen datos internos que definen su estado actual. Soportan ocultación de datos. Pueden heredar propiedades de otros objetos. Pueden comunicarse con otros objetos enviando o pasando mensajes. Tienen métodos que definen su comportamiento. OBJETO DIAGRAMA DE UN OBJETO Miembros datos K Miembros Función (métodos) Kkjhfkk I N T E R F A Z Interior Exterior Lenguaje C++ - Página 1

Los objetos pueden ser activados mediante la recepción de mensajes. Un mensaje es una petición de un objeto a otro para que éste se comporte de una determinada manera, ejecutando uno de sus métodos, es decir los objetos de un programa se comunican entre sí mediante el paso o envío de mensajes. La notación utilizada para los mensajes es: nombre_ del _objeto.función _miembro o método En POO los objetos son miembros de una clase. Una clase es un tipo definido por el usuario, está formada por los métodos y los datos que definen las características comunes a todos los objetos de una clase. 2- CLASES El lenguaje C++ entiende por clase un tipo de dato definido por el programador que contiene toda la información necesaria para construir un objeto de dicho tipo y el conjunto de operaciones que permiten manejarlo (métodos). Las clases de C++ le permiten disfrutar de los beneficios de la modularidad, de la misma manera que en lenguajes tales como Ada o Modula-2. La construcción de las clases se hace de tal manera que se asegura el encapsulamiento de los objetos. Las clases en C++ soportan los conceptos: Encapsulamiento de datos Tipos abstractos de datos. El encapsulamiento de datos se produce cuando la representación interna de un objeto junto con sus operaciones, se encierran en la misma estructura (la clase). La clase define un tipo abstracto de dato. Una clase contiene elementos dato llamado miembros dato, y funciones que manipulan esos datos llamados miembros función o funciones miembro. Una clase se puede definir con una estructura (struct), una unión (union) o una clase (class). En el tipo class todos los miembros son por defecto privados. Las estructuras y uniones son clases en las que todos sus miembros son por defecto public, a no ser que se especifique lo contrario utilizando los especificadores de acceso. La sintaxis de una clase es: class nombre_clase miembro_1; miembro_2;... función_miembro_1( ); función_miembro_2( ); //Lista de miembros //funciones miembro Lenguaje C++ - Página 2

3- OBJETOS O INSTANCIAS DE UNA CLASE Los objetos o instancias de una clase se definen así: nombre_clase instancia_1 //instancia_1 es una instancia de la clase tipo nombre_clase 4- COMPONENTES La definición de una clase consta de dos partes: una declaración y una implementación. La declaración lista los miembros de la clase. La implementación o cuerpo define las funciones de la clase. Declaración de una clase class Contador long cuenta; public: void LeerValor(long); long ObtenerValor( ); Implementación de una clase void Contador ::LeerValor(long valor) cuenta=valor; } long Contador :: ObtenerValor( ) return cuenta; } :: operador de resolución de ámbito, identifica la clase a la que pertenece la función. 5- CONTROL DE ACCESO A UNA CLASE: VISIBILIDAD Una de las características fundamentales de una clase es ocultar tanta información como sea posible. Por consiguiente, es necesario imponer ciertas restricciones en el modo en que se puede manipular una clase y de cómo se puede utilizar los datos y el código dentro de una clase. Una clase puede contener partes públicas y partes privadas. Por defecto, todos los miembros definidos en la clase son privados. Para hacer las partes de una clase públicas (esto es, accesible desde cualquier parte de su programa) deben declararse después de la palabra reservada public. Todas las variables o funciones definidas después de public son accesibles a las restantes funciones del programa. Especialmente, el resto de su programa accede a un objeto a través de sus funciones y datos públicos. Dado que una característica clave de la POO es la ocultación de datos, debe tener presente que aunque puede tener variables públicas, desde un punto de vista Lenguaje C++ - Página 3

conceptual debe tratar de limitar o eliminar su uso. En su lugar, debe hacer todos los datos privados y controlar el acceso a ellos, a través de funciones públicas. El mecanismo para hacer privados datos o funciones es anteponerle la palabra reservada private. Por defecto, una clase es privada, aunque es conveniente especificar la visibilidad expresamente, por legibilidad y por compatibilidad con versiones posteriores que pueden recomendar su uso obligatorio. Existen tres clases de usuarios de una clase: 1- La propia clase 2- Usuarios genéricos 3- Clases derivadas Cada usuario tiene diferentes privilegios o niveles de acceso. Cada nivel de privilegio de acceso se asocia con una palabra reservada: 1- private 2- public 3- protected Por defecto todo lo declarado dentro de una clase es privado (private), y sólo se puede acceder a ella con las funciones miembros declaradas en el interior de la clase. Los miembros que se declaran en la región pública (public) se puede acceder a través de cualquier objeto de la clase de igual modo que se accede a los miembros de una estructura en C. Los miembros que se declaran en la región protegida (protected) sólo se pueden acceder por funciones miembros declaradas dentro de la clase, por funciones miembro de clases derivadas de esta clase. VISIBILIDAD DE UNA CLASE No accesible desde una clase externa Accesible desde una clase externa CLASE Privada Datos y/o funciones Pública Datos y/o funciones class artículo float precio; //privado por defecto char nombre[20]; //privado por defecto public: void indicar(void); //público.. Lenguaje C++ - Página 4

6- FUNCIONES MIEMBRO ESPECIALES CONSTRUCTORES Un constructor es una función especial que sirve para construir o inicializar objetos. Se caracteriza por: Tener el mismo nombre de la clase que inicializa. No devuelve valores Puede admitir parámetros como cualquier otra función. Pueden existir más de un constructor, e incluso no existir. Si no se define ningún constructor de una clase, el compilador generará un constructor por defecto. Las funciones constructoras se llaman cuando se define el objeto. 7- HERENCIA Y POLIMORFISMO - HERENCIA Y JERARQUIA DE CLASES La herencia se manifiesta con la creación de un tipo definido por el usuario (clase), que puede heredar las características de otra clase ya existente o derivar las suyas a otra nueva clase. Cuando se hereda, las clases derivadas reciben las características (estructuras de datos y funciones) de la clase original, a las que se pueden añadir nuevas características o modificar las características heredadas. La derivación de las clases consigue la reutilización efectiva del código de la clase base para sus necesidades. C++ utiliza un sistema de herencia jerárquica. Es decir se hereda una clase de otra, creando nuevas clases a partir de clases ya existentes. Solo se pueden heredar clases, no funciones ordinarias ni variables. Una clase utilizada para derivar nuevas clases se denomina clase base (padre, superclase o ascendiente). Una clase creada de otra clase se denomina clase derivada o subclase. La terminología supone una clase base o clase padre, y una clase derivada o clase hija. Esta relación supone un orden de jerarquía simple. A su vez, una clase derivada puede ser utilizada como una clase base para derivar más clases. Por consiguiente se puede construir jerarquías de clases, en las que cada clase sirve como padre o raíz de una nueva clase. La siguiente figura representa un diagrama de jerarquía de clases. Lenguaje C++ - Página 5

JERARQUIA DE CLASES Figura clase base Clases derivadas Figura_círculo Figura_rectángulo Figura_rectángulo_sólido - TIPOS DE HERENCIA En C++ existen dos tipos de herencia: simple y múltiple. La herencia simple es aquella en la que cada clase derivada hereda de una única clase. Cada clase tiene un solo ascendiente, y puede tener muchos descendientes. La herencia múltiple es aquella en la cual una clase derivada tiene más de una clase base. clase base Clase derivada Clase derivada - TIPOS DE DERIVACION Los especificadores de acceso a la clase base definen los posibles tipos de derivación: public, private y protected. El tipo de acceso a la clase base especifica cómo recibirá la clase derivada a los miembros de clase base. Si no se especifica un acceso a la clase base, C++ supone que su tipo de herencia es privado. Los accesos a la clase base pueden ser: Lenguaje C++ - Página 6

public: Los miembros públicos de la clase base son miembros públicos de la clase derivada. Los miembros protegidos de la clase base son miembros protegidos de la clase derivada. Los miembros privados de la case base permanecen privados a la clase derivada. private: Todos los miembros públicos y protegidos de la clase base son miembros privados de la clase derivada. Los miembros privados de la clase base permanecen privados a la clase derivada. protected: todos los miembros públicos y protegidos de la clase base son miembros protegidos de la clase derivada. Los miembros privados de la clase base permanecen privados a la clase derivada. Ejemplo de una clase Class Persona private: char nombre[30]; int edad; public: Persona ( ); Constructor char vernombre ( ); void modificarnombre (char); int veredad ( ); void modiedad (int); ~Persona ( ); Destructor } char Persona::verNombre( ) return nombre; void modificarnombre(char nuevonombre) nombre=nuevonombre; int veredad( ) return edad; void modiedad( int nuevaedad) edad=nuevaedad Lenguaje C++ - Página 7