java basico 1

37
JAVA BÁSICO CUENCO SYSTEMS & CONSULTING S.l. || SPEARSOFT

Upload: oscar-morato

Post on 16-Jan-2016

23 views

Category:

Documents


0 download

DESCRIPTION

Curso de java basico

TRANSCRIPT

Page 1: Java Basico 1

JAVA BÁSICO

CUENCO SYSTEMS & CONSULTING S.l. || SPEARSOFT

Page 2: Java Basico 1

public class Hola {

private string quien = “Enrique Fernández Martínez’;

protected String buildHola (){

string saludo = “Bienvenidos al curso de Java Básico soy: ” + quien + “ y voy a ser vuestro profesor”;

return saludo;

}

public void sayHola(){

System.out.println(this.buildHola());

}

}

Java Básico (Saludo)

Page 3: Java Basico 1

Fundamentos de la programación orientada a objetos

Presentación del framework de trabajo Java

Herramientas de desarrollo en entornos Java

Programación Java: conceptos básicos y prácticas

Principios de conectividad a base de datos en aplicaciones Java

Proyecto de fin curso; desarrollo de una aplicación completa en Java

trabajando en equipos

CONTENIDO DEL CURSO

Java Básico (Contenido)

Page 4: Java Basico 1

Fundamentos de la programación orientada a objetos

¿Qué es un objeto?

Clases, atributos y métodos

Abstracción y Encapsulamiento

Herencia

Polimorfismo

CONTENIDO DEL CURSO

Java Básico (Contenido)

Page 5: Java Basico 1

¿Qué es un objeto?

Java Básico (¿Qué es un objeto?)

Page 6: Java Basico 1

¿Qué es un objeto?

Java Básico (¿Qué es un objeto?)

Objetos del mundo real comparten tres características: · estado o estructura: por ejemplo, en un coche el nº de marchas, la velocidad actual, el fabricante, el modelo, los años del vehículo, la marcha actual, etc... · comportamiento: por ejemplo, un coche puede arrancar, acelerar, frenar, cambiar marcha, etc.... · identidad : aquello que distingue a un objeto de todos los demás, por ejemplo, si la estructura de un coche es su marca y modelo, es posible que haya dos Citroën DS3 que no son el mismo coche.

Page 7: Java Basico 1

¿Qué es un objeto?

Java Básico (¿Qué es un objeto?)

Los objetos software se utilizan para: representar objetos del mundo real. en un juego de carreras de coches, los coches del mundo real se podrían representar mediante objetos software. en una aplicación de dibujo, las figuras geométricas (polígonos, rectas,...) se podrían representar mediante objetos software. en una aplicación de gestión de personal de una empresa, los trabajadores de la empresa se podrían representar mediante objetos software. representar conceptos abstractos. en interfaces gráficas de usuario, es habitual representar con objetos (llamados eventos) las acciones realizadas por el usuario (ratón y teclado).

Page 8: Java Basico 1

¿Qué es un objeto?

Java Básico (¿Qué es un objeto?)

Objetos software también tienen esas características: · estado: se almacena en un conjunto de variables. · comportamiento: se implementa con métodos. Un método es una función (subrutina, subprograma, procedimiento). · identidad : garantizada por los sistemas de programación orientada a objetos (POO).

Definición: Un objeto es una agrupación de variables y métodos distinguible de todos los demás (identidad propia) desde su creación.

Page 9: Java Basico 1

¿Qué es un mensaje?

Java Básico (¿Qué es un objeto?)

Page 10: Java Basico 1

¿Qué es un objeto?

Java Básico (¿Qué es un objeto?)

Los objetos software se comunican mediante paso de mensajes. Los mensajes se componen de 3 elementos destinatario del mensaje (Objeto llamante) el nombre del método a ejecutar los parámetros (si existen) del método

Definición: La Programación Orientada a Objetos es un paradigma de programación que utiliza objetos que se comunican a través de mensajes para la solución de problemas.

Page 11: Java Basico 1

¿Qué es una clase?

