PDF de programación - Programación en C++

Imágen de pdf Programación en C++

Programación en C++gráfica de visualizaciones

Publicado el 8 de Junio del 2018
348 visualizaciones desde el 8 de Junio del 2018
260,3 KB
39 paginas
Creado hace 20a (26/09/1999)
http://www.cybercursos.net

PROGRAMACION EN C++

¿QUE ES LA PROGRAMACION ORIENTADA A OBJETOS?

En la programacion estructurada todos los programas tienen las estructuras
secuencial, repetitiva o condicional.Tambien se utilizan los TAD (Tipos Abstractos de
Datos) para por ejemplo una pila o un arbol.

typdef struct{
int x,y;
int color;
}punto;

struct punto a,b;

luego se implementan las funciones de este TAD (pila_vacia, pila_llena).

En C++ se definen los TAD y las funciones o procedimientos y datos dentro de un
mismo conjunto llamado class (clase).En el ejemplo, el typedef struct punto seria el
equivalente en C de la class de C++ y las variables a y b de los objetos en C++

CLASES ( CLASS )

Antes de poder definir un objeto debemos definir la clase a la que pertenece ( igual
que en el ejemplo anterior debemos definir antes la estructura punto para luego
poder definir las variables a y b ). La forma general de describir una clase seria mas
o menos:

class nombre_clase {

datos y funciones privados;

datos y funciones publicos;
funcion constructora;
funcion destructora;

public:



};

Los datos y funciones privados son los que no se puede acceder a ellas desde las
funciones que son miembros de la clase ( que estan definidas en ella ), se
comportan igual que las variables definidas localmente en una funcion en C normal.
En cambio, los datos y las funciones publicas son accesibles por todas las funciones

Página 1

http://www.cybercursos.net

del programa ( igual que si estuviesen definidas las varibles globalmente en C
normal ).

Por defecto, en una clase se define todos los datos y funciones privados, a menos
de que le especifiquemos las que son publicas con la instruccion public.

Para saber si una funcion debe ser definida publica o privada, debemos ver si el
resto del programa necesita “conocer como funciona” dicha funcion. Si la respuesta
es “si” entonces la funcion debe ser publica, en caso contrario debe ser privada.
Como despues de leer este rollo no te habras enterado ( con esta explicacion no me
extraña ), un ejemplo:

-Vamos a crear la clase CRONOMETRO:

class CRONOMETRO{

struct time tm; // Variable que coge la hora del sistema
int andando;
void dif_tm(time tr, time ts, time *dif);

void Arranca(void);

public:

void Muestra(void);
void Para(void);
};

CRONOMETRO p; (p sera un objeto de la clase cronometro);

La funcion dif_tm es privada porque al resto del programa no le interesa acceder a
ella, en cambio es las funciones Arranca, Muestra y Para si pueden acceder a ella
porque necesitan saber la diferencia entre dos tiempos ( sobre todo la funcion
Muestra, que es la que muestra dicha diferencia). Para llamar a una funcion de la
clase desde una parte del programa que no pertenece a dicha clase, se utiliza
nombre_objeto.funcion;

FORMATOS DE CIN Y COUT

En C++ se empieza a utilizar el concepto de fujos de E/S y no son mas que una
clase (son dos clases: CIN y COUT). Las salidas con formatos de COUT:

cout <<formato<<variable; // equivale a printf("formato",variable);

dec = %d (enteros)
hex = hexadecimal
oct = octal
endl = "\n" (en CIN y COUT se puede seguir poniendo "\n")

Página 2

http://www.cybercursos.net

ends = '\0' (inserta el fin de cadena, un NULL, no el caracter cero)
setw (num) fija la anchura de un campo en n bytes;

cout<<setw(6)<<variable

setprecision(n) = fija el numero de decimales que queremos (n).

todas estas cosas estan en la libreria <iomanip.h>

*Sacar un numero en tres formatos: hexadecimal, octal y decimal:

#include <iostream.h>
#include <iomanip.h>

int num;
cin<<num;
cout<<"el numero decimal es: "<<dec<<num<<endl; (endl="\n")
cout<<"el numero octal es: "<<dec<<oct<<endl; (endl="\n")
cout<<"el numero decimal es: "<<dec<<hex<<endl; (endl="\n")

CONSTRUCTOR Y DESTRUCTOR

Lo mas normal es que un objeto tenga que reinicializarse, para hacerlo usamos el
contructor (tiene el mismo nombre de la clase); no es necesario que se creen (en
este caso el compilador utiliza el constructor explicito que inicializa los dato en cero o
NULL, segun sea el tipo de dato ); cuando se encuentra una declaracion de un
objeto, el compilador llama al contructor.No se debe llamar explicitamente al
contructor. El formato de la funcion constructora es

nombre_clase ( parametros);

