POO en lenguajes de tipos estáticos
|
|
- Julia Aranda Vázquez
- hace 6 años
- Vistas:
Transcripción
1 POO en lenguajes de tipos estáticos Carlos
2 Agenda Aspectos generales de implementación Interfaces Como mecanismo necesario para el polimorfismo sin herenc cia Excepciones chequedas en forma estática Mecanismo de Java Colecciones, iteradores y genericidad 2c2011 2
3 Aspectos generales de implementación 2c2011 3
4 Cuál es la diferencia? Lenguajes de tipos estáticos Las variables tienen tipos Hay chequeo de tipos en tiempo de compilación ArrayList x = new ArrayList ( ); ArrayList y = new Date ( ); Lenguajes de tipos dinámicos Las variables no tienen tipos No hay chequeo posible en tiempo de compilación x := OrderedCollection new. x := CuentaBancaria new. 2c2011 4
5 Lenguajes de tipeo dinámico Smalltalk Python Ruby Objective-C Self Groovy CLOS 2c2011 5
6 Lenguajes de tipos estáticos Java C# C++ En general, lo vamos a usar en nuestros ejemplos Toda vez que no digamos lo contrario Leves diferencias con Java Con compilación a código nativo Simula, Eiffel, Object Pascal, Scala, etc. 2c2011 6
7 Variables, tipos y objetos Date fecha1 = new Date (1983, 12, 10); Date fecha2 = new Date (2009, 8, 1); Date fecha3 = new Date (2002, 6, 10); String nombre = new String ("Carlos Fontela"); ArrayList lista = new ArrayList ( ); lista.add (fecha1); lista.add (fecha2); lista.add (fecha3); Collections.sort(lista); lista.add (nombre); for (int i = 0; i < lista.size(); i++) System.out.println(lista.get(i).toString()); 1c2011 7
8 Creación de objetos Declaración: ArrayList x; Definición: x = new ArrayList( ); Significado ArrayList es el tipo de x (que es una variable tipada) ArrayList( ) es el constructor de la clase ArrayList El objeto se crea recién cuando llamo al constructor con el operador new En x queda una referencia a un objeto de clase ArrayList 1c2011 8
9 Tipos por valor En Java, los primitivos: int, char, boolean, etc. No son objetos En C#, los que derivan de System.ValueType Objetos sin herencia En C++, todos menos las referencias Viven mientras estén en su ámbito == compara valores = asigna valores 1c2011 9
10 Tipos por eferencia En Java y C#, todas las clases En C++ sólo se implementann con punteros En Java y C# hay recolección de basura En C++ la recolección la hace el programador == compara referencias = asigna referencias En Java, equals() compara bits En Java, clone() copia bits 1c
11 Recolección de basura No determinística Asegura que No me voy a quedar sin memoria mientras haya objetos sin referenciar No se va a liberar ningún objeto que esté siendo referenciado desde un objeto referenciado Extremadamente cómoda Y evita errores muy difíciles de encontrar y reparar 1c
12 Métodos y atributos estáticos Métodos de clase Para enviar mensajes a la clase Collections.sort(lista); Atributos de clase Para que los valores sean iguales para todos los objetos de la clase En Java y C# se declaran static static int numeroacumulado; En C# puede haber propiedades de clase 1c
13 Definición de clases public class CuentaBancaria { int saldo; public int getsaldo ( ) { return this.saldo; } } 2c
14 Propiedades (C#) En vez de public int getsaldo ( ) { return this.saldo; // this equivale a self de Smalltalk } Se puede usar public int Saldo { get { return this.saldo; } } También para el setter 1c
15 Excepciones Lanzamiento if (saldo < monto) throw new SaldoInsuficienteException ( ); Captura try { cuenta.extraer (1000); } catch (SaldoInsuficienteException e) { e.printstacktrace(); } 1c
16 Constructores (1) public CuentaBancaria (int numero, String titular) { this.numero = numero; this.titular = titular; this.saldo = 0; } Tiene el mismo nombre que la clase 2c
17 Constructores (2) Se usan para inicializar Si no se implementan hay uno por omisión Para que toda clase tenga el suyo Pero se pueden programar otros, como hicimos En este caso, deja de existir el default Debería dejar al objeto en un estado válido => debe cumplir con los invariantes El default no es seguro 2c
18 Constructores y herencia Los constructores no se heredan Cada clase debe tener el suyo Receta Llamar al constructor del ancestro al principio del constructor propio super en Java base en C# 2c
19 Visibilidad Aplica a clases, atributos, métodos, propiedades Privados Sólo se ven desde su clase Ojo que en Smalltalk es ligeramente diferente Públicos Protegidos Visibles sólo para las clases descendientes De paquete En Java es la visibilidad por defecto En C# hay otras 2c
20 Paquetes Agrupación de clases, anidables Para manejar complejidad y resolver nombres Ejemplos: ArrayList es java.util.arraylist (Java) ArrayList es System.Collections.ArrayList (C#) import java.util.*; import java.util.arraylist; using System.Collections; // C# // Java // Java 2c
21 Paquetes y fuentes Toda clase está en un paquete En Java existe el paquete default, pero no es recomendable usarlo En C#, se enmarca el código de la clase en una cláusula namespace : namespace carlosfontela.cuentas { } En Java, cada clase pública va en un archivo fuente separado El paquete se indica en una cláusula package package carlosfontela.cuentas; 2c
22 Delegación Un objeto contiene referencias a otros objetos y les delega comportamiento public float longitud ( ) { return p1.distancia(p2); } 2c
23 Herencia y lenguajes En Java: public class Elipse extends Figura {... } En C#: public class Elipse : Figura {... } Java y C# tienen jerarquía de raíz única Java: java.lang.object C#: System.Object Posibilidad de evitar la herencia Declaramos la clase como final (Java) o sealed (C#) Ejemplo: String public final class String {...} 2c
24 Objetos, tipos y clases Casteo hacia arriba automático Elipse e = new Elipse(); Figura f = e; // válido y seguro // e = f; inválido e inseguro Otro caso public void p (Figura x) { } // luego será invocado: p(e); // e es de tipo Elipse Se ven como lo que no son f es una Elipse aunque se la trate como Figura Figura f = new Elipse ( ); // tipos distintos en la variable y el objeto!! 2c
25 Redefinición en Java Los métodos privados no pueden ser redefinidos Se estaría definiendo uno nuevo Posibilidad de evitar la redefinición Métodos final public final void m() {...} sealed en C# Sobrecarga y redefinición Redefinición se hace con la misma firma Si no, es sobrecarga 2c
26 Analizar CuentaBancaria cb = new CuentaBancaria( ); CuentaCorriente cc1 = new CuentaCorriente( ); CuentaBancaria cc2 = new CuentaCorriente( ); cb.extraer(200); cc1.extraer(200); cc2.extraer(200); 2c
27 Métodos virtuales En Java la virtualidad se da por defecto Como en Smalltalk? En C# y C++ debemos declarar métodos como virtual Métodos de clase, privados y finales no son virtuales Los métodos virtuales agregan ineficiencias Pero garantizan reutilización Eliminar la virtualidad sólo si se demuestra que no se van a redefinir y la presunta ineficiencia 2c
28 Ejemplo estándar en Java En Object public String tostring ( ) { } System.out.println( ) usa tostring() Si quiero que un objeto sea imprimible, debo redefinir tostring: En CuentaBancaria public String tostring() { return titular; } Luego... CuentaBancaria cuenta = new CuentaBancaria (12, Juan ); System.out.println (cuenta); 2c
29 Clases y métodos abstractos Se declaran abstract Clases abstractas No tienen instancias, pero pueden tener constructor Métodos abstractos No pueden ser llamados Deben redefinirse Si una clase tiene un métodoo abstracto, debe declararse abstracta 2c
30 Interfaces Como mecanismo necesario para el polimorfismo sin herencia 2c
31 Polimorfismo sin herencia (1) El problema es que en Java hay compilación con verificación de tipos El compilador no va a permitir una llamada a dibujar() desde un Object Cómo lograr que las instancias de Figura y de DiagramaUML sean dibujables para el compilador? 2c
32 Polimorfismo sin herencia (2) Solución: Hay una construcción llamada interfaz 2c
33 Interfaces: clases muy abstractas Son como clases Abstractas Con todos los métodos abstractos Sin atributos (sin estado) Ejemplo public interface Imprimible { /*public abstract*/ void imprimirdatos(); } Pueden heredar de otras interfaces public interface Dibujable extends Imprimible { void dibujar(); } 2c
34 Herencia de interfaces Uso public class CajaAhorro extends CuentaBancaria implements Imprimible {... } Corolario Si una clase declara implementar una interfaz y no implementa (redefine) uno de sus métodos es abstracta 2c
35 Interfaces: protocolos Son grupos de métodos sin implementar Una clase puede implementar varias Ojo con los conflictos de nombres 2c
36 Interfaces y polimorfismo (1) Variables cuyo tipo es una interfaz Imprimible i = new Fecha(20,6,1964); Imprimible[ ] lista = new Imprimible[3]; lista[0] = new Fecha (20, 1, 2000); lista[1] = new Inmueble ( ); lista[2] = new Fecha (8, 6, 2002); for (int i=0; i < 3; i++) lista[i] ].imprimirdatos(); Ojo que sólo puedo instanciar clases 2c
37 Interfaces y polimorfismo (2) Cada objeto puede tener muchas caras Fecha f = new Fecha(20,6,1964); Imprimible i = f; Comparable c = f; Serializable s = f; Todos se refieren al mismo objeto Pero lo ven distinto Cada variable sólo puede usar los métodos de su interfaz 2c
38 Qué es una interfaz? Visión de lenguaje Una clase muy abstracta que se puede usar para herencia múltiple Visión desde el uso Un tipo de datos que perm mite que ver a un mismo objeto con distintos tipos => Cada tipo implica un comportamiento 2c
39 Interfaces predefinidas Caso de Comparable En java.lang.comparable interface Comparable { } int compareto (Object o); Devuelve valores <0, 0 o >0 Muy útil en colecciones! Hay otras predefinidas Comparator, Serializable, Cloneable, etc. 2c
40 Uso de Comparable public class Fraccion implements Comparable { private int numerador; private int denominador; } // otros métodos public int compareto(object otro) { Fraccion otra = (Fraccion) otro; if (numerador * otra.denominador > denominador * otra.numerador) return 1; else if (numerador * otra.denominador < denominador * otra.numerador) return -1; else return 0; } 2c
41 Comparable y arreglos Clase Arrays: uso Fraccion [ ] v = new Fraccion[4]; Arrays.sort (v); int posicion = Arrays.binarySearch (v, x); Método sort(): definición public void sort (Comparable [ ] w) { } Si Fraccion implementa Comparable, puedo usar Arrays.sort(v) Y si no? 2c
42 Rarezas: Comparator Si la clase de v no implementa Comparable, existe otro sort(): public void sort (Object [ ] v, Comparator c) { } Que puedo usar así: Comparator comp = new ComparadorFracciones(); Arrays.sort (x, comp); Y qué es ComparadorFracciones? Una clase que implementa java.util.comparator Y su método: public int compare (Object o1, Object o2); 2c
43 Implementación del comparador public class ComparadorFracciones implements java.util.comparator { public int compare (Object o1, Object o2) { Fraccion f1 = (Fraccion)o1; Fraccion f2 = (Fraccion)o2; if ( f1.getnumerador() * f2.getdenominador() > f1.getddenominador() * f2.getnumerador() ) return 1; else if ( f1.getnumerador() * f2..getdenominador() < f1.getdenominador() * f2.getnumerador() ) return -1; else return 0; } } 2c
44 Qué hicimos? Creamos una clase que no tiene estado! Y la instanciamos! Tampoco se refiere a una entidad de dominio Aparece por necesidades de diseño (solución) Sólo sirve por el método que lleva dentro Esto es un patrón de diseño: Command Otro uso de Comparator: Para definir otra forma de ordenamiento 2c
45 Excepciones chequedas en forma estática Mecanismo de Java 2c
46 Jerarquía de excepciones (Java) 2c
47 Excepciones chequeadas (1) Cláusula throws obligatoria public Fraccion dividir (Fraccion y) throws FraccionInvalidaException { if (y.numerador == 0) throw new FraccionInvalidaException ( ); int numerador = this.numerador * y.d denominador; int denominador = this.denominador * y.numerador; return new Fraccion(numerador, denominador); } A lo sumo se puede declarar un ancestro En redefiniciones, mantener y no agregar Para mantener el polimorfismo: muy molesto 2c
48 Excepciones chequeadas (2) Obligación de capturar (I) public Fraccion divisionmultiple ( Fraccion [ ] x, Fraccion [ ] y ) { Fraccion suma = new Fraccion (0, 1); try { for (int i = 0; i < 10; i++) { Fraccion d = x[i].dividir ( y [i] ); suma = suma.sumar(d); } } } catch (FraccionInvalidaException e) { System.err.println( División por cero ); return new Fraccion (0, 1); } return s; 2c
49 Excepciones chequeadas (3) Obligación de capturar (II) public Fraccion divisionmultiple ( Fraccion [ ] x, Fraccion [ ] y ) throws FraccionInvalidaException { Fraccion suma = new Fraccion (0, 1); for (int i = 0; i < 10; i++) { Fraccion d = x[i].dividir( y[i] ); suma = suma.sumar(d); } return s; } 2c
50 Excepciones chequeadas (4) Obligación de capturar (III) public Fraccion divisionmultiple ( Fraccion [ ] x, Fraccion [ ] y) { Fraccion suma = new Fraccion (0, 1); try { for (int i = 0; i < 10; i++) { Fraccion d = x[i].dividir( y[ [i] ); suma = suma.sumar(d); } } catch (FraccionInvalidaException e) { } return s; } 2c
51 Lenguajes y excepciones Excepciones chequeadas Son más seguras Molesta tener que capturarlas sí o sí Limita la redefinición, al no poder agregar nuevas excepciones Aunque cumple el principio de substitución Microsoft diseñó.net sin excepciones chequeadas Ojo: Java permite ambas Aunque es una decisión de diseño 2c
52 Colecciones, iteradores y genericidad 2c
53 Colecciones de java.util (1) Las más comunes de Java 1.4: 2c
54 Colecciones de java.util (2) Tienen elementos de tipo Object. No se sabe qué hay dentro Casteo para obtener utilidad No admiten elementos primitivos. Pero hay clases envolventes: Integer, Boolean, Double, Character, etc. Colecciones heredadas: Vector, Hashtable, Stack, BitSet, Properties, etc. 2c
55 Iteradores: definición y uso Objetos que saben cómo recorrer una colección, sin ser parte de ella Interfaz: Tomar el primer elemento Tomar el elemento siguiente. Chequear si se termina la colección Un ejemplo: List vector = new ArrayList(); for(int j = 0; j < 10; j++) vector.add(j); Iterator i = vector.iterator(); // pido un iterador para vector while ( i.hasnext() ) // recorro la colección System.out.println( i.next() ); 2c
56 Iteradores y colecciones Toda clase que implemente Collection puede generar un Iterator con el método iterator «interface» Iterator +next() : Object +hasnext() : boolean «uses» «interface» Collection +iterator() : Iterator Nótese que Iterator es una interfaz Pero está implementada para las colecciones definidas en java.util. 2c
57 Iteradores: para qué Llevan la abstracción a los recorridos de colecciones Facilitan cambios de implementación Collection lista = new ArrayList ( ); Iterator i = lista.iterator(); // pido un iterador para lista while ( i.hasnext() ) // recorro la colección System.out.println( i.next() ); No se necesita trabajar con el número de elementos Convierten a las colecciones en simples secuencias 2c
58 Ejercicio: lista circular (1) Qué es una lista circular? Definición: una lista que se recorre indefinidamente, de modo tal que al último elemento le sigue el primero Es un caso particular de LinkedList Qué cambia? Nada? Sólo la forma de recorrerla? => El iterador es diferentee 2c
59 Ejercicio: lista circular (2) 2c
60 Ejercicio: lista circular (3) public class ListaCircular extends LinkedList { public Iterator iterator( ) { return new IteradorListaCircular(this); } } Implementar la clase IteradorListaCircular Con sus métodos next() y hasnext() 2c
61 Ejercicio lista circular: otra visión 2c
62 Genericidad (1) Los tipos pueden ser parámetros de clases y métodos Ejemplo Java sin genericidad: List v = new ArrayList( ); String s1 = Una cadena ; v.add(s1); String s2 = (String)v.get(0); Ejemplo Java con genericidad: List<String> v = new ArrayList< <String>( ); String s1 = Una cadena ; v.add(s1); // el compilador verifica que s1 sea un String String s2 = v.get(0); 2c
63 Genericidad (2) En métodos, el compilador infiere el tipo genérico: public static <T> void eliminarelemento (List<T> lista, int i) { } eliminarelemento (listaconcreta, 6); Mejoras: Robustez en tiempo de compilación Legibilidad Cuestiones avanzadas public static <T extends Comparable > void ordenar (T[ ] v) { } public static <T > copy (List<T> destino, List<? extends T> origen) { } public static <T, S extends T> copy (List<T> destino, List<S> origen) { } 2c
64 Genericidad: Java vs..net Java usa la genericidad sólo para tiempo de compilación No llega al bytecode => compatibilidad hacia atrás No hay información del tip po completa en tiempo de ejecución.net mantiene la información de tipos completa hasta tiempo de ejecución Pero generó una biblioteca de clases nueva => sin compatibilidad hacia atrás 2c
65 Ventajas del tipeo estático Hay un chequeo antes de la ejecución Cuanto antes surja un error, más económico es corregirlo El compilador es un prime er verificador Incluso puede advertir potenciales problemas => warnings 2c
66 Claves Lenguajes de tipos estáticos: hay chequeo de tipos al compilar Algunos lenguajes tienen tipos por valor O tienen tipos que no son clases Hay mayores niveles de visibilidad Algunas asignaciones requieren casteo Polimorfismo seguro y sin herencia: interfaces Java tiene chequeo estático de excepciones 2c
67 Lecturas obligatorias A Comparative Analysis of Generic Programming Paradigms in C++, Java and C#, Arijit Khan and Shatrugna Sadhu, "Generics in C#, Java, and C++ - a conversation with Anders Hejlsberg, by Bill Venners with Bruce Eckel", com/intv/genericsp.html. 2c
68 Lecturas opcionales Carlos Fontela, Orientación a objetos Diseño y programación Todos los capítulos de la segunda parte Bruce Eckel, Thinking in Java o Piensa en Java Todo el libro 2c
69 Qué sigue Desarrollo de software y programación Temas de diseño RTTI, reflexión 2c
A3F. Polimorfismo. Carlos Fontela
Polimorfismo Carlos Fontela cfontela@fi.uba.ar Temario Métodos virtuales Métodos abstractos Polimorfismo como concepto Interfaces Clases internas 2c2010 2 cb := CuentaBancaria new. cc := CuentaCorriente
Más detallesA3F. Polimorfismo. Carlos Fontela
Polimorfismo Carlos Fontela cfontela@fi.uba.ar Temario Métodos virtuales Métodos abstractos Polimorfismo como concepto Interfaces Clases internas 2c2009 2 Métodos virtuales (1) 2c2009 3 Métodos virtuales
Más detallesPOO en lenguajes compilados de tipos estáticos (Java y C#)
POO en lenguajes compilados de tipos estáticos (Java y C#) Carlos Fontela cfontela@fi.uba.ar Temario Modelo de referencias, creación y destrucción de objetos (introducción) Paquetes y grupos de clases
Más detallesExcepciones Colecciones e iteradores
Excepciones Colecciones e iteradores Carlos Fontela cfontela@fi.uba.ar Temario Excepciones Desacoplar código de tratamiento de problemas Tratamiento de problemas con un enfoque optimista Colecciones e
Más detallesExcepciones en Java Colecciones e iteradores Genericidad Cierre de UML
Excepciones en Java Colecciones e iteradores Genericidad Cierre de UML Carlos Fontela cfontela@fi.uba.ar Temario Excepciones en Java Colecciones e iteradores En Java 1.4 y.net 1.1 Genericidad Desde Java
Más detallesReutilización con Delegación y Herencia
Reutilización con Delegación y Herencia Carlos Fontela cfontela@fi.uba.ar Temario Delegación Herencia UML: clases, paquetes, secuencias Cuándo usar herencia y cuándo delegación Redefinición Clases abstractas
Más detallesRTTI y reflexión Modelos de datos
RTTI y reflexión Modelos de datos Carlos Fontela cfontela@fi.uba.ar Temario RTTI (información de tipos en tiempo de ejecución) Reflexión Modelo de datos y memoria de Java Otros modelos 1c2010 2 Transformaciones
Más detallesReutilización con Delegación y Herencia
Reutilización con Delegación y Herencia Carlos Fontela cfontela@fi.uba.ar Temario Delegación Herencia UML: clases, paquetes, secuencias Cuándo usar herencia y cuándo delegación Redefinición Clases abstractas
Más detallesClases (construcción)
Clases (construcción) Carlos Fontela cfontela@fi.uba.ar Temario Implementación de clases Atributos Métodos y propiedades Constructores Excepciones Diseño contractual TDD o diseño guiado por las pruebas
Más detallesRTTI y reflexión A3F. Carlos
RTTI y reflexión Modelos de objetos Carlos Fontela cfontela@ @fi.uba.ar Temario RTTI (información de tipos en tiempo de ejecución) Reflexión Modelos de objetos en dis stintos lenguajes 1c2011 2 Polimorfismoo
Más detallesA3F. Objetos (uso) Carlos Fontela
Objetos (uso) Carlos Fontela cfontela@fi.uba.ar Temario Objetos y mensajes Objetos y clases Estado, comportamiento, identidad Paquetes Historia hacia la POO POO vs. procedural 2c2009 2 Operando sobre objetos
Más detallesReutilización con delegación, herencia y polimorfismo
Reutilización con delegación, herencia y polimorfismo Carlos Fontela cfontela@ @fi.uba.ar Temario Delegación Herencia UML: clases, paquetes, secuencias Cuándo usar herencia y cuándo delegación Redefinición
Más detallesInterfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1
Interfaces Amparo López Gaona Septiembre de 2008 Amparo López Gaona () Interfaces Septiembre de 2008 1 / 1 Interfaces Las interfaces Java permiten al diseñador de clases establecer su forma definiendo
Más detallesExamen Teórico Convocatoria de Junio de 2012
Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica
Más detallesA3F. Objetos (uso) Carlos Fontela
Objetos (uso) Carlos Fontela cfontela@fi.uba.ar Temario Objetos y mensajes Objetos y clases Estado, comportamiento, identidad Historia hacia la POO POO vs. procedural 2c2009 2 Operando sobre objetos (Smalltalk)
Más detallesUnidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Más detallesProgramación orientada a objetos. Resumen de Temas Unidad 5: Herencia
Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona
Más detallesConstrucciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
Más detallesQué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
Más detallesPROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }
PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)
Más detallesHERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.
HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la
Más detallesExamen Teórico. Convocatoria de Febrero de 2015
Examen Teórico Convocatoria de Febrero de 2015 Nombre: DNI: Grupo: 1. Contesta de forma razonada a las siguientes cuestiones relacionadas con los ficheros.jar: a) Para qué se utilizan los ficheros con
Más detallesHerencia. Implementación en Java
Herencia Implementación en Java Herencia Concepto de Herencia Es el mecanismo que permite definir nuevas clases partiendo de otras ya existentes. Las clases que derivan de otras heredan automáticamente
Más detallesIntroducción a Java. Fernando Cerezal López. 24 Noviembre 2005
24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos
Más detallesHerencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos
Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos 1 Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente,
Más detallesINICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ
INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA con BlueJ Tema 3 Clases y Objetos Tema 4 Comunicación entre objetos. Algoritmos Tema 5 Herencia y abstracción de datos Tema 6 Diseño de clases TEMA 5: Herencia
Más detallesTema 1. Herencia y Polimorfismo
ÍNDICE EDA. Unidad didáctica I: Conceptos de Java para Estructuras de Datos Tema 1. Herencia y Polimorfismo 1. Relaciones entre clases: Reutilización del software. 2. La Herencia como soporte Java del
Más detallesClases abstractas e interfaces en Java
Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar
Más detallesTema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016
Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Interfaces. Clase Object. Autoboxing. Copia de objetos. Igualdad
Más detallesProgramación orientada a objetos
Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Herencia! Superclase/subclase! super! Modificador protected! Redefinicion de métodos!
Más detallesINDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases
INDICE Prologo XIII 1 Recorrido rápido de java 1.1. Para empezar 1 1.2. Variables 2 1.3. Comentarios en el condigo 1.4. Constantes con nombre 5 1.4.1. Caracteres Unicode 6 1.5. Flujo de control 7 1.6.
Más detallesTema 3 Herencia en Java Parte 2. Programación Orientada a Objetos Curso 2015/2016
Tema 3 Herencia en Java Parte 2 Programación Orientada a Objetos Contenido Restringir la herencia. Visibilidad protegida. Clases abstractas. Clase Object. Autoboxing. Igualdad de objetos. Copia de objetos.
Más detalles2. Tratamiento de objetos con JAVA
2. Tratamiento de objetos con JAVA David Contreras Bárcena (ETSI) - Comillas 71 2.1 Ciclo de Vida de los Objetos Los objetos tienen un tiempo de vida y consumen recursos durante el mismo. Cuando un objeto
Más detallesANEXO II: Resumen de uso de colecciones
ANEXO II: Resumen de uso de colecciones Este apartado muestra un resumen de uso de las colecciones. El estudio de las colecciones será completado en el tema 4 de la asignatura y en el ejercicio propuesto
Más detalles- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo
- Introdución a Java - Breve historia de Java - Características del lenguaje Java - Estructura del JDK 1.6 - Documentación del API (JavaDoc) - Instalar y configurar el ambiente de desarrollo - La variable
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica
Más detallesHerencia en Java. Agustín J. González Diseño y Programación Orientados a Objetos
Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos 1 Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente,
Más detallesTema 6 Patrones de Diseño. Programación Orientada a Objetos Curso 2010/2011
Tema 6 Patrones de Diseño Programación Orientada a Objetos Curso 2010/2011 Contenido Introducción a los patrones de diseño. Patrón del Método plantilla. Patrón Composición. Patrón Estrategia. Clases anónimas
Más detallesPROGRAMACIÓN GENÉRICA
PROGRAMACIÓN GENÉRICA Lenguajes de Programación - Orientación a Objetos: Progr. Genérica 1 Programación genérica Objetivo: escribir algoritmos genéricos, independientes de las clases concretas de los datos
Más detallesObjetivos. Objetivos. Herencia. Objetivos. agregar funcionalidad a una clase existente, sin compilar su nueva definición.
(a) objetivos (b) terminología (c) polimorfismo (d) tipeo y herencia (e) vinculación dinámica de código (f) clases abstractas (g) soporte en JAVA (h) significado de la herencia (i) herencia y aserciones
Más detallesClases Abstractas e Interfaces
Clases Abstractas e Interfaces Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender a crear y utilizar clases y métodos abstractos
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra l.guerra@upm.es Curso INEM. Programación en Java Marzo 2011 Índice Previo Repaso y encapsulación Empaquetado Relaciones entre clases Herencia
Más detallesUnidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.
Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está
Más detallesAlgoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez
Algoritmos y Estructuras de Datos Iteradores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción 1/26 Iteradores Es muy común
Más detallesExamen Teórico. Convocatoria de Febrero de 2016
Examen Teórico Convocatoria de Febrero de 2016 Nombre: DNI: Grupo: 1. Responde a las siguientes cuestiones: a) Un programador Java empaqueta el código de un proyecto en el fichero videojuego.jar cuya clase
Más detallesTema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 3: Herencia en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Herencia. Polimorfismo y ligadura. Clase object. Casting. Compatibilidad de tipos. Clases abstractas.
Más detalles3.1 Introducción a TDA y OO. Capítulo III. Tipos de Datos Abstractos, Orientación a Objetos y Lenguaje Java
Capítulo III 3.1 Introducción a TDA y OO Tipos de Datos Abstractos, Orientación a Objetos y Lenguaje Java Problemas en el Desarrollo de Grandes Programas ❶ Cómo organizar una pieza de software, de manera
Más detallesTema 2: Clase y objetos en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 2: Clase y objetos en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Introducción. Clases. Propiedades. Visibilidad. Espacios de nombres. Ensamblados. Tipos del lenguaje.
Más detallesExamen Teórico. Convocatoria de Julio de 2015
Examen Teórico Convocatoria de Julio de 2015 Nombre: DNI: Grupo: 1. Sobre la ejecución de aplicaciones Java desde la línea de comandos: a) Explica el significado y uso del parámetro cp. b) Indica si la
Más detallesClases (construcción)
Clases (construcción) Carlos Fontela cfontela@fi.uba.ar Temario Implementación de clases Atributos Métodos y propiedades Constructores Excepciones Diseño contractual TDD o diseño guiado por las pruebas
Más detallesInterfaces y Clases Internas
Interfaces y Clases Internas (No es interfaz gráfica, sirve como alternativa a herencia múltiple) ELO329: Diseño y Programación Orientados a Objetos Qué queremos decir con interfaces y clases internas?
Más detallesPatrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2007/08
Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2007/08 Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para poder adecuarse a futuros
Más detallesHerencia: relación es un
Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid de abril de 007 : relación es un I Seres materiales Seres inertes Seres vivos Coches Plantas Animales Renault Flores
Más detallesHerencia y Clases Abstractas
Herencia y Clases Abstractas Reutilización de código y código genérico ELO329: Diseño y Programación Orientados a Objetos Introducción La idea básica es poder crear clases basadas en clases ya existentes.
Más detallesColas Implementación con gestión estática de memoria
Colas Implementación con gestión estática de memoria Esquema general 0 1 2 3 n - 1... _primero = 0 _ultimo = 0 Esquema general * Añadir un elemento a la cola. 0 1 2 3 n - 1 'a'... 1) _vector[_ultimo] =
Más detallesSoluciones Ejercicios Tema 1
BonoMetro (I) 1 Soluciones Ejercicios Tema 1 Germán Moltó Martínez gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia
Más detallesPOO: Clases y objetos
POO: Clases y objetos Programación de aplicaciones 1 Introducción En los lenguajes de programación orientados a objetos, tenemos la posibilidad de extender el lenguaje mediante la creación de nuevo tipos,
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
Más detallesCurso de Java POO: Programación orientada a objetos
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
Más detallesDiseño de tipos Igualdad, representación, código, copia y relación de orden
Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones
Más detallesOracle Certified Professional, Java SE 6 Programmer 1Z0-851
Información del examen: Número de examen: 1Z0-851. Certificación Asociada: Oracle Certified Professional, Java SE 6 Programmer. Versión del producto: Java SE 6. Duración: 150 minutes. Número de preguntas:
Más detalles3.6 Interfaces y Paquetes
3.6 Interfaces y Paquetes Interfaces, implementaciones, paquetes, organización de archivos 3.6.1 Interfaces Declaración, Herencia múltiple, supertipos y subtipos, implementación Introducción vs. Clase
Más detallesClases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos
Clases y Objetos en Java ELO329: Diseño y Programación Orientados a Objetos Construyendo clases nuevas La forma más simple de una clase en Java es: Class Nombre_de_la_Clase { } /* constructores */ /* métodos
Más detallesInterfaces y Clases Internas
Interfaces y Clases Internas (No es interfaz gráfica, sirve como alternativa a herencia múltiple) ELO329: Diseño y Programación Orientados a Objetos Qué queremos decir con interfaces y clases internas?
Más detallesProgramación Dirigida a Objetos. MATERIAL COMPLEMENTARIO Tema 5.- Herencia
Tema 5.- Herencia 1. Herencia múltiple en C++: ambigüedad de nombres...2 2. Herencia en SMALLTALK...4 2.1. Determinación de los métodos a ejecutar: self y super...4 2.2. Herencia de métodos y variables
Más detallesAbstracción. Encapsulamiento. Polimorfismo. Objeto. método / objeto / clase / módulo. Separación de las propiedades de un
Abstracción Encapsulamiento Separación de las propiedades de un método / objeto / clase / módulo de la implementación del mismo Ocultamiento de información No es necesario dar conocer los detalles de la
Más detallesTema 5. Herencia. Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada
Tema 5 Herencia Departamento de Lenguajes y Sistemas Informáticos Universidad de Granada Qué es la Herencia? Propiedad de que las instancias de una clase hija tengan acceso a la estructura de datos* y
Más detallesManejo de Clases y Objetos. Manejo de Clases y Objetos
Cod. 1728.61 PLATAFORMA.NET Y SERVICIOS WEB nestor@lsi lsi.uniovi.es Dpto. de Informática - Laboratorio de Tecnologías de Orientación a Objetos http://www www.ootlab.uniovi.es CONCEPTOS BÁSICOS Objeto:
Más detallesPARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B)
APRENDERAPROGRAMAR.COM PARA QUÉ SIRVEN LAS INTERFACES JAVA. IMPLEMENTAR UNA INTERFAZ DEL API. VENTAJAS. EJEMPLOS BÁSICOS. (CU00697B) Sección: Cursos Categoría: Curso Aprender programación Java desde cero
Más detallesIntroducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Más detallesPráctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones
Práctica 2 Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Más detallesIntroducción a C++ Índice
Introducción a C++ 1. 2. 3. 4. 5. 6. Índice 1. Diferencias entre C y C++. 2. Diferencias entre C++ y Java. 3. Ejemplos. 4. Funciones. 5. Memoria dinámica 6. Librería de funciones. 1 1. Diferencias entre
Más detallesAgradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1
Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos
Más detallesPolimorfismo Java y Servicios Web I Master en Ingeniería Matemática
Polimorfismo Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Contenidos Introducción. Conversión
Más detallesUnidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende
Más detallesTema 2.- Objetos y mensajes
Tema 2.- Objetos y mensajes 1. Objetos y mensajes: mecanismo de envío de mensajes...2 2. SMALLTALK: EXPRESIONES...3 2.1. LITERALES: designan objetos constantes...3 2.2. NOMBRES DE VARIABLES: identifican
Más detallesClases y herencia. FJP Unidad 8. Diseño de clases
Clases y herencia FJP Unidad 8 Encapsulamiento Diseño de clases El encapsulamiento provee protección de atributos y métodos definidos en una clase de forma tal que comportamiento de objetos de una clase
Más detalles18. Interfaces Declaración de una interfaz
Programación orientada a objetos con Java 191 18. Interfaces Objetivos: a) Definir el concepto de interfaz b) Interpretar el código fuente de una aplicación Java donde aparecen interfaces c) Construir
Más detalles16. Herencia Definición de herencia. 168 A. García-Beltrán y J.M. Arranz
168 A. García-Beltrán y J.M. Arranz 16. Herencia Objetivos: a) Definir el concepto de herencia entre clases b) Interpretar el código fuente de una aplicación Java donde aparecen clases relacionadas mediante
Más detallesÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO.
ÍNDICE DEL LIBRO Y DEL EBOOK APRENDER A PROGRAMAR EN JAVA DESDE CERO. CURSO PASO A PASO. INDICE 1. INTRODUCCIÓN A JAVA 1.1. Qué es Java? 1.2. Es Java un lenguaje ideal para aprender a programar? 1.3. Es
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión VIII Composición... 4 Herencia... 8 Herencia e Inicialización... 11 Constructor de Superclase...
Más detallesProgramación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM
Programación Tema 9: Bibliotecas y Colecciones 1 Contenidos l Bibliotecas l Concepto de colección l Definición y uso de lista (List, ArrayList) l Recorridos sobre colecciones l Conjunto (Set, HashSet)
Más detallesHOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS
Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2009/2010 Nombre:... Fecha: / 11 / 2009 HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS Esta hoja de ejercicios
Más detallesProgramación orientada a objetos I
Introducción Programación orientada a objetos I Curso INEM. Programación en C++ Santiago Muelas Pascual smuelas@fi.upm.es Qué es la POO? Un paradigma de programación Un paradigma es una forma de afrontar
Más detallesJAVA 1. Introducción
Diseño de Interfaces de Usuario JAVA. Introducción. Características Portabilidad Interpretado (bytecodes) Uso de Máquina Virtual Java (JVM) Orientado a Objetos Jerarquía de clases Extensible (packages)
Más detallesAlgoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez
Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción a la Recursión
Más detallesEstructuras de Datos Clase 7 Listas e Iteradores (segunda parte)
Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte) Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía
Más detallesVariables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
Más detallesCentro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión IX Composición... 4 Herencia... 8 Herencia e Inicialización... 12 Constructor de Superclase...
Más detallesTema 4 Colecciones en Java. Programación Orientada a Objetos Curso 2013/2014
Tema 4 Colecciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Colecciones (paquete java.util): Interfaz Collection Interfaz List Interfaz Set InterfazMap Copia de
Más detallesINTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)
APRENDERAPROGRAMAR.COM INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C) Sección: Cursos Categoría: Lenguaje de programación Java
Más detallesAcademia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos
Academia de computación de IE, ICA e ISISA Unidad didáctica Programación Orientada a Objetos Elaboración y diseño de cien reactivos de opción múltiple para la unidad didáctica programación orientada a
Más detalles1º Certamen ILI-253 Pauta de Corrección Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 29 de Abril del 2004
1º Certamen ILI-253 Pauta de Corrección Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 29 de Abril del 2004 Nombre: Paralelo: Nota: Tiempo: 110 Minutos. Responda con lapiz indeleble para
Más detallesPROGRAMACIÓN ORIENTADA POR OBJETOS EN JAVA
PROGRAMACIÓN ORIENTADA POR OBJETOS EN JAVA Introducción El paradigma de Programación Orientada a Objetos ha estado vigente desde hace muchos años en el mundo del software. A través de los años este paradigma
Más detallesParte I: Programación en un lenguaje orientado a objetos
Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento
Más detallesJava en 2 horas. Rodrigo Santamaría
Java en 2 horas Rodrigo Santamaría Generalidades 2 Desarrollado por Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión interna de
Más detalles