Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.

Slides:



Advertisements
Presentaciones similares
Introducción a C++ Sistemas Operativos
Advertisements

ESTRUCTURA DE DATOS Unidad 01 Conceptos Previos.
Curso de java básico (scjp)
Curso de java básico (scjp)
Curso de java básico (scjp)
Programación Gráfica 8. Clases y objetos.
Clases en C++.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Creación y destrucción de objetos
PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA
Ejemplo de Programa C++
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.
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.
Informática II Prof. Dr. Gustavo Patiño MJ
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Encapsulamiento y Abstracción
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.
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Estructuras de Datos Cont. C++ y Tipos de Datos. Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota;
Algoritmos y Estructuras de Datos Introducción al C++ Herencia.
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
POO Java Módulo 3 Elementos de programas Identificadores
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
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.
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:
 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.
SCJP Sun Certified Programmer for Java 6
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Clases y objetos. La unidad fundamental del lenguaje Java es la clase, que proporciona la estructura de los objetos y mecanismos para fabricarlos, a partir.
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++. 2 PROYECTOS EN C++
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
Sobrecarga de operadores
Clases en C++ Agustín J. González ELO329.
FACULTAD DE ESTUDIOS SUPERIORES ARAGON
Manejo de Punteros y objetos en memoria dinámica en C++
Programación orientada a objetos. El método main es el comportamiento por el cual comienzan todos los programas en Java, de la misma forma en la que C,
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.
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.
Nivel 2. Definición de situaciones y manejo de casos Fundamentos de programación Villalobos JA, Casallas R. Prentice Hall, Presentación creada por.
1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
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.
Arreglos de Objetos.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
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.
6. Clases y Métodos..  6.1 Structs  6.2 Funciones  6.3 Namespaces  6.4 Clases.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Polimorfismo.
Algunas Características de C++ no presentes en C Agustín J. González ELO-329.
Herencia en C++ Agustín J. González ELO329. Diseño y Programación Orientados a Objetos 2 Motor ElectricMotor Motor y ElectricMotor Consideremos dos clases.
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.
1 La sobrecarga de funciones y operadores le da al programador la oportunidad de asignar nuevos significados a las funciones y a los operadores.
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.
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.
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.
Clases y Objetos en Java
Transcripción de la presentación:

Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES

2 Constructores ► Método de la clase cuyo objetivo es:  Pedir recursos al sistema para construir el objeto  Generar y dar valores iniciales a los atributos de un objeto al instanciar la clase. ► Método con el mismo nombre de la clase. ► No posee valor de retorno ► Se invoca al crear el objeto ► Puede sobrecargarse ► Si en la clase NO se define un constructor, el compilador proporciona uno por defecto.

3 Constructores ► De Oficio ► Específico  Por Defecto  Con Parámetros ► De Copia

4 Constructor de Oficio ► Constructor proporcionado automáticamente por el compilador. ► No posee parámetros. ► Se invoca en el momento de la creación de un objeto. ► Inicializa los atributos del objeto a su valor por defecto: ► 0: Enteros ► 0.0: Reales ► false: Booleanos ► '\u0000: Caracteres ► null: Referencias

5 Constructor: De Oficio 0 0 f: 0 0  En C++: En forma implícita: Fraccion f; explícita: Fraccion *f= new Fraccion()

6 Constructor: Específico por Defecto ► Constructor creado por el diseñador de la clase. ► Anula el constructor de Oficio 1.- Por Defecto: Este constructor NO contiene parámetros y, su código lee valores y/o los asigna a las varibales miembros class Fraccion { private: int num; int den; public: Fraccion(); : }; Fraccion::Fraccion() { num=0; den=1; } C++

7 Constructor: Específico con Parámetros class Fraccion { private: int num; int den; public: Fraccion(int, int); : }; Fraccion::Fraccion(int n, int d) { num=n; den=d; } ► Constructor creado por el diseñador de la clase. ► Anula el constructor de Oficio 2.- Con Parámetros: Este constructor contiene parámetros y los asigna a las varibales miembros

8 Ejemplo 1.- Fraccion f(5,3); ► Uso del constructor específico: Fraccion(int,int) 2.- Fraccion f= Fraccion(5,3); 3.- Fraccion *g; g=new Fraccion(2,5); 4.- Fraccion V[100];

