PDF de programación - Curso de C++ por Antonio Lebron Bocanegra

Imágen de pdf Curso de C++ por Antonio Lebron Bocanegra

Curso de C++ por Antonio Lebron Bocanegragráfica de visualizaciones

Actualizado el 16 de Junio del 2017 (Publicado el 14 de Enero del 2017)
953 visualizaciones desde el 14 de Enero del 2017
507,0 KB
139 paginas
Creado hace 12a (13/11/2007)
Curso de C++ por Antonio Lebrón Bocanegra

Este manual está extraido del paquete de software “Tutor C/C++ 1.0”, desarrollado por Antonio Lebrón Bocanegra como
proyecto fin de carrera en la Facultad de Informática de Sevilla, y tutelado por Manuel Mejías Risoto. El paquete original era
un programa para MsDos, que actuaba como lector paginado del texto del curso. Dicho paquete original no sólo incluía este
texto sobre C++, sino otro similar sobre C, así como ejercicios de C y ejercicios de C++.

Tanto esta versión convertida a PDF como el curso original están disponibles en

LECCIÓN 1

www.nachocabanes.com/c/

INTRODUCCION AL CURSO DE C++


El objetivo de este curso es enseñar el lenguaje C++, o dicho de
otro modo, enseñar a programar en lenguaje C++.


INDICE DE ESTA LECCION

En esta lección se va a estudiar los siguientes puntos:
- Idea general y origen del lenguaje C++.
- Programación orientada a objetos (OOP).
- Características principales de la OOP:
* Encapsulación.
* Herencia.
* Polimorfismo
- Forma de implementar las clases en C++.

IDEA GENERAL DEL LENGUAJE C++

Aunque C es uno de los mejores lenguajes de programación de propósito general, a
medida que un sistema software se va haciendo más grande se va acentuando más algunas
deficiencias del C, como es la casi ilimitada libertad que tiene el programador sobre
las rutinas que se implementan. El C++ soluciona este problema facilitando la
creación de unidades funcionales de caja negra que tienen acceso estrictamente
controlado; a estas unidades se les llama objetos, por este motivo se dice que el C++
es un lenguaje orientado a objetos.

Página 1

ORIGEN

El C++ se llamó originalmente C con clases y fue desarrollado por Bjarne Stroustrup
de los laboratorios Bell en Murray Hill, New Jersey, en 1983.
El C++ se puede considerar como una ampliación del C estándar, por lo que la mayor
parte de lo que conocemos del C es aplicable al C++.

Es necesario dejar claro en este momento que este tutor enseña el lenguaje C++, no la
programación orientada a objetos (OOP), aunque la mayoría de los programas de C++
implementados en este tutor son programas orientados a objetos. Como el lenguaje C se
estudió en el tutor de C, en este tutor estudiaremos todas las características
específicas del C++, es decir, aquellas características que posee el C++ y no las
posee el C. Profundizaremos bastante en todas ellas de manera que no dejemos nada sin
comentar. Como ya se dijo en el tutor de C, leyendo simplemente este tutor y libros
de C++ no se aprende este lenguaje, sino que es imprescindible e ineludible programar
en C++, y cuanto más se programe, mejor se captarán los conceptos y más rápido se
aprenderá.

PROGRAMACION ORIENTADA A OBJETOS

Aunque acabamos de decir que el objetivo de este tutor es enseñar el lenguaje C++ y
no la programación orientada a objetos, lo cual podría ocupar otro tutor completo ya
que es otra forma de programar y de pensar en términos programáticos, sí es
pertinente mostrar cuáles son las principales características de esta nueva
metodología de la programación. Estos rasgos principales los podemos resumir en tres:
encapsulación, herencia y polimorfismo.

ENCAPSULACION

La programación orientada a objetos (OOP) está basada en la manipulación de objetos.
Un objeto es un concepto que alberga datos y funciones que operan con esos datos. Una
vez que se ha implementado un objeto, lo único que necesita saber un programador es
la interface con la cual comunicarse con él.

Para entender mejor la idea de objeto, supongamos que un reloj digital es un objeto.
Los datos serían: la hora, la fecha, etc. La interface estaría formada por las
funciones que manipulan esos datos: mostrar la hora, mostrar la fecha, cambiar la
hora, cambiar la fecha, etc. Observad que el usuario no necesita saber cómo están
implementadas tales funciones para manipular los datos; incluso se podría cambiar la
implementación de estas funciones y la interface seguiría siendo la misma.

Un ejemplo de objeto en programación podría ser una pila. La interface estaría
formada por dos funciones: apilar y desapilar. Al usuario del objeto no le importa
cuáles son los datos del objeto ni cómo están implementadas estas dos funciones. El
programador del objeto podría diseñar la pila como un array estático y cambiar
posteriormente la implementación para que la pila esté diseñada como una lista
dinámica enlazada. Al usuario de la pila no le afectaría en nada el cambio de diseño
en la pila, puesto que la interface seguiría siendo la misma, esto es, formada por
las funciones: apilar y desapilar.
Los objetos también reciben el nombre de tipo
abstracto de datos (TAD, DAT en inglés).
Y la encapsulación recibe también el nombre
de abstracción de datos.

