Post on 01-Feb-2016
description
Metodología de la Programación M.Sc. Edelfré Flores Velásquez
CLASES Y OBJETOS EN C++
1. Clases
Es un tipo de datos utilizado en la programación orientada a objetos, consiste en agrupar
en una sola entidad, la clase, tanto datos como funciones que manipulan directamente
dichos datos. Lo que contenga una clase será suficiente para que cualquier objeto de
dicha clase pueda funcionar, sin que dependa de ningún otro dato o función externa a la
clase.
Sintaxis
class nombre_clase {
Datos miembro
…………..
Funciones miembro
…………..
};
class <identificador de clase> [<:lista de clases base>] {
<lista de miembros>
} [<lista de identificadores de objetos>];
Los miembros de una clase pueden tener especificadores de acceso quienes especifican
el alcance del acceso a los miembros. Estos pueden ser:
Public (publicos), los miembros public pueden ser accesibles desde cualquier parte del
programa donde sea accesible un objeto de la calase declarada.
Private (privados), los miembros private, solamente son accesibles por las funciones
miembro dentro de la misma clase.
Protected (protegidos), los miembros protected se comportan como privados pero
además si son accesibles por las funciones miembro de las clases derivadas.
Ejemplo:
Clase suma
class suma {
private:
float x, y;
public:
Metodología de la Programación M.Sc. Edelfré Flores Velásquez
void muestraValores();
};
Desarrollo de sus funciones miembro
Se debe implementar cada función miembro y se realiza teniendo en cuenta la siguiente
sintaxis:
Tipo_resultado nombre_clase :: nombre_función {
Implementación;
}
2. Objetos
Es la variable cuyo tipo de dato es una clase. Es a través del objeto que se pueden utilizar las
funciones de la clase, por tanto es el objeto quien pone en funcionamiento a una clase.
Declaración de un objeto de una clase:
Nombre_clase nombre_objeto;
Ejemplo:
suma sum1; //declara el objeto sum1 del tipo de la clase suma.
Acceso a las funciones miembro de una clase:
Nombre_objeto.nombre_funcion();
3. Constructor de una clase
Los constructores son funciones miembro especiales que sirven para inicializar un
objeto de una determinada clase al mismo tiempo que se declara.
Los constructores son especiales por varios motivos:
Tienen el mismo nombre que la clase a la que pertenecen.
No tienen tipo de retorno, y por lo tanto no retornan ningún valor.
No pueden ser heredados.
Por último, deben ser públicos, no tendría ningún sentido declarar un constructor
como privado, ya que siempre se usan desde el exterior de la clase, ni tampoco
como protegido, ya que no puede ser heredado.
Sintaxis:
class <identificador de clase> {
Metodología de la Programación M.Sc. Edelfré Flores Velásquez
public:
<identificador de clase>(<lista de parámetros>) [: <lista de constructores>] {
<código del constructor>
}
...
}
Si no definimos un constructor el compilador creará uno por defecto, sin parámetros, que
no hará absolutamente nada. Los datos miembros de los objetos declarados en el
programa contendrán basura.
Si una clase posee constructor, será llamado siempre que se declare un objeto de esa
clase. Si ese constructor requiere argumentos, como en este caso, es obligatorio
suministrarlos.
EJERCICIOS DE PROGRAMACION RESUELTOS
1. Hallar el área de un cuadrado con clases
#include <iostream>
using namespace std;
float x;
class cuadrado {
private:
float lado;
public:
float calcular_area(float lado);
};
float cuadrado::calcular_area(float lado) {
return (lado*lado);
}
int main(int argc, char *argv[]) {
cuadrado c1;
cout<<"ingrese el lado del cuadrado: ";
cin>>x;
cout<<"El area del cuadrado es: "<<c1.calcular_area(x);
return 0;
}
Metodología de la Programación M.Sc. Edelfré Flores Velásquez
2. Pide el nombre y la edad de una persona.
#include <iostream>
using namespace std;
class persona{
public:
char nombre[20];
int edad;
};
int main(int argc, char *argv[]) {
// objeto persona
persona per1;
cout<<"Ingrese el nombre: ";
cin>>per1.nombre;
cout<<"Ingrese la edad: ";
cin>>per1.edad;
cout<<"\nNombre: "<<per1.nombre;
cout<<"\nEdad: "<<per1.edad<<"\n\n";
return 0;
}
Modifique en el programa para que los datos miembro sean privados.
¿Cómo debería ahora manipularse los datos miembro?
3. Volumen de un cubo
#include <iostream>
using namespace std;
int a, b, c;
class cubo {
private:
int altura, ancho, profundo;
public:
// Constructor de la clase cubo
cubo(int h, int a, int p){
altura=h; ancho=a; profundo=p;
}
// funcion miembro: calcula el volumen
int volumen(void){
Metodología de la Programación M.Sc. Edelfré Flores Velásquez
return (altura*ancho*profundo);
}
};
int main(int argc, char *argv[]) {
cout<<"Ingrese la Altura: ";
cin>>a;
cout<<"Ingrese el Ancho: ";
cin>>b;
cout<<"Ingrese la Profundidad: ";
cin>>c;
// objeto cubo con los valores del constructor
cubo cubo1(a,b,c);
cout<<"El volumen del cubo es: "<<cubo1.volumen()<<endl;
return 0;
}
Ejercicios:
1) Implementa un programa con clases y objetos para que halle las raíces de una ecuación
de segundo grado de la forma:
Ax2 + Bx + C = 0
2) Implementa un programa con clases y objetos para que halle el promedio de N notas
generadas aleatoriamente, de un estudiante, el programa debe mostrar las notas
generadas y el promedio.
3) Implementa una clase llamada Password que siga las siguientes condiciones:
Que tenga los atributos longitud y contraseña. Por defecto, la longitud será de 8.
Los métodos que implementa serán:
esFuerte(): devuelve un booleano si es fuerte o no, para que sea fuerte debe tener más
de 2 mayúsculas, mas de 1 minúscula y mas de 5 números.
generarPassword(): genera la contraseña del objeto con la longitud que tenga.