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

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

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

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

PROYECTO FIGURAS DIAGRAMA DE FLUJO

15. Parámetros o argumentos

Encapsulación: clases y objetos

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

Métodos. Los métodos pueden ser de un tipo específico como int, double, String, Cuenta, etc. o simplemente no tener algún tipo como void.

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

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

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

PROGRAMACION ORIENTADA A OBJETOS EN C++

Guía - Taller # 2 (JAVA)

Necesidad de la herencia pertenencia variedad is a has a herencia variedad definir una clase modificando una o más clases añadir nuevos miembros

Clases abstractas e interfaces

Orientación a Objetos en Java

Principios de Computadoras II

Modulo 11. Clases y Objetos en Java

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

Aquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase

Agenda..NET C# Laboratorio #1

Programación Orientada a Objetos (POO)

Programación Orientada a Objetos en Java

Java en 2 horas. Rodrigo Santamaría

Universidad de Cantabria

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

Programación orientada a objetos

POLIMORFISMO. import java.util.*; class Instrumento { public void tocar() { System.out.println("Instrumento.tocar()"); public String tipo() {

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

Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Sesión 1: Introducción al Lenguaje Java

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Multitarea en Java. Rafa Caballero - UCM

Conceptos de Programación Orientada a Objetos

Introducción al lenguaje Java

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

Ejercicios del tema 7: Clases y objetos

APELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...

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

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

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

El lenguaje de programación Java

Clase adicional 2. Estructuras básicas de control. Temas

Introducción a la Programación Orientada a Objetos

ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS

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

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

Forma Básica Clase Java

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

CLASES QUE UTILIZAN OBJETOS. RELACIÓN DE USO ENTRE CLASES JAVA. CONCEPTO DE DIAGRAMA DE CLASES. (CU00641B)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Curso de Java POO: Programación orientada a objetos

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

Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc.

Programación de sistemas

La Herencia: Teoría (1)

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

Caso práctico Alquiler de películas en un vídeo-club

Tema 4. Excepciones en Java

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Métodos. Los métodos definen el comportamiento de los objetos de una clase dada (lo que podemos hacer con los objetos de esa clase)

Clases, Objetos y Métodos en Java

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

Pruebas de unidad con JUnit

Tema 7: Polimorfismo. Índice

Java: Clases Abstractas e Interfaces

TEMA 5: Control de la Concurrencia en Java (API Estándar)

FPRG Exámenes y test resueltos

Java: un rápido repaso

Universidad Autónoma de Tlaxcala. M.C. José Juan Hernández Mora. Primera Sesión

Primera Escuela de la Red Temática SVO. Madrid, Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.

Examen de Prácticas de Programación Ingeniería Informática

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

CÁTEDRA DE LENGUAJE DE PROGRAMACIÓN JAVA 2014

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

Métodos, clases, y objetos

FACULTAD DE INGENIERÍA

Práctica 2: Java Remote Method Invocation (RMI)

Programación Orientada a Objetos en Java

PRÁCTICA No1 POO Estructuras de Control Parte I

POO en Java IV: Herencia (Parte 1)

EXAMEN PARCIAL 23 de Octubre de 2015 Programación I. Grado en Matemáticas e Informática ETSIINF UPM

Introducción al lenguaje de programación Java.

8. Sentencia return y métodos

En este capitulo se estudiarán los conceptos relacionados a métodos, como lo son sobrecarga, métodos estáticos.

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Java: control de excepciones

Conceptos Básicos de la Programación Orientada a Objetos con Java

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

D é c i m o n o v e n a S e s i ó n. Metodologías y Técnicas de Programación II C++ Herencia III

Clases Abstractas e Interfaces

INGENIERÍA EN SISTEMAS Y COMUNICACIONES

INTRODUCCION A LA PROGRAMACION EN JAVA

Refactoring con Netbeans

BIBLIOGRAFÍA Anexo A. La referencia this Anexo B. El modificador static Anexo C. La etiqueta APPLET...73

Prácticas de Programación

Herencia e Interfaces

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

Java: control de excepciones

Práctica 4: Herencia. Objetivos:

Transcripción:

Programación Orientada a Objetos con Java Rafael Rivera López Elementos Básicos del Lenguaje Java II Ingeniería en Sistemas Computacionales Agosto-Diciembre de 2004 Veracruz, Ver. Relación entre clases Las clases se pueden relacionar de tres formas: 1. Uso directo como una variable 2. Como atributo de otras clases (composición - agregación) 3. Con herencia Para ejemplificar estas relaciones se utiliza una clase llamada Punto Ejemplo de Clase: Punto public class Punto { protected int x,y; public Punto(int x, int y) { this.x = x; this.y = y; public void (int x, int y) { this.x = x; this.y = y; public void desplazar(int dx, int dy) { x += dx; y += dy; public int () { return x; public int gety() { return y; Uso Directo!" #

Uso directo Cuando se utiliza un objeto como variable local de un método, se está aplicando la relación de uso directo UsoPuntos main(string args[ ]) { Puntos p = new Puntos(10,10); main Uso directo class UsoPuntos { public static void main(string[] args) { // Punto p; p = new Punto(14,27); System.out.println("("+p.()+","+p.getY()+")"); p.(100, 50); System.out.println("("+p.()+","+p.getY()+")"); p.desplazar(10, -5); System.out.println("("+p.()+","+p.getY()+")"); // La clase no tiene (14,27) atributos, pero usa (100,50) directamente un objeto de la clase Point (110,45) Se pueden utilizar objetos de una clase como atributos de otra clase. Esto se llama composición, ya que la nueva clase está compuesta de objetos de otras clases. La composición utiliza la funcionalidad del código, no su forma. Un triángulo tiene tres puntos Un auto tiene cuatro ruedas y un motor La relación entre dichas clases es tiene class Triangulo { private Punto vertice[] = new Punto[3]; public Triangulo (Punto p1, Punto p2, Punto p3) { vertice[0] = new Punto(p1.(), p1.gety()); vertice[1] = new Punto(p2.(), p2.gety()); vertice[2] = new Punto(p3.(), p3.gety()); public void desplazar(int dx, int dy) { for(int i=0;i<3;i++) vertice[i].desplazar(dx,dy); public void mostrar() { for(int i=0;i<3;i++) System.out.println("Vértice "+(i+1)+ "("+vertice[i].()+","+vertice[i].gety()+")");!" $

public class UsoTriangulos { public static void main(string [] args) { Triangulo triangulo = new Triangulo(new Punto(10,10), new Punto(20,40), new Punto(40,50)); System.out.println("Triangulo creado"); triangulo.mostrar(); triangulo.desplazar(30,25); System.out.println( "Triangulo desplazado"); triangulo.mostrar(); Triangulo creado Vértice 1(10,10) Vértice 2(20,40) Vértice 3(40,50) Triangulo desplazado Vértice 1(40,35) Vértice 2(50,65) Vértice 3(70,75)... desplazar x,y vertice[0] mostrar vertice[1] x,y x,y vertice[2] Triangulo El triangulo tiene tres vértices Se puede utilizar una clase como base para crear otra clase Esto se llama herencia ya que una nueva clase obtiene atributos y comportamiento de otra. La herencia utiliza la forma de una clase para adecuarla a otra La herencia implementa la relación es un Un pixel es un punto con color Un administrador es un empleado con más funciones Usando herencia, se puede construir una jerarquía de tipos que expresa el problema en sus partes. Punto x y Punto() () desplazar() () gety() Pixel Color Pixel() setcolor() getcolor() La clase derivada tiene la misma interfaz de la clase base y podría adicionar atributos y métodos setcolor getcolor Pixel x y color gety desplazar!" %

Al instanciar una clase derivada, este usa un constructor de la clase base La instancia de la clase base busca siempre un constructor sin parámetros en la clase base Se puede indicar que constructor de la clase base usar, utilizando la referencia super() public class 1 { public static void main(string [] args){ Hijo1 hijo=new Hijo1(); System.out.println("El cabello es: "+hijo.cabello); hijo.nadar(); hijo.chatear(); class Padre1 { int cabello; void nadar(){ System.out.println( Se nadar ); ; class Hijo1 extends Padre1 { void chatear(){ System.out.println( Se chatear ); Extends indica que Hijo1 hereda de Padre1 Se usa un constructor por omisión y la instancia busca un constructor de la clase Padre que también es por omisión public class 2{ public static void main(string [] args){ Hijo2 hijo=new Hijo2(); System.out.println("El cabello es:"+hijo.cabello); hijo.nadar(); hijo.chatear(); class Padre2 { int cabello; public Padre2() { cabello=1; void nadar(){ System.out.println("Se nadar"); ; class Hijo2 extends Padre2 { void chatear(){ System.out.println("Se chatear"); Se usa un constructor por omisión y la instancia busca un constructor de la clase Padre que es un constructor sin parámetros public class 3{ public static void main(string [] args){ Hijo3 hijo=new Hijo3(3); class Padre3 { int cabello; public Padre3(int tipo) { cabello=tipo; class Hijo3 extends Padre3 { public Hijo3(int tipo){ super(tipo); Como la clase base no tiene constructor sin parámetros, la clase derivada lo debe llamar con la referencia super() Ejemplo de import java.awt.*; public class Pixel extends Punto { private Color color; public Pixel (int x, int y, Color color) { super(x,y); this.color = color; public Color getcolor() { return color; super(x,y) llama al constructor de la clase padre (point) La clase Pixel hereda los atributos de Point Ejemplo de class UsoPixel { public static void main(string[] args) { Pixel p = new Pixel(10,10,java.awt.Color.cyan); System.out.println( "(" + p.()+","+p.gety()+")"+p.getcolor()); p.desplazar(40, 30); System.out.println( "(" + p.()+","+p.gety()+")"+p.getcolor()); SALIDA: (10,10)java.awt.Color[r=0,g=255,b=255] (50,40)java.awt.Color[r=0,g=255,b=255] El objeto p tiene los métodos de point!" &

La clase Object Java define la clase java.lang.object que se entiende como una super-clase de todas las clases. II.6 Si una clase no especifica de que clase se deriva, entonces se deriva de la clase Object. Modificador static El modificador static Asocia al miembro (variable o método) con la clase más que con el objeto Los métodos declarados como static no actúan sobre un objeto particular Se puede escribir una clase que sea un conjunto de miembros estáticos, esta clase no define un nuevo objeto, sino que es una librería de utilierías que tienen relación entre ellas. Métodos estáticos public class Math { // Calcula en seno public static double sin(double x) { // // Calcula el logaritmo public static double log(double x) { // sin y log son métodos estáticos, no se asocian a ningún objeto Métodos estáticos Variables estáticas Cuando se llama a un método estático, se debe indicar la clase a la que pertenece: Una variable que es declarada como estática es asociada con la clase, no con alguna instancia de ella. double x = Math.sin(alpha); int c = Math.max(a,b); double y = Math.random(); El método main es static; es invocado por el sistema sin crear un objeto. Si un método estático llama a otro método estático de la misma clase se puede omitir el nombre de la clase. Las variables estáticas se conocen como variables de clase. Se considerarían como variables globales.!" '

Variables estáticas public class Billetes { private int cantidad; private int numeroserie; private static int contadorbilletes; public Billetes(int cantidad) { this.cantidad = cantidad; contadorbilletes++; numeroserie = contadorbilletes; public int vernumeroserie() { return numeroserie; En el Constructor se actualiza la variable estática que sirve como un contador global La variable contadorbilletes es estática Variables estáticas public static void main(string[] args) { Billetes billetes[] = new Billetes[20]; for(int i=10;i<30;i++){ billetes[i-10] = new Billetes(10); System.out.println("El número de serie es :" + (billetes[i-10].vernumeroserie())); Cada billete tiene su número de serie único this y static Miembros de clase y static No existe this para un miembro static. Puede llamar a un método static de la misma clase, sin un objeto. Puede referenciar a un miembro estático sin existir un objeto. Todos los métodos no estáticos tienen acceso a todos los datos de una clase. Integer.parseInt( 123 ); Calendar.SUNDAY Los métodos estáticos de la clase tienen acceso solo a los datos estáticos.!" (