Curso de Java POO: Programación orientada a objetos

Documentos relacionados
Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos

Derechos de Acceso: COMPOSICION

PROGRAMACION ORIENTADA A OBJETOS EN C++

Aplicaciones de Escritorio

Programación Orientada a Objetos (POO)

Herencia. Hay clases que comparten gran parte de sus características.

Introducción a la Orientación a Objetos

UNIVERSIDAD AUTÓNOMA DE CHIAPAS LICENCIATURA EN SISTEMAS COMPUTACIONALES

INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

La Herencia: Teoría (1)

Diseño Basado en Componentes. Curso 2008 / 09

PROGRAMACIÓN EN C#.NET Programación Orientada a Objetos en C# Ing. Bruno López Takeyas

Programación orientada a objetos. Capítulo 8 Mejora de las estructuras mediante herencia

Forma Básica Clase Java

Java Avanzado Facultad de Ingeniería. Escuela de computación.

INTRODUCCIÓN...9 CAPÍTULO 1. ELEMENTOS DE UN PROGRAMA INFORMÁTICO...11

Modulo 11. Clases y Objetos en Java

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Guía práctica de estudio 04: Clases y objetos

Java Inicial (20 horas)

Tema 3. Programación orientada a objetos en Java (Parte 1)

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

CLA. Diagramas de clases en Métrica V3

Una Clase: define un grupo de objetos que tienen propiedades similares y se comportan de manera similar.

16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz

Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos

Programación orientada a objetos. Resumen de Temas Unidad 6: Polimorfismo y reutilización

Programación orientada a objetos

1

Objeto Clase Atributo / Método Encapsulamiento Mensaje Herencia Polimorfismo Encadenamiento Dinámico

PROGRAMACIÓN ORIENTADA A OBJETOS

Programación con Visual C#

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Contenido. 1. El proceso 2. Los modelos 3. Los diagramas 4. Ejemplo

Introducción a Java (2)

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Capítulo 16. Diagrama de Clases UML

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

Tema 7.- Fundamentos de la Programación Orientada a Objetos

4.1 - OBJETOS Y CLASES

PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA

Universidad Salesiana de Bolivia

Programación Orientada a Objetos en Java

Tema 3: Programación orientada a objetos (I)

Conceptos de Programación Orientada a Objetos

Conceptos más avanzados de Programación Orientada a Objetos

Las redes semánticas intentan trasladar esa afirmación a un formalismo Una red semántica será un grafo donde:

Introducción a la Programación Orientada a Objetos

Elabore el diagrama de clases en UML y la codificación de un programa para resolver los siguientes problemas:

Conversión entre Tipos

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Metodologías en la Ingeniería del Software Métodos Orientados a Objetos

UML: INTRODUCCIÓN, ORIENTACIÓN a Objetos

Lenguaje de programación con JAVA

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS FACULTAD DE INGENIERÍA PROYECTO CURRICULAR DE INGENIERÍA INDUSTRIAL

JAVA -INTRODUCCIÓN AL LENGUAJE

Python: Programación Orientada. JESSE PADILLA AGUDELO Ingeniero Electrónico

Guía del Curso Analista Programador Java: Business Apps Expert

Prof. Mariano Mancuso. Sistemas de información y control diagrama de clases

PRÁCTICA DE LABORATORIO 4 Programación Orientada a Objetos

CLAVE ASIGNATURA REQUISITOS HORA/SEMANA CREDITOS TI-8 PROGRAMACION II 80% DE ASISTENCIA 4 6

Los diagramas de clases y de objetos sirven para modelar diversos aspectos estructurales o estáticos de un sistema: Modelado - Vocabulario del Sistema

Métodos que devuelven valor Dado el siguiente triángulo rectángulo:

Clases Abstractas e Interfaces

2.2.- Paradigmas de la POO

CONTENIDOS. La herencia permite: - Adoptar automáticamente características ya implementadas. Ahorro de tiempo y esfuerzo

Programación Orientada a Objetos con Java. Elementos Básicos del Lenguaje Java. Relación entre clases. Ejemplo de Clase: Punto !

PATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Capítulos 2 y 5: Modelación con UML y Modelo Objeto

Algoritmos y programas. Algoritmos y Estructuras de Datos I

Curso Fundamentos de Informática Lección 7. Programación Orientada a Objetos

20483 Programación en C#

TEMA 2 Introducción a C# ANÁLISIS Y DESARROLLO DE APLICACIONES INFORMÁTICAS Curso 2010/2011

1. Asignar Responsabilidades a componentes de software es la habilidad más importante del AOO. Porque:

Polimorfismo. Métodos virtuales

ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO.

MASTER PROFESIONAL C# 5 Y ASP.NET MVC 5

Práctica 4: Herencia. Objetivos:

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

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

Lenguaje de Modelamiento Unificado.

b) Qué tipo de variable son las de la línea 6? Cuál es su visibilidad? Explique su

Programación Orientada a Objetos. Sesión 4: Herencia

Resultado de Aprendizaje:

1.2. Es Java un lenguaje ideal para aprender a programar? 1.4. Cuáles son las versiones y distribuciones Java y cuál usar?

1. Sobrecarga de operadores. 2. Métodos operadores unarios Operador de incremento (prefijo)

Elementos Diagramas de Clases Clase:

Taller de Programación I. Tema 06: Orientación al Objeto en Java (parte 2)

Principios de Computadoras II

Diagramas de secuencia

Transcripción:

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

Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

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, como herencia, polimorfismo y encapsulamiento, que serán estudiados más adelante

Perros. Objetos y Clases

Perros. Objetos y Clases

Perros. Objetos y Clases

