1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++

Slides:



Advertisements
Presentaciones similares
ESTRUCTURA DE DATOS Unidad 01 Conceptos Previos.
Advertisements

Curso de java básico (scjp)
Programación Gráfica 8. Clases y objetos.
Clases en C++.
Creación y destrucción de objetos
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.
Programación Orientada a Objetos
La Programación Orientado a Objetos
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.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Aplicación del paradigma orientado a objetos
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Encapsulamiento y Abstracción
Objetos y Clases en Java
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++
Material de apoyo Unidad 2 Estructura de datos
Herencia y Polimorfismo en JAVA
Introducción a clases Programación Orientada a Objetos.
PROGRAMACIÓN ORIENTADA A OBJETOS
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.
Tema 6: Clases Antonio J. Sierra.
Unidad I Java y C++ : Similitudes y diferencias
 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.
Nombre, Alcance y Asociaciones (Bindings). Agenda Definición Nombre y Bindings Binding Time Importancia del Binding Time Eventos relacionados a la Asociación.
SCJP Sun Certified Programmer for Java 6
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
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++
Administración de Proyectos de desarrollo de Software Ciclo de vida de un proyecto Enfoque moderno Temas Componentes Directivas Declaraciones globales.
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++
Introducción a los punteros Prof. Domingo Hernández.
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.
Elementos básicos del lenguaje
FUNCIONES Conceptos básicos. Retorno de una función Clases de funciones. Paso de parámetros. Funciones y arrays.
Módulo 7: Programación Orientada a Objetos en Visual Basic 2005.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Elementos básicos del lenguaje
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.
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 Definición y Conversión de datos Agustín J. González ELO-329.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Programación Orientada a Objetos
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
CARACTERÍSTICAS Es un lenguaje de programación estructurado de propósito general. Está estrechamente asociado al sistema operativo UNIX, ya que el propio.
1 Asignación Dinámica de Memoria Agustín J. González ELO 329.
Sesión 06: Clases y Objetos (2)
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
El lenguaje C++ Isidro González Caballero (Universidad de Oviedo) Técnicas de Comp. en Física Santander, 13/12/
Algoritmo.
 Las funciones son un conjunto de instrucciones que realizan una tarea específica. En general toman unos valores de entrada, llamados parámetros y proporcionan.
1 Definición y Conversión de datos 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.
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.
UNIVERSIDAD DIEGO PORTALES Facultad de Ingeniería Programación Avanzada HERENCIA Tema: HERENCIA Ing. Javier Chamorro Ceró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.
Transcripción de la presentación:

1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++

2 class { private: public: protected: }; Estructura de una clase

3 class Uno { private: int k; float x; public: void procedure(int x); int function(); }; Uno a, *b; Ejemplo

4 class Empleado { private: char *nom; char *app; float sueldo; public: void verDatos(); float obtenerSueldo(); }; Ejemplo

5  Especificador de acceso:  public:  private:  protected:  Ningún miembro podrá ser objeto de la clase que está siendo declarada  Ningún miembro puede declararse como:  auto  extern  register Conceptos

6 public: protected: private: Métodos de cualquier clase Métodos de la clase y sus derivadas Métodos de la clase Control de acceso

7 Los métodos se pueden implementar: a.Dentro de la definición de la clase b.A continuación de la definición de la clase Tipo Nombre_Clase::Método(parámetros) { sentencias } Tipo Método(parámetros) { sentencias } Métodos

8  Mecanismo mediante el cual el usuario solicita a un objeto que ejecute alguna acción  El objeto, si reconoce el mensaje, activa el método adecuado en respuesta al mensaje objeto.método_público(argumentos) Mensajes

9 public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente(); Interfaz  Mecanismo mediante el cual un objeto puede comunicarse con el medio  Se materializa a través de los métodos públicos de la clase

10  Numerador  Denominador != 0  Ambos enteros  Crear una fracción con datos desde el teclado  Conocer su numerador  Conocer su denominador  Obtener su equivalente real Clase Fraccion

11 num: 5 den: 7 Listar() Numerador() Denominador() Equivalente() f: num: 1 den: 2 Listar() Numerador() Denominador() Equivalente() f1: num: 3 den: 8 Listar() Numerador() Denominador() Equivalente() f2: Objetos de clase Fraccion

12 Equivalente 0,333 f 1313 Listar() Numerador() Denominador() Equivalente() Mensajes

13 class Fraccion { public: Fraccion(); void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } Constructor Métodos Atributos Clase Fraccion

14  Igual nombre de funciones  Se diferencian en :  La cantidad de parámetros y  Tipo de dato de los parámetros class Fraccion { public: Fraccion(); Fraccion(int,int); void Listar(); i nt Numerador(); … } Sobrecarga de Constructores

15  No poseen argumentos, o  Los argumentos tienen valores asignados Fracción f; Fraccion() Fraccion(int x=0,int y=1) Constructores por defecto

16 class Fraccion { public: Fraccion(); Fraccion(int,int); void Listar(); int Numerador(); int Denominador(); float Equivalente(); private: int num; int den; } Clase Fraccion

17 int main() { Fraccion f; Fraccion g(2,3); f.Listar(); cout<<f.Numerador(); cout<<"Equivalente de: "<<endl; cout<<f.Numerador()<<" /" <<f.Denominador() <<": "; cout<<f.Equivalente()<<endl; cout<<g.Numerador()<<" /" <<g.Denominador() <<": "; cout<<g.Equivalente()<<endl; return 0; } Constructores Mensaje Uso de la clase Fraccion

