Está en la página 1de 68

Proyecto 0151-14 UNA

Mora & Coto, 2015

Programacin Orientada a
Objetos

Compilado por:
Mag. Sonia Mora.
Dra. Mayela Coto.
EIF200 FUNDAMENTOS DE INFORMTICA

Programa

Un programa orientado a objetos se resume en


tres sucesos:

Creacin de objetos cuando se necesitan, mediante un


mensaje de construccin a la clase.
Intercambio de mensajes entre objetos o entre
usuario de objeto y objeto.
Eliminar objetos cuando no se necesitan, mediante un
mensaje de destruccin a la clase.

EIF200 FUNDAMENTOS DE INFORMTICA

Problema: Salud y obesidad

La obesidad es una enfermedad crnica originada por muchas


causas y con numerosas complicaciones. Puede causar diversos
trastornos de salud como enfermedades cardiovasculares, diabetes,
apnea del sueo, padecimientos de la vescula, esofagitis,
osteartrosis,
osteoporosis,
esteatosis
heptica,
problemas
ortopdicos y disfunciones renales. Muchas de estas complicaciones
pueden llevar a la muerte.
La obesidad se caracteriza por el exceso de grasa en el organismo y
se presenta cuando el Indice de Masa Corporal en el adulto es mayor
de 25 unidades.
Se desea realizar una aplicacin que permita calcular el nivel de
obesidad de las personas.

EIF200 FUNDAMENTOS DE INFORMTICA

Problema: Salud y obesidad

El nivel de obesidad se calcula de la siguiente forma:

Primero se calcula el ndice de Masa Corporal (IMC)

Despus de tener los valores de IMC se aplica la siguiente tabla para


conocer el nivel de obesidad
Clasificacin
Infrapeso
Peso Normal
Sobrepeso
Obesidad
Obesidad Mrbida

IMC
< de 18.5
18.5 a 24.9
25 a 29.9
30. a 39.9
>40

EIF200 FUNDAMENTOS DE INFORMTICA

Problema: Salud y obesidad

Por ejemplo, un hombre o una mujer que pese 120 kilos y


mida 1.65 metros, tiene el IMC igual a 44, es decir,
Obesidad Mrbida , con un riesgo relativo muy alto para
el desarrollo de enfermedades cardiovasculares.
Peso
=
Estatura

120 kg
=
1.65 x 1.65

120 kg = 44
2.7225

EJERCICIO: Defina una clase que permita desarrollar la


aplicacin para calcular el grado de obesidad de una
persona.
EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo Persona

Qu atributos requiere la clase Persona para el


desarrollo de la aplicacin?

EIF200 FUNDAMENTOS DE INFORMTICA

Sintaxis para la definicin de clases


class nombre_de_la_clase
En mayscula y
singular
{
// zona de atributos;
// zona de constructores y destructores;
// zona de otros mtodos;
};

Indentacin
MUY importante

EIF200 FUNDAMENTOS DE INFORMTICA

de
Ejemplo:Nombre
partes
de
una
clase
la clase
class Persona
{
private:
string nombre;
float peso;
float estatura;

// definicin de un constructor con


parmetros

Zona de
atributos
Persona (string unNombre, float unPeso,
float unaEstatura)

// definicin de un constructor sin


parmetros
public:
Persona( )
{
nombre = "indefinido";
peso = 0;
estatura = 0;
}

Zona de
mtodos

nombre = unNombre;
peso= unPeso;
estatura = unaEstatura;}
}
// aqu se pueden colocar otros mtodos
}; // fin de la clase

EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo: partes de una clase


