Java Basico 1

JAVA BÁSICO CUENCO SYSTEMS & CONSULTING S.l. || SPEARSOFT public class Hola { private string quien = “Enrique Fernánd

Views 122 Downloads 0 File size 348KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

JAVA BÁSICO

CUENCO SYSTEMS & CONSULTING S.l. || SPEARSOFT

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)

CONTENIDO DEL CURSO 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

Java Básico (Contenido)

CONTENIDO DEL CURSO Fundamentos de la programación orientada a objetos ¿Qué es un objeto? Clases, atributos y métodos Abstracción y Encapsulamiento Herencia Polimorfismo

Java Básico (Contenido)

¿Qué es un objeto?

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

¿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.

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

¿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).

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

¿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.

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

¿Qué es un mensaje?

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

¿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.

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

¿Qué es una clase?

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

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. 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.

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

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.

Modelemos: Coche

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

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)

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)

Clases, Atributos y Métodos

Modelemos: Coche con Atributos y Métodos de Clase

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

¿Qué es abstraer y que es encapsular?

Java Básico (Abstracción y Encapsulamiento)

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)

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)

¿Qué es la herencia?

Java Básico (Herencia)

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.

Java Básico (Herencia)

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.

Java Básico (Herencia)

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….

Java Básico (Herencia)

Herencia

Modelemos: Tienda Electrodomésticos

Java Básico (Herencia)

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).

Java Básico (Herencia)

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.

Java Básico (Herencia)

Herencia

Modelemos: Tienda Electrodomésticos varios Niveles

Java Básico (Herencia)

¿Qué es un Overcraft?

Java Básico (Herencia)

¿Qué es el polimorfismo?

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.

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.

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.

Java Básico (Polimorfismo)

Polimorfismo

Modelemos: Algo polimórfico un banco

Java Básico (Polimorfismo)

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. 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.

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.

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:

Java Básico (Un poco mas…)