Programación de objetos c++, Study Guides, Projects, Research of Computer Engineering and Programming

Si quieres aprender el lenguaje de programación orientada a objetos en c++ este libre detalla, lo que es, para que sirve, y como usarlo.

Typology: Study Guides, Projects, Research

2013/2014

Uploaded on 01/20/2026

mateo-guerrero-16
mateo-guerrero-16 🇺🇸

1 document

1 / 378

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
C++ estándar
Apuntes de Informática Industrial y Comunicaciones.
Miguel Hernando Gutiérrez
Madrid, Febrero de 2020
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Partial preview of the text

Download Programación de objetos c++ and more Study Guides, Projects, Research Computer Engineering and Programming in PDF only on Docsity!

C++ estándar

Apuntes de Informática Industrial y Comunicaciones.

Miguel Hernando Gutiérrez

Madrid, Febrero de 2020

PROGRAMACIÓN C++ Y C OMUNICACIONES.

UPM-ETSIDI-2020. Miguel Hernando.

C++ estándar

Apuntes de Informática Industrial y Comunicaciones.

______________________________________________

MIGUEL HERNANDO GUTIÉRREZ

Departamento de Electrónica, Automática e Informática Industrial

Escuela Técnica Superior de Ingeniería y Diseño Industrial

UNIVERSIDAD POLITÉCNICA DE MADRID

MADRID, FEBRERO DE 2020

"El único modo de hacer un gran trabajo es amar lo que haces. Si no lo has encontrado todavía, sigue buscando…No te acomodes. Como con todo lo que es propio del corazón,lo sabrás cuando lo encuentres."

Steve Jobs.

Copyright Esta obra está© 2020. licenciada Miguel bajo Hernando la licencia Creative Commons Atribución http://creativecommons.org/licenses/by‐NoComercial‐SinDerivadas 3.0‐ (^) ncUnported‐nd/3.0/deed.es (CC BY‐NC o ‐envíeND 3.0). una Para carta ver a Creativeuna copia Commons, de esta licencia, 444 Castro visite Street, Suite 900, Mountain Todas las opinionesView, California, aquí expresadas 94041, EE.UU. son del autor, y no reflejan necesariamente las opiniones de la Universidad Politécnica de Madrid.

PROGRAMACIÓN C++ Y C OMUNICACIONES.

UPM-ETSIDI-2020. Miguel Hernando.

Presentación

La asignatura de informática Industrial y comunicaciones se compone de dos partes algo diferenciadas como el propio nombre de la asignatura indica. Por un lado se pretende que el estudiante de esta asignatura comience a programar según una filosofía de programación orientada a objetos (POO), para lo cual se ha escogido el paradigma de este tipo de lenguajes que es C++. Por otro, se pretende informar y formar al estudiante en la programación específica de sistemas de comunicación, para lo cual es necesario introducir conceptos relativos a los sistemas distribuidos y las redes. Estos apuntes pretenden de forma docente exponer el lenguaje de programación C++ pero centrándose especialmente en los mecanismos que este dispone para abordar la programación orientada a objetos. De esta forma, aunque se explican muchas de las posibilidades adicionales del lenguaje, se centran en explicar con detalle el modo con el que C++ pone a nuestra disposición el encapsulamiento, la herencia y el polimorfismo. Por este motivo, aspectos como las excepciones o las plantillas son explicados al final de la parte relativa a la exposición de la sintaxis del lenguaje y en menor detalle, siendo para la asignatura un objetivo secundario.

PROGRAMACIÓN C++ Y C OMUNICACIONES.

UPM-ETSIDI-2020. Miguel Hernando.

Índice de contenidos

PROGRAMACIÓN C++ Y C OMUNICACIONES.

UPM-ETSIDI-2020. Miguel Hernando.

4.2. C ONSTRUCCIÓN Y DESTRUCCIÓN DE CLASES DERIVADAS : INICIALIZADOR BASE.

PROGRAMACIÓN C++ Y C OMUNICACIONES.

