paradigma orientado a objetos

32
CAPITULO II Orientación a Objetos Alejandro Bolaños Ussa

Upload: alejandro-bolanos-ussa

Post on 07-Jul-2015

95 views

Category:

Education


1 download

DESCRIPTION

En esta presentación se muestran los puntos más importantes dentro de la programación orientada a objetos, Entendiendo la relación de herencia, y los pilares en la orientación a Objetos.

TRANSCRIPT

Page 1: Paradigma orientado a objetos

CAPITULO IIOrientación a Objetos

Alejandro Bolaños Ussa

Page 2: Paradigma orientado a objetos

Temática …

1. Encapsulamiento

2. Herencia “Es-un”(Is-A) y “Tiene un” (Has-A)

3. Polimorfismo

4. Sobrescritura / Sobrecarga1. Métodos sobrescritos

2. Métodos sobrecargados

3. Polimorfismo sobrescritos y sobrecargados

5. Casteo a variables de referencia

Page 3: Paradigma orientado a objetos

...Temática

6. Implementación de interfaces

7. Tipos de retorno

8. Constructores

9. Variables y métodos estáticos

10.Acoplamiento y cohesión

11.Tipos enumerados (Enum)

Page 4: Paradigma orientado a objetos

Encapsulamiento

● Principio de la Orientación a Objetos

● Se utiliza con el fín de tener flexibilidad, buen

mantenimiento y extensibilidad○ Mantener las variables de instancia protegidas (puede ser con un

modificador de acceso. Ej.: private).

○ Hacer métodos de acceso públicos para forzar al acceso a las

variables por medio de dichos métodos en lugar de acceder

directamente.

○ Utilizar las convenciones de código para los nombres de los métodos,

Ej.: set, get , is.

Page 5: Paradigma orientado a objetos

1. Encapsulación

Page 6: Paradigma orientado a objetos

Encapsulamiento

Page 7: Paradigma orientado a objetos

2. Herencia “Es un” (Is-A)

“Tiene un”(Has-A)

● Principio de la Orientación a Objetos

● Se utiliza con el fín de crear nuevas clases teniendo

como base una clase padre, con el fin de reutilizar sus

funcionalidades, agregar nuevos comportamientos

simplemente ajustarlos mediante la sobreescritura y el

polimorfismo.

Page 8: Paradigma orientado a objetos
Page 9: Paradigma orientado a objetos
Page 10: Paradigma orientado a objetos
Page 11: Paradigma orientado a objetos
Page 12: Paradigma orientado a objetos
Page 13: Paradigma orientado a objetos

3. Polimorfismo

● Principio de Orientado a Objeto

● Se refiere a la propiedad por lo que es

posible enviar mensajes sintácticamente

iguales a objetos diferentes.

● Todo objeto Java que cumpla con la relación

IS-A puede ser considerado polimórfico; Por

lo tanto todos los objetos Java son …

Page 14: Paradigma orientado a objetos

… Polimorfismo

● La invocación polimórficas de métodos solo

se aplican a métodos de instancia, esto

quiere decir que ni las variables ni los

métodos estáticos son tenidos en cuenta

para ser sobrescritos en tiempos de

ejecución, dependiendo del tipo de instancia

obtenido.

Page 15: Paradigma orientado a objetos

4. Sobrescritura / Sobrecarga

● El objetivo en este punto de diferenciar

cuando un objeto se está sobrescribiendo y

cuándo se está sobrecargando.

● La sobrescritura se presenta en la herencia,

de esta manera es posible sobrescribir los

métodos de la superclase que no sean final.

Page 16: Paradigma orientado a objetos
Page 17: Paradigma orientado a objetos

Sobrescritura

● El método que sobrescribe no puede tener

un modificador de acceso más restrictivo

que el método que está sobrescribiendo,

pero sí menos restrictivo.

● La lista de argumentos debe ser

exactamente la misma que la del método

sobrescrito

● El tipo devuelto debe ser el mismo, o un

subtipo, del tipo de retorno declarado en

el método original de la superclase.

● El método que sobrescribe no puede

lanzar excepciones más generales que se

declaren en el método sobrescrito. Pero si

puede declarar excepciones más

específicas.

● No podemos sobrescribir un método

marcado como final o private.

● No podemos sobrescribir un método

marcado como static

● Si un método no puede ser heredado, no

podemos sobrescribir

● Para llamar a un método de la clase padre

desde la subclase los hacemos con la

palabra super() permitiéndonos llamar

así, la funcionalidad del método antes de

sobreescribirlo.

Page 18: Paradigma orientado a objetos

Sobrecarga

●Los métodos sobrecargados DEBEN

cambiar la lista de argumentos

●Los métodos sobrecargados PUEDEN

cambiar el tipo de retorno

●Los métodos sobrecargados PUEDEN

cambiar el modificador de acceso

●Los métodos sobrecargados PUEDEN

declarar excepciones checked nuevas o

más genéricas

●No se puede cambiar solamente el tipo de

retorno.

●Un método puede ser sobrecargado en la

misma clase o en una subclase. En otras

palabras, si la clase A define el método

hacerAlgo(int i), la subclase B podría

definir un método hacerAlgo(String s) sin

