Está en la página 1de 9

INSTITUTO POLITÉCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERIA MECÁNICA Y ELÉCTRICA


UNIDAD ZACATENCO

PROGRAMACIÓN ORIENTADA A OBJETOS

“PRESENTACIÓN 2º PARCIAL”

PROFESOR: SÁNCHEZ MACÍAS JESÚS

EQUIPO Nº5
INTEGRANTES:
- ÁVILA SERRANO IVÁN ANTONIO.
- GONZÁLEZ ACEVEDO AYRTON.
- GUERRERO TORRES ISRAEL.
- HERNÁNDEZ BERNAL JORGE ANDRÉS.
- VEGA GARCIA RICARDO.

GRUPO: 2EV5

FECHA DE ENTREGA: 26-MARZO-2019

1
ÍNDICE

Página

1. Marco Teórico 3

1.1. Sobrecarga de Operadores 3

1.2. Sobrecarga de Funciones 4

1.3. Funciones Amigas 5

1.4. Funciones Virtuales 6

1.5. Archivos 7

2. Bibliografía 9

2
MARCO TEÓRICO

SOBRECARGA DE OPERADORES
La sobrecarga de operadores es uno de los mecanismos que nos permite ampliar
las capacidades de los lenguajes de programación orientados a objetos. En C++,
la declaración y definición de una sobrecarga de operador es muy similar a la
declaración y definición de una función cualquiera. El ejemplo más sencillo de una
sobrecarga de operadores nos lo da el lenguaje mismo, es decir, en una operación
aritmética (por ejemplo, una suma ) el compilador determina el tipo de operación
requerida de acuerdo con el tipo de datos involucrados.
Sintaxis
Tal y como usted lo habrá notado, la declaración de sobrecarga en el programa
anterior es lo más parecido a una función, es decir, la sintaxis general para
sobrecargar un operador cualquiera es:

tipo operator + (lista de parámetros);


En donde,

1. tipo se refiere al tipo regresado por el operador


2. operator es una palabra reservada y debe aparecer en toda declaración de
sobrecarga de operadores
3. El símbolo + está en representación de cualquier operador
4. Lista de parámetros indica los argumentos sobre los que operarará la función de
sobrecarga
Sobrecarga permitida de operadores
En C++ no es posible sobrecargar todos los operadores, pero al menos la mayoría
de ellos sí. Los operadores que no se pueden sobrecargar son: operadores de
directivas de procesador #, ## ; Selector directo de componente . ; operador para
valores por defecto de funciones de clase : ; Operador de acceso a ámbito :: ;
Operador de indirección de puntero-a-miembro .* ; Condicional ternario ?; sizeof y
typeid.

3
MARCO TEÓRICO
SOBRECARGA DE FUNCIONES

¿Qué es?
• El proceso por el cual varias funciones pueden compartir el mismo nombre
se denomina sobrecarga (overload) de funciones. De estas funciones se
dice que están sobrecargadas.
• Así que en C++ podemos definir varias funciones con el mismo nombre,
con la única condición de que el número y/o el tipo de los argumentos sean
distintos. El compilador decide cuál de las versiones de la función usará
después de analizar el número y el tipo de los parámetros. Si ninguna de
las funciones se adapta a los parámetros indicados, se aplicarán las reglas
implícitas de conversión de tipos.

¿Para qué sirve?


• Elimina la necesidad de nombrar de forma diferente métodos que en
esencia hacen lo mismo, o también hace posible que un método se
comporte de una u otra según el número de argumentos con el que sea
llamado

¿Cuándo utilizar?
• Se puede utilizar la sobrecarga de función para obtener un resultado, aun
cuando el número de parámetros pueda definir

Ventajas
 las ventajas son más evidentes cuando debemos hacer las mismas
operaciones con objetos de diferentes tipos o con distinto número de
objetos. Sin embargo, las funciones serán ejecutadas mediante llamadas, y
por lo tanto sólo habrá una copia de cada una.

4
MARCO TEÓRICO
FUNCIONES AMIGAS
Una función amiga friend de una clase base puede acceder solamente a los
miembros públicos, protegidos y privados de la clase derivada que fueron
heredados de la clase base, además de a los miembros públicos de la clase
derivada.
Eso nos quiere decir que la amistad no se hereda.
Si la función es amiga de la clase derivada, puede acceder a los miembros
públicos y protegidos de la clase base que han sido heredados por la clase
derivada y por supuesto, a los miembros públicos, protegidos y privados de la
clase derivada.
La declaración de las funciones amigas aparece en la clase y comienza con la
palabra clave “friend”, las funciones amigas son similares a las clases miembro, a
excepción de que no pueden accesar automáticamente a la clase de las que son
amigas, debido a que esto requiere el apuntador oculto “this”.
Sin embargo dándole un apuntador a una instancia de una clase de quien es
amiga, la función puede accesar a todas las partes de la clase.
Cuando se definen funciones amigas fuera de la declaración de la clase de quien
son amigas, no se requiere calificar el nombre de la clase.
La forma de declarar una función amiga es la siguiente:

friend-tipo de dato de retorno- nombre (<lista de parámetros>)


Ejemplo:
friend agregar(int valor1, int valor2);
ó
friend agregar (int &v1, int &v2);

La amistad se otorga, no se toma, es decir, para que la clase B sea amiga de la