Página 2

HERENCIA

Una de las características fundamentales en los lenguajes orientados
a objetos es la herencia. Gracias a esto un determinado objeto puede
"heredar" propiedades de otros objetos. Estos vínculos nos permiten,
en primer lugar, evitar informaciones duplicadas. Pero su importancia
va mucho más allá, ya que el concepto de herencia implica una clasi-
ficación y una interdependencia entre los objetos. Veamoslo con un
ejemplo.
Supongamos que definimos el objeto animal. Este objeto abstracto tiene
una serie de características: es un ser vivo, necesita alimentarse, se
reproduce, etc.
Acto seguido definimos el objeto mamífero indicándole que es un animal.
Este objeto posee todas las características de los animales y además le
añade nuevas características: es vertebrado, tiene mamas, etc.
A continuación definimos el objeto persona indicándole que es un mamí-
fero por lo que herederá todas las características de los mamíferos y
de los animales. Además les añadimos otras que son propias a las perso-
nas: habla, es racional, etc.
Por último, definimos el objeto alumno indicándole que es una persona.
El objeto alumno tendrá todas las características de persona y tendrá
también las suyas propias: matrícula, asignaturas que tiene, etc.
Finalmente, definimos Antonio como una instanciación del objeto alumno,
es decir, concretamos el objeto abstracto alumno sobre un elemento real,
Antonio; no necesitamos definir nada. El lenguaje ya "sabe" que Antonio
es un ser vivo, es vertebrado, etc.

POLIMORFISMO

Vamos a explicar este concepto a través de dos ejemplos.
Imaginemos que tenemos dos pilas, una almacena números enteros y la otra
almacena números en coma flotante. Las dos funciones básicas que podemos
realizar con una pila son meter y sacar. Como tenemos dos pilas, podría-
mos implementar cuatro funciones diferentes con cuatro nombres diferentes:
apilaint, desapilaint, apilafloat y desapilafloat. Aunque esto funcione,
estamos complicando el programa a nivel conceptual. Utilizando la idea de
polimorfismo podemos simplificar conceptualmente el programa implementando
cuatro funciones con dos nombres diferentes: apila y desapila. Cuando in-
voquemos, por ejemplo, a la función apila, el compilador deberá determinar
si llamamos a la función apila de la pila de números enteros o a la función
apila de la pila de números en coma flotante. Las funciones apila y desapila
se dice que están sobrecargadas.
Los operadores también se pueden sobrecargar en C++. De hecho ya están so-
brecargados en casi todos los lenguajes de programación. Por ejemplo, el
operador + lo utilizamos en C y C++ para sumar operandos que pueden ser del
tipo carácter, entero, coma flotante, etc.
Veamos otro ejemplo interasente de polimorfismo que hace uso de la herencia.
Supongamos que tenemos definido el objeto punto con la función dibujar, la
cual pinta un punto. A continuación definimos el objeto línea que hereda las
características del objeto punto. En el objeto lína, utilizando la idea de
polimorfismo, volvemos a definir la función dibujar, pero en este caso esta
función traza una línea; la función dibujar del objeto línea puede utilizar,
si lo desea, la función dibujar, heredada del objeto punto, para dibujar ca-
da uno de los puntos de los que está constituida la línea.

Página 3

FORMA DE IMPLEMENTAR LAS CLASES

Para terminar con esta introducción al lenguaje C++ vamos a hacer una
recomendación. Todos los programas ejemplos de esta lección están en
un sólo fichero. La mayoría de los ejemplos están constituidos por la
definición de un tipo abstracto de datos (llamados clase en C++ así
como a la instanciación de una clase se le llama objeto) y la función
main para probar la clase definida. Los programas ejemplos se han rea-
lizado en un sólo fichero para facilitar su exposición y explicación
en el tutor. No obstante, en la práctica es recomendable dividir el
diseño de una clase en dos ficheros: un fichero sería de cabecera (con
extensión .H) y en él estarían todas las declaraciones de la clase, y
el otro fichero sería de código ejecutable (con extensión .CPP) y en
él estarían todas las definiciones relativas a la clase declarada. Al
principio del fichero que tiene las definiciones hacemos un #include
del fichero que contiene las declaraciones.
Cuando queramos utilizar esa clase en un programa de C++ tenemos dos
posibilidades:
1) Si el programa no lo hacemos como proyecto, simplemente hacemos
un #include del fichero que contiene las definiciones de la clase al
principio del fichero del programa.
2) Si el programa lo hacemos como proyecto, añadimos a la lista de
ficheros del proyecto, el fichero de las definiciones de la clase,
bien con extensión .CPP o bien con extensión .OBJ. Además hay que
tener en cuenta que debemos hacer un #include del fichero con las
declaraciones de la clase, en cada fichero del proyecto que utilice
dicha clase.

LECCIÓN 2

C++ COMO UNA MEJORA DEL C


Est
  • Links de descarga
http://lwp-l.com/pdf553

Comentarios de: Curso de C++ por Antonio Lebron Bocanegra (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