sobrescribir la versión de la superclase.

Los dos métodos, con el mismo nombre

pero en diferentes clases, siguen

considerándose sobrecargados si la

subclase hereda una versión del método y

declara otra versión sobrecargada en su

definición de clase.

Page 19: Paradigma orientado a objetos
Page 20: Paradigma orientado a objetos

5. Casteo a variables de referencia

Sabemos que en Java es posible tener una

referencia a una clase y tener una instancia a

cualquiera de sus subclases

Animal animal = new Dog();

Pero hacer esto tiene sus limitaciones, en el

caso cuando se requiere utilizar los métodos

implementados en la clase Dog.

Page 21: Paradigma orientado a objetos
Page 22: Paradigma orientado a objetos
Page 23: Paradigma orientado a objetos

6. Implementación de interfaces

Al implementar una interfaz estas también cumple con la relación IS-A

● Cuando se implementa una interfaz es necesario implementar sus

métodos, salvo si la clase es abstracta.

● Se debe tener en cuenta que todos los métodos de una interfaz son

públicos y abstractos así como sus variables son públicas y finales.

● En una clase se pueden implementar n interfaces.

● Una interfaz puede heredar N interfaces, pero nunca implementar otras

interfaces. No es la misma herencia como se trabaja con las clases.

● No se puede crear una instancia directa de una interfaz

MiInterfaz variebla = new MiInterfaz(); //Error

Page 24: Paradigma orientado a objetos

7. Tipos de retorno

En esta parte nos centraremos a los tipos de

retorno que cumplan con la relación IS-A

● Es posible sobrescribir un método y cambiar

el tipo de retorno siempre y cuando se

encuentren dentro del mismo árbol de

herencia

● En un método con un tipo de retorno

primitivo, podemos devolver cualquier valor o

variable que pueda ser implícitamente

convertida al tipo de retorno declarado.

Page 25: Paradigma orientado a objetos

8. Constructores e instanciación.

● Todas las clases contiene un constructor,

incluyendo a las clases abstractas

● Los constructores se invocan en tiempo de

ejecución usando la palabra reservada new

● Cada vez que se hace el llamado a un

constructor, este también hace un llamado

al constructor de su superclase, con una

llamada implícita a super() de esta manera

el código que se ejecuta primero es el

código de la clase padre.

● Un constructor por defecto es un constructor

sin argumentos.

● Sí tenemos un constructor con argumentos,

el compilador NO creará un constructor por

defecto.

● Un constructor sin argumentos no es

necesariamente un constructor por

defecto,pues el constructor por defecto es

el que proporciona el compilador.

● Las interfaces NO tienen constructor.

● la única forma de invocar a un constructor

es desde otro constructor.

Page 26: Paradigma orientado a objetos

¿Cuándo se crea un constructor por

defecto?

Cuándo dentro de la clase no se ha creado

ningún constructor. Ni siquiera un constructor sin

argumentos.

● El constructor por defecto tiene el mismo modificador de acceso que la clase.

● El constructor por defecto no tiene argumentos.

● El constructor por defecto incluye una llamada sin argumentos al super

constructor (super()).

Page 27: Paradigma orientado a objetos

9. Variables y métodos estáticos.

También conocidos como variables y

métodos de clase. De los cuales se

pueden invocar sin tener una instancia.

De igual manera las variables estáticas

mantienen su valor en memoria

independientemente de la instancia que

se cree.

Un método estático sólo puede acceder a

métodos y variables estáticas que están

definidas fuera de la clase.

Recordemos que los métodos estáticos

no se pueden sobrescribir, pero sí pueden

ser redefinidos en una subclase.

Page 28: Paradigma orientado a objetos

10.Acoplamiento y cohesión

Acoplamiento

● Cantidad de conocimiento que

una clase tiene sobre la otra. Lo

único que una clase A conoce

sobre una clase B, es lo que

expone sobre su interfaz.

● Así mismo el acoplamiento va

ligado a la encapsulación de los

datos.

Cohesión

● Cómo una única clase se diseña y

cómo esta se comporta. Las clases

deben ir centradas a un solo fín. de

esta manera la clase debe tener un

enfocado propósito, permitiendo la

reutilización y facilitando la

mantenibilidad.

Page 29: Paradigma orientado a objetos

11.Tipos Enumerados(Enum)

Nos permite restringir las opciones que puedan

existir en un código, permitiéndonos reducir

código innecesario.

● Un enum se puede declarar, dentro de

una clase concreta y abstracta; fuera de

un clase, pero nunca dentro de un método

● Es opcional que al final del enum vaya un

punto y como (;)

● Se puede decir que cada valor de los

enum, es como si fuese una instancia del

mismo enum

● Los enum pueden tener constructores y

variables propias.

● Los constructores de un enumerado

también se pueden sobrecargar.

Page 30: Paradigma orientado a objetos

Sobrescritura en enumeradores

Page 31: Paradigma orientado a objetos

● http://javaes.wikispaces.com/

● es.wikipedia.org/wiki/Polimorfismo_(informática)

● https://docs.oracle.com/javase/tutorial/java/java

OO/enum.html

● http://scjptest.com

E-Fuentes

Page 32: Paradigma orientado a objetos

Gracias…!