You are on page 1of 9

Programación II.

Guía 3 1

Facultad: Ingeniería
Escuela: Computación
Asignatura: Programación II

Tema: Clases y Objetos en C++.

Objetivos Específicos

 Aplicar clases, objetos, propiedades, métodos y mensajes.


 Poner en práctica conceptos de POO vistos en clase.
 Crear, analizar y comprender cuando utilizar las clases.

Materiales y Equipo

• Computadora con el software DevC++


• Guía Número 3

Introducción Teórica

En esta práctica se tratarán los puntos básicos para la definición de clases y creación de
objetos.

Definición.

Una clase se define como la descripción de un objeto, la cual tiene un conjunto de atributos
para describir las características del objeto y un conjunto de métodos que describen las
operaciones o funciones del objeto
Pero la definición de clases encierra muchas otros conceptos para cumplir sus objetivos, así en
esta práctica veremos los siguientes conceptos:
• Sintaxis de definición de clases.
• Miembros.
• Acceso a miembros.
• Constructor y destructor de objetos.
• Creación de objetos.
2 Programación II, Guía 3
Para tratar los conceptos anteriores usaremos un ejemplo de definición de clase: Tomemos la
simulación de un teléfono celular. Este tendrá almacenados su número de teléfono y el último
mensaje recibido, además será capaz de hacer llamadas y recibirlas, podrá mandar mensajes
y recibirlos y podrá mostrar su propio número telefónico.
A partir del enunciado anterior se identifican sus atributos y métodos. Y se presentan en el
siguiente diagrama de clase:

Sintaxis para la definición de clase:

class <nombre de clase>


{ private:
<atributos y/o miembros>
protected:
<atributos y/o miembros>
public:
<atributos y/o miembros>
};
Para declarar una clase debe proporcionarse primero su nombre, y se definen las regiones de
acceso privada (prívate) en la que solo la misma clase puede hacer uso de esos elementos,
protegida (protected) en la que solo la misma clase y las clases heredadas podrán hacer uso
de esos elementos y pública (public) en la que tanto la clase como código externo puede hacer
uso de los elementos.
A partir del diagrama de clase anterior se desprende el siguiente código de definición de clase:
class celular
{ private:
char miNumero [9];
string ultimoMensaje;
Programación II. Guía 3 3

public:
celular( );
celular(char numero[ ]);
~celular( ){ }

char * llamar( );
bool contestar(char numero[ ]);
string verMensaje( );
string enviarMensaje( );
bool recibirMensaje(char numero[ ], string mensaje);
char * verNumero( );
};
Como se ve en el código anterior tenemos solo región privada y publica. En la región privada
están los atributos con el objetivo que solo puedan ser modificados por la clase misma, y en la
región pública se agregan los métodos (solo la declaración de las funciones) para dar acceso a
los atributos a código externo a la clase.
También se definen los constructores y el destructor. Estos son funciones sin tipo de retorno y
tienen el mismo nombre de la clase (solo el destructor antepone el carácter ~), hay dos
constructores de los cuales uno tiene parámetros para configurar la clase, el segundo no tiene
parámetros, así este tomará valores por default definidos por el constructor.
La definición de métodos de una clase se puede hacer dentro de la misma clase o fuera de la
definición de la clase.
Si se realiza fuera de la definición de la clase se debe indicar que son miembros de la clase.
La sintaxis de esta definición requiere del operador de resolución de ámbito (::) y es la
siguiente:
<tipo de retorno> <nombre de clase> : :<nombre de método>(<lista de parámetros>)
{ <cuerpo de método>
}
En el código que sigue se definen algunos de los métodos declarados en la clase:

celular::celular( ) //constructor
{ miNumero[0]='\0';
ultimoMensaje="";
}
4 Programación II, Guía 3
celular::celular(char numero[ ]) //constructor con parámetros
{ for(int i=0; i<8; i++)
miNumero[i]=numero[i];
miNumero[8]='\0';
ultimoMensaje="";
}

char * celular::llamar( )
{ static char numero[9];
cout<<"numero: ";
cin>>numero;
numero[8]='\0';
return numero;
}

bool celular::contestar(char numero[])


