Professional Documents
Culture Documents
Industrial
Organismo Pblico Descentralizado Federal
PRACTICAS
INGENIERIA
CARRERA
INGENIERIAS
PROFE
SOR
PLAN
DE
ESTUDI
O
2011-A
PRACTI LABORATORIO
CA No. DE
COMPUTACIN
No
1
CLAVE
ASIGNATU
RA
CI-11
NOMBRE DE LA
ASIGNATURA
PROGRAMACIN
ORIENTADA A OBJETOS
EVALUACI
ON
FEC
HA
NOMBRE DE LA
PRACTICA
DURACI
N
(HORAS)
INTRODUCCION A
PUNTEROS
1.- INTRODUCCIN
Un puntero es una variable que contiene como valor una direccin de memoria.
Dicha direccin corresponde habitualmente a la direccin que ocupa otra variable
en memoria.
Se dice entonces que el puntero apunta a dicha variable. La variable apuntada
puede ser de cualquier tipo, estructurado o incluso otro puntero.
Los punteros constituyen una parte fundamental del lenguaje C y son bsicos
para comprender toda la potencia y flexibilidad que ofrece el lenguaje. Son
especialmente importantes en la programacin a bajo nivel, donde se manipula
directamente la memoria del ordenador. Algunas de las ventajas que aporta el
uso de punteros en C son:
1. Constituyen la nica forma de expresar algunas operaciones.
2. Su uso produce cdigo compacto y eficiente.
3. Son imprescindibles para el paso de parmetros por referencia a
funciones.
4. Tienen una fuerte relacin con el manejo eficiente de tablas y estructuras.
5. Permiten realizar operaciones de asignacin dinmica de memoria y
manipular estructuras de datos dinmicas.
2.-OBJETIVO (COMPETENCIA)
ANDRES GUILLERMO PEREDO CORTES 11110182
3.-FUNDAMENTO
Un puntero es un tipo especial de variable que contiene, ni ms ni menos que,
una direccin de memoria.
nmerohace referencia de manera
directa a una Variable que contiene el
valor 8
8
ptrnumero
Ptrnumerohace referencia de
manera indirecta a una variable
que contiene el valor 8
numero
for(int i=0;i<5;i++)
{
printf("el valor de iArr[%d] es:%d\n",i,*pi+i);
}
return 0;
}
for(int i=0;i<5;i++)
{
printf("el valor de iArr[%d] es:%d\n",i,*pi+i);
}
}
return 0;
1.3 Desarrollar un programa que por medio de punteros cambie una cadena de
caracteres de minscula a maysculas y adems la contabilice.
#include "stdafx.h"
#include <stdio.h>
#include<ctype.h>
int a,b,c;
int _tmain(int argc, _TCHAR* argv[])
{
char cadena[]="hola como estas";
char *pcadena;
pcadena=&cadena[0];
while(*pcadena)
{
return 0;
}
5.-ANEXOS
a.1.1.- Realizar las operaciones existentes que se pueden realizar con punteros
cuales son y demustralos.
return 0;
7.-REFERENCIAS
LIBRO
Como programar
en C/C++
Programacin de
C
ELABORO
AUTOR
Deitel&Deitel
EDICION
2da
4ta
GOTTFRIED BYRON
REVISO
APROBO
ING. GERARDO
GARCIA GIL
EDITORIAL
Pearson
MCGRAW-HILL
AUTORIZO
INGENIERIA
CARRERA
INGENIERIAS
PROFE
SOR
PLAN
DE
ESTUDI
O
2011-A
CLAVE
ASIGNATU
RA
CI-11
PROGRAMACIN ORIENTADA
A OBJETOS
EVALUACI
ON
FEC
HA
PRACTI LABORATORIO
CA No. DE
COMPUTACIN
No
2
NOMBRE DE LA
ASIGNATURA
NOMBRE DE LA
PRACTICA
Estructuras (Structs)
DURACI
N
(HORAS)
3
1.- INTRODUCCIN
Una estructura es un conjunto de una o ms variables, de distinto tipo, agrupadas
bajo un mismo nombre para que su manejo sea ms sencillo. En una estructura
los elementos que la componen pueden ser de distintos tipos. As pues, una
estructura puede agrupar datos de tipo carcter, enteros, cadenas de caracteres,
matrices de nmeros. . ., e incluso otras estructuras. En cualquier caso, es
habitual que todos los elementos agrupados en una estructura tengan alguna
relacin entre ellos. En adelante nos referiremos a los elementos que componen
una estructura como campos.
La definicin de una estructura requiere especificar un nombre y el tipo de datos
de todos los campos que la componen, as como un nombre mediante el cual
pueda identificarse toda la agrupacin. Para ello se utiliza la palabra reservada
struct de la forma siguiente:
Structtipo_estructura
{
tipo_variable nombre_variable1;
tipo_variable nombre_variable2;
tipo_variable nombre_variable3;
};
Donde tipo_estructura es el nombre del nuevo tipo de dato que hemos creado.
ANDRES GUILLERMO PEREDO CORTES 11110182
Por ltimo, tipo_variable y nombre_variable son las variables que forman parte
de la estructura.
Su utilizacin ms habitual es para la programacin de bases de datos, ya que
estn especialmente indicadas para el trabajo con registros o fichas.
2.-OBJETIVO (COMPETENCIA)
3.-FUNDAMENTO
Declaracin de variables
La declaracin de variables del tipo definido por una estructura puede hacerse de
dos maneras diferentes.
Bien en la misma definicin de la estructura, bien posteriormente. La forma
genrica para el primer caso es la siguiente:
struct nombre estructura
{
tipo campo 1 nombre campo 1;
tipo campo 2 nombre campo 2;
. . .
tipo campo N nombre campo N;
}lista de variables;
return 0;
void leerentrada(int i)
2.2 Necesitamos saber cmo acceder a cada elemento del array. La variable
definida es amigo, por lo tanto para acceder al primer elemento usaremos
amigo[0] y a su miembro nombre: amigo[0].nombre. Vemoslo en un ejemplo en
el que se supone que tenemos que meter los datos de tres amigos:
#include "stdafx.h"
#include <stdio.h>
#define ELEMENTOS
struct estructura_amigo {
char nombre[30];
char apellido[40];
char telefono[10];
int edad;
};
cliente.tipo_cuenta=&t;
cliente.nombre="lazaro";
cliente.saldo=&b;
printf("%d %c %s
%.2f\n",*cliente.no_cuenta,*cliente.tipo_cuenta,cliente.nombre,*cliente.sald
o);
printf("%d %c %s %.2f\n",*pc->no_cuenta,*pc->tipo_cuenta,pc->nombre,*pc>saldo);
return 0;
5.-ANEXOS
#include "stdafx.h"
#include <stdio.h>
#define ELEMENTOS
struct estructura_amigo {
char nombre[30];
char domicilio[40];
char travajo[10];
char puesto[60];
};
struct estructura_amigo amigo[ELEMENTOS];
int _tmain(int argc, _TCHAR* argv[])
{
int num_amigo;
for( num_amigo=0; num_amigo<ELEMENTOS; num_amigo++ )
{
printf( "\nDatos del amigo nmero %i:\n", num_amigo+1 );
printf( "Nombre: " ); fflush( stdout );
gets(amigo[num_amigo].nombre);
printf( "trabajo: " ); fflush( stdout );
gets(amigo[num_amigo].travajo);
7.-REFERENCIAS
LIBRO
Como programar
en C/C++
Internet
ELABORO
AUTOR
Deitel&Deitel
EDICION
2da
REVISO
EDITORIAL
Pearson
APROBO
AUTORIZO
CLAVE
ASIGNATU
RA
NOMBRE DE LA
ASIGNATURA
ING. GERARDO
GARCIA GIL
INGENIERIA
CARRERA
INGENIERIAS
PROFE
SOR
2011-A
INGENIERIA
CARRERA
INGENIERIAS
PROFE
SOR
PLAN
DE
ESTUDI
O
PLAN
DE
ESTUDI
O
2011-A
PRACTI LABORATORIO
CA No. DE
COMPUTACIN
No
CI-11
FEC
HA
CLAVE
ASIGNATU
RA
CI-11
FEC
HA
PROGRAMACIN ORIENTADA
A OBJETOS
EVALUACI
ON
NOMBRE DE LA
ASIGNATURA
PROGRAMACIN ORIENTADA
A OBJETOS
EVALUACI
ON
NOMBRE DE LA
PRACTICA
DURACI
N
(HORAS)
Clases
1.- INTRODUCCIN
La clase es la principal herramienta de la programacin orientada a objetos.
Como aprender en esta leccin. Una clase es muy parecida a una estructura
ya que agrupa miembros que corresponden a los datos de un objeto, as como
funciones llamadas (mtodos) que operan sobre los datos. Como veremos, un
objeto es una cosa, digamos un telfono, un archivo o un libro. Una clase de
C++ permite que los programas definan atributos de los objetos
(caractersticas). En el caso de un objeto telfono, la clase podra tener
miembros datos, como el numero de telfono y su tipo, as como ciertas
funciones que operan sobre de el, como marcar, contestar o colgar. Al agrupar
los datos del objeto y codificarlos en una variable, usted simplifica la
programacin e incrementa el reciclaje (reso) del cdigo. En esta leccin es
una introduccin a las clases de C++. Cuando termine, debe de tener los
siguientes conceptos clave:
2.-OBJETIVO (COMPETENCIA)
3.-FUNDAMENTO
Declaracin de clases
En el sentido ms simple, un objeto es una cosa. Cuando usted crea un
programa, este casi siempre usa variables para guardar informacin sobre
cosas del mundo real; empleados, libros e incluso archivos por decir algo.
Cuando usted usa programacin orientada a objetos se centra en las cosas
que componen un sistema y las operaciones que tiene que ejecutar sobre de
ellas. Por ejemplo, un archivo cualquiera, podra tener operaciones sobre de el
. imprimir , borrar, mostrar o cambiar de direccin .en C++ usted usa una
clase para definir objetos. Cuando define una clase, su meta es incluir en ella
tanta informacin sobre el objeto como sea posible. Por tanto puede escoger
ANDRES GUILLERMO PEREDO CORTES 11110182
una clase que usted cree para un programa y luego utilizarlo en otros
distintos.
Una clase en C++ permite que al programa agrupar datos y funciones que
ejecutan operaciones sobre ellos, la mayora de libros y artculos sobre la POO
denominan mtodos a las funciones de la clase. Al igual que la estructura, una
clase de C++ debe de tener un nombre nico, seguido de una llave de
apertura, uno o ms miembros y una llave de cierre. De esta modo.
Class nombre_clase {
Tipo miembro_clase;
Tipo mtodo_clase();
}
Despus de que usted define una clase, puede declarar variables del tipo de
esta (llamadas objetos)
nombre_clase objeto1,objeto2,objetoN;
el siguiente ejemplo, crea dos objetos empleados. Mediante el operador
punto, el programa asigna valores a los datos miembro. Luego emplea el
miembro ver_empleado a mostrar informacin sobre el trabajador, de este
modo podra estar de la siguiente manera: Ing Gerardo Garca Gil CLASES I
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class empleados
{
public:
char nombre [64];
long id_emp;
float salario;
void ver_empleado()
{
cout<<"Nombre "<<nombre<<endl;
cout<<"Id empleado "<<id_emp<<endl;
cout<<"salario "<<salario<<endl<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
empleados trabajador,jefe;
strcpy(trabajador.nombre,"eva lopez" );
trabajador.id_emp=123;
trabajador.salario =2500;
strcpy(jefe.nombre,"juan perez" );
jefe.id_emp=879;
jefe.salario =25000;
trabajador.ver_empleado ();
jefe.ver_empleado ();
return 0;
}
5.-ANEXOS
5.3 crea un mtodo de la funcin donde se crean
los datos de la prctica 3.1
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class empleados
{
public:
char nombre [64];
long id_emp;
float salario;
void crear();
void imprimir();
};
void empleados::imprimir()
{
cout<<"Nombre
: "<<nombre<<endl;
cout<<"Id empleado : "<<id_emp<<endl;
cout<<"Salario
: "<<salario<<endl<<endl;
}
void empleados::crear()
{
strcpy(empleados::nombre, "Andres Peredo");
empleados::id_emp=11110182;
empleados::salario=2500;
}
return 0;
return 0;
char callenombre[65];
int numero;
int telefono;
void crear();
void imprimir();
};
void datos::imprimir()
{
cout<<"Nombre
: "<<nombre<<endl;
cout<<"Nombre de la calle: "<<datos::callenombre<<endl;
cout<<"Numero
: "<<datos::numero<<endl;
cout<<"Telefono
: "<<datos::telefono<<endl;
}
void datos::crear()
{
strcpy(datos::nombre,"Andres");
strcpy(datos::callenombre,"Rio Nilo");
datos::numero= 2699;
datos::telefono= 36357689;
}
int _tmain(int argc, _TCHAR* argv[])
{
datos loco;
loco.crear();
loco.imprimir();
return 0;
}
7.-REFERENCIAS
LIBRO
Como programar
en C/C++
internet
ELABORO
AUTOR
Deitel&Deitel
REVISO
EDICION
2da
APROBO
ING. GERARDO
GARCIA GIL
EDITORIAL
Pearson
AUTORIZO
PRACTI LABORATORIO
CA No. DE
COMPUTACIN
No
NOMBRE DE LA
PRACTICA
DURACI
N
(HORAS)
Constructores y
destructores
1.- INTRODUCCIN
Como aprendi en la leccin anterior, la nica forma en que los programas
puedan acceder a miembros de datos privados es emplear una funcin de clase.
Para simplificar el proceso de inicializacin de miembros de datos de la clase, C+
+ le permite definir una funcin constructor especial, sobre una base por clase,
que C++invoca de forma automtica cada vez que se crea un objeto. De modo
similar, C++ proporciona una funcin destructor que el lenguaje ejecuta cuando
usted descarga un objeto. Esta leccin estudia las funciones destructor y
constructor detalladamente.
2.-OBJETIVO (COMPETENCIA)
Las funciones constructor tiene el mismo nombre que la clase; as, usted
no tiene que preceder su nombre con la palabra vid.
Cada vez que el programa crea una variable de clase, C++ invoca una
funcin destructor especial que puede liberar esa memoria, en sentido,
dejndola limpia despus del objeto.
3.-FUNDAMENTO
CMO CREAR UNA FUNCIN CONSTRUCTOR SIMPLE.
Una funcin constructores un mtodo de clase que tiene el mismo nombre de
esta. Por ejemplo, si usted usa una clase llamada empleados, el nombre de la
funcin constructor es, tambin, empleados. Asimismo, para una clase llamada
perros, el nombre de la funcin constructor debe de ser perros tambin. Si el
programa define una funcin constructor, C++automticamente la invoca cada
vez que usted crea un objeto del tipo de la clase correspondiente. El siguiente
programa, crea una clase llamada empleados. Tambin define una funcin
constructor llamada empleados que asigna los valores iniciales a los objetos. Una
funcin constructor no puede devolver un valor; sin embargo, usted no la declara
como void, ni especifica un tipo de retorno, como se muestra a continuacin.
ejecutivo.ver_empleados ();
return 0;
}
6.2 Destructor
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class empleados{
public:
empleados(char*,long,float);
~empleados(); //alt 126
void ver_empleados();
int cambiar_salario(float);
long obtener_id();
private:
char nombre[64];
long id_empleado;
float salario;
};
empleados::empleados(char *nombre, long id_empleado, float salario)
{
strcpy(empleados::nombre ,nombre);
empleados::id_empleado =id_empleado;
if(salario<50000.50)
empleados::salario =salario;
else
empleados::salario =0.0;
}
empleados::~empleados ()
{
cout<<"destruyendo el objeto para "<<nombre<<endl;
}
void empleados::ver_empleados ()
{
cout<<"Empleado: "<<nombre<<endl;
cout<<"Id: "<<id_empleado<<endl;
cout<<"Salario: "<<salario<<endl;
}
#include <string.h>
#include <iostream>
using namespace std;
class empleados{
public:
empleados(char*,long,float);
~empleados();
void ver_empleados();
int cambiar_salario(float);
long obtener_id();
private:
char nombre[64];
long id_empleado;
float salario;
};
5.-ANEXOS
6.1 crea un programa que demuestre lo aprendido
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class imprenta{
public:
imprenta(char*,long,float); //constructor
void ver_imprenta();
int cambiar_precio(float);
long obtener_cantidad();
private:
char nombre[64];
long cantidad;
float precio;
};
imprenta::imprenta(char *nombre, long cantidad, float precio)
{
strcpy(imprenta::nombre ,nombre);
imprenta::cantidad =cantidad;
if(precio<18.50)
imprenta::precio =precio;
else
imprenta::precio =2.0;
}
void imprenta::ver_imprenta ()
{
cout<<"Marca : "<<nombre<<endl;
cout<<"Cantidad : "<<cantidad<<endl;
cout<<"Precio : "<<precio<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
imprenta periodico( "EL INFORMADOR",101,5000.50);
imprenta revista( "LO MAS INTERESANTE",55,50000.50);
periodico.ver_imprenta ();
revista.ver_imprenta ();
return 0;
}
______________________________
7.-REFERENCIAS
LIBRO
Como programar
en C/C++
internet
ELABORO
AUTOR
Deitel&Deitel
REVISO
EDICION
2da
APROBO
ING. GERARDO
GARCIA GIL
EDITORIAL
Pearson
AUTORIZO
INGENIERIA
CARRERA
INGENIERIAS
PROFE
SOR
PLAN
DE
ESTUDI
O
2011-A
PRACTI LABORATORIO
CA No. DE
COMPUTACIN
No
7
CLAVE
ASIGNATU
RA
CI-11
FEC
HA
NOMBRE DE LA
ASIGNATURA
PROGRAMACIN ORIENTADA
A OBJETOS
EVALUACI
ON
NOMBRE DE LA
PRACTICA
DURACI
N
(HORAS)
Sobrecarga de operadores
1.- INTRODUCCIN
La sobrecarga de operadores es el proceso de cambiar el significado de un
operador (digamos de adicin,+, que C++ utiliza generalmente para hacer
sumas) para que lo use una clase especifica. En esta seccin definiremos una
clase llamada cadena y sobrecargaremos los operadores de la adicin y
sustraccin. Para los objetos de la cadena, el operador de la adicin aadir letras
especficas al contenido actual de una cadena
2.-OBJETIVO (COMPETENCIA)
C++ permite a los programas sobrecargar casi todos los operadores; sin
embargo, hay cuatro que no se pueden sobrecargar.
3.-FUNDAMENTO
Como puede ver, el programa emplea la funcin sumar_letras para agregar
caracteres a la cadena variable titulo. Adems, utiliza las funciones quitar_letras
para eliminar cada aparicin de la letra e de la cadena de caracteres leccin. En
este ejemplo usa llamadas a funcin para hacer tales operaciones. Utilizando la
sobrecarga de operadores sin embargo, el problema puede hacer operaciones
idnticas mediante los operadores de adicin (+)y sustraccin (-).
Cuando usted sobrecarga un operador, utiliza la palabra clave operator de C++
dentro del prototipo y definicin de la funcin para indicar al compilador de C++
que la clase ocupar este mtodo como operador. La siguiente definicin de
clase; por ejemplo utiliza la palabra operator para asignar operadores de adicin
y sustraccin a las funciones sumar_letras y quitar_letras. Dentro de la clase
cadena:
}
strcp
y(dat
os,te
mp);
}
void cadena::ver_cadena()
{
cout<<datos<<endl;
5.-ANEXOS
7.1 realiza el de la practica 7.2 pero con la
siguiente clase
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class cadena
{
public:
cadena(char *);
char *operator +(char *);
char *operator -(char);
int operator==(cadena);
void ver_cadena();
private:
char datos[256];
};
cadena::cadena(char *str)
{
strcpy(datos,str);
}
char *cadena::operator +(char *str)
{
return(strcat(datos,str));
}
char *cadena::operator -(char letra)
return(strcpy(datos,temp));
}
int cadena::operator==(cadena cade)
{
int i;
for(i=0;datos[i]==cade.datos[i];i++)
if((datos[i]==NULL)&&(cade.datos[i]==NULL))
return(1);
return(0);
}
void cadena::ver_cadena()
{
cout<<datos<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
cadena titulo("C++ Al Rescate");
cadena leccion("Sobrecarga De Operadores");
titulo.ver_cadena ();
titulo + " Al Rescate!";
titulo.ver_cadena();
leccion.ver_cadena ();
leccion -'e';
leccion -'a';
leccion -'r';
leccion.ver_cadena();
return 0;
}
return(strcpy(datos,temp));
}
int cadena::operator==(cadena cade)
{
int i;
return 0;
}
7.-REFERENCIAS
AUTOR
Deitel&Deitel
EDICION
2da
REVISO
EDITORIAL
Pearson
APROBO
AUTORIZO
CLAVE
ASIGNATU
RA
NOMBRE DE LA
ASIGNATURA
ING. GERARDO
GARCIA GIL
INGENIERIA
CARRERA
INGENIERIAS
PROFE
SOR
PLAN
DE
ESTUDI
O
2011-A
PRACTI LABORATORIO
CA No. DE
COMPUTACIN
No
CI-11
FEC
HA
PROGRAMACIN ORIENTADA
A OBJETOS
EVALUACI
ON
NOMBRE DE LA
PRACTICA
DURACI
N
(HORAS)
Herencia simple
1.- INTRODUCCIN
La programacin orientada a objetos le facilita volver a usar una clase que cre
para un programa dentro de otro, ahorrndole, por lo tanto, tiempo y
programacin. Cuando usted define clases, hay ocasiones en que una clase usa
algunas o todas las caractersticas de otra que ya existe y entonces aade uno o
ms miembros, ya sea de datos o funciones. En estos casos, C++ le permite
construir un objeto nuevo ocupando las caractersticas de otro que ya existe.
Dicho de otro modo, el objeto nuevo hereda los miembros de una clase existente
(llamada clase base). Cuando usted construye una clase nueva a partir de otra
que ya existe, la nueva clase derivada.
2.-OBJETIVO (COMPETENCIA)
Cuando los programas usan la herencia, emplean una clase base para
derivar una clase nueva; sta, la clase derivada, hereda los miembros de
la clase base.
Con el operador punto, los programas pueden acceder sin problema a los
miembros de las clases base y derivada.
Para resolver conflictos de nombres entre los miembros de las clases base
y derivada,los programas pueden emplear el operador de resolucin global
(::), precedido del nombre de la clase base o derivada.
3.-FUNDAMENTO
HERENCIA SIMPLE.
______________________________
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class libros
{
public:
libros(char *,char *,int);
void ver_libro();
private:
char titulo[64];
char autor[64];
int paginas;
};
libros::libros(char *titulo, char *autor, int paginas)
{
strcpy(libros::titulo ,titulo);
strcpy(libros::autor ,autor);
libros::paginas =paginas;
}
void libros::ver_libro()
{
cout<<"titulo: "<<titulo<<endl;
cout<<"autor: "<<autor<<endl;
cout<<"paginas: "<<paginas<<endl;
}
class tarjetas:public libros
{
public:
tarjetas(char *, char *,int,char *,int);
void ver_tarjeta();
private:
char catalogo[64];
int prestado;
};
tarjetas::tarjetas(char *titulo, char *autor, int paginas, char *catalogo,
int prestado):libros(titulo,autor,paginas)
{
strcpy(tarjetas::catalogo ,catalogo);
tarjetas::prestado =prestado;
}void tarjetas::ver_tarjeta()
{
ver_libro();
cout<<"catalogo: "<<catalogo<<endl;
Firma practica cumplida tarea
if(prestado)
n
cout<<"estado: prestado"<<endl;
else
______________________________
5.-ANEXOS
ANEXO 8.1. Haz una clase crculo que herede su miembro radio a una clase
derivada cilindro y me d el volumen del mismo.
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class autos
{
public:
autos(char *,char *,int);
void ver_autos();
private:
char marca[64];
char modelo[64];
int revoluciones;
};
autos::autos(char *marca,char *modelo, int revoluciones)
{
strcpy(autos::marca ,marca);
strcpy(autos::modelo,modelo);
autos::revoluciones=revoluciones;
}
void autos::ver_autos()
{
cout<<"Marca : "<<marca<<endl;
cout<<"Modelo : "<<modelo<<endl;
cout<<"Revoluciones Por Minuto: "<<revoluciones<<endl;
}
class tarjetas:public autos
{
public:
tarjetas(char *, char *,int,char *,int);
void ver_tarjeta();
private:
char edicion[64];
int vendido;
7.-REFERENCIAS
LIBRO
Como programar
en C/C++
internet
ELABORO
AUTOR
Deitel&Deitel
REVISO
EDICION
2da
APROBO
EDITORIAL
Pearson
AUTORIZO
INGENIERIA
CARRERA
INGENIERIAS
PROFE
SOR
PLAN
DE
ESTUDI
O
2011-A
PRACTI LABORATORIO
CA No. DE
COMPUTACIN
CLAVE
ASIGNATU
RA
CI-11
FEC
HA
NOMBRE DE LA
ASIGNATURA
PROGRAMACIN ORIENTADA
A OBJETOS
EVALUACI
ON
NOMBRE DE LA
PRACTICA
DURACI
N
(HORAS)
Herencia mltiple
1.- INTRODUCCIN
C++ le deja derivar una clase a partir de otra permitindole que herede las
caractersticas de esa otra. Como veremos C++ le deja derivar una clase de ms
de una clase base; cuando la clase hereda las caractersticas de ms de una
clase base, usted construye una clase nueva utilizando herencia mltiple. Como
aprender en esta leccin, C++ soporta totalmente la herencia mltiple.
2.-OBJETIVO (COMPETENCIA)
Cuando usted deriva una clase utilizando varias clases base, aprovecha la
herencia mltiple.
Cuando usted deriva una clase de otra clase derivada, crea una cadena de
herencia.
3.-FUNDAMENTO
La herencia mltiple es una poderosa herramienta de la programacin orientada
a objetos. Experimente con los programas de esta leccin. Como ver, construir
una clase de otra que ya existe le ahorra programacin considerable.
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class monitorcompu
{
public:
monitorcompu(char *,long,int,int);
void ver_monitor();
private:
char tipo[32];
long colores;
int resolucion_x;
int resolucion_y;
};
monitorcompu::monitorcompu(char *tipo, long colores, int res_x, int res_y)
{
strcpy(monitorcompu::tipo ,tipo);
monitorcompu::colores=colores;
monitorcompu::resolucion_x=res_x;
monitorcompu::resolucion_y=res_y;
}
void monitorcompu::ver_monitor()
{
cout<<"monitor tipo:"<<tipo<<endl;
cout<<"colores: "<<colores<<endl;
cout<<"resolucion: "<<resolucion_x<<" por "<<resolucion_y<<endl;
}
class tarjetamadre
{
public:
tarjetamadre(int,int,int);
void vertarjetamadre();
private:
int procesador;
int velocidad;
int ram;
};
tarjetamadre::tarjetamadre(int procesador, int velocidad, int ram)
{
tarjetamadre::procesador =procesador;
tarjetamadre::velocidad =velocidad;
tarjetamadre::ram =ram;
}
void tarjetamadre::vertarjetamadre()
{
cout<<"procesador: "<<procesador<<endl;
PRACTICA 9.2
Crea esta prctica con la practica 9.1 pero haz una herencia simple con la clase
estaciontrabajo cuando la termines, te dars cuenta que manejas el concepto
de HERENCIA
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
strcpy(estaciontrabajo::sistemaoperativo,sistemaoperativo);
}
void estaciontrabajo::ver()
{
cout<<"SISTEMA OPERATIVO "<<sistemaoperativo<<endl;
vercomputadora();
}
5.-ANEXOS
ANEXO 1; de una clase persona y de clase empleado haz una clase
empleadotienda.
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class persona
{
public:
persona(char*,char*, int, int, long);
void ver_persona();
private:
char nombre[64];
char nacionalidad[64];
int edad;
int telefono;
long domicilio;
};
persona::persona(char* nombre,char* nacionalidad, int edad,int telefono,long domicilio)
{
strcpy(persona::nombre,nombre);
strcpy(persona::nacionalidad,nacionalidad);
persona::edad=edad;
persona::telefono=telefono;
persona::domicilio=domicilio;
}
void persona::ver_persona()
{
cout<<"Nombre
: "<<nombre<<endl;
cout<<"Nacionalidad: "<<nacionalidad<<endl;
cout<<"Edad
: "<<edad<<endl;
class carro
{
public:
carro(char*,char*,char*,int,int);
void ver_carro();
private:
char marca[64];
char modelo[64];
char color[64];
int puertas;
int ao;
};
carro::carro(char* marca,char* modelo,char* color,int puertas,int ao)
{
strcpy(carro::marca,marca);
strcpy(carro::modelo,modelo);
strcpy(carro::color,color);
carro::puertas=puertas;
carro::ao=ao;
}
void carro::ver_carro()
7.-REFERENCIAS
LIBRO
Como programar
en C/C++
internet
AUTOR
Deitel&Deitel
EDICION
2da
EDITORIAL
Pearson
REVISO
APROBO
AUTORIZO
CLAVE
ASIGNATU
RA
NOMBRE DE LA
ASIGNATURA
ING. GERARDO
GARCIA GIL
INGENIERIA
CARRERA
INGENIERIAS
PROFE
SOR
PLAN
DE
ESTUDI
O
2011-A
CI-11
FEC
HA
PROGRAMACIN ORIENTADA
A OBJETOS
EVALUACI
ON
NOMBRE DE LA
PRACTICA
10
DURACI
N
(HORAS)
Clases amigas
1.- INTRODUCCIN
Miembros privados y amigos.
Los programas solo pueden acceder a los miembros de clases privadas usando
funciones miembro de clase. Al usar los miembros de clase privados tan a
menudo como sea posible, usted reduce la posibilidad de que un programa use
mal el valor de un miembro ya que aquel solo puede acceder mediante funciones
de interfaz (que pueden controlar el acceso al miembro). Sin embargo,
dependiendo de cmo se utilice el programa los objetos,hay ocaciones en las que
usted puede incrementar, de modo importante, el rendimiento de un programa
dejando que una clase acceda directamente a los miembros privados de otra. De
esta forma,los programas evitan el exceso de procesamiento (tiempo de
ejecucin) al invocar las funciones de interfaz para tales casos,C++ le permite
definir una clase como amiga (friend)de otra y luego a las clase amiga acceder a
los miembros privados d ela otra.
2.-OBJETIVO (COMPETENCIA)
Con la palabra reservada friend una clase puede indicarle a C++ cules
clases son sus amigas, es decir,qu otras clases pueden acceder
directamente a sus miembros privados.
Los miembros de clase privados protegen los datos de la clase; por tanto,
usted debe limitar el uso de clases amigas solo a clases que tengan
verdadera necesidad de acceder de modo directo a los miembros de clase
privados.
3.-FUNDAMENTO
COMO DEFINIR UNA CLASE AMIGA.
C++ le permite a una clase acceder a los miembros privados de una amiga. Para
indicarle a C++ que una clase es una amiga de otra, usted, sencillamente,
incluye la palabra reservada friend y el nombre de la clase amiga
correspondiente dentro de la definicin de la clase. Por ejemplo, la siguiente
clase libro indica que la clase librero es amiga. Por tanto, los objetos de la clase
librero pueden acceder directamente a los miembros privados de la clase libro
mediante el operador punto:
Ejemplo:
class libro{
public:
libro (char*,char*,char*);
Void ver_libro();
friend librero; // declaracin de la clase amiga librero
private:
char titulo[64];
char autor[64];
char catalogo[64];
};
Como puedes observar, el programa pasa por direccin el objeto libro a la funcin
cambiarcatalogo de la clase librero. Como esta funcin cambia un miembro de
dicha clase, el programa debe pasar el parmetro por direccin y luego usar el
apuntador para acceder al miembro.Experimente con este programa omitiendo la
instruccin friend de la definicion de la clase libro. Puesto que la clase librero ya
no podra acceder a los miembros de clase privados,el compilador de C++
generara errores de sintaxs cada vez que el programa intente hacer referencia a
los datos privados de la clase libro.
QUE SON LAS CLASES AMIGAS.
Conmnmente la unica forma de que los programas puedan a acceder datos
privados de una clase es mediante funciones de interfaz. Dependiendo de la
forma en que use objetos el programa, hay ocaciones en que es util (eficiente en
velocidad de procesamiento)garantizar a una clase el acceso a los miembros
privados de otra. El compilador, a su vez, permitira a la clase amiga acceder a los
miembros privados como sea necesario. Para definir una clase amiga, coloque la
palabra reservada friend y el nombre de la clase correspondiente dentro de los
miembros publicos de la definicin de la clase, de este modo:
class jefe{
public:
friend costello;
//otros miembros;
private:
//miembros privados
}
COMO RESTRINGIR EL ACCESO A LOS AMIGOS.
Cunado usted especifica que una clase es amiga de otra proporciona acceso a los
datos privados de la amiga. No obstante, mientras mayor acceso d a los datos
privados de una clase, mayor ser la probabilidad de introducir errores en el
programa. Por tanto, si solo algunas funciones dentro de la clase amiga deben
acceder a los datos privados de otra clase,C++ le permite especificar que el
programa slo permite a funciones especificas de la clase amiga acceder a
miembros privados. Supongamos que la clae librero, presentado en la practica
public:
friend nombre_clase::nombre_metodo(lista de
parametros);
slo las funciones miembro que usted indique como amigas pueden acceder
directamente a los miembros privados de clase mediante el operador punto.
Cuando los programas comienzan a hacer referencia a una clase desde otra,
usted puede cometer errores de sintaxis si el orden de las definiciones de cada
clase es incorrecto. En este caso, la definicin de la clase libro emplea
definiciones de prototipos de funcin establecidas desde la clase librero. Por lo
tanto, la definicin de la clase librero debe de ir antes que la de clase libro, sin
embargo, si analiza la clase librero, encontrar una referencia a la clase libro.
El siguiente programa utiliza funciones amigas para limitar el acceso de la clase
librero a los datos privados de la clase libro. Observe el orden de las definiciones
de cada clase:
Practica 10.2
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class libro;
class librero
{
public:
void cambiarcatalogo(libro*,char*);
char *darcatalogo(libro);
};
strcpy(catalogo,estelibro.catalogo );
n
return (catalogo);
}
______________________________
int _tmain(int argc, _TCHAR* argv[])
{
libro programacion("C++ al rescate tercera edicion","james","PER32");
librero biblioteca;
programacion.verlibro ();
biblioteca.cambiarcatalogo(&programacion,"c++ a lo facil");
programacion.verlibro ();
return 0;
}
Como puede ver se usa primero una entrada de una lnea que indica al
compilador que despus definir la clase libro.Como la entrada hace que el
compilador sepa de esta clase, la definicin de la clase librero puede hacer
referencia a la clase libro, que el programa no define sino posteriormente.
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class paciente;
class medico
{
private:
char nombrecompleto[64],especialidad[64];
public:
medico();
medico(char *nomcom,char *esp);
char *obtenernombrecompleto();
char *obtenerespecialidad();
void imprimirdatos();
friend class paciente;
};
medico::medico(){}
medico::medico(char *nomcom, char *esp)
{
strcpy(nombrecompleto,nomcom);
strcpy(especialidad,esp);
}
char *medico::obtenernombrecompleto()
{
return nombrecompleto;
}
char * medico::obtenerespecialidad()
{
return especialidad;
}
void medico::imprimirdatos()
{
cout<<"nombre completo del medico: "<<nombrecompleto<<endl;
cout<<"especialidad: "<<especialidad<<endl;
}
class paciente
{
private:
char nombrecompleto[64];
int edad;
char padecimiento[64];
medico *medicoespecialista;
public:
paciente();
paciente(char *nomcom,int ed,char *pad);
char *obtenernombrecompleto();
______________________________
5.-ANEXOS
Anexo 10.1 a la practica 10.2 cambiar titulo y autor al libro.
#include "stdafx.h"
#include <string.h>
#include <iostream>
using namespace std;
class libro;
class librero
{
public:
void cambiartitulo(libro*,char*);
void cambiarautor(libro*,char*);
void cambiarcatalogo(libro*,char*);
char *darcatalogo(libro);
};
class libro
{
public:
libro(char*,char*,char*);
void verlibro();
friend char *librero::darcatalogo(libro);
friend void librero::cambiartitulo (libro*,char*);
friend void librero::cambiarautor(libro*,char*);
friend void librero::cambiarcatalogo(libro*,char*);
private:
char titulo[64];
char autor[64];
char catalogo[64];
};
libro::libro(char *titulo, char *autor, char *catalogo)
{
strcpy(libro::titulo ,titulo);
strcpy(libro::autor,autor);
strcpy(libro::catalogo ,catalogo);
}
void libro::verlibro ()
{
cout<<"Titulo : "<<titulo<<endl;
cout<<"Autor : "<<autor<<endl;
cout<<"Catalogo: "<<catalogo<<endl;
}
7.-REFERENCIAS
LIBRO
Como programar
en C/C++
internet
ELABORO
AUTOR
Deitel&Deitel
REVISO
EDICION
2da
APROBO
EDITORIAL
Pearson
AUTORIZO