Curso de Java POO: Programación orientada a objetos



Documentos relacionados
Programación orientada a objetos

2.2.- Paradigmas de la POO

Java Inicial (20 horas)

Curso de Java POO: Programación orientada a objetos

Programación Orientada a Objetos con Java

Curso de Java POO: Programación orientada a objetos

Programación Orientada a Objetos en Java

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Introducción a la Programación Orientada a Objetos

Curso de Python Inicial

POLIMORFISMO "una interfaz, múltiples métodos".

Universidad de Cantabria

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

Programación en Java. Programación en OO

Escuela Politécnica Nacional I. Bernal. Iván Bernal, Ph.D. 4

Programación Orientada a Objetos en Java

UNIVERSIDAD CATOLICA DE COLOMBIA FACULTAD DE INGENIERIA DE SISTEMAS

UNIDAD 2: Abstracción del Mundo real Al Paradigma Orientado a Objetos

Pruebas de unidad con JUnit

19. Packages o paquetes

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

El Concepto De Objeto y Clase

Diseño orientado a los objetos

Clases. Java: Clases y Objetos. Clases. Clases. Modificadores de clase. Definición de una clase. Cada objeto es un ejemplar de una clase

PHP y MySQL. Inicio: - Herencia - Palabra clave Final - Polimorfismo - Type Hinting - Abstracción de clases

Introducción a la programación orientada a objetos

Clases abstractas e interfaces

GESTIÓN DE REDES PARTE III

FORMACIÓN Principios de la programación orientada a objetos

Definición de clases: Herencia, polimorfismo, ligadura dinámica

M III ABSTRACCIÓN Y CLASIFICACIÓN

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Java en 2 horas. Rodrigo Santamaría

Capitulo III. Diseño del Sistema.

PROGRAMACIÓN ORIENTADA A OBJETOS (L40629) Sabino Miranda-Jiménez

El lenguaje de programación Java

CONCEPTOS FUNDAMENTALES DE LA ORIENTACION A OBJETOS

Notación UML para modelado Orientado a Objetos

JavaScript como Orientación a Objetos

Tema 1. Conceptos de Java para Estructuras de Datos: interfaces y programación genérica

Prácticas de Programación

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

Estructura de las Aplicaciones Orientadas a Objetos Herencia y Polimorfismo

TEMA 8: DIAGRAMA DE CLASE EN UML

Introducción a Protégé

INDICE DEL CURSO APRENDER PROGRAMACIÓN JAVA DESDE CERO. PROGRAMACIÓN ORIENTADA A OBJETOS (CU00601B)

Introducción a la P.O.O. Patrick Hernández Cuamatzi

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

ESCUELA DE INGENIERÍA DE SISTEMAS DEPARTAMENTO DE COMPUTACIÓN PROGRAMACIÓN 2 PRÁCTICA DE LABORATORIO 7 Herencia y Composición en POO

DIAGRAMA DE CLASES EN UML

DISEÑO DE COMPONENTES DE SOFTWARE *

Agentes con Interfaz Gráfica.

Relaciones entre clases: Diagramas de clases UML

Pilares de la Orientación a Objetos

Lenguajes de Programación Curso Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces Clases abstractas 2

PROGRAMACIÓ DIDÁCTICA: Secuanciación, Temporalización y Unidades Didácticas

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Introducción a la Programación Orientada a Objetos (POO) Introducción a la Programación Orientada a Objetos (POO)

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Repaso de las características más importantes de la programación Java y su adaptación a Android

Diagrama de Clases. Diagrama de Clases

a) Cita y comenta brevemente los grados de acoplamiento. Clasifícalos y ordénalos en orden creciente al nivel de acoplamiento asociado.

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

INDICE Uso de la composición (I). Preservación de la ocultación Utilización de miembros heredados (I). Atributos...

Índice 1 Instalación de la herramienta 2 Descripción de la herramienta 2 Arranque de la aplicación 3 Proyecto 4 Diagrama de clases 5

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta

Metadatos en Plataformas ECM