clase A, la clase A debe declarar de manera explícita que la clase B es su amiga.
Además la amistad no es simétrica ni transitiva, es decir, si la clase A es amiga de
la clase B, y la clase B es amiga de la clase C, no se puede asegurar que la clase
B es amiga de la clase A, que la clase C es amiga de la clase B, o que la clase A
sea amiga de la clase C.

5
MARCO TEÓRICO
FUNCIONES VIRTUALES
El polimorfismo en tiempo de ejecucion es logrado por una combinacion de dos
caracteristicas: 'Herencia y funciones virtuales". Aprendio sobre la herencia en el
capitulo precedente. Aqui, aprendera sobre funcion virtual.

Una función virtual es una funcion que es declarada como 'virtual' en una clase
base y es redefinida en una o mas clases derivadas. Ademas, cada clase derivada
puede tener su propia version de la funcion virtual. Lo que hace interesantes a las
funciones virtuales es que sucede cuando una es llamada a traves de un puntero
de clase base ( o referencia ). En esta situacion, C++ determina a cual version de
la funcion llamar basandose en el tipo de objeto apuntado por el puntero. Y, esta
determinacion es hecha en 'tiempo de ejecucion'. Ademas, cuando diferentes
objetos son apuntados, diferentes versiones de la funcion virtual son ejecutadas.
En otras palabras es el tipo de objeto al que esta siendo apuntado ( no el tipo del
puntero ) lo que determina cual version de la funcion virtual sera ejecutada.
Ademas, si la clase base contiene una funcion virtual, y si dos o mas diferentes
clases son derivadas de esa clase base, entonces cuando tipos diferentes de
objetos estan siendo apuntados a traves de un puntero de clase base, diferentes
versiones de la funcion virtual son ejecutadas. Lo mismo ocurre cuando se usa
una refrencia a la clase base.

Se declara una funcion como virtual dentro de la clase base precediendo su


declaracion con la palabra clave virtual. Cuando una funcion virtual es redefinida
por una clase derivada, la palabra clave 'virtual' no necesita ser repetida ( aunque
no es un error hacerlo ).

Una clase que incluya una funcion virtual es llamada una 'clase polimorfica'. Este
termino tambien aplica a una clase que hereda una clase base conteniendo una
funcion virtual.
Su declaración es la siguiente:
Virtual- tipo de dato de retorno-nombre(parametros)

6
MARCO TEÓRICO
ARCHIVOS
¿Qué es un archivo?
En términos computacionales, es una colección de datos que tiene un nombre y se
guardan en dispositivos de almacenamiento secundarios, diskettes, discos duros,
CDs, etc.

¿Cómo surge la necesidad de usar archivos?


Debido a la volatilidad de la memoria RAM, es decir, si se apaga el equipo se
pierden los datos. Además, algunas aplicaciones exigen transportar datos de una
computadora a otra

Clasificación de archivos por tipo de contenido


De texto: Pueden contener cualquier clase de datos y son ‘entendibles’ por la
gente. Se almacenan utilizando el código ASCII, en el cual cada caracter es
representado por un byte.
Binarios: Almacenan los datos numéricos con su representación binaria. Pueden
ser archivos que contienen instrucciones en leguaje máquina listas para ser
ejecutadas

Clasificación de archivos por tipo de acceso


Secuenciales: Los registros se graban en frecuencia o consecutivamente y deben
accesarse de ese mismo modo. Cuando se desea consultar un registro
almacenado es necesario recorrer el archivo leyendo cada registro y
comparándolo con el que se busca. En este tipo de archivo se utiliza una marca
invisible que el sistema operativo coloca al final de los archivos: EOF (End Of File)
la cual sirve para identificar dónde termina el archivo.
Directos: En este tipo de archivos, no es necesario recorrer todos los registros
para acceder a uno en particular, sino se puede colocar el apuntador interno en el
registro deseado. Para ello se utiliza el comando seek indicándole la dirección del
registro que se desea.

7
MARCO TEÓRICO
ARCHIVOS
Función fopen() y modos de apertura

Se usa la función fopen() para abrir un archivo y determinar el modo de apertura.


Está función tiene dos argumentos: el nombre del archivo y su modo de apertura

Algunas funciones requieren la existencia del archivo para realizar operaciones,


por ello es necesario verificar que cuando se intenta abrir un archivo haya tenido
éxito la operación. Si un archivo no se puede abrir, la función fopen devuelve el
valor de 0 (cero) definido como NULL

ios::app Operación de añadidura


ios::ate Coloca el apuntador del archivo al final del mismo
ios::in Operción de lectura, opción por defecto para objetos de la clase ifstream
ios::out Operación de escritura, opción por defecto para objetos de la clase
ofstream
ios::nocreate Si el archivo no existe se suspende la operación
ios::noreplace Crea un archivo, si existe uno con el mismo nombre se suspende la
operación
ios::trunc Crea un archivo, si existe un con el mismo nombre lo borra
ios::binary Operaciones binarias

Cierre de archivos usando fclose() y fcloseall()


Antes de dejar de utilizar un archivo es necesario cerrarlo mediante las funciones
fclose() y fcloseall(). Si se usa fclose() es necesario indicarle el alías del archivo
que se desea cerrar. La función fcloseall() cierra todos los archivos abiertos

8
BIBLIOGRAFIA

Ceballos, Javier (2004), Programación Orientada a Objetos con C++, México,


Alfaomega Grupo editor SA de C.V.
Aitken, Peter (2002),Aprendiendo C++ en 21 dìas, Editorial Prentice Hall
Hispanoamericana SA

También podría gustarte