Está en la página 1de 33

POO

1


INSTITUTO POLITCNICO NACIONAL




ESCUELA SUPERIOR DE INGENIERA MECNICA Y ELCTRICA
UNIDAD ZACATENCO



INGENIERA EN COMUNICACIONES Y ELECTRNICA


PROGRAMACIN ORIENTADA A OBJETOS



NOTAS


PEREZ CHAVEZ ERICK ALEJANDRO


GPO: 2CM2 FECHA: 12/09/2014

POO

2

Estructura Basica de los programas C / C++
Es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne Stroustrup, un
lenguaje de programacin C con mecanismos que permiten la manipulacin de objetos, desde el
punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje hbrido.

Directivas del preprocesador
Los compiladores de C++ proporcionan bibliotecas de funciones.
Cada biblioteca de funciones tiene asociado un archivo de definicin que se denomina cabecera.
Para utilizar algo de una biblioteca en un programa, hay que colocar al principio del programa una
directiva de preprocesamiento seguida de la cabecera de la biblioteca entre ngulos.
Instrucciones al compilador antes de que se compile el programa principal
Las directivas ms usuales son:
# include
# define
# include <iostream.h>
Indica al compilador que lea las directivas antes de compilar la funcin principal

La funcin main()
Una funcin C++ es un subprograma que devuelve un valor, un conjunto de valores o realiza una
tarea especfica. Todo programa C++ tiene una nica funcin main() que es el punto inicial de
entrada al programa. Si se intenta declarar dos funciones main() dentro del programa se produce
error.

Librerias
Definicin de constantes / macros
Declaracion de variables globales
Definicion / declaracin de funciones de usuario
Int main ( ) { return0;}

POO

3


Librerias de entrada y saida (input, output)
)
*Stdio
Std standard
i - input
o - output
Conio
Con console
i - input
o - output

Compilar: Revisar los errores de los programas

std::cout<<; cout pertenece a una clase standart
std:: define la clase a la cual pertenece y se declara antes del main
Nomenclatura de defines, macros, constantes
Los nombres de defines, macros, constantes, etc... tienen que ser autoexplicativos. En s mismos
tienen que contener una explicacin de su uso o finalidad.
Para componer los nombres de defines, constantes, etc.. se utilizarn principalmente sustantivos,
pudiendo calificarse con adjetivos.
Para las macros, se utilizarn formas verbales (infinitivos), acompaados opcionalmente de
sustantivos que califiquen la accin.
Esto se realizar as para mejorar la identificacin de los distintos componentes de un sistema.
POO

4

Las constantes se tienen que definir en mayusculas (tanto las definidas por #define como las
definidas utilizando const).
Si se componen de varias palabras se deberan separan por el caracter "_". La constante se
conformar mediante un sustantivo (o conjunto de sustantivos) con posibles adjetivos.
De esta forma seguimos una norma ampliamente utilizada por los programadores.
Constante: Que tiene un valor establecido que no varia
Sintaxis.
const nombre y valor
const tipo de dato
const m=10
const float m= 10.9
Macro: Pedazo de codigo representado por una variable
#define pi 3.1416

Tipos de datos bsicos en C++
El tipo de dato determina la naturaleza del valor que puede tomar una variable. Un tipo de dato
define un dominio de valores y las operaciones que se pueden realizar con stos valores.
C++ dispone de unos cuantos tipos de datos predefinidos (simples) y permite al programador crear
otro tipo de datos.
Tipo de datos bsicos
int ( Nmeros enteros )
float ( Nmeros reales )
double ( Nmeros reales ms grandes que float )
bool ( Valores lgicos )
char ( Caracteres y cualquier cantidad de 8 bits )
void ( Nada. Sirve para indicar que una funcin no devuelve valores)


Tipo y valor de los datos
16 bits 32 bits 64 bits
char %c 1 byte 1 byte 1 byte
int %d 2 bytes 4 bytes 8 bytes
float %d 4 bytes 4 bytes 4 bytes
Doubl %ld 8 bytes 8 bytes 8bytes

Sistema Decimal
POO

5