Ingeniería de Software con UML Unified Modeling Language Lenguaje Unificado de Modelado

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Historial de Versiones: Velneo vversion. Funcionamiento. Repositorio de versiones. Funcionalidades del Historial de Versiones. Bloquear.

Prof. Dr. Paul Bustamante

Analizar, diseñar, desarrollar e implementar soluciones orientadas a objetos utilizando encapsulamiento, herencia, polimorfismo y archivos.

Programación Avanzada para Sistemas de Telecomunicación. Objetos y clases. J.C. Cruellas. Objetos y clases

Modelo de Objetos Distribuidos

Curso de programación Java III Artículo publicado originalmente en la revista Sólo Programadores

TEMA 1.-Programación orientada a objetos (POO) Objetivo

DEPARTAMENTO: Informática. MATERIA: Programación. NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma

Objetos y Clases en Java. ELO 329: Diseño y Programación Orientados a Objetos

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

PROGRAMACION ORIENTADA A OBJETOS CON PHP

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Índice.

Curso Introducción JAVA Pág.: 1

Desarrollo del software imposible si las tareas tuviesen que expresarse en código máquina. Lenguajes de más alto nivel: comprensibles, manejables y

1. Qué tipos de relación hay entre las siguientes clases?

Base de datos en Excel

Java: Clases Abstractas e Interfaces

Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences

efactura Online La fibra no tiene competencia

Archivo de correo con Microsoft Outlook contra Exchange Server


UNIDAD DIDACTICA 2 Lenguaje Unificado de Modelado(UML) 1. INTRODUCCIÓN Y TIPOS DE DIAGRAMAS

Contenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones

Patrones para persistencia (I) Ingeniería del Software II

GMAIL (avanzado) 1. Accede a la web de Gmail, Te destacamos las funcionalidades que vamos a enseñarte a. 2. Vamos a enseñarte a:

Transcripción:

Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010

Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Índice 1 Introducción a la POO POO en Java 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Paradigma Un paradigma es una forma de afrontar la construcción de código software No hay paradigmas mejores ni peores Todos tienen sus ventajas e inconvenientes Hay distintos paradigmas: POO, Estructurado, Funcional, Lógico, etc

Características de la POO Facilidad de diseño y relación con el mundo real (UML) Reusabilidad y facilidad de mantenimiento Sistemas más complejos Abstracción Trabajo en equipo Del lenguaje máquina hacia el mundo real Resuelve problemas complicados. No está pensado para tareas sencillas

UML UML (Unified Modeling Language): Lenguaje unificado de modelos Mapa del código. No sirve para desarrollar, sino para describir Se utilizan diferentes diagramas. 13 en UML 2.0 Figura: Jerarquía de diagramas UML 2.0

Elementos de la POO Los elementos principales son: clases: Especificación de un conjunto de elementos objetos: Elemento autónomo y con una funcionalidad concreta. Instancias concretas de una clase

Elementos de la POO Los elementos principales son: clases: Especificación de un conjunto de elementos objetos: Elemento autónomo y con una funcionalidad concreta. Instancias concretas de una clase También se basa en otros conceptos: herencia, polimorfismo y encapsulamiento

Perros. Objetos y Clases

Perros. Objetos y Clases

Perros. Objetos y Clases

Perros. Objetos y Clases

Resumen de objetos y clases Objetos Elementos con comportamiento y estado. Métodos y atributos concretos Instancias de clase Interactuan por medio de mensajes Clases Plantillas para definir elementos (objetos) Pueden estar directamente relacionadas unas con otras

Resumen de objetos y clases Objetos Elementos con comportamiento y estado. Métodos y atributos concretos Instancias de clase Interactuan por medio de mensajes Clases Plantillas para definir elementos (objetos) Pueden estar directamente relacionadas unas con otras

POO en Java Ejemplo de plantilla p u b l i c c l a s s NombreClase { } / A t r i b u t o s : t i p o nombreatributo1 ; t i p o nombreatributo2 ; / / Metodos : s a l i d a nombremetodo1 ( p a r a m e t r o s ) { c o n t e n i d o d e l metodo } ; s a l i d a nombremetodo2 ( p a r a m e t r o s ) { c o n t e n i d o d e l metodo } ; /