Java Básico (Clases, Atributos y Métodos)

Page 12: Java Basico 1

Clases, Atributos y Métodos

Los objetos del mundo real se pueden agrupar en tipos (clases) (personas, coches, ordenadores, lavadoras, aviones, etc.) de manera que los objetos de la misma clase tienen la misma estructura y el mismo comportamiento, aunque el estado de dos objetos puede ser distinto.

Java Básico (Clases, Atributos y Métodos)

Los objetos software también se pueden agrupar en clases utilizando un criterio similar: los objetos de la misma clase comparten estado y comportamiento.

En terminología orientada a objetos, un objeto concreto de una clase es una instancia de la clase.

Definición: Una clase es un patrón o prototipo que define las variables y los métodos comunes a todos los objetos de un cierto tipo.

Page 13: Java Basico 1

Clases, Atributos y Métodos

Las variables en las que se almacena el estado de un objeto, se llaman atributos de instancia. Los métodos que implementan el comportamiento de un objeto se llaman métodos de instancia.

Java Básico (Clases, Atributos y Métodos)

Modelemos: Coche

Page 14: Java Basico 1

Clases, Atributos y Métodos

Atributos de clase: las clases, además de definir las variables de instancia, también pueden definir variables de clase, que contienen información común para todas las instancias de la clase. Si un objeto modifica el valor de un atributo de clase, esta modificación afecta a todos los objetos de la clase. Ejemplo1, en una aplicación de facturación, la clase Factura puede tener una variable de clase con el IVA que se aplica a las facturas, ya que este valor es común a todos los objetos de la clase Factura, y no sería eficiente que cada uno de los objetos de la clase tuviera una copia. Ejemplo2, en una aplicación se quiere contabilizar el número de instancias que hay de una determinada clase, se puede utilizar una variable de clase. Por ejemplo, la clase Ventana de una interfaz gráfica puede declarar atributos de clase para almacenar el número de ventanas visibles, el tamaño por defecto y el tamaño máximo de cualquier ventana.

Java Básico (Clases, Atributos y Métodos)

Page 15: Java Basico 1

Clases, Atributos y Métodos

Métodos de clase: son métodos que afectan a la clase en sí, y a los cuales se puede acceder directamente desde la clase en oposición al acceso a los métodos de instancia, que se realiza siempre a través de los objetos. Es importante señalar que para invocar un método de clase no es necesario haber instanciado ningún objeto que reciba como mensaje una invocación de ese método. Para usar un método de instancia, por el contrario, se necesita obligatoriamente que se cree un objeto de la clase que reciba el mensaje de ese método. Por ejemplo, en la clase Factura se podrían tener métodos para consultar y modificar el valor del IVA aplicable a las facturas, ya que este valor tiene sentido en sí mismo y no está condicionado a la existencia de objetos de la clase.

Java Básico (Clases, Atributos y Métodos)

Page 16: Java Basico 1

Clases, Atributos y Métodos

Java Básico (Clases, Atributos y Métodos)

Modelemos: Coche con Atributos y Métodos de Clase

Page 17: Java Basico 1

Java Básico (Abstracción y Encapsulamiento)

¿Qué es abstraer y que es encapsular?

Page 18: Java Basico 1

Abstracción y Encapsulamiento

La abstracción consiste en extraer los aspectos esenciales de una entidad e ignorar sus propiedades accidentales, es una herramienta en el proceso de creación del modelo a partir de un problema real que está determinada por los siguientes factores: Identificación de clases: los conceptos que tienen entidad en sí mismos, no dependen de otros, se pueden describir, comprender y analizar pueden abstraerse como una clase. El objetivo del modelo: determina tanto el grado de detalle como la información relevante. Ejemplos: Aplicación de macroeconomía: los empleados de una empresa pueden no ser importantes como individuos porque sólo interese su comportamiento global como plantilla; habrá una clase plantilla pero no una clase persona. Aplicación de nóminas: necesita manipular la información de cada persona de manera independiente; habrá una clase persona.

Java Básico (Abstracción y Encapsulamiento)