Podemos definir la funcion constructora para que inicialice ciertas variables, pedir
memoria dinamica, etc.El destructor tampoco se debe llamar explicitamente, y el
compilador lo llama cuando antes de terminar el programa ( cuando llega a la ultima
llave del main ) .Si no existe el destructor, el compilador llama a uno por defecto. Su
formato es:

ñombre_clase ( parametros );

Si hemos reservado memoria dinamica en la funcion constructora, podemos
aprovechar y liberarla en la destructora.

Página 3

http://www.cybercursos.net

OPERADOR ::

Sirve para especificar a que clase pertenece la funcion que estamos tratando,
es decir:

char *fich1,*fich2;
FILE *entrada,*salida;
void abrir_ficheros(void); privados
char encriptar_desencriptar(char);

datos y prototipos de funciones

class fichero{

public:



}

fichero(void); prototipos de las funciones publicas

void ordenar(void);

~fichero(void)

fichero a; // Definimos un objeto a de la clase fichero

void fichero::operar(void) // Tenemos que especificar a que clase pertenece
{
....
....
}
fichero::fichero(void) // Declaracion de la funcion constructora
{
... // Aqui va lo que hace la funcion constructora: incializar variables
... // (solo si es a un valor <> 0, reservar memoria, etc
}
fichero::~fichero(void) // Declaracion de la funcion destructora
{
...
...
}

Para llamar a las funciones es igual que en C normal, no hace falta poner
“nombre_clase:: “, pero si en las definiciones de las funciones que estan fuera de la
clase.

MANEJO DE FICHEROS

El manejo de ficheros en C++ es diferente que en C normal. Igual que C normal solo
hay un tipo de flujo (definido como FILE *), en C++ hay tres tipo de flujo:

Página 4

http://www.cybercursos.net

ifstream fich_ent; // Definimos fich_ent como flujo de entrada
ofstream fich_sal; // Definimos fich_sal como flujo de salida
fstream fich_entrada_salida; // Definimos fich_entrada_salida como flujo de
// entrada y salida.

Igual que en C normal una vez definido el flujo (con la instruccion FILE *), tenemos
varias funciones para manejar archivos:

void open(char *nombrearchivo, int modo, int acceso);

Esta funcion abre un fichero. Hay que pasarle unos parametros:

nombrearchivo: nombre del archivo a abrir.
modo: dice como se abre el archivo, puede ser uno o varios de estos:

-ios::app todo lo que escribimos en el archivo se añade al final ( pero hay que
poner el ptro al final del archivo con fseek )

-ios::ate añadiendo esto a ios::app ya nos pone automaticamente el ptro al
final del archivo

-ios::binary abre el fichero para operaciones binarias, pero no convierte el
valor leido a caracter ( si lee el numero 65 no nos devuelve ‘A’
sino 65 )

-ios::in abre el fichero para operaciones de entrada ( es decir para leer datos
del fichero ). Solo se puede utilizar con un flujo de entrada ( ifstream )

-ios::out abre el fichero para operaciones de escritura ( para escribir datos en
el fichero ). Solo se puede utilizar con un flujo de salida ( ofstream )

-ios::nocreate hace que se produzca un fallo si la funcion open() si el archivo
especificado no exista

-ios::noreplace igual que la anterior provoca un fallo en open() si el archivo ya
existia

-ios::trunc destruye el contenido del archivo, si existia previamente, y deja la
longitud del archivo en cero

Para unir varios modos se utiliza la “o logica” (||).

acceso: indica de que tipo es el archivo al cual vamos a acceder.

Página 5

http://www.cybercursos.net

Hay cinco tipos de acceso::

0 Archivo normal
1 Archivo de solo lectura
2 Archivo oculto
4 Archivo del sistema
8 Bit de archivo activo ( solo se usa en entornos multitarea para saber el
archivo activo )

Todo este rollo se ve mejor con un ejemplo:

#include <iostream.h>
#include <fstream.h>
ifstream entrada; // Definimos un flujo de entrada
ofstream salida; //Definimos un flujo de salida

entrada.open(“pepe.dat”, ios::in, 0); // Abrimos el fichero en modo lectura
salida.open(“pepito.dat”, ios::out,0); // Abrimos el fichero en modo escritura
entrada.close(); // Cerramos pepe.dat
salida.close(); //Cerramos pepito.dat

Todas estas definiciones y funciones estan definidas en <fstream.h>

CONSTRUCTORES PARAMETRIZADOS

Son los contructores de siempre, pero a los que le pasamos un parametro. Pueden
ser utiles en algunos casos ( por ejemplo para reservar la memoria justa para una
cola, en vez de definir un numero fijo de elementos ). Bueno, vamos a ver como se
define una funcion contructora parametrizada:

class punto{
int *coordenadas // Aqui guardamos las coordenadas del punto
public:
punto(int); // Constructor parametrizado al que le pasamos el
// numero de coordenadas del
  • Links de descarga
http://lwp-l.com/pdf11715

Comentarios de: Programación en C++ (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad