Upload
others
View
6
Download
0
Embed Size (px)
Citation preview
www.andavira.com
Introducción aProgramación Orientada a Objetos
INT
RO
DU
CCIÓ
N A
PR
OG
RA
MA
CIÓ
N O
RIE
NTA
DA
A O
BJE
TO
SY
OLA
ND
A B
LAN
CO F
ER
NÁ
ND
EZ
YOLANDA BLANCO FERNÁNDEZ
ISBN 978-84-121509-0-2
INTRODUCCIÓN A
PROGRAMACIÓN ORIENTADA A OBJETOS
YOLANDA BLANCO FERNÁNDEZ
2019
© Andavira Editora, S. L., 2019 Vía de Édison, 33—35 (Polígono del Tambre) 15890 Santiago de Compostela (A Coruña) www.andavira.com · [email protected]
© Yolanda Blanco Fernández
Diseño portada: Dixital 21, S. L.Impresión y encuadernación: Tórculo Comunicación Gráfica, S. A.
Impreso en España · Printed in Spain
Todos los derechos reservados. La reproducción total o parcial de este trabajo, su incorporación a un sistema informático o su transmisión en cualquier forma o por cualquier medio (electrónico, mecánico, fotocopia, grabación u otro) no está permitida sin el permiso previo por escrito de los propietarios del copyright.
Depósito legal: C 2492-2019ISBN: 978-84-121509-0-2
A Chloe y Chiara, por extenderme sobreescribiendo mis
peores defectos.
A Juan, por ayudarme, también, en esto de la herencia.
3
Índice general
Índice de figuras III
Índice de tablas V
1. Programación Orientada a Objetos (POO): Nociones básicas 3
1.1. ¿Por qué surge el paradigma POO? . . . . . . . . . . . . . 3
1.2. POP vs. POO . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Pilares de la POO . . . . . . . . . . . . . . . . . . . . . . 4
1.3.1. Encapsulación, abstracción y principio de ocultación 5
1.3.2. Herencia . . . . . . . . . . . . . . . . . . . . . . 5
1.3.3. Polimorfismo . . . . . . . . . . . . . . . . . . . . 6
1.4. Ventajas de la POO . . . . . . . . . . . . . . . . . . . . . 8
1.5. El lenguaje de programación Java . . . . . . . . . . . . . 8
2. Encapsulación 11
2.1. Definición de una clase: los atributos . . . . . . . . . . . . 11
2.2. Definición de una clase: los métodos . . . . . . . . . . . . 13
2.2.1. Métodos constructores . . . . . . . . . . . . . . . 14
2.2.2. Clases y objetos. Gestión de memoria . . . . . . . 16
2.2.3. Definición de un método. Restricciones de tipo y
visibilidad . . . . . . . . . . . . . . . . . . . . . . 18
2.2.4. Métodos de acceso (getters) y de modificación (set-
ters) . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.5. Paso de parámetros . . . . . . . . . . . . . . . . . 21
2.3. Cuestiones de revisión . . . . . . . . . . . . . . . . . . . 22
I
II ÍNDICE GENERAL
3. Herencia 29
3.1. Relaciones de generalización-especialización . . . . . . . 29
3.1.1. Restricciones de visibilidad: modificador protected
y referencia super . . . . . . . . . . . . . . . . . . 31
3.1.2. Sobreescritura de los métodos de una clase padre . 34
3.1.3. Clases y métodos abstractos . . . . . . . . . . . . 37
3.2. Implementación de interfaces . . . . . . . . . . . . . . . . 39
3.2.1. Componentes de una interfaz . . . . . . . . . . . . 40
3.2.2. Herencia múltiple a través de la implementación de
interfaces . . . . . . . . . . . . . . . . . . . . . . 45
3.3. Cuestiones de revisión . . . . . . . . . . . . . . . . . . . 46
4. Polimorfismo 63
4.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2. ¿Cómo funciona el polimorfismo? . . . . . . . . . . . . . 64
4.3. Conversión de tipos de datos . . . . . . . . . . . . . . . . 65
4.4. Clases y métodos genéricos: parametrización de tipos . . . 69
4.5. Cuestiones de revisión . . . . . . . . . . . . . . . . . . . 73
5. Gestión de Excepciones 97
5.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . 97
5.2. Manejo de excepciones . . . . . . . . . . . . . . . . . . . 99
5.2.1. Lanzamiento de excepciones . . . . . . . . . . . . 100
5.2.2. Captura y propagación de excepciones . . . . . . . 100
5.2.3. Sentencia finally . . . . . . . . . . . . . . . . . 102
5.3. Tipos de excepciones . . . . . . . . . . . . . . . . . . . . 103
5.4. La gestión de excepciones en la sobreescritura de los métodos106
5.5. Definición de excepciones propias y reglas de uso . . . . . 109
5.6. Cuestiones de revisión . . . . . . . . . . . . . . . . . . . 111
A. Notación básica de diagramas de clases UML 125
Índice de figuras
1.1. Clase Empleado y dos de sus objetos representados en no-
tación UML. . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2. Diagrama UML referido a una jerarquía de categorías pro-
fesionales. . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1. Instanciación de la clase Circulo en notación UML. . . . 16
2.2. Estado de la pila y el heap tras la instanciación de la clase
Circulo. . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3. Modificación de las referencias a los objetos de la clase
Circulo. . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1. Relación de herencia entre las clases Deportista y PilotoF1en notación UML. . . . . . . . . . . . . . . . . . . . . . . 47
3.2. Diseño UML adoptado en el sistema de gestión del herbolario. 57
3.3. Herencia entre las clases Alumno, Profesor y Persona. . 60
5.1. Jerarquía de excepciones definida en Java. . . . . . . . . . 98
5.2. Tipos de excepciones comprobadas (checked) y no compro-
badas (unchecked) en Java. . . . . . . . . . . . . . . . . . 105
III