Page 19: Java Basico 1

Abstracción y Encapsulamiento

El encapsulamiento es el proceso de almacenar en un mismo compartimento los elementos de una abstracción que constituyen su estructura y su comportamiento; sirve para separar la interfaz contractual de una abstracción y su implantación (Booch) La abstracción y el encapsulamiento son conceptos complementarios: la abstracción se centra en el comportamiento observable de un objeto, mientras que el encapsulamiento se centra en la implementación que da lugar a ese comportamiento (Booch) Una de las grandes ventajas del encapsulamiento es que posibilita que la implementación de un objeto se pueda cambiar sin afectar a las aplicaciones que lo utilizan

Java Básico (Abstracción y Encapsulamiento)

Page 20: Java Basico 1

Java Básico (Herencia)

¿Qué es la herencia?

Page 21: Java Basico 1

Herencia

Java Básico (Herencia)

La herencia es el mecanismo que permite definir una clase a partir de otra clase (superclase o clase padre), de manera que la subclase hereda la estructura (estado) de la superclase a través de las variables, y hereda el comportamiento a través de los métodos. Por ejemplo, si se define la superclase Coche con las variables para almacenar el Nº de marchas, la velocidad actual, y la marcha actual, y los métodos que permiten arrancar, acelerar, frenar y cambiar de marcha, se puede construir la subclase CocheCarreras a partir de Coche utilizando la herencia. De esta manera, la clase CocheCarreras hereda las variables y los métodos de la clase Coche.

Page 22: Java Basico 1

Herencia

Java Básico (Herencia)

Habitualmente una clase hija aumenta o redefine la estructura y el comportamiento de su superclase, digamos que especializa a la clase padre. Ejemplo: Se define la superclase Reloj con variables para almacenar la hora y la fecha actuales, y los métodos que permiten fijar la hora y fijar al fecha. Podriamos construir la clase hija RelojDespertador a partir de Reloj utilizando la herencia. La clase RelojDespertador aumenta el comportamiento de la clase Reloj ya que es capaz de emitir una alarma a una hora previamente prefijada, para ello, la clase RelojDespertador aumenta la estructura con una variable para almacenar la hora de la alarma, otra para alamacenar el estado de la alarma (activada/desactivada) y los métodos que permiten fijara la hora de la alarma y activarla o desactivarla.

Page 23: Java Basico 1

Herencia

Java Básico (Herencia)

La herencia genera una jerarquía de generalización/especialización en la que una clase hija especializa el comportamiento o la estructura más general de su clase padre. La especialización consistirá en el aumento de la estructura y/o el comportamiento, su redefinición o su aumento y redefinición. La relación de herencia modela la relación semántica “es un” ejemplo: un Reloj Despertador es un Reloj un Coche es un Automóvil….

Page 24: Java Basico 1

Herencia

Java Básico (Herencia)

Modelemos: Tienda Electrodomésticos

Page 25: Java Basico 1

Herencia

Java Básico (Herencia)

Se pueden distinguir distintos tipos de herencia en cuanto al número de superclases de una subclase: · Herencia simple : una subclase hereda solamente de una superclase. una clase hija solo tiene un padre. · Herencia múltiple: una subclase hereda de más de una superclase. una clase hija tiene más de un padre. · Este tipo de herencia es conceptualmente correcta pero introduce ciertas complejidades en los lenguajes de programación. · Por ejemplo, puede ocurrir que una clase herede de dos superclases que tienen atributos o métodos con el mismo nombre. Esta colisión de nombres se resuelve de distinta manera en los lenguajes orientados a objetos: – en Java no se permite la herencia múltiple , – en C++ sí se permite (Especificación de método llamante).

Page 26: Java Basico 1

Herencia

Java Básico (Herencia)

Es fundamental señalar que la herencia no se limita a un número determinado de niveles por lo que todas los objetos de una aplicación heredarán de las superclases más altas de la jerarquía de las que hereden directa o indirectamente.

Page 27: Java Basico 1

Herencia

