lecasabe - Java - ProgII€¦ · PRINCIPIOS DE LA POO H T T P : / / L E C A S A B E . C O M 16 Para...
Transcript of lecasabe - Java - ProgII€¦ · PRINCIPIOS DE LA POO H T T P : / / L E C A S A B E . C O M 16 Para...
H T T P : / / L E C A S A B E . C O M 2
POO PROGRAMACIÓN ORIENTADA A OBJETOS
INTRODUCCIÓN
H T T P : / / L E C A S A B E . C O M 3
Java se basa en la programación orientada a objetos.
De alguna manera todos los programas en Java son
orientados a objetos. Los realizados hasta este
momento necesitan una clase que implemente un
método como main() para empezar la ejecución,
aunque no se necesite la creación de ningún objeto se
ha estado utilizando el concepto de clase.
H T T P : / / L E C A S A B E . C O M 4
Un programa orientado a objetos es el resultado de la
colaboración de varios tipos de objetos entre sí, cada
uno con sus funcionalidades prestando o solicitando
servicios a otros. Un objeto que no es utilizado por otros
o que no utiliza a otros, no tiene sentido.
Todo está conectado, sigue una lógica.
H T T P : / / L E C A S A B E . C O M 5
CLASE
H T T P : / / L E C A S A B E . C O M 6
Funciona como una plantilla o molde para crear objetos
individuales de un mismo tipo, define los atributos y
métodos que describen su estado y comportamiento.
Es decir, permite la instancia de objetos de cierto tipo a
partir de definiciones.
OBJETO
H T T P : / / L E C A S A B E . C O M 7
Los objetos son concreciones (realidades) instanciadas
de las clases. Estas son abstracciones que representan
como son los objetos de dicha clase y cuáles son sus
funcionalidades.
ATRIBUTO
H T T P : / / L E C A S A B E . C O M 8
Son las características que describen y definen a una
clase, al tomar valores definen el estado de una objeto.
Cada atributo cuenta con un identificador y un tipo.
MÉTODO
H T T P : / / L E C A S A B E . C O M 9
Por otro lado los métodos definen el comportamiento
posible de los objetos de una clase. Son la
implementación de un algoritmo y se ejecuta mediante
una llamada (invocación) o un mensaje. Pueden
modificar el valor de los atributos o a su vez llamar a
otros métodos.
EJEMPLO DE MÉTODO
H T T P : / / L E C A S A B E . C O M 10
H T T P : / / L E C A S A B E . C O M 11
Podemos hacer la siguiente analogía: La clase es como
un molde de un vestido, mientras que los objetos son
todos los vestidos concretos que yo puedo crear con
ese molde.
CLASES DE JAVA
H T T P : / / L E C A S A B E . C O M 12
Java ya cuenta con sus propias clases que nos brindan
diversos métodos que ya venimos utilizando, pero sin
entrar en lo que es el concepto de POO, por ejemplo la
clase Scanner.
CLASE SCANNER
H T T P : / / L E C A S A B E . C O M 13
El uso de la clase Scanner es una de las mejores
maneras de ingresar datos por teclado en Java.
Scanner es una clase en el paquete java.util utilizada
para obtener la entrada de los tipos primitivos como int,
double, etc.
Y para poder hacer uso de ella simplemente la
importamos y luego creamos un objeto de ella para
acceder a los métodos necesarios.
CLASE SCANNER
H T T P : / / L E C A S A B E . C O M 14
CLASE SCANNER
H T T P : / / L E C A S A B E . C O M 15
Descripción del código por línea:
3. Importamos la clase
9. Creamos un objeto llamado teclado
10. Mediante el objeto invocamos al método nextLine()
PRINCIPIOS DE LA POO
H T T P : / / L E C A S A B E . C O M 16
Para poder implementar la programación orientada a
objetos todos los lenguajes que se basan en esta
metodología se basan en cuatro principios: abstracción,
encapsulación, herencia y polimorfismo.
ABSTRACCIÓN
H T T P : / / L E C A S A B E . C O M 17
Es el mecanismo que permite concentrarse en los
aspectos que se necesitan, obviando los que no son
necesarios. Las clases son el mecanismo para
implementar la abstracción en Java, representan lo que
los objetos de esa clase tienen y saben hacer, agrupan
lo común en representación y funcionalidad de los
objetos. Una clase es una abstracción para un tipo
concreto y determinado de objetos.
Importa el «¿qué hace?» y no «¿cómo lo hace?»
H T T P : / / L E C A S A B E . C O M 18
La abstracción es la facultad de los seres humanos en
concentrar el pensamiento en un elemento,
característica, propiedad o noción, centrándose en él y
olvidando todos los demás.
H T T P : / / L E C A S A B E . C O M 19
ENCAPSULACIÓN
H T T P : / / L E C A S A B E . C O M 20
Es el mecanismo por el cual los datos y los códigos
están protegidos de su acceso desde el exterior; es
decir por parte de otros objetos que necesitan su
colaboración. Un objeto sólo expone las funcionalidades
expresadas en su interfaz público y ocultan tanto su
código como su representación. La clase con sus
diferentes tipos de acceso es quien implementa la
encapsulación.
HERENCIA
H T T P : / / L E C A S A B E . C O M 21
Es el mecanismo por el cual un objeto puede adquirir
propiedades y funcionalidades de otro tipo de objetos.
Es un mecanismo de generalización de propiedades y
funcionalidades para las clases de las que se hereda
(superclases) y de especialización de las clases que
heredan (subclases).
EJEMPLO DE HERENCIA
H T T P : / / L E C A S A B E . C O M 22
Por ejemplo un auto deportivo es
un tipo de objeto especializado a
partir de la clase más genérica
auto, así hay autos que son
deportivos y otros que son 4*4,
los dos son autos, los dos heredan
de la clase más general las
propiedades y funcionalidades,
pero uno se especializa en la
velocidad y el otro en la fuerza.
HERENCIA
H T T P : / / L E C A S A B E . C O M 23
Un “Cuadrado” es una “Figura”,
una “Figura es un “Gráfico”.
Cualquier “Figura” y cualquier “Texto, son “Grafico”.
Cualquier “Cuadrado” o “Circulo” o “Linea”
son “Grafico”, porque son “Figura”.
POLIMORFISMO
H T T P : / / L E C A S A B E . C O M 24
Es el mecanismo por el cual con la misma forma se
ejecutan códigos diferentes. En una jerarquía de
herencia de clases, se implementa una funcionalidad
determinada en las superclases (de las que se hereda)
y se va especializando su funcionamiento de acuerdo a
las subclases (que heredan dicha funcionalidad).
H T T P : / / L E C A S A B E . C O M 25
DEFINICIÓN DE CLASE
¿QUÉ DEFINEN LAS CLASES?
H T T P : / / L E C A S A B E . C O M 26
Las clases definen la estructura y el comportamiento de
los objetos de un tipo particular. Podemos decir que las
clases son en realidad modelos de objetos del mismo
tipo.
¿QUÉ DEFINEN LAS CLASES?
H T T P : / / L E C A S A B E . C O M 27
En Java las clases se implementan con la palabra
reservada class. Una class es un bloque ({ }) en el que
se definen las propiedades o atributos (variables) y los
métodos o funcionalidades (funciones).
Primero se le asigna un
modificiador de acceso,
luego la palabra reservada class
y por último el nombre.
MODIFICADORES DE ACCESO
H T T P : / / L E C A S A B E . C O M 28
En Java existen cuatro modificadores de acceso para
definir el ámbito desde el que puede ser usadas las
clases, las variables y los métodos: public, private,
protected y sin modificador.
H T T P : / / L E C A S A B E . C O M 29
ATRIBUTOS
H T T P : / / L E C A S A B E . C O M 30
Las variables miembro dentro de la definición de una
clase son de dos tipos: de instancia y de clase.
ATRIBUTOS
H T T P : / / L E C A S A B E . C O M 31
de instancia: son los atributos que tendrá cada objeto,
son espacios de memoria en los que se almacenan los
datos de cada objeto. Se crean cuando se crea el objeto
y se liberan cuando se liberan los objetos.
de clase: son atributos que comparten todos los objetos
de una clase, no pertenecen a ningún objeto son de la
clase. Se definen utilizando la palabra static.
¿QUÉ DEFINEN LOS ATRIBUTOS?
H T T P : / / L E C A S A B E . C O M 32
La definición de cualquiera de los dos tipos es casi
como se ha visto hasta este momento para la definición
de variables dentro de la función main, añadiendo el
modificador de acceso a dicha variable, que se define
con las palabras clave private, protected, public o sin
ninguna de ellas, tal y como sigue: Primero se le asigna un
modificiador de acceso,
luego el tipo de dato y por
último el nombre.
MÉTODOS
H T T P : / / L E C A S A B E . C O M 33
Los métodos son las funciones miembro de la clase que
van a definir el comportamiento de los objetos y como
la variables son de dos tipos: de instancia y de clase.
El valor devuelto puede ser void, cualquier tipo primitivo
del lenguaje o una referencia a cualquier tipo de objeto
(cualquier identificador de clase).
EJEMPLO DE MÉTODOS
H T T P : / / L E C A S A B E . C O M 34
ÁMBITO
H T T P : / / L E C A S A B E . C O M 35
El ámbito tanto en la clase, como en las variable, como
en los métodos define quien puede acceder a la clase,
a la variable o al método.
En POO para implementar la encapsulación hay que
definir los atributos como privados, para así ocultar la
representación. Y exponer en una parte pública a los
métodos, para así definir el interfaz de uso de los
objetos de una clase.
H T T P : / / L E C A S A B E . C O M 36
OBJETOS INSTANCIAS DE CLASES
CREAR OBJETOS
H T T P : / / L E C A S A B E . C O M 37
Para poder crear objetos de una clase se utiliza el
operador new. Este operador devuelve una referencia al
objeto instanciado.
Las variables de instancia no hace falta inicializarlas,
cuando se crea un objeto, el valor que se almacene en
el espacio de dicha variable es 0 para los números,
false para los booleanos y null si son referencias a otros
tipos de objetos (por ejemplo String).
CREAR OBJETOS
H T T P : / / L E C A S A B E . C O M 38
Cuando se crea el objeto se invoca a una de sus
métodos constructores.
El objetivo de estos métodos es inicializar con valores
determinados las variables miembro (atributos) de la
clase.
EJEMPLO PARA CREAR UN OBJETO
H T T P : / / L E C A S A B E . C O M 39
SINTAXIS:
Primero va el nombre de
la clase, luego el nombre
del objeto seguido del
signo de =.
A la derecha del signo va
el operador new y
nuevamente el nombre
de las clase con los ()
para los parámetros.
H T T P : / / L E C A S A B E . C O M 40
CONSTRUCTORES INICIALIZAN LOS ATRIBUTOS
CONSTRUCTORES
H T T P : / / L E C A S A B E . C O M 41
Los constructores son funciones que se ejecutan
cuando se crean los objetos. Cuando se crea un objeto
con new, primero se reserva el espacio para almacenar
los valores de cada uno de sus atributos y a
continuación el código de un constructor definido en la
clase.
CONSTRUCTORES
H T T P : / / L E C A S A B E . C O M 42
Las funciones constructoras tienen el mismo nombre
que la clase, una lista de parámetros que puede estar
vacía y no devuelven nada (ni void). Son las únicas
funciones en Java que no devuelven ningún valor.
CONSTRUCTORES
H T T P : / / L E C A S A B E . C O M 43
En una clase se pueden definir tantos constructores
como se necesiten. Cada constructor representa una
forma distinta de crear los objetos de una clase.
CONSTRUCTORES
H T T P : / / L E C A S A B E . C O M 44
Cuando una clase tiene varios constructores se dice
que estas funciones constructoras están
sobrecargadas. La sobrecarga es el mecanismo por el
cual en una clase pueden existir varias funciones que
teniendo el mismo nombre se diferencian en el número
y/o el tipo de los parámetros. Este es el caso de los
constructores, todos tienen el mismo nombre, pero se
diferencian en la lista de parámetros.
CONSTRUCTORES
H T T P : / / L E C A S A B E . C O M 45
Otra característica que hay que tener en cuenta con los
constructores es que tienen que estar en un ámbito
como public para que así se pueda acceder desde
donde se intente crear el objeto.
EJEMPLO CONSTRUCTOR
H T T P : / / L E C A S A B E . C O M 46
Al crear el objeto se
inicializan los atributos de
la clase con esos valores.
EJEMPLO CONSTRUCTOR
H T T P : / / L E C A S A B E . C O M 47
Al crear el objeto será
necesario pasarle los valores
para los parámetros.
EJEMPLO CONSTRUCTOR
H T T P : / / L E C A S A B E . C O M 48
Al crear el objeto será
necesario pasarle los valores
para los parámetros.
CONSTRUCTORES
H T T P : / / L E C A S A B E . C O M 49
El objetivo principal de los constructores es inicializar
de un modo determinado las variables de instancia
(atributos) para el objeto que se crea.
En los códigos típicos a los métodos constructores se
asignan valores a las variables de la clase.
EJEMPLO PARA CREAR DISTINTOS OBJETOS
H T T P : / / L E C A S A B E . C O M 50
CARACTERÍSTICAS DE LOS CONSTRUCTORES
H T T P : / / L E C A S A B E . C O M 51
Son métodos de acceso public.
Tienen el mismo nombre que la clase que lo
contiene.
Inicializan los atributos de la clase.
No devuelve nada, ni siquiera void.
Pueden existir varios, pero siguiendo las reglas de la
sobrecarga de funciones.
De entre los que existan, tan sólo uno se ejecutará al
crear un objeto de la clase.
REFERENCIA THIS
H T T P : / / L E C A S A B E . C O M 52
La palabra reservada this es una referencia al propio
objeto para el que se esta ejecutando el código de una
función miembro de instancia o un constructor.
Sólo se puede usar dentro de las funciones de instancia
y constructores de las clases.
REFERENCIA THIS
H T T P : / / L E C A S A B E . C O M 53
Existen casos en los que es necesario utilizar this, por
ejemplo cuando el nombre de un parámetro coincide
con el nombre de un atributo.
SOBRECARGA DE MÉTODOS
H T T P : / / L E C A S A B E . C O M 54
Al igual que se sobrecargan los constructores, cualquier
otro método o función miembro de una clase puede
estar sobrecargado. Se pueden tener varias funciones
que tengan el mismo nombre y que devolviendo el
mismo tipo, se diferencien en la lista de parámetros, en
su número o en sus tipos o en ambas cosas.
EJEMPLO DE SOBRECARGA DE MÉTODOS
H T T P : / / L E C A S A B E . C O M 55
H T T P : / / L E C A S A B E . C O M 56
“GETTER” Y “SETTER” MÉTODOS DE ACCESO A LOS DATOS DE LOS OBJETOS
“GETTER” Y “SETTER”
H T T P : / / L E C A S A B E . C O M 57
Los métodos “getter” y “setter” son métodos de acceso
a los datos de los objetos y son siempre públicos.
Cada método accede a un sólo dato (una sola variable
de instancia - atributo) para obtener su valor o
cambiarlo.
“GETTER” Y “SETTER”
H T T P : / / L E C A S A B E . C O M 58
Las funciones “getter” retornan el valor de una variable
de clase (atributo) y las funciones “setter” cambian el
valor de un atributo. Por estilo estos métodos utilizan
identificadores que comienzan por set o get y a
continuación el nombre de la variable miembro
comenzando por mayúscula.
EJEMPLO DE “GETTER” Y “SETTER”
H T T P : / / L E C A S A B E . C O M 59
EJEMPLO DE “GETTER” Y “SETTER”
H T T P : / / L E C A S A B E . C O M 60
Creo un objeto con parámetros para el contructor y
luego invoco a los métodos get de 2 atributos.
H T T P : / / L E C A S A B E . C O M 61
FUENTE:
https://www.ibm.com/developerworks/ssa/java/tutorials/j-introtojava1/index.html
https://www.codesolt.com/tutoriales/fundamentos/programacion-orientada-objetos/
https://www.programarya.com/Cursos/Java
https://www.scenebeta.com/tutorial/tutoriales-de-programacion-java-101-introduccion-java-y-la-
programacion-orientada-objetos
https://www.java.com/es/
https://campuspro.es/java-essentials/
https://miriadax.net/web/programacion-con-java-standard-4-edicion-
https://docs.oracle.com/javase/tutorial/java/concepts/
https://docs.microsoft.com/es-es/previous-versions/bb972232(v=msdn.10)
https://searchmicroservices.techtarget.com/definition/object-oriented-programming-OOP
https://es.wikibooks.org/wiki/Programaci%C3%B3n_Orientada_a_Objetos