UPM-ETSIDI-2020. Miguel Hernando.

  • PRESENTACIÓN
  • ÍNDICE DE CONTENIDOS............................................................................................
    1. INTRODUCCIÓN A C++
    • 1.1. H ISTORIA DE C++
    • 1.2. L ENGUAJES MÁS RELEVANTES EN LA ACTUALIDAD
    • 1.3. PRIMERAS NOCIONES SOBRE LA PROGRAMACIÓN O RIENTADA A O BJETOS
      • Elementos básicos de la POO.
      • Características principales de la POO
    • 1.4. O RGANIZACIÓN DE LOS APUNTES
    1. MODIFICACIONES MENORES A C EN C++
    • 2.1. EXTENSIÓN DE LOS FICHEROS
  • 2.2. PALABRAS RESERVADAS
    • 2.2.1. Los elementos de C/C++
    • 2.2.2. Nuevas palabras clave incluidas por C++
  • 2.3. N UEVOS OPERADORES
  • 2.4. C OMENTARIOS
  • 2.5. TIPO DE DATOS BOOL
  • 2.6. TIPOS DE DATOS DEFINIDOS POR EL USUARIO
    • Simplificación en la declaración de estructuras y uniones
    • Las enumeraciones como tipo de datos
    • Uniones anónimas
  • 2.7. FLEXIBILIDAD EN LA DECLARACIÓN DE VARIABLES
    • Revisión de los tipos de almacenamiento
  • 2.8. MODIFICACIONES A LAS FUNCIONES
    • Funciones inline
    • Funciones sobrecargadas...................................................................................
    • Parámetros por defecto en una función
  • 2.9. VARIABLES DE TIPO REFERENCIA
    • Las referencias como parámetros de una función..............................................
    • La referencia como valor de retorno
  • 2.10. R ESERVA DINÁMICA DE MEMORIA : OPERADORES NEW Y DELETE
    • El operador new.
    • El operador delete
  • 2.11. ESPACIOS DE NOMBRES
  • 2.12. O PERACIONES DE ENTRADA Y SALIDA
    • 2.13. EJERCICIOS
    1. EL CONCEPTO DE CLASE
    • 3.1. L AS CLASES EN C++
    • 3.2. D EFINICIÓN DE UNA CLASE
      • Declaración de la clase
      • Definición o implementación de una clase
      • Instanciación de un objeto de la clase
    • 3.3. ENCAPSULAMIENTO
      • Clases y métodos friend
    • 3.4. C ONSTRUCTORES Y DESTRUCTORES
      • Constructores de una clase
      • Inicialización de objetos
      • El constructor de copia
      • El destructor
    • 3.5. MÉTODOS Y OPERADORES SOBRECARGADOS
      • Métodos sobrecargados
      • Operadores sobrecargados
      • Sobrecarga de operadores binarios
      • Sobrecarga de operadores unarios
      • Los operadores [ ] y ( )
    • 3.6. MIEMBROS STATIC
      • Atributos static...................................................................................................
      • Metodos static
    • 3.7. EJERCICIOS
    1. LA HERENCIA..................................................................................................
    • 4.1. D EFINICIÓN DE HERENCIA
      • El nivel de acceso protected.
      • Métodos y atributos ocultos de la clase base
    • 4.3. H ERENCIA MÚLTIPLE
    • 4.4. C LASES BASE VIRTUALES
    • 4.5. C ONVERSIONES ENTRE OBJETOS DE CLASES BASE Y CLASES DERIVADAS
    • 4.6. EL CONSTRUCTOR DE COPIA Y EL OPERADOR DE ASIGNACIÓN
    • 4.7. EJEMPLO
    1. EL POLIMORFISMO
    • 5.1. SUPERPOSICIÓN Y SOBRECARGA
    • 5.2. POLIMORFISMO
      • Métodos virtuales
      • Implementación del mecanismo de virtualidad
    • 5.3. VIRTUALIDAD EN DESTRUCTORES Y CONSTRUCTORES.
    • 5.4. FUNCIONES VIRTUALES PURAS Y CLASES ABSTRACTAS
    • 5.5. EJEMPLOS
    1. PLANTILLAS
    • 6.1. INTRODUCCIÓN
    • 6.2. C ONCEPTO DE PLANTILLA
    • 6.3. PLANTILLAS DE FUNCIONES
      • Metodos genéricos
      • Parámetros de la plantilla
      • Sobrecarga de funciones genéricas
    • 6.4. C LASES GENÉRICAS
      • Definición de una clase genérica
      • Miembros de clases genéricas
      • Miembros estáticos
      • Métodos genéricos
      • Instanciación de clases genéricas
      • Argumentos de la plantilla.................................................................................
      • Punteros y referencias a clases implícitas
    • 6.5. C LASES GENÉRICAS EN LA L IBRERÍA ESTÁNDAR
    • 6.6. EJEMPLO
    1. MANEJO DE EXCEPCIONES Y TRATAMIENTO DE ERRORES
    • 7.1. TRATAMIENTO DE EXCEPCIONES EN C++
      • El bloque "try"....................................................................................................
      • El bloque "catch"
      • Lanzamiento de una excepción " throw "
    • 7.2. SECUENCIA DE EJECUCIÓN DEL MANEJO DE EXCEPCIONES
      • Relanzar una excepcion
    1. BREVE INTRODUCCIÓN A LA REPRESENTACIÓN UML............................
    • 8.1. ELEMENTOS DE CONTRUCCIÓN DE LOS DIAGRAMAS UML
      • Elementos estructurales
      • Elementos de comportamiento
      • Elementos de agrupación
      • Elementos de anotación
      • Elementos de relación
    • 8.2. MODELADO ESTRUCTURAL
    • 8.3. D IAGRAMAS
    1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS
    • 9.1. FUNCIONES DE UN SISTEMA OPERATIVO
      • Gestión de procesos
      • Gestión de la memoria
      • Gestión de entradas y salidas...........................................................................
      • Gestión de archivos.
    • 9.2. SISTEMAS O PERATIVOS DE MICROSOFT
      • Sistema Operativo MS-DOS
      • El primer entorno gráfico Windows
      • Sistema Operativo: Windows
      • Sistema Operativo: Windows Millenium
      • Sistema Operativo: Windows NT
      • Sistema Operativo: Windows
      • Sistema Operativo: Windows XP
      • Sistema Operativo: Windows Vista
      • Sistema Operativo: Windows
      • Sistema Operativo: Windows
      • Sistemas Operativos para pequeños dispositivos: CE, Mobile yPhone
    • 9.3. SISTEMA O PERATIVO : U NIX
    • 9.4. SISTEMA O PERATIVO : L INUX
    • 9.5. MÁQUINAS VIRTUALES
    1. SISTEMAS DISTRIBUIDOS: REDES
    • 10.1. FUNDAMENTOS DE REDES
      • Definición y tipos.
      • Objetivos de las redes.
      • Aplicaciones de las redes.
      • Arquitecturas de redes
    • 10.2. MODELO DE REFERENCIA OSI
      • Capas del modelo OSI.
      • Transmisión de datos en el modelo OSI.
      • Terminología y servicios del modelo OSI
      • Ejemplos de redes
    • 10.3. PROTOCOLO TCP/IP
    • 10.4. O RÍGENES Y SERVICIOS DE I NTERNET.
      • Origen y evolución
      • Los servicios más importantes de la Red
      • El lenguaje HTML..............................................................................................
      • Navegadores.
    1. COMUNICACIÓN POR SOCKETS..............................................................
    • 11.1. LOS SOCKETS
    • 11.2. ARQUITECTURA CLIENTE SERVIDOR
      • EL SERVIDOR
      • EL CLIENTE......................................................................................................
      • Programa cliente
      • Servidor