POO en Java Ejemplo de clase Perro

POO en Java Ejemplo de clase Perro p u b l i c c l a s s P e r r o { S t r i n g nombre ; S t r i n g r a z a ; f l o a t a l t u r a ; } void p e r r o ( ) {} void comer ( ) {} void d o r m i r ( ) {} void l a d r a r ( ) {}

POO en Java Encapsulación Puede (y suele) haber distintos niveles de visibilidad: public: se puede acceder desde cualquier lugar private: sólo se puede acceder desde la propia clase protected: sólo se puede acceder desde la propia clase o desde una clase que herede de ella De esta forma se controla qué cosas son modificables y cómo se pueden modificar El estado suele ser privado, y se suele modificar a través del comportamiento

POO en Java Ejemplo de clase Perro con visibilidad

POO en Java Ejemplo de clase Perro con visibilidad p u b l i c c l a s s P e r r o { p r i v a t e S t r i n g nombre ; p r i v a t e S t r i n g r a z a ; p r i v a t e f l o a t a l t u r a ; } p u b l i c void p e r r o ( ) {} p u b l i c void comer ( ) {} p u b l i c void d o r m i r ( ) {} p u b l i c void l a d r a r ( ) {}

POO en Java Operadores Operador. Acceso a miembros de una clase: p e r r o 1. nombre = Pancho ; p e r r o 1. l a d r a r ( ) ;

POO en Java Operadores Operador. Acceso a miembros de una clase: p e r r o 1. nombre = Pancho ; p e r r o 1. l a d r a r ( ) ; Si soy la clase Dueño...

POO en Java Operadores Operador. Acceso a miembros de una clase: p e r r o 1. nombre = Pancho ; p e r r o 1. l a d r a r ( ) ; Si soy la clase Dueño... Cuidado con la visibilidad!

POO en Java Operadores Operador. Acceso a miembros de una clase: p e r r o 1. nombre = Pancho ; p e r r o 1. l a d r a r ( ) ; Si soy la clase Dueño... Cuidado con la visibilidad! Operador this Acceso a atributos dentro de la propia clase: t h i s. nombre = Pancho ;

POO en Java Métodos Definen el comportamiento de los objetos de una clase La implementación se suele ocultar al exterior de la clase Estructura Cabecera: modificadores - tiposalida - nombre - (parámetros) Cuerpo: Se define la implementación

POO en Java Métodos habituales Constructor Sirve para inicializar un objeto al crearlo Existe sobrecarga (distintos parámetros) (para cualquier método) Coincide con el nombre de la clase y no devuelve nada por definición

POO en Java Métodos habituales Constructor Sirve para inicializar un objeto al crearlo Existe sobrecarga (distintos parámetros) (para cualquier método) Coincide con el nombre de la clase y no devuelve nada por definición Get & Set Sirven para obtener o para modificar los atributos de una clase

POO en Java Ejemplos de métodos típicos p u b l i c c l a s s P e r r o { p r i v a t e S t r i n g nombre ;... p u b l i c void P e r r o ( S t r i n g nombre ) { t h i s. nombre = nombre ; } p u b l i c S t r i n g getnombre ( ) { r e t u r n t h i s. nombre ; } p u b l i c void setnombre ( S t r i n g nombre ) { t h i s. nombre = nombre } }

POO en Java Métodos típicos Destructor No es tan típico, no se suele usar (se hace de manera automática) Se tiene que sobreescribir No devuelve nada por definición

POO en Java Métodos típicos Destructor finalize No es tan típico, no se suele usar (se hace de manera automática) Se tiene que sobreescribir No devuelve nada por definición protected void f i n a l i z e ( )

POO en Java Instanciación de objetos Antes de poder usar un objeto tenemos que crearlo: Nuevo operador Tipo identificador = new Tipo() Ejemplo con Perro Perro mipancho = new Perro ( Pancho )

POO en Java Instanciación de objetos Antes de poder usar un objeto tenemos que crearlo: Nuevo operador Tipo identificador = new Tipo() Ejemplo con Perro Perro mipancho = new Perro ( Pancho ) P e r r o mipancho = new P e r r o ( Pancho, Cocker, 40)

