Proyecto Poo
Proyecto Poo
Proyecto Poo
Fecha: 18/06/2020
INDICE
-Objetivo
-Marco teórico
1. Clases
2. Objetos
3. Constructores
4. Destructores
5. Herencia
6. Polimorfismo
7. Asignación dinámica
8. Fun. Friend
9. Templates
10. Ficheros
-Desarrollo
-Conclusion
-Bibliografía
OBJETIVO:
Que el alumno demuestre lo aprendido en el curso de programación
orientada a objetos mediante uno o varios programas escritos por él.
MARCO TEORICO:
La clase es la fundación de C++ para el soporte de la programación orientada a
objetos, y se encuentra en el núcleo de muchas de sus más avanzadas
características. La clase es la unidad básica de C++ de la encapsulación y esta
provee el mecanismo por el cual los objetos son creados.
Clases:
Una clase es en general un modelo, receta o plantilla que define el estado y
comportamiento de cierto tipo de objetos. Una clase puede pensarse como una
colección de variables (atributos o propiedades) y funciones (métodos) que
permiten representar un conjunto de datos y especificar las operaciones o
procedimientos que permiten manipular tales datos. Se puede inclusive entender
una clase como un tipo de dato personalizado, similar a las estructuras (structs),
donde cada programador define los miembros que va a tener su tipo de dato. De
hecho, los tipos de dato nativos de C++ son en realidad clases.
Objetos:
Un objeto es una instancia de una clase, es decir una entidad que se construye a
partir de las descripciones consignadas en una clase (datos y funciones). Por
tanto, un objeto se puede entender como una "variable" que se declara del tipo de
dato de cierta clase. Un objeto es como tal la entidad tangible que permite acceder
a los datos y funciones modeladas al interior de la clase
Ejemplo:
Una analogía para entender las clases y los objetos puede ser una fábrica
ensambladora de carros. Hay un modelo o diseño (clase) especifico de un auto,
pero este modelo en si no es un carro, es solo una descripción de que
características y funcionalidades deben tener los carros que sean de ese modelo.
Los carros ensamblados en la fábrica de acuerdo a dicho modelo serían los
objetos, es decir entidades tangibles que se construyeron a partir de las
descripciones y especificaciones consignadas en el diseño o modelo (o sea la
clase).
Constructor en C++.
Los constructores tienen el mismo nombre que la clase, no retornan ningún valor y no
pueden ser heredados. Además, deben ser públicos, no tendría ningún sentido
declarar un constructor como privado, ya que siempre se usan desde el exterior de la
clase, ni tampoco como protegido, ya que no puede ser heredado. Con el es
posible acceder a los datos miembro de la clase.
Destructor en C++
El destructor es un método de la clase que se usa para destruir objetos del tipo de
la clase, no tiene parámetros de entrada ni valor de retorno. Para declarar un
destructor se utiliza el carácter virgulilla (~) seguido del nombre la clase, es decir,
el destructor también se denomina del mismo modo que la clase. Los destructores
se ejecutan automáticamente justo cuando un objeto alcanza el límite de su
tiempo de vida. Ese tiempo de vida está definido por el contexto (scope) donde se
ha declarado el objeto. Recuerde que un contexto (scope) está delimitado en C++
por las llaves { y }. El tiempo de vida para un objeto de almacenamiento estático es
de toda la ejecución del programa. Mientras que el tiempo de vida de un objeto de
almacenamiento automático depende enteramente de su contexto, si es global o
local.
Herencia
Polimorfismo
Dado que los punteros se pueden aplicar a cualquier tipo de variable se puede
entonces realizar una asignación de memoria dinámica para cualquier variable. La
función new es la que se utiliza para realizar una reserva de memoria y se
encuentra en el archivo de cabecera <stdlib.h>.
Friend
Una función o una clase "Amiga" es aquella a la que se le ha otorgado la
capacidad de tener acceso a los miembros privados de la clase que la ha
declarado como amiga. Para que una clase declare a otra clase o a una función
como amiga se debe declarar esa función o esa clase al interior de la clase y se
debe utilizar la palabra reservada friend en esa declaración.
Las funciones amigas o los métodos de una clase amiga pueden en ocasiones
recibir como parámetro de entrada una referencia a un objeto de la clase que las
declaro amigos.
Templates
Una template permite que una función o clase funcione en muchos tipos de datos
diferentes sin tener que reescribirse para cada uno
Ficheros
En cuanto a cómo se definen estas propiedades, hay dos casos. Si son binarios o
de texto o de entrada, salida o entrada/salida, se define al abrir el fichero,
mediante el método open de fstream en C++.
La biblioteca que se ocupa es :
#include <fstream.h>//<fstream>.
PRIMERO: declaramos la dirección del flujo de entrada
-ifstream descriptor; // Para ficheros de entrada
-ofstream descriptor; // Para ficheros de salida
SEGUNDO: Asociamos el descriptor de ficheros al fichero en sí.
descriptor.open(“nombre.extensión”,int modo);
Donde modo puede ser una combinación (empleando |) de lo siguiente:
ios:: in // Modo entrada
ios:: out // Modo salida (por defecto)
ios:: app // Modo añadir, o sea, posicionar el cursor del fichero al final del fichero
antes de cada escritura
ios:: binary // El archivo se abre en modo binario
ios:: ate // El archivo se abre y el cursor se posiciona al final
ios:: nocreate // Genera un error si el fichero no existe
ios:: noreplace // Genera un error si el fichero existe
ejemplo:
ifstream in; // descriptor del fichero a abrir
in.open(“mio.txt”); // Apertura del fichero; //.open
Esas dos líneas equivalen a la siguiente:
ifstream in (“mio.txt”); // Apertura del fichero;
siendo lo mismo para su contraparte:
ofstream out("salida.txt", ios::out);//ofstream
Cierre de ficheros:
descriptor.close();.
Desarrollo