Perros. Objetos y Clases

Resumen de objetos y clases Clases Representan conceptos o entidades significativas de un problema Se pueden ver como plantillas para definir elementos (objetos) Pueden estar directamente relacionadas unas con otras Objetos Elementos con comportamiento definido en la clase y estado concreto Instancias de clase Interactuan por medio de mensajes

Resumen de objetos y clases Clases Representan conceptos o entidades significativas de un problema Se pueden ver como plantillas para definir elementos (objetos) Pueden estar directamente relacionadas unas con otras Objetos Elementos con comportamiento definido en la clase y estado concreto Instancias de clase Interactuan por medio de mensajes

Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

Métodos y atributos Comportamiento, describe los servicios que proporciona una clase (lo que se puede hacer con ella). Son los métodos Estado, describe el estado interno. Existen varias formas de definir distintos estados. Son los atributos

Métodos Definen el comportamiento de los objetos de una clase Devuelven un resultado Pueden necesitar parámetros Estructura Cabecera: tiposalida - nombre - (parámetros) Cuerpo: Se define la implementación del servicio

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

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

Métodos habituales Destructor No es tan habitual, no se suele usar (se hace de manera automática) Se tiene que sobreescribir No devuelve nada por definición

Métodos habituales Destructor finalize No es tan habitual, no se suele usar (se hace de manera automática) Se tiene que sobreescribir No devuelve nada por definición void f i n a l i z e ( )

Atributos Describen el estado interno de cada objeto concreto Pueden ser: Tipos básicos (int, boolean, short, etc) Array de elementos Referencias a otros objetos

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

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 s t a t i c i n t p e r r o s = 0 ;

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

Uso de objetos e interacción Los objetos son instanciaciones de las clases. Es necesario realizar dicha instanciación para poder usarlos Se comunican entre si mediante paso de mensajes La invocación de los métodos es la manera en la que se realiza el paso de mensajes

Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

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 } ; /

Ejemplos de métodos habituales c l a s s P e r r o { S t r i n g nombre ;... void P e r r o ( S t r i n g nombre ) { t h i s. nombre = nombre ; } S t r i n g getnombre ( ) { r e t u r n t h i s. nombre ; } void setnombre ( S t r i n g nombre ) { t h i s. nombre = nombre } }

Ejemplo de clase Perro

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 ( ) {}

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 )

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)

Operadores Operador. Acceso a miembros de una clase: mipancho. nombre = Pancho ; mipancho. l a d r a r ( ) ;

Operadores Operador. Acceso a miembros de una clase: mipancho. nombre = Pancho ; mipancho. l a d r a r ( ) ; Operador this Acceso a atributos dentro de la propia clase: t h i s. nombre = Pancho ;

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)

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

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

Ejemplo de clase Perro con visibilidad

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 ( ) {}

Organización de clases Puede haber más de una clase en el mismo fichero fuente......pero sólo una puede ser pública y debe coincidir en nombre con el fichero Lo habitual suele ser tener una clase por cada fichero fuente

Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

Dependencia Es muy habitual Se refleja cuando la implementación de una clase depende de otra: Uso de un objeto como argumento de un método En la implementación de un método

Asociación Relación entre clases que se mantiene en el tiempo Se refleja cuando se introducen referencias a objetos como atributos Dependiendo de la cardinalidad, habrá que usar arrays o estructuras de datos

Agregación Caso particular de asociación con contenido semántico Hay una clase que representa el todo y el resto son las partes No hay diferencia en la implementación

Composición Caso particular de agregación En este caso, la clase todo controla a las clases parte Las clases parte no existen sin la clase todo

Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

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

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

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

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

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

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

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

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

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

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 Permite programar de manera más general

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

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

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 a la redefinición, cada objeto concreto realizará la operación mover como corresponda

Apuntes final No se debe confundir la redefinición con la sobrecarga En caso de querer no permitir la redefinición de métodos o incluso la creación de subclases (herencia): 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

Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

Concepto Consiste en la posibilidad de que una referencia a un objeto, pueda conectarse también con objetos descendientes de éste Por tanto, es la capacidad de un objeto para comportarse de múltiples formas Tiene sentido por la existencia de la herencia Sirve para generalizar, olvidándose de detalles y buscando puntos comunes

Uso Ejemplo Se usa en la construcción de estructuras de datos (variables polimórficas) Escenario: Necesitamos mantener un array de perros y gatos de una cĺınica veterinaria Cómo definimos dicho array? Usamos uno o dos? También se puede realizar de manera impĺıcita en el paso de argumentos p u b l i c void metodoquesea ( Mamifero m)

Índice 1 Introducción 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

Clases Abstractas Es una clase tan genérica, que nunca se creará una instanciación en objetos Sirve sólo como superclase, y por tanto, para definir subclases

Clases Abstractas abstract Es una clase tan genérica, que nunca se creará una instanciación en 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 El método sin implementación será un método abstracto 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 ( ) ;

Ejemplo abstract Una figura es una clase abstracta típica... Por qué?

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

Ejemplo abstract Una figura es una clase abstracta 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

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

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

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

Herencia múltiple Ya hemos dicho que no existe herencia múltiple......pero se pueden usar interfaces para ello Una clase puede implementar más de una interfaz Una interfaz puede heredar de otra interfaz

Herencia múltiple Ya hemos dicho que no existe herencia múltiple......pero se pueden usar interfaces para ello Una clase puede implementar más de una interfaz Una interfaz puede heredar de otra interfaz

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 2 Comportamiento y estado 3 POO en Java 4 Relaciones 5 Herencia 6 Polimorfismo 7 Abstractas e Interfaz 8 Empaquetado

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