Slo se puede
acceder a de un constructor con
// definicin
parmetros
ellos con las funciones
miembros declaradas en
el interior de
la clase(string unNombre, float unPeso,
Persona
float unaEstatura)
{
nombre = unNombre;
peso= unPeso;
// definicin de un constructor sin
estatura = unaEstatura;}
parmetros
Pueden ser accedidos
}
desde otras clases
public:
// aqu se pueden colocar otros mtodos
Persona( )
}; // fin de la clase
{
nombre = "indefinido";
peso = 0;
estatura = 0;
EIF200 FUNDAMENTOS DE INFORMTICA
}
class Persona
{
private:
string nombre;
float peso;
float estatura;

Zona de atributos
class Persona
{
private:
string nombre;
float peso;
float estatura;

Los atributos se
representan como
campos y estos tienen
identificadores
En general, los
identificadores son
utilizados para nombrar
las diferentes entidades
presentes en una clase

EIF200 FUNDAMENTOS DE INFORMTICA

Campos variables, campos


constants, etc.
Nombres de mtodos
Clases, objetos

Visibilidad: Atributos*
Smbol
o

Mnemni
co

Resultado

Private

Atributos privados solo pueden ser


vistos y utilizados por mtodos de la
misma clase. Por omisin los atributos
son privados.

Public

Atributos pblicos pueden ser vistos


y utilizados por mtodos de la misma
clase y de otras clases.

Protecte
d*

Atributos protegidos pueden ser


vistos y utilizados por mtodos de la
misma clase y por mtodos de clases
derivadas o subclases.

Atributos estticos son nicos para


toda la clase, es decir, no pertenecen
a ningn ejemplar u objeto de la
_
Static*
* No se estudiarn como atributos
en este
curso
clase, pero
pueden
ser vistos por
EIF200 FUNDAMENTOS
INFORMTICA
todos DE
los
objetos de la clase.

Identificadores
Son
nombres
simblicos
que se
forman
mediante
una
secuencia
de letras y
dgitos. En
C++

El primer carcter de un identificador tiene que ser


siempre una letra o un subrayado, el carcter
subrayado se considera como una letra ms.
Un identificador no puede contener espacios en
blanco ni otro carcter distinto a los citados.
Caracteres especiales como * , : /. no son vlidos
C++ es sensible al uso de maysculas (case sensitive)
Por ejemplo: Resultado es diferente de resultado y es
diferente de resulTado.
No puede ser una palabra clave o reservada

EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplos
tipo
Color pelo
35
valor_promedio
maximo%
sal_prome
82T35Gd1
Me12_zc
diaFeriado
_pagoTotal
EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplos
tipo
Color pelo
35
valor_promedio
maximo%
sal_prome
82T35Gd1
Me12_zc
diaFeriado
_pagoTotal

correcto
incorrecto

No se permiten blancos

incorrecto

Debe iniciar con letras o _

correcto
incorrecto

No se permite %

correcto
incorrecto

Debe iniciar con letras o _

correcto
correcto
correcto
EIF200 FUNDAMENTOS DE INFORMTICA

Palabras reservadas

Algunos identificadores tienen un uso especial en los


lenguajes de programacin. Estos identificadores son
conocidos como palabras claves o palabras reservadas
(key words o reserved words), ya que el programador no
puede darle un uso diferente al que el lenguaje les
confiere.
Por ejemplo: en el caso de class su objetivo es informarle
al compilador que el identificador Persona describe una
clase; mientras que string permite informar que los
atributos nombre y apellidos almacenarn cadenas de
caracteres.
EIF200 FUNDAMENTOS DE INFORMTICA

Palabras claves en C++


auto

delete

goto

public

this

break

do

if

register

template

case

double

inline

return

typedef

match

else

int

short

union

char

enum

long

signed

unsigned

class

extern

new

sizeof

virtual

const

float

overload

static

void

continue

for

private

struct

volatile

default

friend

protected

switch

while

EIF200 FUNDAMENTOS DE INFORMTICA

Identificadores
Principios
importantes
sobre el uso de
los
identificadores
que deben
tenerse en
cuenta son:

Usar identificadores nemotcnicos (que


sugieren el significado de la entidad que
nombran). Por ejemplo, nombre, apellidos y
Edad son mas significativos para la lectura
que n, a y E.
No sacrificar la legibilidad por la longitud de
los identificadores. Utilizar identificadores
pronunciables. Esto ayuda a la memorizacin
de los nombres y a la explicacin oral del
cdigo fuente. No utilizar fN en lugar de
fechaNacimiento.

EIF200 FUNDAMENTOS DE INFORMTICA

Reglas o convenciones bsicas


Los identificadores se conforman con las 3 primeras letras significativas de
cada palabra que lo conforma. La primera letra debe ir en minscula y las
palabras que la componen llevan la primera letra con mayscula.
Sin embargo, si la variable representa un dato simple y pequeo se usa esa
palabra para representarla. Ejemplos: edad, suma, peso, pas, etc.

Ejemplos:
Contenido de la variable
Nombre representativo
Salario bruto sin impuestos
salBruSinImp
Nombre del empleado
nomEmp
Impuesto sobre la renta
impRen
Aproximacin polinomial exponencial
aproPolExp

EIF200 FUNDAMENTOS DE INFORMTICA

Tipos de datos

Una clase puede tener varios atributos de distintos tipos o


naturaleza.
Cada uno de los atributos est unido a un tipo de dato.
Cuando se declara un atributo se debe escribir el tipo de dato
al que pertenece.
Esto se hace con dos propsitos:

que la computadora conozca cuanto espacio de memoria asignar


a cada atributo que se declare
para reconocer que se estn haciendo las cosas correctamente.
Por ejemplo, si tengo que sumar dos atributos, esperara que se
sumaran nmero con nmero y no cadenas de caracteres con
elementos de tipo de dato numrico.

EIF200 FUNDAMENTOS DE INFORMTICA

Tipos de datos

El tipo de dato ms sencillo es el carcter, que sera un


solo elemento de una coleccin de 256 smbolos, que
puede incluir:
letras maysculas y minsculas
smbolos especiales como . , ; / & # ? * + [ )
La representacin de los dgitos decimales como
smbolo y no como valor, etc,

La identificacin que se utilizar para este tipo de datos es


char. Por ejemplo se declara el atributo
char tamannoCamisa; puede contener p, m o g.
EIF200 FUNDAMENTOS DE INFORMTICA

Tipos de datos

De una generalizacin del tipo carcter, est la


cadena de caracteres. Consiste en la reunin de una
secuencia de caracteres.

Se identifica con la palabra string. Ejemplo:


string nombreEstudiante;
puede contener Armando Carro Matos
puede contener Beatriz

EIF200 FUNDAMENTOS DE INFORMTICA

Tipos de datos

La representacin de nmeros tiene dos tipos


diferentes, dependiendo si el nmero tiene
decimales o no.

Si el nmero no tiene decimales se le llama int (45, -3,


3545)
Si tiene decimales se le llama float (45.3, -3.785234,
3545.0)

Ejemplos:
int a;
// a = 5
float b; // b= 7.678

EIF200 FUNDAMENTOS DE INFORMTICA

Tipos de datos

Un ltimo tipo de dato es para valores lgicos, es


decir, que puede valer solo falso o verdadero (true,
false). Este tipo se identifica con el nombre de
boolean.

Ejemplo:
bool si; // si = true;

EIF200 FUNDAMENTOS DE INFORMTICA

Tipos de datos

Se refiere al tipo de informacin que puede contener un atributo


(identificador)
Tipo
bool

Tamao(bits) Rango
8 (los siete bits

Nota

0o1

Valor lgico

De -128 a 127 (signed)


o de 0 a 255 (unsigned)

Un carcter o
un entero
pequeo

superiores son
ignorados)

char

short

16

De -32768 a 32767 (signed)


o de 0 a 65536 (unsigned)

El doble de un
char

int

32

De -2147483648 a 2147483647

Nmero
entero

(signed)

o de 0 a 4294967296

long

32 (puede ser 64
en otras
arquitecturas

float

32

(unsigned)

De -2147483648 a 2147483647
(signed)

o de 0 a 4294967296

(unsigned)

De +/- 1.4023x10-45 a
3.4028x10+38

Nmero
entero
Nmero real

Variables
Tipo de identificador que se utilizan para conservar
valores durante la ejecucin de un programa.
Permiten representar valores que no necesariamente
se conocen cuando se escriben las aplicaciones y a su
vez pueden cambiar durante la ejecucin de stas.
Al contenido de las variables se tiene acceso a travs
de los nombres simblicos (identificadores) que las
identifican.
Una variable debe tener un tipo asociado que es
precisamente el tipo de los valores que ella puede
conservar.

EIF200 FUNDAMENTOS DE INFORMTICA

Declaracin de variables

En la mayora de los lenguajes las variables tienen que ser definidas o


declaradas antes de ser utilizadas.

Ejemplos:
string nombre;
float peso;
float estatura;

Son caracterizadas por un tipo y un nombre simblico.

El tipo determina:
La clase de valores que puede tomar una variable (valores reales en
el caso de peso)
Las operaciones en las que puede participar (aritmticas en peso).
EIF200 FUNDAMENTOS DE INFORMTICA

Asignacin de variables
Asigna valores a las
variables

La instruccin de
asignacin se ejecuta:
se evala la expresin a
la derecha del operador
de asignacin (=)
el resultado de esta
evaluacin se le da como
valor a la variable que
est a la izquierda del
operador

Utiliza el operador
=
<variable> = <expresin>;

Luego de haberse
efectuado esta asignacin
de valores a la variable
de la izquierda este valor
sustituye cualquier otro
que hubiera tenido con
anterioridad la variable.

EIF200 FUNDAMENTOS DE INFORMTICA

Es una instruccin que


permite asignarle (=) a
una variable
(<variable>) el resultado
de la evaluacin de una
expresin (<expresin>)

Nota: Es importante
diferenciar este operador
de asignacin con el
utilizado en las
igualdades matemticas.

Asignaciones
identificador = expresin;
Expresin

Debe ser evaluada y resultar del tipo del identificador


Puede ser aritmtica, lgica, condicional.

EIF200 FUNDAMENTOS DE INFORMTICA

Expresiones y Operadores

Un operador es un carcter o grupo de caracteres que


acta sobre uno, dos o ms operandos para realizar una
determinada operacin con un determinado resultado.
Pueden ser:

unarios,
binarios y
ternarios

Un operando es el valor constante o literal, el contenido


de una variable (objeto), el resultado de la invocacin de
un mtodo, el resultado de la evaluacin de una
operacin, etc.
EIF200 FUNDAMENTOS DE INFORMTICA

Expresiones y Operadores

Ejemplos de operadores de la mayora de los


lenguajes:
Operadores aritmticos:
suma
resta
producto
divisin

+
*
/ si los operandos son enteros trunca el

resultado en lugar de redondearlo


mdulo
% resto de la divisin entera
menos

unario ms unario +

EIF200 FUNDAMENTOS DE INFORMTICA

Expresiones y Operadores

Ejemplos:
asignacin

resultado

x1 = 4+-2 * 5 + 10 2*3;
x2 = (4+-2) * 5 + 10 (2*3);
x3 = 17/2;
x4= 17.0/2;
x5= 12 % 2;
x6 = 5 % 2;
7x = true and false:
EIF200 FUNDAMENTOS DE INFORMTICA

Expresiones y Operadores

Ejemplos:
asignacin

resultado

x1 = 4+-2 * 5 + 10 2*3;

-2

x2 = (4+-2) * 5 + 10 (2*3);

14

x3 = 17/2

x4= 17.0/2

8.5

x5= 12 % 2

x6 = 5 % 2

7x = true and false

error

EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplos asignacin de variables

int temperatura;
int edadJuan;

temperatura = -5;
edadJuan = 25;
edadJuan = edadJuan + 1;
int edadPedro = 23;
float peso = 60.5;
char letra = 'a';
bool existe = true;
string nombreJuan = Juan;

string nombrePedro, nombreAna;

nombrePedro = nombreJuan;
nombreAna = Ana;

EIF200 FUNDAMENTOS DE INFORMTICA

Otros Operadores de Asignacin en C++


Operadores
de
asignacin
compuestos

+=
-=
*=
/=
%=
incremento(++)
decremento (--)

peso = peso + 10;


peso += 10;
total = total*0.13
total *= 0.13;

peso = peso + 1;
peso++;
peso+=1;
valor = valor - 1;
valor --;
valor-=1;
34

EIF200 FUNDAMENTOS DE INFORMTICA

Problema: Clculo del tipo de obesidad


Ya tenemos los atributos necesarios para resolver el
problema
class Persona
{
private:
string nombre;
float peso;
float estatura;

};

Cmo realizamos los clculos necesarios?, a travs de qu


mecanismos?
EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos

Existen bsicamente 4 tipos de mtodos:

Constructor
y destructor

Obtener y
establecer
(get y set)

Mtodo en
donde se
realizan
clculos

Mtodos
privados

EIF200 FUNDAMENTOS DE INFORMTICA

Visibilidad: Mtodos*
Smbol
o

+
#
*

Mnemni
co

Mtodos privados solo pueden ser vistos


y utilizados por mtodos de la misma
clase.

Private
Public

Mtodos pblicos pueden ser vistos y


utilizados por mtodos de la misma clase y
de otras clases. Por omisin los mtodos
son pblicos.

Protecte
d*

Mtodos protegidos pueden ser vistos y


utilizados por mtodos de la misma clase y
por mtodos de clases derivadas o
subclases.

Abstract*

* No se estudiarn como

Resultado

Static*

Mtodos abstractos no tienen


implementacin en la clase que se
enuncian, por lo tanto, deben ser
implementados en subclases.

Mtodos estticos son nicos para toda la


clase, esen
decir,
nocurso
pertenecen a ningn
mtodos
este
ejemplar u objeto de la
clase,
pero pueden
EIF200
FUNDAMENTOS
DE INFORMTICA

Constructores
Todas las clases tienen uno o ms mtodos usados para crear el objeto.
Estos mtodos son llamados los constructores (ya que construyen el
objeto).

El constructor es un mtodo especial que sirve para dar los valores


iniciales a los campos de un objeto en el momento en que se crea.

En la mayora de los lenguajes, el nombre del constructor es siempre el


nombre de la clase. Adems es preciso que sea pblico y que no tenga
ningn tipo o valor de retorno.

Como todos los mtodos, estos pueden o no tener argumentos.

EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo Persona

Suponga que se quiere crear a la clase Persona


con los siguientes atributos

EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo: constructor sin parmetros


class Persona
{
private:
string nombre;
float peso;
float estatura;
// definicin de un constructor sin
parmetros
public:
Persona( )
{
nombre = "indefinido";
peso = 0;
estatura = 0;
}

EIF200 FUNDAMENTOS DE INFORMTICA

Al crear un objeto
Persona tendr el nombre
con valor de indefinido, y
peso y estatura
con valor de 0

Persona
Personita
cedula: " indefinido
"
nombre:
"
nombre:
peso
: 0 ""
apellido: " 0
"
estatura:
annoNacimiento: 0
sexo: ' '

Ejemplo: constructor con parmetros


class Persona
{
private:
string nombre;
float peso;
float estatura;

// definicin de un constructor con


parmetros
Persona (string unNombre, float unPeso,
float unaEstatura)
{
nombre = unNombre;
peso= unPeso;
estatura = unaEstatura;}
}

// definicin de un constructor sin


parmetros
Se crea un objeto
Persona con los valores
public:
// aqu se pueden colocar otros mtodos
que
Persona(
) contengan los
}; // fin de la clase
{ identificadores unNombre,
unPeso,
unaEstatura
nombre
= "indefinido";
peso = 0;
estatura = 0;
EIF200 FUNDAMENTOS DE INFORMTICA
}

Mtodos set y get


Los atributos deben ser
accedidos por medio de los
mtodos

Objeto 1

Atributos

mtodos

EIF200 FUNDAMENTOS DE INFORMTICA

mensajes

Encapsulacin

Las clases tienen datos internos o atributos


que guardan propiedades de los objetos
Si estos atributos necesitan ser accedidos
fuera de la clase, se requiere hacer uso de
mtodos (set y get)
Esto asegura que estos datos no puedan ser
cambiados sin el conocimiento del objeto.
Uno de los beneficios de usar las funciones
set y get es que el objeto puede realizar
ciertas validaciones para asegurarse que el
dato es vlido antes de almacenarlo.
Los atributos son protegidos de
interferencia y mal uso por otros objetos
externos
EIF200 FUNDAMENTOS DE INFORMTICA

Radio

Vehculo

Comunicacin mediante mtodos


Al
Alobjeto
objetoCarro2
Carro2se
sele
le
enva
un
mensaje,
con
enva un mensaje, con
el
elargumento
argumento50.4,
50.4,
para
paraestablecer
establecersu
su
cantidad
cantidadde
de
combustible
combustibleen
en50.4
50.4

setCantidadCombustible (50.4)

Carro2 : Carro
cantidadCombustible
50.4

EIF200 FUNDAMENTOS DE INFORMTICA

Comunicacin mediante Mtodos


Al
Alobjeto
objetoCarro1
Carro1se
sele
le
enva
envaun
unmensaje
mensajepara
para
consultarle
por
su
consultarle por su
kilometraje
kilometrajeactual.
actual.

Carro1 : Carro
getKilometraje ()

kilometraje

1908.55
kilometraje
1908.55

EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos set y get


Permiten obtener y
alterar en forma
individual el valor de los
atributos.

Usualmente se definen
por cada atributo y
deben definirse dentro
de la clase.

EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos modificadores (set)


Se encargan de modificar los atributos de la clase.
Su principal funcin es la de validar los datos que se
pretenden asignar a las variables, evitando as la asignacin
de valores no vlidos que puedan llevar a un estado de
inconsistencia del objeto instanciado.
Ejemplo: clase que
maneje fechas y
horas

Un mtodo modificador debe ser capaz de


validar el dato de entrada e impedir que se
asignen valores invlidos como una hora 26
o un mes 14.

Estos mtodos tendrn como


nombre set seguido del nombre
del atributo con la primera letra
mayscula

setNombre()
setFecha()
EIF200 FUNDAMENTOS DE INFORMTICA

Mtodo set()

El mtodo set no devuelve ningn valor (void), pero


recibe a travs de su parmetro un valor que le asigna al
atributo.
El mtodo set cambia el estado del objeto.
void setNombre (string unNombre)
{
nombre = unNombre;
}
void setPeso (float unPeso)
{
peso= unPeso;
}
EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo: mtodos set


class Persona
{
private:
string nombre;
float peso;
float estatura;

public:
// mtodos constructores
.
.

// mtodos set
void setNombre (string pNombre) {
nombre = pNombre; }
void setPeso (float unPeso) {
peso= unPeso; }
void setEstatura (float unaEstatura) {
estatura = unaEstatura; }

}; // fin de la clase

EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos analizadores (get)


Se puede decir que son mtodos de consulta, sirven
para obtener el valor actual almacenado en los
atributos de la clase pero NO modifican estos
atributos.
Cada atributo que quiera ser accedido desde el exterior
tendr un mtodo para leerlo

Estos mtodos tendrn como


nombre get seguido del
nombre del atributo con la
primera letra mayscula.

getNombre()
getFecha()

EIF200 FUNDAMENTOS DE INFORMTICA

Mtodo get()
El mtodo get devuelve el valor que tiene un
atributo en particular.
Debe especificar el tipo del dato que devuelve.

string getNombre ( )
{
return (nombre);
}
float getPeso ( )
{
return (peso);
}
EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo: mtodos get


class Persona
{
private:
string nombre;
float peso;
float estatura;
public:
// mtodos constructores
.
.
// mtodos set
.
.

// mtodos get
string getNombre ( ) {
return(nombre); }
float getPeso ( ) {
return(peso); }
float getEstatura( ) {
return(estatura); }

}; // fin de la clase

EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos destructores
Los destructores son mtodos que sirven para eliminar un objeto de una
determinada clase, liberando la memoria utilizada por dicho objeto.
Cuando se define un destructor para una clase, ste es llamado
automticamente cuando se abandona el mbito en el que fue definido, y
por tanto no tienen por qu ser llamadas explcitamente por el
programador. Esto es as excepto cuando el objeto fue creado
dinmicamente con el operador new
Los destructores tienen el mismo nombre que la clase, pero con el smbolo
~ delante.
El destructor no admite
argumentos ni retorna un
valor. Ejemplo
EIF200 FUNDAMENTOS DE INFORMTICA

~Persona()
{
//Se muri la persona
}

Ejemplo: mtodo destructor


class Persona
{
private:
string nombre;
float peso;
float estatura;
public:
// mtodos constructores
.
.
// mtodos set
.
.

// mtodos get
..

..
// mtodo destructor
~Persona()
{
//Se destruye el objeto Persona
}
}; // fin de la clase

EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo: clase Persona


class Persona
{
private:
string nombre;
float peso;
float estatura;

Llaves inicial
y final

// definicin de un constructor sin


parmetros
public:
Persona( )
{
nombre = "indefinido";
peso = 0;
estatura = 0;
}

// definicin de un constructor con


parmetros
Persona (string unNombre, float unPeso,
float unaEstatura)
{
nombre = unNombre;
peso= unPeso;
estatura = unaEstatura;}
}
// aqu se pueden colocar otros mtodos
}; // fin de la clase
Punto y coma
final

EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo: clase Persona


class Persona
{
private:
string nombre;
float peso;
float estatura;
// definicin de un constructor sin
parmetros
public:
Persona( )
{
Llaves inicial
nombre = "indefinido";y final en
peso = 0;
cada mtodo
estatura = 0;
}

// definicin de un constructor con


parmetros
Persona (string unNombre, float unPeso,
float unaEstatura)
{
nombre = unNombre;
peso= unPeso;
estatura = unaEstatura;}
}
// aqu se pueden colocar otros mtodos
}; // fin de la clase

EIF200 FUNDAMENTOS DE INFORMTICA

Ejemplo: clase Persona


class Persona
{
private:
string nombre;
float peso;
float estatura;

comentarios

// definicin de un constructor sin


parmetros

// definicin de un constructor con


parmetros
Persona (string unNombre, float unPeso,
float unaEstatura)
{
nombre = unNombre;
peso= unPeso;
estatura = unaEstatura;}
}

public:
// aqu se pueden colocar otros mtodos
Persona( )
}; // fin de la clase
{
nombre = "indefinido";
peso = 0;
estatura = 0;
}
EIF200 FUNDAMENTOS DE INFORMTICA