Departamento de Electrónica Automática e Informática Industrial

  1. Introducción a C++

Para poder comprender correctamente estos apuntes de programación en C++, se considera que el lector ya tiene unos conocimientos previos del lenguaje C. A la hora de diseñar el temario de las asignaturas de informática de la Escuela Técnica de Ingenieros Industriales, se planteó como objetivo principal el que el alumno fuera capaz de programar en cualquier lenguaje al finalizar los estudios. Para ello era necesario seleccionar un lenguaje modelo que permitiera plantear los distintos inconvenientes y técnicas que se dan en la programación. Por este motivo se seleccionó el lenguaje C en las asignaturas de primer año como paradigma de lenguaje procedural y como sistema de acercamiento al modo de funcionamiento de un ordenador, y C++ como el lenguaje más representativo de la programación orientada a objetos (POO). Es importante considerar que el Ingeniero Industrial Electrónico, tiene una clara orientación al dispositivo físico, de ahí que los lenguajes que mantienen la cercanía a los elementos constitutivos del ordenador sean más relevantes para su formación, que otros que aun dando una funcionalidad mayor, se han alejado del contacto directo con el Hardware o el sistema operativo. C a menudo es considerado un lenguaje de medio nivel por esta característica.

PROGRAMACIÓN C++ Y C OMUNICACIONES.

UPM-ETSIDI-2020. Miguel Hernando.

Sin embargo, es importante reflejar el hecho de que esta asignatura, Informática Industrial, ha sido dividida a su vez en dos partes: una centrada en el proceso de diseño o ingeniería del software, y otra con el enfoque esencialmente práctico de aprender un lenguaje con filosofía de POO como es el caso de C++. Como se verá a continuación, el proceso de desarrollo de un programa en un lenguaje fuertemente dependiente de la estructura como es el caso de C++, requiere de un proceso de análisis y de diseño teórico previo mucho más importante que en la programación procedural. La programación orientada a objetos es una de las más modernas técnicas de programación buscando como principal objetivo la reducción del tiempo de desarrollo aumentando la eficiencia del proceso de generación de los programas. Como consecuencia, si el diseño previo es correcto, en la POO los programas tienen menos líneas de código escritas por el programador, menos bifurcaciones, y sobre todo la facilidad de introducir elementos de programas previos o escritos por otras personas, así como su actualización. Sin embargo, para lograr estos resultados es necesario un esfuerzo del programador en las fases anteriores a la escritura del programa propiamente dicho. Si así no fuera, los resultados pueden ser francamente decepcionantes. Así, para no llevar a engaño, y con la idea de amenizar ligeramente unos apuntes que de por sí prometen ser densos, se incluye a continuación una entrevista ‐ficticia‐ que durante un tiempo circuló por los foros de programación:

Entrevista al padre del C++ de El 1 de Enero de 1998, Bjarne Stroustrup, padre del lenguaje C++, dio una entrevista a la revistainformática del IEEE. Naturalmente, los editores pensaron que estaba dando una visión retrospectiva de los siete años de diseño orientado a objetos, usando el lenguaje que él mismo habíacreado.

consecuentemente, el editor decidió suprimir los contenidos 'por el bien de la industria'. Pero comoAl finalizar la entrevista, el entrevistador consiguió más de lo que había pactado en un principio, y suele suceder, la información se filtró... Aquí está una completa transcripción de lo que se dijo, noeditado, no ensayado, es decir que no es como las entrevistas planeadas... Lo encontraréis interesante... mirando atrás?^ Int:^ Bien, hace unos pocos años que cambió el mundo del diseño de software, ¿cómo se siente recuerdas? Todo el mundo escribía en C y el problema era que eran demasiado buenos... Las^ BS:^ En este momento estaba pensando en aquella época, justo antes de que llegase. ¿La Universidades eran demasiado buenas enseñándolo también. Se estaban graduando programadorescompetentes a una velocidad de vértigo. Esa era la causa del problema. Int: ¿Problema? BS: Sí, problema. ¿Recuerdas cuando todos programaban en Cobol? Int: Desde luego. Yo también lo hice.