POO en Java Uso de objetos Una vez tenemos el objeto instanciado......podemos modificar su estado usando los métodos P e r r o mipancho = new P e r r o ( Pancho, Cocker, 40)

POO en Java Uso de objetos Una vez tenemos el objeto instanciado......podemos modificar su estado usando los métodos P e r r o mipancho = new P e r r o ( Pancho, Cocker, 40) mipancho. setnombre ( Toby ) mipancho. dormir ( )

POO en Java Tipos de variables De instancia: Definida para las instancias de una clase. Una copia por objeto

POO en Java Tipos de variables static De instancia: Definida para las instancias de una clase. Una copia por objeto De clase: Definida para la clase. Una copia por clase p r i v a t e s t a t i c i n t p e r r o s = 0 ;

POO en Java Tipos de variables static De instancia: Definida para las instancias de una clase. Una copia por objeto De clase: Definida para la clase. Una copia por clase p r i v a t e s t a t i c i n t p e r r o s = 0 ; Local: Definida dentro del cuerpo de un método, ámbito restringido

Índice 1 Introducción a la POO 2 Herencia y polimorfismo Herencia Polimorfismo 3 Empaquetado de proyectos

Herencia Herencia Es un mecanismo que sirve para reutilizar clases Se utiliza cuando existen clases que comparten muchas de sus características Se extiende la funcionalidad de clases más genéricas Se introducen los conceptos de superclase y subclase

Herencia Superclase y Subclase Trabajador es la superclase Empleado y consultor son subclases

Herencia Superclase y subclase Los objetos de las subclases pueden poseer atributos y métodos propios (no existentes en la superclase) Y además, heredan los atributos y métodos de la superclase

Herencia Clase Object Realmente todas las clases que creemos son subclases...

Herencia Clase Object Realmente todas las clases que creemos son subclases......de la clase Object Esta clase tiene métodos habituales que están disponibles para cualquier clase que creemos: clone equals tostring...

Herencia Ejemplo de superclase p u b l i c c l a s s Mamifero { p r i v a t e S t r i n g o r i g e n ; p r i v a t e i n t p a t a s ; p r i v a t e S t r i n g nombre ;... } p u b l i c Mamifero ( S t r i n g nombre, S t r i n g o r i g e n, i n t p a t a s ) { t h i s. nombre = nombre ; t h i s. o r i g e n = o r i g e n ; t h i s. p a t a s = p a t a s }...

Herencia Ejemplo de subclase p u b l i c c l a s s P e r r o extends Mamifero { p r i v a t e S t r i n g r a z a ;... } p u b l i c P e r r o ( S t r i n g nombre, S t r i n g o r i g e n ) { super ( nombre, o r i g e n, 4) }...

Herencia Palabras reservadas extends Sirve para indicar la superclase de la cual se hereda super Sirve para acceder a miembros de la superclase desde la subclase super = Llamada al constructor super.metodoquesea = Llamada al métodoquesea

Herencia Recordatorio Los miembros protected son accesibles desde los miembros de su subclase Un objeto de una subclase, también es objeto de la superclase. Al revés no Java no permite herencia múltiple

Polimorfismo Redefinición de métodos Se puede modificar localmente el comportamiento de los métodos heredados De esta manera, objetos de diferentes tipos pueden responder de forma diferente a la misma llamada Este es el concepto clave del polimorfismo Permite programar de manera más general

Polimorfismo Ejemplo Se mueve igual un pez, un pájaro o una rana?

Polimorfismo Ejemplo Se mueve igual un pez, un pájaro o una rana? En cambio, todos son animales y por tanto podrían heredar el método mover de dicha clase

Polimorfismo Ejemplo Se mueve igual un pez, un pájaro o una rana? En cambio, todos son animales y por tanto podrían heredar el método mover de dicha clase Gracias al polimorfismo, cada objeto concreto realizará la operación mover como corresponda

Polimorfismo Apuntes final No se debe confundir el polimorfismo con la sobrecarga En caso de querer no permitir la redefinición de métodos o incluso la creación de subclases: p u b l i c f i n a l void mover ( ) p u b l i c f i n a l c l a s s Perro extends Mamifero

