Programación Orientada a Objetos en C++

Documentos relacionados
Clases y Objetos en C++

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

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

Principios de Computadoras II

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

Una función es un miniprograma dentro de un programa. Las funciones contienen varias

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

Tema 6: Clases. Índice

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

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

12. Tipos de atributos

Programación orientada a objetos II

Tema: Clases y Objetos en C#. Parte II.

Unidad 2. Elementos Intermedios del Lenguaje

Programación orientada a objetos I

Declaración de una clase

Objetos y memoria dinámica

Modulo 11. Clases y Objetos en Java

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

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

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

UNIDAD 4 IMPLEMENTACION DE PROPIEDADES DE LOS OBJETOS JAVA

Tema: Funciones Virtuales y Polimorfismo.

Tema: Funciones Virtuales y Polimorfismo.

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

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 + +.

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

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

POO: Clases y objetos

PROGRAMACIÓN ORIENTADA A OBJETOS

3.4 Clases y Objetos 05/04/2004. Conceptos Generales. Modificadores de la Clase. Estructura de una Clase. Variables Miembros

Temas. Taller III 2007 Gentile,Vazquez

Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc.

Clases en C++ Universidad de Carabobo Facultad Experimental de Ciencias y Tecnología Algoritmos y Programación II. Enero de 2005

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

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

Tipos de Datos Recursivos

Tema 2: Lenguajes de Programación de Sistemas: C

Herencia. Implementación en Java

Tipos Recursivos de Datos

Guía práctica de estudio 08: Polimorfismo

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

Tema 3b: Estructura General de un programa en Java

PUNTEROS (Apuntadores)

Guía práctica de estudio 04: Clases y objetos

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

Programación Orientada a Objetos

Elementos de un programa en C

PRÁCTICA 6 REPASO TEMAS 1 Y 2

Edwin Andrés Cubillos Vega

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

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

Programación Orientada a Objetos (POO)

Formatos para prácticas de laboratorio

Tema 6: Memoria dinámica

Algoritmo, Estructuras y Programación II Ing. Marglorie Colina

Programación Orientada a Objetos

o Una clase en Java se compone de: o A los anteriores se les conoce también como miembros de la clase.

Unidad Didáctica 1. Introducción a la Programación Orientada a Objetos (POO) Conceptos de clase, objeto e interfaz. Atributos y métodos

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica

05 Funciones en lenguaje C. Diego Andrés Alvarez Marín Profesor Asociado Universidad Nacional de Colombia Sede Manizales

Clases, Objetos y Métodos en Java

El lenguaje C++ A partir del lenguaje C Entorno de programación Visual C++

INTRODUCCIÓN A LA POO EN C++

CLASE 9 -HERENCIA Y POLIMORFISMO

Tema: Plantillas en C++.

CAPITULO 6: FUNCIONES

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

2.2 Nombres, Ligado y Ámbito

Punteros y Memoria Dinámica II

Las clases están compuestas por un conjunto de miembros. (datos y funciones) también se conocen como (atributos y métodos)

Funciones Definición de función

Funciones Propias con C++ (funciones definidas por el usuario)

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

LA PALABRA CLAVE THIS EN JAVA. CONTENIDO NULL POR DEFECTO DE UN OBJETO. SOBRECARGA DE NOMBRES. EJEMPLOS (CU00654B)

GESTIÓN DE MEMORIA DINÁMICA

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

CONTENIDO DE LA LECCIÓN 15

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

RELACIÒN ENTRE LA PROGRAMACIÒN ORIENTADA A OBJETOS Y LA ESTRUCTURADA

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

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

Informática Ingeniería en Electrónica y Automática Industrial

Tema 2: Programación basada en Objetos

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

CAPITULO 2: VARIABLES Y CONSTANTES

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

PROGRAMACION ORIENTADA A OBJETOS EN C++

Los Constructores(1)

4/14/2010. Objetivos. Que es JAVA. JAVA como plataforma. Reglas Sintácticas y de Codificación Básicas de JAVA

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Para crear un arreglo de cualquier tipo de elementos la sintaxis es:

Transcripción:

Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202

Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase Implementación de Atributos y métodos Modificadores de Acceso a métodos y atributos El constructor y destructor Declaración de objetos Creación de objetos de forma dinámica Uso de objetos Manipulando Atributos Invocando métodos El puntero this Arreglos de Objetos Métodos Setter y Getter