Comentarios
Es texto que se incluye en el cdigo fuente con el objetivo
de facilitar su legibilidad a los programadores.
No tienen significado alguno para la ejecucin de una
aplicacin o sea son ignorados por el compilador.
Ejemplos:

// identificacin de la clase
// atributos
// int es equivalente a entero
// mtodo de consulta o acceso
/* Esto es un comentario que ejemplifica cmo se
comentarios que ocupan varias lneas */

escriben

EIF200 FUNDAMENTOS DE INFORMTICA

Clase Persona: UML

EIF200 FUNDAMENTOS DE INFORMTICA

Clase Persona: Ejemplo completo


class Persona
{
private:
string nombre;
float peso;
float estatura;
// definicin de un constructor sin
parmetros

// definicin de un constructor con


parmetros
Persona (string unNombre, float unPeso,
float unaEstatura)
{
nombre = unNombre;
peso= unPeso;
estatura = unaEstatura;}
}

public:
Persona( )
{
nombre = "indefinido";
peso = 0;
estatura = 0;
}
EIF200 FUNDAMENTOS DE INFORMTICA

Clase Persona: Ejemplo completo


// mtodos set
void setNombre (string pNombre) {
nombre = pNombre; }
void setPeso (float unPeso) {
peso= unPeso; }
void setEstatura (float unaEstatura)
{
estatura = unaEstatura; }

