POO en C++: Sintaxis En el .h debe aparecer la declaración de la clase: class NombreClase { private: // atributos y métodos privados public: // atributos.

Slides:



Advertisements
Presentaciones similares
Métodos y parámetros.
Advertisements

Unidad 15 Características de C++ no relacionadas con el DOO.
Curso de java básico (scjp)
Programación Gráfica 8. Clases y objetos.
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Clases en C++.
Definición de Clases y Variables de referencia.
Creación y destrucción de objetos
Programación II Listas
La Programación Orientado a Objetos
Excepciones Las excepciones son señales (en forma de objeto) que se generan en ejecución en casos de errores, para que puedan ser gestionadas en el programa.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II Prof. Dr. Gustavo Patiño MJ
Tratamiento de listas en Java
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Implementación de Listas
Programación Orientada a Objetos en Java
Algoritmos y Estructuras de Datos Introducción al C++ Herencia.
Herramientas para el acceso directo a memoria en C++
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
Material de apoyo Unidad 2 Estructura de datos
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Introducción a Java II.
L ISTAS E NLAZADAS No son mas que un conjunto o lista de objetos que a diferencia de los vectores, estas poseen la capacidad de crecer o decrecer. Por.
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.
Tema 6: Clases Antonio J. Sierra.
POO en C++ Programación Orientada a Objetos. Declaración de clases con struct Las clases en C++ pueden definirse utilizando la construcción struct Ejemplo:
SCJP Sun Certified Programmer for Java 6
Clase Teórica No. 4 Programación IV
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++. 2 PROYECTOS EN C++
1 Asignación Dinámica de Memoria Agustín J. González Versión original de Kip Irvine ELO 329.
Clases en C++ Agustín J. González ELO329.
Herramientas de polimorfismo y herencia en C++
FACULTAD DE ESTUDIOS SUPERIORES ARAGON
Manejo de Punteros y objetos en memoria dinámica en C++
Dinamismo y Contenedores Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires (C++ Avanzado) Depto. de Computación Algoritmos y Estructuras.
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
Programación orientada a objetos. Existen 3 niveles de visibilidad: ◦ public: significa que los atributos de una clase pueden ser accedidas desde fuera.
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend) Agustín J. González ELO329.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
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
Sesión 09: Sobrecarga (1) /1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática II Universidad.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Detalles Generales sobre Java
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Curso de Java Introducción al Paradigma Orientado a Objetos Prof. Ing. Guido Acosta.
Cooperación en POO Eliseo Melgarejo Desarrollo de sistemas Udec.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
1 Miembros Estáticos (Static) de Clases y Funciones Amigas (Friend)‏ Agustín J. González ELO329.
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
HERENCIA.
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.
Prof. Manuel B. Sánchez. La parte ingenieril de un proceso de desarrollo de software, comprende realizar un diseño del sistema antes de empezar a escribir.
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.
Constructores Los constructores inicializan nuestra clase, le dan un estado inicial estable listo para su uso. Siempre que declarábamos una variable numérica.
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
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.
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.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