Estructura y declaración de una clase Preprocesador El preprocesador analiza el archivo fuente antes de la fase de compilación real, y realiza las sustituciones de macros y procesa las directivas. Una directiva de preprocesador es una línea cuyo primer carácter es un #. Por ejemplo, la directiva #define identificador, sirve para definir macros, éstas suministran un sistema para la sustitución de palabras. Si se intenta definir un identificador de macro que ya esté definido, se producirá un warning, si la definición no es exactamente la misma. Para ello se usan: #ifndef identificador #define identificador.. #endif

Estructura y declaración de una clase Después de creado el proyecto, hay que añadir un nuevo archivo: File/New/Source File ó CTRL+N En este archivo, el primer paso es colocar la directiva del PreProcesador

Estructura y declaración de una clase Ahora se empieza a transcribir la clase. Palabra reservada para definir una clase. Por lo general un archivo contiene una sola clase, y el nombre de éste debe coincidir con el nombre de la clase. Los modificadores definen el acceso a los atributos y a los métodos. Los elementos entre <> indica que son opcionales. Un atributo puede ser un tipo de dato primitivo o puede ser otro objeto cuya clase ya se ha definido.

Estructura y declaración de una clase Generalmente, la implementación de una clase se realiza en un archivo independiente, de extensión.cpp ó.h lo que ayuda a la reutilización del código. Posteriormente se pueden incluir como archivos de cabecera en un programa usando la directiva de compilador #include.

Modificadores de acceso Cuando se crea una nueva clase en C++, se puede especificar el nivel de acceso que se quiere para los atributos de las instancias y los métodos definidos en la clase por medio de los siguientes modificadores de acceso: public Cualquier clase puede acceder a las propiedades y métodos públicos. protected Sólo las clases derivadas y aquellas situadas o no en el mismo paquete, pueden acceder a las propiedades y métodos protegidos. private Las variables y métodos privados sólo pueden ser accedidos desde dentro de la clase. Si en la definición de la clase se obvia el modificador de acceso, la clase lo asume como privado (private).

Modificadores de acceso La siguiente tabla resume los modificadores de acceso en C++ Visibilidad public protected private Desde la propia clase Si Si Si Desde otra clase Si No No Desde una sub-clase Si Si No

Estructura y declaración de una clase Ejemplo de clase

Implementación de métodos Existen dos formas para implementar (escribir el código) los métodos de una clase en C++: En línea, se refiere cuando la implementación se hace dentro de la clase. Fuera de línea, cuando se codifica la implementación del método fuera de la clase, puede ser en otro archivo. Esta forma se usa cuando el código del método es muy grande, entonces sólo se coloca el prototipo de la función dentro del bloque de declaración de la clase.