18 Fraccion f1; x = f1. Numerador( ); Estático: Fraccion *f1; f1 = new Fraccion( ); x = (*f1).Numerador( ); x = f1->Numerador(); Dinámico: Creación de objetos

19  Utilidad:  Liberar recursos solicitados por el constructor  Objetos en el heap se destruyen con el operador delete  No se requiere implementar si no se utiliza almacenamiento dinámico como parte del objeto  Se invoca implícitamente cuando finaliza el bloque en fue declarado el objeto Destructores

20 int main() { int n,d; Fraccion f1; f1.Imprimir(); cout << f1.Equivalente() << endl; do { cout > n; cout > d; if (d!=0) { Fraccion f2(n, d); f2.Imprimir(); cout << f2.Equivalente() << endl; } } while (d!=0); return 0; } // Creación de f1 // Creación de f2 // Destrucción de f1 // Destrucción de f2 Uso de destructores

21 class Complejo { private: float real; float imag; public: Complejo(); Complejo(float); Complejo(float, float); Complejo(Complejo &); void setR(float); void setI(float); float getR(); float getI(); void verComplejo(); ~Complejo(); // Alt 126 }; Clase Complejo

22 Complejo::Complejo() { real = 0; imag = 0; } Complejo::Complejo(float x) { real = x; imag = 0; } Complejo::Complejo(float x, float y) { real = x; imag = y; } Complejo::Complejo(Complejo &C) { real = C.real; imag = C.imag; } void Complejo::setR(float x) { real = x; } Implementación clase Complejo

23 void Complejo::setI(float y) { imag = y; } float Complejo::getR() { return real; } float Complejo::getI() { return imag; } void Complejo::verComplejo() { cout << " Complejo como par ordenado: " << endl; cout << " (" << real << ", " << imag << ") " << endl; cout << " Complejo en forma binomial: " << endl; cout << real << " + " << imag << "i" << endl; } Complejo::~Complejo() { cout << " Eliminando complejo " << endl; } Implementación clase Complejo

24 int main(int argc, char *argv[]) { Complejo C0, C1(1.1), C2(2.1, 2.6), C3(3.1, 3.6); Complejo C4 = C1; Complejo *q, *p = new Complejo(C2); C0.verComplejo(); C1.verComplejo(); C2.verComplejo(); C3.verComplejo(); C4.verComplejo(); C0 = *p; C0.verComplejo(); *q = C1; (*p).verComplejo(); (*q).verComplejo(); delete p; delete q; return 0; } Uso clase Complejo

25 class Fecha { private: int dd; int mm; int aa; public: void setDia(int); void setMes(int); void setAño(int); int getDia(); int getMes(); int getAño(); void verFecha(); }; Clase Fecha

26 class Empleado { private: char *nombre; char *direccion; long sueldo; Fecha nacim; Fecha contrat; public: void setNombre(char *); void setDireccion(char *); void setSueldo(long); void setNac(Fecha); void setCont(Fecha); char *getNombre(); char *getDireccion(); long getSueldo(); Fecha getNac(); Fecha getCont(); void verEmpleado(); }; Clase Empleado

27 void Fecha::setDia(int d) { dd = d; } void Fecha::setMes(int m) { mm = m; } void Fecha::setAño(int a) { aa = a; } int Fecha::getDia() { return dd; } int Fecha::getMes() { return mm; } int Fecha::getAño() { return aa; } void Fecha::verFecha() { cout << “ Dia: " << dd << “ Mes: " << mm << “ Año: " << aa << endl; } Implementación clase Fecha

28 void Empleado::setNombre(char *nom) { nombre = new char[strlen(nom)+1]; strcpy(nombre, nom); } void Empleado::setDireccion(char *dir) { direccion = new char[strlen(dir)+1]; strcpy(direccion, dir); } void Empleado::setSueldo(long suel) { sueldo = suel; } void Empleado::setNac(Fecha f) { nacim = f; } void Empleado::setCont(Fecha f) { contrat = f; } char *Empleado::getNombre() { return nombre; } Implementación clase Empleado

29 char *Empleado::getDireccion() { return direccion; } long Empleado::getSueldo() { return sueldo; } Fecha Empleado::getNac() { return nacim; } Fecha Empleado::getCont() { return contrat; } void Empleado::verEmpleado() { cout<<"Nombre: "<< nombre << endl; cout<<"Direccion: "<< direccion << endl; cout<<"Sueldo: "<< sueldo << endl; cout<<"Fecha de nacimiento "<< endl; nacim.verFecha(); cout<<"Fecha de contratacion "<< endl; contrat.verFecha(); } Implementación clase Empleado

30 int main(int argc, char *argv[]) { Empleado E; Fecha F, G; char *c = new char[10]; long d, m, a, s; cout<<"Ingrese nombre: "; cin.getline(c,10); E.setNombre(c); cout<<"Ingrese direccion: "; cin.getline(c,10); E.setDireccion(c); cout<<"Ingrese sueldo: "; cin>>s; E.setSueldo(s); cout<<"Ingrese fecha de nacimiento "<< endl; cout << " Dia: "; cin >> d; cout << " Mes: "; cin >> m; Uso clase Empleado

31 cout << " Año: "; cin >> a; F.setDia(d); F.setMes(m); F.setAgno(a); E.setNac(F); cout<<"Ingrese fecha de contratacion "<< endl; cout << " Dia: "; cin >> d; cout << " Mes: "; cin >> m; cout << " Agno: "; cin >> a; G.setDia(d); G.setMes(m); G.setAgno(a); E.setCont(G); E.verEmpleado(); return 0; } Uso clase Empleado