POO en C++: Sintaxis En el .h debe aparecer la declaración de la clase: class NombreClase { private: // atributos y métodos privados public: // atributos y métodos públicos }; Podemos declarar métodos inline. El código aparece junto a la declaración. No hace falta especificar la palabra inline en presencia de métodos.

POO en C++: Sintaxis En el .cpp la implementación de los métodos que no sean inline. tipo NombreClase::nombreMetodo(lista parámetros){ //implementación del método } private: no accesible desde fuera de la implementación de la clase. public: accesible desde fuera de la implementación de la clase.

POO en C++: Ejemplo UTablaGlobos.h class tTablaGlobos { private: int max; // dimensión del array dinámico tGlobo* tabla; // array dinámico int numGlobos; // número de globos del array .............. bool buscaPos(const tGlobo& g, int &pos) ; public: //constructora y destructora ......... // métodos bool ponElem(const tGlobo& g) ; ........ };

POO en C++: Ejemplo UTablaGlobos.cpp bool tTablaGlobos::ponElem(const tGlobo& g){ ...... } .......

POO en C++: Constructoras Las constructoras sirven para inicializar los atributos de un objeto. Su sintaxis es: NombreClase(lista parámetros); La implementación puede ser inline o ir al .cpp: NombreClase::NombreClase(lista parámetros){ // implementación de la constructora }

POO en C++: Constructoras La constructora por defecto (sin argumentos) cumple lo siguiente: Si no existe ninguna otra constructora para la clase, existe una por defecto (aunque no esté definida) que inicializa los atributos de la clase. Si existe alguna otra constructora definida, estamos obligados a definir la constructora por defecto si la queremos utilizar. NOTA: Como norma a seguir definiremos siempre la constructora por defecto.

POO en C++: Ejemplo .h tTablaGlobos(){ max=0; nGlobos=0; tabla=NULL; } tTablaGlobos(int nGlobos); .cpp void tTablaGlobos::tTablaGlobos(int nGlobos){ max=nGlobos; numGlobos=0; if(max>0) tabla = new tGlobo[max]; else tabla=NULL;}

POO en C++: constructoras La constructora por copia realiza una copia de un objeto en el objeto actual (this). NombreClase(const NombreClase& objeto); Cada clase tiene una constructora de copia por defecto. Pero conviene que, siempre que queramos utilizarla, nos la definamos nosotros mismos.

POO en C++: Un ejemplo tTablaGlobos(const tTablaGlobos& t){ numGlobos=t.numGlobos; max=t.max; if(max>0) tabla = new tGlobo[max]; else tabla=NULL; for (int i=0; i<t.numGlobos; i++){ ponElem(t.tabla[i]); }

POO en C++: constructoras La constructora por copia se ejecuta cuando se la invoca directamente para crear un objeto o cuando se hace paso de parámetros por valor. // t2 es un objeto de la clase tTablaGlobos tTablaGlobos t1(t2); void funcion(tTablaGlobos t2){....} f(t1);

POO en C++: destructora Todas las clases deben llevar asociada una destructora que destruya todo lo que la clase haya creado (con new). ~NombreClase(); Pueden ser inline o definirse el .cpp: NombreClase::~NombreClase(){ // implementación }

POO en C++: Un ejemplo .h ~tTablaGlobos(); .cpp void tTablaGlobos::~tTablaGlobos(){ if (tabla!=NULL){ delete [] tabla; tabla=NULL; max=0; numGlobos=0; }

POO en C++: Un ejemplo class Racional{ private: int num; int den; int mcd(int a, int b); public: // constructoras Racional(int n=0, int d=1){num=n; den=d;}; Racional(const Racional& r){num=r.num; den=r.den;} // destructora ~Racional(){num=0; den=1;}

POO en C++: Un ejemplo // operaciones de consulta int dameNumerador(){return num;}; int dameDenominador(){return den;}; // operaciones modificadoras void simplifica(); void suma(const Racional& r); //this=this+r void resta(const Racional& r); //this=this-r void divide(const Racional& r); //this=this/r void multiplica(const Racional& r); //this=this*r };

POO en C++: Un ejemplo class RacionalP{ private: int* num; int* den; Podríamos tener la clase Racional como: class RacionalP{ private: int* num; int* den; int mcd(int a, int b); public: // constructoras RacionalP(int n=0, int d=1){ num=new int; den=new int; *num=n; *den=d;}; RacionalP(const Racional& r){ num=new int;den=new int;*num=*(r.num);*den=*(r.den);}

POO en C++: Un ejemplo // destructora En este caso, la destructora tendría que ser: // destructora ~RacionalP(){ delete num; num=NULL; delete den; den=NULL; }

Declaración y creación de objetos Para declarar objetos: NombreClase obj; Declara obj como objeto de la clase NombreClase y lo crea invocando a la constructora por defecto, i.e., se inicializan los argumentos de obj de acuerdo según indique la constructora por defecto. NombreClase obj(argumentos); Declara obj como objeto de la clase NombreClase y lo crea invocando a la constructora que encaje con los argumentos. NombreClase* obj; Declara un puntero obj a un objeto de la clase NombreClase. Para crearlo: obj=new NombreClase(argumentos);

Declaración y creación de objetos { Racional r1(3,5); // automática o estática Racional r2(4,3); // automática o estática r1.suma(r2); // r1=r1+r2 Racional* r3=new Racional(5,7); // dinámica RacionalP r4(5,7); // automática o estática r3->suma(r3); // MAL r3->suma(r1); r3->suma(*r3); delete r3; // en otro caso BASURA!! r3=NULL; }

Declaración y creación de objetos Al ejecutar delete sobre un puntero a un objeto, se invoca a la destructora del objeto, además de liberar la memoria ocupada por éste. RacionalP* r = new RacionalP(2,3); r 2 3 delete r; Invocamos a la destructora r r

Constructora por copia RacionalP* r1=new RacionalP(5,7); RacionalP* r2=new RacionalP(*r1); Racional* r3=new Racional(2,4); Racional r4(*r3); RacionalP r5(3,4); RacionalP* r6=new RacionalP(r5); delete r1; r1=NULL; delete r2; r2=NULL; delete r3; r3=NULL; delete r6; r6=NULL;

Constructora por copia La constructora por copia se ejecuta siempre que sea necesario hacer una copia del objeto, en particular cuando tenemos métodos cuyo parámetro es un objeto de la clase y es de entrada (no puntero). void Racional::suma(const Racional& r); Racional r(3,4); Racional s(5,7); r.suma(s); // no se hace copia void Racional::suma(Racional r); r.suma(s); // se hace copia

Constructora por copia void RacionalP::suma(RacionalP* r); racionalP* r=new RacionalP(2,3); racionalP* s=new RacionalP(4,5); r->suma(s); // no se hace copia