Implementación de métodos Se definen de manera similar a cualquier otra función de Lenguaje C pero, requiere incluir el operador de resolución de ámbito :: en la definición del método. TipoRetorno NombreClase::nombreMetodo ( ListaDeParametros ){ //Declaración de variables locales } //Lista de sentencias propias del método El operador :: se conoce como operador de ámbito, y sirve para indicar la pertenencia de un método o atributo a una clase determinada. La lista de parámetros son declaraciones de Objetos separadas por coma. Los parámetros se pasan siguiendo las mismas reglas de Lenguaje C.

Implementación de métodos Método definido En Línea Fuera de Línea

Implementación de métodos Continuando con el ejemplo de la clase Casa, implementemos sus métodos. En la mayoría de los casos en el archivo de cabecera.h se define la estructura de la clase y el código de cada método se escribe en un archivo que tenga el mismo nombre de la clase pero con extensión.cpp

Instanciación de objetos Una vez que la clase ha sido implementada se pueden declarar objetos: como variables locales de métodos o como atributos de otras clases, siguiendo las reglas de sintaxis de C++ para cada caso. Ejemplo: Casa micasa; Estudiante rafael; Vehiculo tucson; Para declarar un objeto se escribe primero el nombre de la clase y luego el nombre (identificador) del objeto. Éstos son objetos estáticos. Cuando se declara un objeto en C++, el sistema reserva memoria de manera automática para el objeto.

Instanciación de objetos Si se desea declarar un objeto de una clase que se encuentra en otro archivo, por ejemplo, en el archivo main.cpp, se desea declarar un objeto de la clase Casa, que se encuentra en el archivo Casa.h Es necesario incluir el archivo de forma explícita, por medio del nombre y usando la directiva #include.

Manipulación de atributos Para que un objeto pueda usar sus características y métodos, debe establecer comunicación con el mismo, de esta manera podrá cambiar el estado del objeto y/o realizar alguna acción. Los objetos proporcionan dos formas de hacer esto: 1. Manipulando los atributos (no recomendable desde otras clases). Para acceder a los atributos que tienen los objetos se utiliza el. acompañado del nombre del objeto: nombreobjeto.nombreatributo Estas operaciones solo son posibles si la clase Casa permite el acceso (depende de los modificadores usados en la clase Casa)

Invocación de métodos 2. Invocando sus métodos, haciendo un pase de mensajes.

Constructores Es un método con un propósito específico que se ejecuta automáticamente cuando se crea un objeto de una clase. Generalmente, un constructor se utiliza para inicializar los atributos de una clase. No retorna ningún valor (ni un void), pero si puede tomar los parámetros que requiera. Debe tener el mismo nombre de la clase.

Constructores Declaración de constructores

Constructores Constructor por defecto Constructores alternativos ó paramétricos

Constructores Uso de los constructores Uso del constructor por defecto En Memoria micasa1 direccion = numhabitaciones= 0 Uso del constructor que recibe char[], int micasa2 direccion = Av Para numhabitaciones= 4 Uso del constructor que recibe un char[] micasa3 direccion = Pirineo numhabitaciones= 0 Uso del constructor que recibe un int micasa4 direccion = null numhabitaciones= 3

Instanciación de objetos dinámicos Para crear una instancia de una Clase de forma dinámica se debe hacer solicitud de memoria usando la palabra reservada new y un puntero de la Clase en cuestión, la sintáxis es la siguiente: NombreClase *punteroobjeto; punteroobjeto = new NombreClase(<parámetros>); Puntero de la clase Operador para solicitar memoria Constructor de la clase a la cual pertenece el objeto Ejemplo: Estudiante *rafael = new Estudiante(); Vehiculo *tucson = new Vehiculo( Fiat, Palio, 2005, Rojo ); Se crea un objeto cuyos valores de sus atributos están bien definidos y dados por el usuario de la Clase Lista argumentos necesita constructor. de que el Se crea un objeto estudiante con el estado dado por los valores por defecto que disponga el Programador de la Clase

Manipulación de objetos dinámicos Para usar las características y métodos de un objeto dinámico, se hace del mismo modo que con objetos estáticos, todo dependerá de la permisología de acceso que ofrezca la clase de dicho objeto. La única distinción, es que se usa el operador -> en lugar del operador. Ejemplo: Casa *micasa = new Casa( Santa Teresa, 2); micasa->cargardatos(); cout<< La direccion es: <<micasa->dirección<<endl;

El puntero this Uno de los usos que se le da, es para resolver ambigüedad entre argumentos y atributos. Error de ambigüedad, se resuelve usando this También sirve para invocar métodos con el mismo objeto que invocó. Para el ejemplo es micasa

Destructores Son los métodos que se ejecutan automáticamente cuando se destruye un objeto. Tienen el mismo nombre del constructor, pero se diferencian en que está precedido del carácter ~ No deben tener ningún tipo de retorno. No pueden aceptar parámetros. Sólo puede existir un destructor. Generalmente se utilizan para liberar memoria que fue asignada por el constructor. C++ crea un destructor vacío por defecto, en caso de no existir uno declarado explícitamente.

Destructores Si el ámbito del objeto es local, el destructor es llamado cuando el control es pasado fuera de su bloque de definición. Si el objeto fue creado dinámicamente (con new) el destructor es llamado cuando se invoca el operador delete.

Arreglos de objetos La declaración de un vector de objetos se realiza de forma similar a como se declaran los vectores de tipos de datos primitivos. Ejemplo: Casa miscasas[15] Rectangulo potreros[12]; Circulo contorno[8]; Cada objeto del vector se accede por medio de un índice, al igual que se hace con los tipo de datos primitivos. Ejemplo: potreros[3].desplazar(9, 5); for (i=0; i<15;i++) contorno[i].desplazar(rand(),rand());

Arreglos de objetos Para crear un vector de objetos dinámico, primero se hace la declaración de tipo y se específica el tamaño, de la siguiente forma: NombreClase ** nombrevector = new NombreClase * [tamaño]; Luego, por cada posición del vector se debe crear la referencia y hacer la inicialización correspondiente, llamando a un constructor. for (i=0; i<nombrevector.length; i++) nombrevector[i]= new NombreClase(); Ejemplo: Casa ** miscasas = new Casa * [20]; for (i=0; i<20; i++) { miscasas[i]= new Casa(); miscasas[i]->mostrardatos(); } delete [] miscasas;

Métodos setter Métodos que sirven para asignar o establecer un valor a un atributo. Ejemplo:

Métodos getter Métodos que sirven para obtener o recuperar un valor que se ha asignado a algún atributo. Ejemplo: