1 las clases en c++ programaciÓn orientada a objetos usando c++
TRANSCRIPT
![Page 1: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/1.jpg)
1
LAS CLASES EN C++
PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++
![Page 2: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/2.jpg)
2
class <nombre> { private:
<datos privados><métodos privados>
public:<datos públicos><método públicos>
protected:<datos protegidos><método protegidos>
};
Estructura de una clase
![Page 3: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/3.jpg)
3
class Uno { private:
int k;float x;
public:void procedure(int x);int function();
};Uno a, *b;
Ejemplo
![Page 4: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/4.jpg)
4
class Empleado { private:
char *nom;char *app;float sueldo;
public:void verDatos();float obtenerSueldo();
};
Ejemplo
![Page 5: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/5.jpg)
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
![Page 6: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/6.jpg)
6
public:
protected:private:
Métodos de cualquier clase Métodos de la clase y sus
derivadasMétodos de la clase
Control de acceso
![Page 7: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/7.jpg)
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
![Page 8: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/8.jpg)
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
![Page 9: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/9.jpg)
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
![Page 10: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/10.jpg)
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
![Page 11: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/11.jpg)
11
yx
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
![Page 12: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/12.jpg)
12
Equivalente 0,333
f
13
Listar()
Numerador()
Denominador()
Equivalente()
Mensajes
![Page 13: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/13.jpg)
13
class Fraccion { public:
Fraccion();
void Listar();
int Numerador();
int Denominador();
float Equivalente();
private:
int num;
int den;
}
Constructor
Métodos
Atributos
Clase Fraccion
![Page 14: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/14.jpg)
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
![Page 15: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/15.jpg)
15
No poseen argumentos, o
Los argumentos tienen valores asignados
Fracción f;Fraccion()
Fraccion(int x=0,int y=1)
Constructores por defecto
![Page 16: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/16.jpg)
16
class Fraccion {
public: Fraccion();
Fraccion(int,int);
void Listar();
int Numerador();
int Denominador();
float Equivalente();
private:
int num;
int den;
}
Clase Fraccion
![Page 17: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/17.jpg)
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;}
ConstructoresConstructores
Mensaje
Uso de la clase Fraccion
![Page 18: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/18.jpg)
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
![Page 19: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/19.jpg)
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
![Page 20: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/20.jpg)
20
int main() { int n,d;
Fraccion f1;f1.Imprimir();
cout << f1.Equivalente() << endl;do {
cout << "Numerador : "; cin >> n; cout << "Denominador: "; cin >> 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
![Page 21: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/21.jpg)
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
![Page 22: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/22.jpg)
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
![Page 23: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/23.jpg)
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
![Page 24: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/24.jpg)
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
![Page 25: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/25.jpg)
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
![Page 26: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/26.jpg)
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
![Page 27: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/27.jpg)
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
![Page 28: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/28.jpg)
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
![Page 29: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/29.jpg)
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
![Page 30: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/30.jpg)
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
![Page 31: 1 LAS CLASES EN C++ PROGRAMACIÓN ORIENTADA A OBJETOS USANDO C++](https://reader034.vdocuments.net/reader034/viewer/2022052312/5665b4971a28abb57c92730b/html5/thumbnails/31.jpg)
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