// mtodos get
string getNombre ( ) {
return(nombre); }
float getPeso ( ) {
return(peso); }
float getEstatura( ) {
return(estatura); }
~Persona()
{
//Se muri la persona }
FALTAN los mtodos de clculo!!!

EIF200 FUNDAMENTOS DE INFORMTICA

}; // fin de la clase

Mtodos de clculo

Son los mtodos que permiten realizar diferentes


operaciones sobre los objetos de la clase

Cmo calculamos la IMC de los objetos Persona?

EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos de clculo
// mtodo que calcula el IMC de una persona

float IMC() {
return (peso/(estatura*estatura));
}

Recuerde que
peso y estatura
son atributos de la
clase Persona
EIF200 FUNDAMENTOS DE INFORMTICA

En general

La sintaxis que se usa para definir un mtodo es


la siguiente:
<TipoDevuelto> <identificador> ([<Parmetros>])
{
<instrucciones>
}

Dentro de estas <instrucciones> se puede


acceder a todos los miembros definidos en la
clase, a la cual pertenece el mtodo.
EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos

A su vez todo mtodo puede devolver un valor como resultado de


haber ejecutado las <instrucciones>. En tal caso el tipo del valor
devuelto tiene que coincidir con el especificado en <TipoDevuelto>, y
el mtodo tiene que terminar con la clusula return <valor>
float IMC() {
return (peso/(estatura*estatura));
}