{ int equivocado=0;
for(int i=0; i<8; i++)
{ if (numero[i]!=miNumero[i])
equivocado=1;
}
if(!equivocado)
return true;
else
return false;
}
char* celular::verNumero( )
{ return miNumero;
}
Acá se han definido algunos de los métodos de la clase celular, como se puede ver no se
define el destructor, este fue definido en la clase dado que no contiene código a ejecutar.
La creación de objetos es muy similar a declarar variables. Se puede hacer en otra clase
(anidamiento de objetos) o en una función de la siguiente manera:
<nombre de clase> <nombre de objeto><(lista de parámetros para el constructor)>
Programación II. Guía 3 5
Ejemplo:

celular cell1("75757575");
Como se puede ver, se está instanciando la clase celular en el objeto cell1 con el parámetro
“75757575” el cual es recogido por el constructor para inicializar el objeto.

Y por último el acceso a los miembros públicos (atributos o funciones) se hace con el nombre
de la clase, seguido de un punto y el nombre del miembro:
<nombre del objeto>.<nombre de miembro publico>
Ejemplo:

cell1.llamar()
Acá se hace el llamado al método llamar del objeto cell1 el cual fue declarado y definido en el
código de la clase celular.

Procedimiento

Ejercicio 1:

Tomar el código anterior y completar el programa para los métodos de envío y recepción de
mensajes, para el ejercicio se creará una función main que permita la interacción de dos
objetos instanciados por la clase celular el primer objeto enviará llamadas y mensajes al
segundo objeto. Tomar en cuenta el siguiente código:

#include <iostream>
#include <cstring>
#include <string>
using namespace std;

class celular
{ private:
char miNumero[9];
string ultimoMensaje;

public:
celular( );
6 Programación II, Guía 3
celular(char numero[ ]);
~celular( ){ };

char * llamar( );
bool contestar(char numero[ ]);
string verMensaje( );
string enviarMensaje( );
bool recibirMensaje(char numero[ ], string mensaje);
char * verNumero( );
};

celular::celular()
{ miNumero[0]='\0';
ultimoMensaje="";
}

celular::celular(char numero[ ])
{ for(int i=0; i<8; i++)
miNumero[i]=numero[i];
miNumero[8]='\0';
ultimoMensaje="";
}

char * celular::llamar( )
{ static char numero[9];
cout<<"numero: ";
cin>>numero;
numero[8]='\0';
return numero;
}

bool celular::contestar(char numero[ ])


{ int equivocado=0;
for(int i=0; i<8; i++)
{ if(numero[i]!=miNumero[i])
Programación II. Guía 3 7

equivocado=1;
}
if(!equivocado)
return true;
else
return false;
}

char * celular::verNumero( )
{ return miNumero;
}

bool celular::recibirMensaje(char numero[ ], string mensaje)


{
}

string celular::enviarMensaje( )
{
}

string celular::verMensaje( )
{
}

int main( )
{ int op;
char numero[8];
celular cell1("75757575");
celular cell2("57575757");

cout<<"celular 1:\n";
cout<<"numero "<<cell1.verNumero()<<"\n";
cout<<"celular 2:\n";
cout<<"numero "<<cell2.verNumero()<<"\n";
8 Programación II, Guía 3
do
{ cout<<"\nmenu de celular 1\n";
cout<<"1. llamar\n";
cout<<"2. enviar mensaje\n";
cout<<"3. apagar celular\n";
cin>>op;

switch(op)
{ case 1:
if(cell2.contestar(cell1.llamar()))
cout<<"llamada efectiva";
else
cout<<"numero equivocado";

break;
case 2:
break;
case 3:
break;
default:
cout<<"\nopcion erronea\n\n\n";
};
} while(op!=3);
}

Investigación Complementaria

1. A partir de los diagramas de clase hechos en los ejercicios 1 y 2 de la guía anterior.


Escribir el código necesario para la definición de clase.

2. Investigar que es el anidamiento de objetos y de un ejemplo de código en C++.


Programación II. Guía 3 9

Guía 3: Clases y Objetos en C++ Hoja de cotejo: 3

Alumno: Máquina No:

Docente: GL: Fecha:

EVALUACIÓN

% 1-4 5-7 8-10 Nota

CONOCIMIENTO Del 20 Conocimiento Conocimiento y Conocimiento


al 30% deficiente de explicación completo y
los incompleta de explicación
fundamentos los clara de los
teóricos fundamentos fundamentos
teóricos teóricos

APLICACIÓN Del 40%


DEL al 60%
CONOCIMIENTO

ACTITUD
Del 15% No tiene Actitud Tiene actitud
al 30% actitud propositiva y proactiva y
proactiva. con propuestas sus
no aplicables propuestas
al contenido son
de la guía. concretas.
TOTAL 100%

You might also like