El sistema de numeracion decimal utiliza como base el 10, es decir, que sus agrupaciones se forman
de 10 en 10. Es un sistema posicional, ya que las cifras adquieren un valor relativo de acuerdo con
el lugar donde se encuentren.
Sistema Octal
El sistema de numeracin octal es un sistema de numeracin en base 8, una base que es potencia
exacta de 2 o de la numeracin binaria. Esta caracterstica hace que la conversin a binario o
viceversa sea bastante simple. El sistema octal usa 8 dgitos (0, 1, 2, 3, 4, 5, 6, 7) y tienen el mismo
valor que en el sistema de numeracin decimal.
Sistema Hexadecimal
El sistema de numeracin hexadecimal es un sistema de base 16. Igual que en el sistema decimal,
cada vez que tenamos 10 unidades de un determinado nivel, obtenamos una unidad del nivel
superior (diez unidades: una decena, diez decenas: una centena, etc.) en el hexadecimal cada vez
que juntamos 16 unidades de un nivel obtenemos una unidad del nivel superior. En un sistema
hexadecimal debe haber por tanto 16 dgitos distintos. Como slo disponemos de diez dgitos (0, 1,
2, 3, 4, 5, 6, 7, 8, 9) necesitamos ampliar esa cantidad y se hace mediante letras, con la siguiente
relacin en sistema decimal:
A= 10 B= 11 C= 12 D= 13 E= 14 F =15

* / Diagonal \ Slash

Funciones de usuario:
Son procedimientos creados por el usuario con cierto formato.
Las funciones de usuario son, como su nombre indica, las que el propio usuario declara, de igual
manera que declara procedimientos. Las funciones nacen con el propsito de ser subprogramas que
siempre tienen que devolver algn valor.
Las dos principales diferencias entre procedimientos y funciones son:
Las funciones siempre devuelven un valor al programa que las invoc.
Para llamar a un procedimiento se escribe su nombre en el cuerpo del programa, y si los
necesita, se incluyen los parmetros entre parntesis. Para invocar una funcin es necesario
hacerlo en una expresin.
Las funciones de usuario vienen definidas por un nombre, seguidas de dos parntesis () entre los
que puede haber o no argumentos. Los argumentos son valores que se le pasan a la funcin cuando
se llama.
Es importante mantener claros dos trminos:
POO

6

1. El trmino Argumento se refiere a la variable usada al llamar la funcin.
2. El trmino Parmetro Formal se refiere a la variable de una funcin que recibe el valor de los
argumentos.
Tambin es importante tener claro que la copia de variables se hace slo en una direccin: del
argumento al parmetro formal. Cualquier modificacin del parmetro formal realizado dentro de la
funcin no tiene ninguna influencia en el argumento.
Hay que tener en cuenta es que el tipo de argumento que se utiliza para llamar a una funcin debe
ser el mismo que el del parmetro formal que recibe el valor. As, no debe llamarse a la funcin
cuadrado con un argumento de tipo float.
Sintaxis.
TIPO - NOMBRE DELAFUNCION - (LISTA DE ARGUMENTOS)
{
}
*Ejemplo
int suma (int x, int y);
int main ()
{
int x,y,s;
cout<<Dame el valor de x;
cin>>x;
cout<<Dame el valor de y;
cin>>y;
s=suma(x,y);
cout<<La suma de<<x<<+<<Y<<es: <<s;
getch ();
return 0;
}
int suma (int x, int y)
{ int s;
s= x+y;
return s;
}

Arreglo de Datos
Un arreglo en C++ es un conjunto de datos que se alamacenan en memoria de manera contigua con
el mismo nombre. Para difenciar los elementos de un arreglo se utilizan ndices detrs del nombre
del arreglo y encerrados por []. El elemento 5 (quinto) de un arreglo, es representado por el
POO

7

ndice [4], ya que los ndices comienzan en 0. Esto significa que un arreglo de 10 elementos tendra
los ndices del 0 al 9: [0...9]

Arreglo de datos CHAR
Conjunto de datos (tipo carcter) del mismo tipo secuenciales.
Sintaxis.
char name [50]

0 1 2 3 4 5 6 7 8 9 . . . . . . . 49
Todo el conjunto se llama name

char tipo de dato

name Nombre del arreglo

Para asignar un dato al arreglo se hace lo siguiente.
name[0] = A;
name[3]=n;
name[49]=3;

Para imprimir el tipo char se puede hacer de dos maneras:
cout<<name[0];
printf (%c,&name[1]);

Pr1
//Imprime un nombre predeterminado

#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main ()
{
char name[20];

POO

8

name [0]='E';
name [1]='r';
name [2]='i';
name [3]='c';
name [4]='k';
cout<<"El nombre es: ";
cout<<name[0]<<name[1]<<name[2]
<<name[3]<<name[4]];

getch();
return 0;


}
Para que el usuario teclee su nombre y que la computadora lo imprima tomamos en cuenta los siguientes
comandos:

getch () - Espera recibir un character (Enter).
getch(). Espera un carcter sin terminar con Enter.
getche() Espera un carcter sin enter, pero lo muestra en pantalla

Pr2
//Este programa pide al usuario su nombre y lo muestra al revs.
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main ()
{
char name [20];
cout<<"Dame tu nombre: ";

name [0]=getche();
name [1]=getche();
name [2]=getche();
name [3]=getche();
name [4]=getche();

printf("\nEl nombre al reves es: %c"<<name[4]<<name[3]
<<name[2]<<name[1]<<name[0];


getch();
POO

9

return 0;
}





Caracteres especiales
Los caracteres especiales definen la forma de ejecucin de las sentencias de cdigo de computadora o los
comandos interpretados.

Caracteres especiales
\n Salto de lnea
\r Enter
\b Backspace
\c Emite un pitido
\0 Carcter de nulo (NULL)
\t Tabulador

cout: Muestra o Imprime en pantalla
cin: Captura o Recibe datos proporcionados por el usuario hasta introducir enter

Cadena de caracteres
Son iguales que los arreglos de caracteres, pero al final debe llevar un carcter especial llamado Nulo (NULL)
Una cadena en C++ es un conjunto de caracteres, o valores de tipo char, terminados con el carcter nulo, es
decir el valor numrico 0. Internamente, en el ordenador, se almacenan en posiciones consecutivas de memoria.
Este tipo de estructuras recibe un tratamiento muy especial, ya que es de gran utilidad y su uso es continuo.

A N A \0
Carcter nulo
name[0] = A
name[1] = N Arreglo de Caracteres
name[2] = A Cadena de caracteres
name[3] = \0
POO

10


Para asignar datos a una cadena de caracteres se puede hacer de dos maneras:
cin>>name
scanf(%s,&name);

Tipo de dato Asignar dato en C Asignar dato en C++
char f; scanf(%c,&f); cin>>f;
int w; scanf(%d,&w); cin>>w;
float x ; scanf(%f,&x); cin>>x;
double z; scanf(%ld,&z); cin>>z;
char name; scanf(%s,&name); cin>>name;

gets(name) = recibe una cadena

Pr3
//Este programa pide al usuario datos y los imprime en pantalla
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main ()
{
char name [22], apel [30];

cout<<"Ingresa tu nombre: ";
cin>>name;

cout<<Dame tu apellido: ";
cin>>apel;

printf("\nEl nombre es: %s",name);
cout<<"\nEl apellido es: "<<apel;

getch();
return 0;

}


POO

11

Pr4
//Este programa pide al usuario nombre, edad y 3 calificaciones, mostrando en pantalla el promedio.

#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main ()
{
char name [50];
int edad;
float calif[3], prom;

cout<<"Dame tu nombre: ";
gets(name);

cout<<"Dame tu edad: ";
cin>>edad;

cout<<"Dame tu calif 1: ";
cin>>calif[0];

cout<<"Dame tu calif 2: ";
cin>>calif[1];

cout<<"Dame tu calif 3: ";
cin>>calif[2];

prom=(calif[0]+calif[1]+calif[2])/3;

cout<<"\nLos datos proporcionados son:"<<endl;
cout<<"\nNombre:"<<name<<endl;
cout<<"Edad:"<<edad<<endl;
cout<<"Calif 1: "<<calif[0]<<endl;
cout<<"Calif 2: "<<calif[1]<<endl;
cout<<"Calif 3: "<<calif[2]<<endl;
cout<<"\nPromedio: "<<prom<<endl;


getch();
return 0;

}

Ciclos
POO

12

Sirven para repetir/ iterar, una o ms instrucciones. Existen tres tipos:

FOR
Sintaxis
for(condicin inicial ; condicin final ; incremento o decremento)
Instruccion(es);
*para mas de una instruccin se tienen que usar llaves { }.

WHILE
Sintaxis
Condicin inicial
while (condicin final)
{
Instruccin(es);
Incremento o decremento
}
DO-WHILE
Sintaxis
do{ incremento o decremento, instrucciones ;
} while (condicin final);

Diferencias en los incrementos
i++. Toma el valor y luego hace la suma
++i. Primero hace la suma y luego toma el valor

Pr5
//Este programa muestra al usuario los nmeros del 1 a l00 usando FOR.

#include <conio.h>
#include <stdio.h>
POO

13

#include <iostream>
using namespace std;

int main ()
{
int i;

for(i=1;i<=100;i++)
cout<<i<<", ";


getch();
return 0;

}


Pr6
//Este programa muestra al usuario los nmeros del 1 a l00 usando WHILE.

#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main ()
{
int i;

i=1;
while(i<=100)
{
cout<<i<<", ";
i++;
}

getch();
return 0;

}


Pr7
//Este programa muestra al usuario los nmeros del 1 a l00 usando DO WHILE.

POO

14

#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main ()
{
int i;
i=1;
do{cout<<i<<", ";
i++;
}

while(i<=100);

getch();
return 0;
}


Pr8
//Este programa muestra los numeros pares del 1 al 100 usando un WHILE

#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;

int main ()
{
int i;
i=2;

while(i<=100)
{
cout<<i<<", ";
i+=2;
}
getch();
return 0;

}

Proyecto
Contiene por lo menos un archivo, en DEV-C++ se cran un archivo con la extensin .dev
POO

15

Archivo.c
.cpp
.exe archivos
.doc
Pixel:


If
Sirve para realizar preguntas, estas deben de estar hechas de manera que las respuesta sea un si o un no.
La sentencia if se le conoce como estructura de seleccin simple y su funcin es realizar o no una determinada accin o sentencia, basndose en el
resultado de la evaluacin de una expresin (verdadero o falso), en caso de ser verdadero se ejecuta la sentencia.

Sintaxis.
if(pregunta)
-respuesta verdadera
else
-respuesta falsa

*para ms de una instruccin se usan llaves

Switch
Es un switcheador / seleccionador de varias condiciones.
La instruccin switch() es una instruccin de decisin mltiple, donde el compilador prueba o busca el valor contenido en una variable
contra una lista de constantes ints o chars, cuando el computador encuentra el valor de igualdad entre variable y constante, entonces
ejecuta el grupo de instrucciones asociados a dicha constante, si no encuentra el valor de igualdad entre variable y constante, entonces
ejecuta un grupo de instrucciones asociados a un default, aunque este ultimo es opcional.
Sintaxis.
switch( carcter o entero)
{
case 1 : ;
POO

16

break;
case A: ;
break;
default : break;
}


Pr9
//Este programa muestra en pantalla un asterisco en el centro de la pantalla SIN LIMITES

#include<iostream>
#include <conio2.h>
#include <stdio.h>
using namespace std;

int main ()
{
char f;
int x,y;
x=40;
y=12;

gotoxy(x,y);
printf("*");

do{
getch ();
f=getch();
clrscr();

switch(f)
{
//arriba
case 72: gotoxy(x,y--);
printf("*");
break;

//abajo
case 80: gotoxy(x,y++);
printf("*");
break;

//izquierda
case 75: gotoxy(x--,y);
printf("*");
break;

//derecha
case 77: gotoxy(x++,y);
printf("*");
break;
}

} while (f!=27);

return 0;

}


Pr10
//Este programa muestra en pantalla un asterisco en el centro de la pantalla CON LIMITES

#include<iostream>
#include <conio2.h>
#include <stdio.h>
using namespace std;
POO

17


int main ()
{
char f;
int x,y;
x=40;
y=12;

gotoxy(x,y);
printf("*");

do{
getch ();
f=getch();
clrscr();

switch(f)
{
//arriba
case 72: if(y>1)
{
gotoxy(x,y--);
printf("*");
}
else
{
gotoxy(x,y);
printf("*");
}
break;

//abajo
case 80: if(y<25)
{
gotoxy(x,y++);
printf("*");
}
else
{
gotoxy(x,y);
printf("*");
}
break;

//izquierda
case 75: if(x>1)
{
gotoxy(x--,y);
printf("*");
}
else
{
gotoxy(x,y);
printf("*");
}
break;

//derecha
case 77: if(x<80)
{
gotoxy(x++,y);
printf("*");
}
else
{
gotoxy(x,y);
printf("*");
}
break;


}

}while(f!=27);
return 0;

}



PROGRAMACION ORIENTADA A OBJETOS
Estructuras:
Conjunto de datos, ms de 1, de diferente tipo creados por el usuario.
POO

18

Las estructuras de datos se emplean con el objetivo principal de organizar los datos contenidos dentro de la memoria del
ordenador.
Una estructura es un tipo de dato compuesto que permite almacenar un conjunto de datos de diferente tipo. Los datos que
contiene una estructura pueden ser de tipo simple (caracteres, nmeros enteros o de coma flotante etc.) o a su vez de tipo
compuesto (vectores, estructuras, listas, etc.). A cada uno de los datos o elementos almacenados dentro de una estructura se les
denomina miembros de esa estructura y stos pertenecern a un tipo de dato determinado.
Sintaxis.
struct nombre
{

}nombre de la caja;

*Ejemplo
struct Nombre
{
char name[50];
char tel[20];
int edad;
}

U1P1
// Programa con estructuras que pide una fecha y despliega por separado el da, mes y ao proporcionado.

#include<iostream>
#include<conio.h>
using namespace std;

struct fecha
{
int d;
char m[20];
int a;
} f;

int main ()
{
cout<<"\n\tDame una fecha: \n"<<endl;
POO

19

cout<<"\tPrimero, dime el dia: ";
cin>>f.d;

cout<<"\nDame el mes: ";
cin>>f.m;

cout<<"\nEl ao: ";
cin>>f.a;

cout<<"\n\n\tLa fecha proporcionada fue: " <<f.d<<"-"<<f.m<<"-"<<f.a;
getch();
return 0;
}
U1P1_1
//Programa con estructuras y funciones de usuario que pide una fecha y despliega por separado el da, mes y
ao proporcionado.

#include<iostream>
#include<conio.h>
using namespace std;

struct fecha
{
int d;
char m[20];
int a;
} f;

void pideFecha(void)
{
cout<<"Dame la fecha por favor "<<endl;
cout<<"\n* Dia: ";
cin>>f.d;

cout<<"\n* Mes: ";
cin>>f.m;

cout<<"\n* Ao: ";
cin>>f.a;
}

void muestraFecha(void)
{
cout<<"\nLa fecha que proporcionaste fue: "
<<f.d<<"-"<<f.m<<"-"<<f.a;
}

POO

20

int main ()
{
pideFecha();
muestraFecha();

getch();

return 0;
}



U1P1_2
//Programa con estructuras (varias variables) que pide una fecha y despliega por separado el da, mes y ao
proporcionado.

#include<iostream>
#include<conio.h>
using namespace std;

struct fecha
{
int d;
char m[20];
int a;
} f;


int main ()
{
fecha hoy, cumple;
// pideFecha();
// muestraFecha();

cout<<"Dame la fecha de hoy"<<endl;
cout<<"\n* Dia: ";
cin>>hoy.d;

cout<<"\n* Mes: ";
cin>>hoy.m;

cout<<"\n* Ao: ";
cin>>hoy.a;

cout<<"\n Ahora, dame la fecha de tu cumpleaos por favor "<<endl;
POO

21

cout<<"\n* Dia: ";
cin>>cumple.d;

cout<<"\n* Mes: ";
cin>>cumple.m;

cout<<"\n* Ao: ";
cin>>cumple.a;

getch();

return 0;
}

U1P2
//Programa con estructuras que pide nombre, dreccin,telefono email y edad

#include<iostream>
#include<conio.h>
using namespace std;

struct datos
{
char name [50];
char dir[80];
char tel[20];
char email[30];
int edad;
}agenda;

void pideDatos(void)
{
cout<<"Dame tu nombre: ";
cin>>agenda.name;
cout<<"Dame tu direccin: ";
cin>>agenda.dir;
cout<<"Dame tu telefono: ";
cin>>agenda.tel;
cout<<"Dame tu email: ";
cin>>agenda.email;
cout<<"Dame tu edad: ";
cin>>agenda.edad;
}

void muestraDatos(void)
{
POO

22

cout<<"\nLos datos son\n"
<<" * Nombre:"<<agenda.name<<endl
<<" * Direccion:"<<agenda.dir<<endl
<<" * Telefono:"<<agenda.tel<<endl
<<" * Email:"<<agenda.email<<endl
<<" * Edad:"<<agenda.edad;
}
int main ()
{
pideDatos();
muestraDatos();

getch();
return 0;
}
Estructuras anidadas
La conveniencia de coger nombres de funciones y datos fuera del espacio de nombre global es aplicable a las
estructuras. Puede anidar una estructura dentro de otra estructura, y por tanto guardar juntos elementos
asociados. La sintaxis de declaracin es la que podra esperarse, tal como puede ver en la siguiente estructura,
que implementa una pila como una lista enlazada simple de modo que nunca se queda sin memoria.

U1P3
//Agenda con estructuras anidadas que pide nombre, dreccin,telefono email, edad y cumpleaos


#include<iostream>
#include<conio.h>
using namespace std;

struct fecha
{
int d, m, a;
};

struct datos
{
char name [50];
char dir[80];
char tel[20];
char email[30];
int edad;
fecha cumple;
}agenda;

void pideDatos(void)
{
cout<<"AGENDA\n\n";
cout<<"Dame tu nombre: ";
cin>>agenda.name;
cout<<"\nDame tu direccin: ";
cin>>agenda.dir;
cout<<"\nDame tu telefono: ";
cin>>agenda.tel;
cout<<"\nDame tu email: ";
cin>>agenda.email;
cout<<"\nDame tu edad: ";
cin>>agenda.edad;
cout<<"\nDame tu fecha de cumpleaos: \n";
cout<<"\nDia: ";
cin>>agenda.cumple.d;
cout<<"\nMes: ";
cin>>agenda.cumple.m;
cout<<"\nAo: ";
cin>>agenda.cumple.a;
}

POO

23

void muestraDatos(void)
{
cout<<"\nLos datos son\n\n"
<<" * Nombre:"<<agenda.name<<endl
<<" * Direccion:"<<agenda.dir<<endl
<<" * Telefono:"<<agenda.tel<<endl
<<" * Email:"<<agenda.email<<endl
<<" * Edad:"<<agenda.edad
<<" * Cumpleaos: "
<<agenda.cumple.d<<"-"
<<agenda.cumple.m<<"-"
<<agenda.cumple.a<<"-";
}

int main ()
{
pideDatos();
muestraDatos();

getch();
return 0;
}




UIP4
//Este programa suma 2 numeros complejos con
estructuras

#include<iostream>
#include<conio.h>
using namespace std;

struct complejo
{
float r, i;
}A, B, C;

void pedirNumeros (void);
void sumarNumeros (void);

int main ()
{
pedirNumeros ();
sumarNumeros ();
getch ();
return 0;
}

void pedirNumeros (void)
{
cout<<"\nDame parte real de A: ";
cin>>A.r;
cout<<"\nDame parte imaginaria de A: ";
cin>>A.i;
cout<<"\nDame parte real de B: ";
cin>>B.r;
cout<<"\nDame parte imaginaria de B: ";
cin>>B.i;
}

void sumarNumeros (void)
{
C.r=A.r+B.r;
C.i=A.i+B.i;

cout<<"\nLa suma es \n\n"<<A.r<<" +
"<<A.i<<"i"<<endl
<<B.r<<" + "<<B.i<<"i"<<endl
<<"________\n"<<endl
<<C.r<<" + "<<C.i<<"i"<<endl;
}


UIP4_1
//Este programa suma 2 numeros complejos con
funciones de usuario

#include<iostream>
POO

24

#include<conio.h>
using namespace std;

struct complejo
{
float r, i;
};

complejo pedir();
complejo suma(complejo, complejo);

int main ()
{
complejo A, B, C;

cout<<" * * Dame el numero complejo A * * \n";
A=pedir();

cout<<"\n * * Dame el numero complejo B * * \n";
B=pedir();
C=suma(A, B);
cout<<"\n\nLa suma es: \n \n";

cout<<A.r;
if (A.i<0)
cout<<A.i<<"i"<<endl;
else
cout<<" + "<<A.i<<"i"<<endl;

cout<<B.r;
if (B.i<0)
cout<<B.i<<"i"<<endl;
else
cout<<" + "<<B.i<<"i"<<endl;

cout<<"______"<<endl;

cout<<C.r;
if (C.i<0)
cout<<C.i<<"i"<<endl;
else
cout<<" + "<<C.i<<"i"<<endl;

getch ();
return 0;
}

complejo pedir ()
{
complejo AUX;
cout<<"\nLa parte real: ";
cin>>AUX.r;
cout<<"La parte imaginaria: ";
cin>>AUX.i;

return (AUX);
}

complejo suma (complejo A, complejo B)
{
complejo C;
C.r=A.r+B.r;
C.i=A.i+B.i;

return (C);
}

Clases
Son un conjunto de datos de diferente tipo, creados por el usuario, adems de funciones.
Una clase define un tipo de dato, muy parecido a una estructura (struct) en C. En informtica, un tipo de dato se
compone de estados y operaciones, y por su puesto puede haber transicin entre estados. As int es un tipo de
dato porque tiene un conjunto de estados y operaciones como i + j o i++, etc. Exactamente de la misma manera,
una clase proporciona un conjunto de (por lo general pblicos) operaciones, y un conjunto de (por lo general no
pblico) datos (tambien llamado propiedades) que representan los valores abstractos que las instancias de la
clase pueden tener.

POO

25

UIP5
//Este programa suma 2 numeros complejos con clases tipo estructura

#include<iostream>
#include<conio2.h>
using namespace std;

struct complejo //clase
{
float r,i;

void pedir()
{
cout<<"Dame la parte real: ";
cin>>r;
cout<<"Dame la parte imaginaria: ";
cin>>i;
}

void suma(complejo A,complejo B)
{
r=A.r + B.r;
i=A.i + B.i;
}
};

int main ()
{
complejo A,B,C; //variable A tipo complejo

cout<<" Dame el numero complejo A \n";
A.pedir();

cout<<"\n Dame el numero complejo B \n";
B.pedir();
C.suma(A,B);

cout<<"\nLa suma es: \n"<<A.r<<" + "<<A.i<<"i"<<endl
<<B.r<<" + "<<B.i<<"i"<<endl
<<C.r<<" + "<<C.i<<"i"<<endl;

getch();
return 0;

}

POO

26

U1P5_1
//Este programa suma 2 numeros complejos con clases tipo estructura

#include<iostream>
#include<conio2.h>
using namespace std;

struct complejo //clase
{
float r,i;

void pedir()
{
cout<<"Dame la parte real: ";
cin>>r;
cout<<"Dame la parte imaginaria: ";
cin>>i;
}

void suma(complejo A,complejo B)
{
r=A.r + B.r;
i=A.i + B.i;
}

void muestra()
{
cout<<r<<" + "<<i<<"i"<<endl;
}
}; //clase termina

int main ()
{
complejo A,B,C; //variable A tipo complejo

cout<<" *Dame el numero complejo A * \n";
A.pedir();
cout<<"\n * Dame el numero complejo B * \n";
B.pedir();
C.suma(A,B);

A.muestra();
B.muestra();
C.muestra();

getch();
return 0;
POO

27


}

UIP5_2
//Este programa suma 2 nmeros complejos con clases tipo struct

#include<iostream>
#include<conio2.h>
using namespace std;

struct complejo //clase complejo
{
float r,i;
void pedir();
void suma(complejo A,complejo B);
void muestraTodo(complejo A,complejo B);
void muestra();
};

void complejo::pedir()//pedir le pertenece a la clase complejo
{
cout<<"Dame la parte real: ";
cin>>r;
cout<<"Dame la parte imaginaria: ";
cin>>i;
}

void complejo::suma(complejo A,complejo B)
{
r=A.r + B.r;
i=A.i + B.i;
}

void complejo::muestraTodo(complejo A,complejo B)
{
cout<<"\nLa suma es: \n"<<A.r<<" + "<<A.i<<"i"<<endl
<<B.r<<" + "<<B.i<<"i"<<endl
<<r<<" + "<<i<<"i"<<endl;
}

void complejo::muestra()
{
cout<<r<<" + "<<i<<"i"<<endl;
}

int main ()
POO

28

{
complejo A,B,C;

cout<<" * * Dame el numero complejo A * * \n";
A.pedir();

cout<<"\n * * Dame el numero complejo B * * \n";
B.pedir();
C.suma(A,B);

A.muestra();
B.muestra();
C.muestra();
getch();
return 0;
}

Classes tipo C++
Todas las clases tipo struct se consideran pblicas.
Todo lo que se alcance con el punto es publico.
Los datos de las clases tipo class, pueden ser: public, private o protected
Sin tipo en las clases por default son privadas

U1P6
//Suma 2 complejos en clases tipo class, con public

#include<iostream>
#include<conio2.h>
using namespace std;

class complejo //clase complejo
{
public:
float r,i;
void pedir();
void suma(complejo A,complejo B);
void muestraTodo(complejo A,complejo B);
void muestra();
};

void complejo::pedir()//pedir le pertenece a la clase complejo
{
cout<<"Dame la parte real: ";
cin>>r;
cout<<"Dame la parte imaginaria: ";
cin>>i;
POO

29

}

void complejo::suma(complejo A,complejo B)
{
r=A.r + B.r;
i=A.i + B.i;
}

void complejo::muestraTodo(complejo A,complejo B)
{
cout<<"\nLa suma es: \n"<<A.r<<" + "<<A.i<<"i"<<endl
<<B.r<<" + "<<B.i<<"i"<<endl
<<r<<" + "<<i<<"i"<<endl;
}

void complejo::muestra()
{
cout<<r<<" + "<<i<<"i"<<endl;
}

int main ()
{
complejo A,B,C;

cout<<" * * Dame el numero complejo A * * \n";
A.pedir();

cout<<"\n * * Dame el numero complejo B * * \n";
B.pedir();
C.suma(A,B);

A.muestra();
B.muestra();
C.muestra();

getch();
return 0;
}


U1P6_1
//suma 2 complejos en clases tipo class, separando con private y public

#include<iostream>
#include<conio2.h>
using namespace std;
POO

30


class complejo //clase complejo
{
private:
float r,i;
public:
void pedir();
void suma(complejo A,complejo B);
void muestraTodo(complejo A,complejo B);
void muestra();
};

void complejo::pedir()//pedir le pertenece a la clase complejo
{
cout<<"Dame la parte real: ";
cin>>r;
cout<<"Dame la parte imaginaria: ";
cin>>i;
}

void complejo::suma(complejo A,complejo B)
{
r=A.r + B.r;
i=A.i + B.i;
}

void complejo::muestraTodo(complejo A,complejo B)
{
cout<<"\nLa suma es: \n"<<A.r<<" + "<<A.i<<"i"<<endl
<<B.r<<" + "<<B.i<<"i"<<endl
<<r<<" + "<<i<<"i"<<endl;
}

void complejo::muestra()
{
cout<<r<<" + "<<i<<"i"<<endl;
}

int main ()
{
complejo A,B,C;

cout<<" * * Dame el numero complejo A * * \n";
A.pedir();

cout<<"\n * * Dame el numero complejo B * * \n";
B.pedir();
POO

31

C.suma(A,B);

A.muestra();
B.muestra();
C.muestra();

getch();
return 0;
}


Constructor y Destructor

Son funcin miembro de la clase, que llevan el mismo nombre que la clase.
A todas las variables donde se las declare de tipo clase se les nombra o conoce como objetos.

Los destructores son funciones miembro especiales que sirven para eliminar un objeto de una determinada clase. El
destructor realizar procesos necesarios cuando un objeto termine su mbito temporal, por ejemplo liberando la
memoria dinmica utilizada por dicho objeto o liberando recursos usados, como ficheros, dispositivos, etc.
Al igual que los constructores, los destructores tambin tienen algunas caractersticas especiales:
Tambin tienen el mismo nombre que la clase a la que pertenecen, pero tienen el smbolo delante.
No tienen tipo de retorno, y por lo tanto no retornan ningn valor.
No tienen parmetros.
No pueden ser heredados.
Deben ser pblicos, no tendra ningn sentido declarar un destructor como privado, ya que siempre se
usan desde el exterior de la clase, ni tampoco como protegido, ya que no puede ser heredado.
No pueden ser sobrecargados, lo cual es lgico, puesto que no tienen valor de retorno ni parmetros, no
hay posibilidad de sobrecarga.
Cuando se define un destructor para una clase, ste es llamado automticamente cuando se abandona el mbito en el
que fue definido. Esto es as salvo cuando el objeto fue creado dinmicamente con el operador new, ya que en ese
caso, cuando es necesario eliminarlo, hay que hacerlo explcitamente usando el operador delete.


Class fecha
{
int d,m,a;
public:
fecha();//Constructor
~fecha();//Destructor
}


POO

32

*Destructor: ademas lleva un carcter llamado tilde. (~)

Tanto el constructor como el destructor nunca devuelve algn tipo, ni si quiera void.
Estos se ejecutan solos, cuando se crea el objeto (variable).

U1P7
//Constructor y destructor

#include<iostream>
#include<conio2.h>
using namespace std;

class fecha //clase fecha
{
int d,m,a; //como no dice si es publico o privado, en C++ automaticamente es privado

public:
fecha();//constructor (definicion de la funcion miembro/metodo)
~fecha();//destructor (definicion de la funcion miembro/metodo)
};

fecha::fecha()
{
cout<<"Hola mundo yo soy el constructor.."<<endl;
getch();
}

fecha::~fecha()
{
cout<<"Adios mundo, yo soy el destructor.."<<endl;
getch();
}

int main()
{
fecha f,h;
cout<<"Texto desde el main"<<endl;

getch();
return 0;
}


U1P7_1
//Constructor y destructor

POO

33

#include<iostream>
#include<conio2.h>
using namespace std;

class fecha //clase fecha
{
int d,m,a; //como no dice si es publico o privado, en C++ automaticamente es privado automaticamente

public:
fecha();//constructor (definicion de la funcion miembro/metodo)
~fecha();//destructor (definicion de la funcion miembro/metodo)
};

fecha::fecha()
{
cout<<"Dame la fecha"<<endl;
cout<<"Dia: "<<endl;
cin>>d;
cout<<"Mes: "<<endl;
cin>>m;
cout<<"Ao: "<<endl;
cin>>a;
}

fecha::~fecha()
{
cout<<"La fecha es: "<<d<<"-"<<m<<"-"<<a;
getch ();
}

int main ()
{
fecha f;
return 0;
}

También podría gustarte