Polimorfismo Clases Abstractas Es una clase para la cual nunca se creará una instancia de objetos Sirve sólo como superclase, y por tanto, para definir subclases

Polimorfismo Clases Abstractas abstract Es una clase para la cual nunca se creará una instancia de objetos Sirve sólo como superclase, y por tanto, para definir subclases Cuando uno de los métodos no tiene implementación, estamos ante una clase abstracta p u b l i c abstract c l a s s F i g u r a p u b l i c abstract double a r e a ( ) ;

Polimorfismo Ejemplo abstract Una figura es una superclase típica... Por qué?

Polimorfismo Ejemplo abstract Una figura es una superclase típica... Por qué? No se puede calcular el área de una fígura

Polimorfismo Ejemplo abstract Una figura es una superclase típica... Por qué? No se puede calcular el área de una fígura Es necesario saber qué figura es la subclase (círculo, cuadrado...) Y redefinir el método para calcular el área dependiendo de la figura concreta

Polimorfismo Clases Interfaz Una interfaz es una clase completamente abstracta No contiene nada de implementación ni encapsula datos Los atributos sólo pueden ser constantes y deben inicializarse Siempre public, static y finalize La ventaja es que indica el qué pero no el cómo

Polimorfismo Palabras reservadas interface p u b l i c i n t e r f a c e F i g u r a implements p u b l i c c l a s s C i r c u l o implements F i g u r a

Polimorfismo Interfaz Toda clase que implemente una interfaz debe proporcionar una definición a sus métodos Si alguno de los métodos no obtiene una conducta, estaremos creando una clase abstracta Si no se hace correctamente se obtendrán errores de compilación

Polimorfismo Herencia múltiple Ya hemos dicho que no existe herencia múltiple......pero se pueden usar interfaces para ello

Polimorfismo Herencia múltiple Ya hemos dicho que no existe herencia múltiple......pero se pueden usar interfaces para ello

Polimorfismo Herencia múltiple A, B y C deben ser interfaces B y C son subclases de A D extiende tanto a B como a C (y por tanto a A)

Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Ficheros El código de una clase pública se encontrará en un fichero.java El nombre del fichero coincidirá con el nombre de la clase

Ficheros El código de una clase pública se encontrará en un fichero.java El nombre del fichero coincidirá con el nombre de la clase Excepción En un fichero podría haber varias clases, si sólo una de ellas es public y el resto clases auxiliares

Paquetes Las clases se agrupan en paquetes El paquete al que pertenece una clase se indica al comienzo del fichero:

Paquetes Package Las clases se agrupan en paquetes El paquete al que pertenece una clase se indica al comienzo del fichero: package ejemplo ; p u b l i c c l a s s... {

Paquetes Package Las clases se agrupan en paquetes El paquete al que pertenece una clase se indica al comienzo del fichero: package ejemplo ; p u b l i c c l a s s... { Una clase sólo puede pertenecer a un paquete

Paquetes Jerarquia Se pueden organizar los paquetes de forma jerárquica package ejemplo. o b j e t o s ; Para usar una clase que está en distinto paquete: Se puede importar la clase entera Se pueden realizar llamadas utilizando: nombrepaquete.loquesea

Importar clases import Se puede importar un conjunto de clases O una clase concreta import ejemplo. ; import ejemplo. Concreto ;

Accesos directos No es recomendable usarlo Se utilizaría si vamos a acceder a algo muy concreto de otro paquete Acceso directo ejemplo. Concreto ejem = new ejemplo. Concreto ( ) ;

Librerias externas Se pueden utilizar librerias (clases compiladas) externas a nuestro código Por defecto, la libreria básica de JDK está cargada Por eso podemos utilizar directamente cosas como Math.PI Cualquier paquete compilado se puede guardar como un.jar......y, por lo tanto, usarlo en otro proyecto

.JAR Las librerias son ficheros.jar (Java ARchive) Al compilar se guardan en la carpeta dist Para usarlos, los añadimos a nuestro proyecto: Propiedades - Librerias - Añadir JAR