Programación avanzada en Java Miguel Ángel Corella 22 de Septiembre de 2005.

Slides:



Advertisements
Presentaciones similares
ESTRUCTURA DE DATOS Unidad 01 Conceptos Previos.
Advertisements

Curso de java básico (scjp)
Curso de java básico (scjp)
Creación y destrucción de objetos
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Orientación a Objetos con Java SE
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Herencia y Polimorfismo
1.2 Sintaxis del lenguaje Java.
1.3 Programación modular. Subprogramas.
Objetos y Clases en Java
Programación Orientada a Objetos en Java
Método en Java.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
Herencia e Interfaces.
Métodos Algoritmos y Desarrollo de Programas I. Cuando utilizar métodos  Los métodos se utilizan para romper un problema en pedazos de forma que este.
Modificadores.
POO Java Módulo 3 Elementos de programas Identificadores
Herencia y Polimorfismo en JAVA
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
POO en C++ Programación Orientada a Objetos. Declaración de clases con struct Las clases en C++ pueden definirse utilizando la construcción struct Ejemplo:
Input – Scanner y Cajas de diálogo
SCJP Sun Certified Programmer for Java 6
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
JAVA J.A.C..
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Sintaxis de C# (Declaraciones y Tipos)
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
Curso Programación en Java
Computación II Repaso de java Karina Figueroa Mora.
1 Objetos y Clases en Java ELO-329: Diseño y Programación Orientados a Objetos.
Resumen Fundamentos de Programación/ Programación I
Programación avanzada en Java Miguel Ángel Corella 23 de Septiembre de 2005.
Hola mundo. 2 En Java para indicar el inicio y fin de un bloque de instrucciones utiliza las llaves { } es decir: { Inicio de instrucciones para la clase.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
Programación orientada a objetos. Existen 3 niveles de visibilidad: ◦ public: significa que los atributos de una clase pueden ser accedidas desde fuera.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
Ivette C. Martínez - Héctor Palacios Java – Modulo 1 Introducción y Fundamentos del lenguaje de programación Java.
Programación avanzada en Java Miguel Ángel Corella 16 de Septiembre de 2005.
ELO3291 Estructuras fundamentales de la programación en Java ELO-329: Diseño y programación orientados a objetos Agustín J. González.
ELO3291 Estructuras fundamentales de la programación en Java ELO-329: Diseño y programación orientados a objetos Agustín J. González.
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos.
Arreglos de Objetos.
Funciones y Clases Amigas (Friend)‏ Miembros Estáticos (Static)
Aspectos Básicos de Programación en JAVA
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
HERENCIA.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
Elementos básicos.  Fuertemente tipeado.  Sintaxis similar a C/C++.  Sin punteros: garbage collection.  Portable.  Integra librerías para objetos.
Clases “ Es una Abstracción de un elemento del mundo real ”
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Prof. Manuel B. Sánchez. Declaración de Objetos Una vez que la clase ha sido implementada se pueden declarar objetos como variables locales de métodos.
Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Transcripción de la presentación:

Programación avanzada en Java Miguel Ángel Corella 22 de Septiembre de 2005

Sobrecarga de métodos class Plano3D { double a, b, c, d; Plano3D (double aa, double bb, double cc, double dd) { a = aa; b = bb; c = cc; d = dd; } boolean paralelo (Plano3D p) { Vector3D u = new Vector3D (a, b, c); Vector3D v = new Vector3D (p.a, p.b, p.c); return u.paralelo (v); } boolean paralelo (Recta3D r) { Vector3D u = new Vector3D (a, b, c); return u.perpendicular (r.vector); }

Sobrecarga de constructores class Vector3D { double x, y, z; Vector3D (double xx, double yy, double zz) { x = xx; y = yy; z = zz; } Vector3D (Punto3D p, Punto3D q) { x = q.x - p.x; y = q.y - p.y; z = q.z - p.z; } boolean paralelo (Vector3D u) { return (x * u.y == y * u.x) && (x * u.z == z * u.x); } boolean perpendicular (Vector3D u) { return productoEscalar (u) == 0; }

Llamada a métodos sobrecargados class Recta3D { Punto3D punto; Vector3D vector; Recta3D (Punto3D p, Vector3D v) { punto = p; vector = v; } // Bloque main Plano3D p1 = new Plano3D (2, 4, 3, 1); Plano3D p2 = new Plano3D (1, 0, -2, 1); Recta3D r = new Recta3D (new Punto3D (1, 0, 1), new Vector3D (1, 1, -1)); p1.paralelo (p2); p1.paralelo (r);

La variable this Definida implícitamente dentro del cuerpo de los métodos. Referencia al objeto sobre el que se ha invocado el método. class Vector3D { double x, y, z;... double productoEscalar (Vector3D u) { return x * u.x + y * u.y + z * u.z; } double modulo () { return (double) Math.sqrt (productoEscalar (this)); } // Bloque main Vector3D v = new Vector3D (2, -2, 1); v.modulo ();

Variables estáticas (I) Similares a las variables globales de C/C++. Las variables estáticas pertenecen a las clases, pero no a los objetos. Aunque se puede acceder desde ambos. class CuentaCorriente { static double interes; } CuentaCorriente cuenta = new CuentaCorriente (); cuenta.interes = 0.3; CuentaCorriente.interes = 0.2;

Variables estáticas (y II) Las variables estáticas son compartidas por todos los objetos de la clase. La memoria para ellas se reserva al cargar la clase en el intérprete (JVM). CuentaCorriente cuenta1 = new CuentaCorriente (); CuentaCorriente cuenta2 = new CuentaCorriente (); cuenta1.interes = 0.3; cuenta2.interes = 0.4; System.out.println (cuenta1.interes); Salida: 0.4

Métodos estáticos Similares a funciones globales de C/C++. Pueden ser invocados desde la propia clase y/o desde los objetos. class CuentaCorriente { long numero; static long ncuentas; static long generarNumero () { return ncuentas++; } CuentaCorriente cuenta = new CuentaCorriente (); cuenta.numero = cuenta.generarNumero (); cuenta.numero = CuentaCorriente.generarNumero ();

Métodos estáticos: Restricciones Pueden acceder a variables y métodos estáticos de la misma clase. No pueden acceder a variables y métodos de instancia. No pueden acceder a la variable this. Los constructores no pueden ser estáticos.

Packages Conjunto de clases definidas por un directorio. Objetivo: Evitar conflictos entre símbolos. Cada clase pertenece siempre a un package. Si no se incluye ningún package para una clase, Java la incluye en el package DefaultPackage.

Declaración de packages package graphics; public class Circle { public void paint () {... }... } package graphics; public class Rectangle { public void paint () {... }... } graphics\Circle.javagraphics\Rectangle.java

Utilizar clases de otro package Importar la clase que se necesita. import graphics.Circle;... Circle c = new Circle (); c.paint ();... Importar todas las clases del package. import graphics.*;... Circle c = new Circle (); Rectangle r = new Rectangle (); c.paint (); r.paint ();...

Packages y directorios directorio en CLASSPATH Package tool.browser.graphics Nombre del package = Path del directorio. CLASSPATH: Variable de entorno con directorios donde buscar packages. Packages importados automáticamente: –java.lang, DefaultPackage, directorio actual

Control de acceso class A { public int x; private int y; public void f () {... } private void g () {... } void h () { x = 2; y = 6; f (); g (); A a = new A (); a.x = 2; a.y = 6; a.f (); a.g (); } class B { void h () { A a = new A (); a.x = 2; a.y = 6; // Error a.f (); a.g (); // Error }

Modalidades de acceso Modalidades de acceso de variables, métodos y constructores de una clase. Las clases sólo pueden ser package o public. ClasePackageSubclaseCualquiera private X package XX protected XXX public XXXX por defecto

Ejemplos de acceso (I) class A { int w; // package private int x; protected int y; public int z; private void f () {... } void h () { w = 2; x = 6; y = 8; z = 3; f (); } class B { void h () { A a = new A (); a.w = 2; a.x = 6; // Error a.y = 8; a.z = 3; a.f (); // Error }

Ejemplos de acceso (II) package p2; class C { void f () { p1.A a; p1.B b; // Error } package p1; // Clase pública public class A {... } // Clase del package class B {... }

Ejemplos de acceso (y III) package p1; public class A { int w; // package private int x; protected int y; public int z; } package p2; class C { void h () { p1.A a = new p1.A (); a.w = 2; // Error a.x = 6; // Error a.y = 8; // Error a.z = 3; } class D extends p1.A { void h () { p1.A a = new p1.A (); w = 2; a.w = 2; // Error x = 2; a.x = 6; // Error z = 3; a.z = 3; a.y = 8; // Error y = 8; D d = new D (); d.y = 8; }

Librerías de clases fundamentales

Cadenas de caracteres La clase String encapsula las cadenas y su manipulación String no es un char[]. Los literales (“…”) son convertidos implícitamente en String. String (char[]) String (String) char[] chars = {'a','b','c'}; String s = new String (chars); String s1 = "Hello"; String s2 = new String (s1); ConstructoresEjemplos de creación

Métodos de la clase String (I) Acceso (no existe str[n]): String str = "abcdabc"; str.length (); //  7 str.charAt (4); //  'a' str.substring (3, 5); //  "da" str.indexOf ("bc"); //  1 str.lastIndexOf ("bc"); //  5 Manipulación (devuelven el String manipulado): str.concat ("xyz"); //  "abcdabcxyz" str.toUpperCase (); //  "ABCDABC" str.replace ('b', 'x'); //  "axcdaxc" " Hola que tal ".trim (); //  "Hola que tal"

Métodos de la clase String (y II) Conversión a String: String.valueOf ( ); //  " " String.valueOf (34); //  "34" String.valueOf (new Plano3D ()); //  Comparación: String s1 = "abc", s2 = new String ("abc"), s3 = "abx"; s1 == s2; //  false s1.equals (s2); //  true s1.compareTo (s3); //  -21 < 0

Entrada y salida estándar Entrada (Teclado) / Salida (Pantalla). System.out, System.err Objeto de la clase: java.io.PrintStream Métodos: print ( ), println ( ), flush () System.in Objeto de la clase: java.io.InputStream Métodos: read (), read (byte []), read (byte [], int, int)

Programación avanzada en Java Miguel Ángel Corella 22 de Septiembre de 2005