Java Básico (Herencia)

Modelemos: Tienda Electrodomésticos varios Niveles

Page 28: Java Basico 1

Java Básico (Herencia)

¿Qué es un Overcraft?

Page 29: Java Basico 1

Java Básico (Polimorfismo)

¿Qué es el polimorfismo?

Page 30: Java Basico 1

Java Básico (Polimorfismo)

Polimorfismo

Para poder definir el polimorfismo hemos de definir antes que es el tipado dinámico de elementos (Enlace dinámico). Esto quiere decir que el tipo de una variable, de un atributo o de una expresión se conoce en tiempo de ejecución y no en tiempo de compilación.

Page 31: Java Basico 1

Java Básico (Polimorfismo)

Polimorfismo

Es la característica más potente de estos lenguajes que nace de la interacción de la herencia y el enlace dinámico. Respecto al enlace dinámico: Es importante señalar que esta técnica tiene interés cuando variables de un tipo pueden almacenar objetos de otros tipos. Esto sólo está permitido en programación orientada a objetos cuando la variable que almacenará objetos de distintos tipos es de una clase más general. De manera formal se define como: Ante una misma signatura de un método, este puede presentar diferentes implementaciones.

Page 32: Java Basico 1

Java Básico (Polimorfismo)

Polimorfismo

Es la característica más potente de estos lenguajes que nace de la interacción de la herencia y el enlace dinámico. Respecto al enlace dinámico: Es importante señalar que esta técnica tiene interés cuando variables de un tipo pueden almacenar objetos de otros tipos. Esto sólo está permitido en programación orientada a objetos cuando la variable que almacenará objetos de distintos tipos es de una clase más general. De manera formal se define como: Ante una misma signatura de un método, este puede presentar diferentes implementaciones.

Page 33: Java Basico 1

Java Básico (Polimorfismo)

Polimorfismo

Modelemos: Algo polimórfico un banco

Page 34: Java Basico 1

Java Básico (Un poco mas…)

Un poco más…

Relaciones entre objetos: Se puede modelar las relaciones que se identifiquen entre las clases. Estas relaciones pueden distinguirse por su significado o semántica. Como por ejemplo: Generalización Relación de tipo “es-un” (herencia). Un coche “es-un” automóvil Asociación Es una relación que describe vínculos entre objetos. Un país tiene muchas ciudades Agregación Es una relación de tipo “todo-parte”. Realmente la diferencia entre una relación de agregación y una de asociación es una cuestión de “preferencia” por parte del analista.

Page 35: Java Basico 1

Java Básico (Un poco mas…)

Un poco más…

Composición Es una relación de tipo “todo-parte” más fuerte que la agregación. Es similar a las relaciones de composición físicas. Los tiempos de vida de las partes y el todo coinciden. Una parte no puede pertenecer a dos composiciones al mismo tiempo. El todo es responsable de la creación y de la destrucción de las partes. Por ejemplo: El coche tiene un volante. Dependencia Es un aspecto semántico que se puede identificar en muchos tipos de relaciones y se refiere al hecho de que los cambios en unos objetos afectan a otros.

Page 36: Java Basico 1

Java Básico (Un poco mas…)

Un poco más…

Variables miembro de una relación y clases de asociación: de forma similar a la manera en la que las variables miembro de una clase describen su estructura, hay ocasiones en las que existe cierta información relevante de una relación entre clases Las relaciones pueden especificar variables miembro para contener esta información. En este caso, puede resultar conveniente, definir una clase para contener esa estructura A estas clases se las conoce como clases de asociación Como por ejemplo: En una biblioteca en la que existen Libros y Socios, para modelar un préstamo de un libro a un socio, tiene mucho sentido crear la clase Prestamo con los metodos y atributos propios de un prestamos como por ejemplo la fecha de vencimiento.

Page 37: Java Basico 1

Java Básico (Un poco mas…)

Un poco más…

UML: Lenguaje universal de modelado, o como poner de manera gráfica todo lo que hemos visto hoy. Como por ejemplo: