9
Introducción a Programación Orientada a Objetos YOLANDA BLANCO FERNÁNDEZ

YOLANDA BLANCO FERNÁNDEZ Introducción a Programación

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación

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

ND

EZ

YOLANDA BLANCO FERNÁNDEZ

ISBN 978-84-121509-0-2

Page 2: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación
Page 3: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación

INTRODUCCIÓN A

PROGRAMACIÓN ORIENTADA A OBJETOS

YOLANDA BLANCO FERNÁNDEZ

2019

Page 4: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación

© 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

Page 5: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación

A Chloe y Chiara, por extenderme sobreescribiendo mis

peores defectos.

A Juan, por ayudarme, también, en esto de la herencia.

3

Page 6: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación
Page 7: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación

Í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

Page 8: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación

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

Page 9: YOLANDA BLANCO FERNÁNDEZ Introducción a Programación

Í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