9 Ejemplo Definición de la clase Alumno con dos constructores específicos class Alumno{ private: char nom[25]; int carrera; int ingreso; public: Alumno(); Alumno(char *n, int c, int a); void Asigna_nom(char x[]); void Asigna_carrera(int c); void Asigna_ingreso(int i); void Listar(); char * Obtener_nom(); int Obtener_carrera(); int Obtener_ingreso(); };

10 Ejemplo Implementación de constructores específicos para la clase Alumno: Alumno::Alumno(){ strcpy(nom,NULL); ingreso=2005; carrera=511; } Alumno::Alumno(char *n, int c, int a){ strcpy(nom,n); ingreso=a; carrera=c; } void Alumno::Asigna_nom(char x[]){ strcpy(nom,x); } :

11 Ejemplo Uso de la clase Alumno: #include #include "CAlumno1.h" #include "IAlumnos1.h" void main(){ char nombre[25]; int carr; int año; cout<<"Ingrese nombre del alumno"; cin.getline(nombre,80); cout<<"Ingrese carrera: "; cin>>carr; cout<<"Ingrese año de ingreso"; cin>>año; Alumno a(nombre,anio,carr); a.Listar(); }

12 ► Uso Permite crear objetos inicializándolo a partir de otro objeto de la misma clase. ► El compilador proporciona uno de oficio. Este constructor efectúa una COPIA bit a bit de las variables miembro del objeto original a objeto destino. Constructor de Copia

Fraccion f(2,5); Fraccion g=f; ► Ejemplos de uso 2.- Fraccion h(f); 3.- Un objeto es el valor de retorno de una función: Fraccion Fraccion::Suma(Fraccion &f) { Fracción c;... return c; } 2 5 f: 2 5 g: Constructor de Copia

14 ► Implementación Este constructor tiene SÓLO un argumento que es una referencia constante a un objeto de la clase. Fraccion::Fraccion(const Fraccion &f) {num= f.num; den = f.den; } Fraccion (const Fraccion&); Constructor de Copia

15 class Alumno{ private: char *nom; int carrera; int ingreso; public: Alumno(); Alumno(char *n, int c, int a); Alumno(const Alumno&); void Asigna_nom(char x[]); void Asigna_carrera(int c); void Asigna_ingreso(int i); void Listar(); char * Obtener_nom(); int Obtener_carrera(); int Obtener_ingreso(); }; Constructor de Copia

16 Alumno::Alumno(){ nom= new char[25]; strcpy(nom,NULL); ingreso=2005; carrera=2141; } Alumno::Alumno(char *n, int c, int a){ nom= new char[25]; strcpy(nom,n); ingreso=a; carrera=c; } Alumno::Alumno(const Alumno &x){ nom= new char[25]; strcpy(nom,x.nom); ingreso=x.ingreso; carrera=x.carrera; } Constructor de Copia

17 Inicializadores ► Utilizados en los constructores ► Son más eficientes que las asignaciones dentro del código de un constructor. ► Son de gran utilidad :  Para inicializar objetos contantes.  En clases derivadas Fraccion::Fraccion(int x,int y):num(x),den(y) { puede ir el cuerpo vacío } Variables miembros

18 DESTRUCTORES

19 Destructores ► Método complemento de los constructores ► No posee valor de retorno ► NO puede sobrecargarse, es único ► No posee argumentos. ► Tiene el mismo nombre de la clase con un tilde como prefijo: ~Clase (); Clase::~Clase () { : }

20 Destructores ► Es llamado implícitamente cuando un objeto va a dejar de existir. ► Los objetos creados dinámicamente (new) deben eliminarse en forma explícita con delete. ► El compilador proporciona un destructor para variables estáticas y/o automáticas, excepto para liberar vectores y/o matrices: Clase::~Clase () {delete [] v;}

21 Tarea ► Modifique la clase Alumno, de tal forma que:  Agregue variables miembro para registrar información sobre las asignaturas que un alumno debe cursar a lo largo de su carrera.  Suponga que la malla curricular considera 72 asignaturas.  Para cada asignatura cursada se deberá registrar: Código, año, nota  Considere la máxima cantidad de constructores.  No olvide el destructor.