En caso que se desee definir un mtodo que no devuelva objeto alguno


se omite la clusula return y se especifica void como <TipoDevuelto>.
void setPeso (float unPeso) {
peso= unPeso; }

EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos

Opcionalmente todo mtodo puede recibir en cada llamada una lista


de parmetros a los que podr acceder en la ejecucin de las
<instrucciones> del mismo. En <parmetros> se indican los tipos y
nombres de estos parmetros y es mediante estos nombres con los
que se deber referirse a ellos en el cuerpo del mtodo
void setEstatura(float est)
{
estatura=est;
}
Para cambiar el valor del atributo
estatura el mtodo debe conocer el nuevo valor
que se le desea asignar y como este NO es un
atributo DEBE ingresar como parmetro
EIF200 FUNDAMENTOS DE INFORMTICA

Mtodos
Cmo calculamos el tipo de obesidad de
nuestro problema?
Recuerden que la frmula depende del IMC de la
persona

Necesitamos una
estructura
que nos permita
identificar el rango en el
que se encuentra el IMC
del objeto
EIF200 FUNDAMENTOS DE INFORMTICA

Pensarlo como
TAREA

Proyecto 0151-14 UNA


Mora & Coto, 2015

Uso didctico curso EIF 200


Escuela de Informtica
Universidad Nacional
Costa Rica

EIF200 FUNDAMENTOS DE INFORMTICA