Prácticas de Programación

Documentos relacionados
Prácticas de Programación

Prácticas de Programación

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

Forma Básica Clase Java

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

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

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

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

Tema 2. El lenguaje JAVA

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Modulo 11. Clases y Objetos en Java

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

PROGRAMACION ORIENTADA A OBJETOS EN C++

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

Programación n Orientada a Objetos Sentencias Java Parte I. Ing. Julio Ernesto Carreño o Vargas MsC.

2.2 Nombres, Ligado y Ámbito

Java para programadores

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Programación Orientada a Objetos (POO)

Principios de Computadoras II

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

Tema 7: Polimorfismo. Índice

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

Programación orientada a objetos. Resumen de Temas Unidad 4: Sobrecarga

Objetivos de la sesión. Aplicación de consola 7/30/11. Código con que se inicia un programa en Visual C# (aplicación de consola)

Java Inicial (20 horas)

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

15. Parámetros o argumentos

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Programación orientada a objetos

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

Guía - Taller # 2 (JAVA)

Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans

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

Programación Orientada a Objetos en Java

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

Clases en Java. Declaración de clases en Java 02/09/16. Ing. Roberto Martínez Román - public class Alumno { private int matricula;

Tema 6. Gestión dinámica de memoria

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO IBEROTEC SEMESTRE ACADÉMICO: 2014-II SÍLABO

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

Clases Abstractas e Interfaces

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

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Programación Orientada a Objetos Sentencias Java Parte I Ing. Julio Ernesto Carreño Vargas MsC.

Agenda..NET C# Laboratorio #1

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Procesadores de lenguaje Tema 6 La tabla de símbolos

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

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

4. Operadores Operador asignación

GUÍA DE ESTILO EN JAVA

Laboratorio de Arquitectura de Redes. Punteros en lenguaje C

Instrucciones de control

Conceptos de Programación Orientada a Objetos

Ficha de Aprendizaje N 13

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

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

Computación II. Introducción a Visual Basic

Computación Avanzada Clase 3. Mauricio Hidalgo Barrientos

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

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Universidad Ricardo Palma

Aspectos de los LP. Diseño de compiladores. Estático vs. Dinámico. Estático vs. Dinámico. Scope. Scope 24/03/2015

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

Arreglos Unidimensionales En este tipo de arreglo se hace uso de un índice solamente para hacer referencia a una posición particular del arreglo.

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

Las plantillas permiten definir funciones genéricas.

La clase String

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

Tema 4. Excepciones en Java

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

Programación Java - Ingeniería de Sistemas - UATF 12 Ing. Limber Ruíz Molina

ESCUELA DE INFORMÁTICA

Fundamentos de JAVA. Angel Kuri Enero, /2/2006

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

Tema: Introducción al IDE de Microsoft Visual C#.

Ejercicios de evaluación de fundamentos de programación en Java

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

FACULTAD DE INGENIERÍA

Java para no Programadores

Informática I para Bachillerato

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

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

5. Sentencias selectivas o condicionales

Encapsulación: clases y objetos

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

Tema: Entorno a C# y Estructuras Secuenciales.

Tema 2: Clase y objetos en Java. Programación Orientada a Objetos Curso 2009/2010 Begoña Moros Valle

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

2.- PROGRAMACIÓN ORIENTADA A OBJETOS

Estatutos de Control C# Estatutos de Decisión (Selección)

Elementos de un programa en C

INGRESAR DATOS CON UN CONTROL VISUAL EN JAVA. CLASE JTEXTFIELD Y MÉTODO GETTEXT. EJEMPLOS (CU00928C)

Programación Orientada a Objetos

Java en 2 horas. Rodrigo Santamaría

Transcripción:

Prácticas de Programación Tema 1. Introducción al análisis y diseño de programas Tema 3. Herencia y Polimorfismo Tema 4. Tratamiento de errores Tema 5. Aspectos avanzados de los tipos de datos Tema 6. Modularidad y abstracción: aspectos avanzados Tema 7. Entrada/salida con ficheros Tema 8. Verificación y prueba de programas Prácticas de Programación 23/02/10 1 2.1. Introducción 2.2. Creación e inicialización de objetos 2.3. Tipos primitivos, referencias y objetos 2.4. Recolector de basura 2.5. Comparación de objetos 2.6. Control de acceso 2.7. Métodos y campos de clase (o estáticos) 2.8. Anidamiento de clases 2.9. Bibliografía Prácticas de Programación 23/02/10 2 2.1 Introducción 2.1 Introducción La clase es la unidad básica de estructuración en un lenguaje orientado a objetos Está formada por miembros: atributos (también llamados campos): almacenan el estado métodos: definen el comportamiento Una clase es una descripción de un conjunto de objetos con los mismos atributos y comportamiento public class UnaClase { atributos constructores métodos Un objeto es una instancia o ejemplar concreto de una clase Prácticas de Programación 23/02/10 3

2.2 Creación e inicialización de objetos 2.2 Creación e inicialización de objetos En el lenguaje Java los objetos se crean con el operador new: UnaClase obj = new UnaClase(); Los constructores son métodos especiales que se llaman igual que la clase no tienen tipo de retorno Se invoca el CONSTRUCTOR Una clase puede tener varios constructores con diferentes parámetros public UnaClase() { public UnaClase(int i) { public UnaClase(boolean b, int i) { Si y sólo si no definimos constructor, la clase tendrá el constructor por defecto (constructor sin parámetros que no hace nada) public UnaClase() { Prácticas de Programación 23/02/10 4 Inicialización de los atributos 2.2 Creación e inicialización de objetos Cuando se crea un objeto sus atributos se inicializan en 3 etapas: 1.Se asigna a cada atributo su valor por defecto - tipos numéricos (int, double, ): 0 (o 0.0) - Caracteres (char): carácter nulo - Booleanos (boolean): false - Referencias a objetos (String, otras clases): null 2.Si la declaración del atributo contiene un inicializador, éste es evaluado y asignado private int numruedas = numcoches * 4; 3.Se ejecuta el constructor de la clase, que puede cambiar el valor de los atributos que desee Recordar: sólo se inicializan los atributos, las variables locales de los métodos no son inicializadas por defecto Prácticas de Programación 23/02/10 5 Atributos finales 2.2 Creación e inicialización de objetos Su valor no se puede cambiar después de haber sido inicializados pueden inicializarse en la definición del atributo o en el constructor de la clase Ejemplo: public class Círculo { private final double PI = 3.14159; public final double área; private double radio; Inicialización de PI hay un valor más preciso de PI en la clase Math La inicialización de área se deja para el constructor public Círculo(double radio) { this.radio = radio; this.área = PI * radio * radio; // no se puede modificar el valor de área Prácticas de Programación 23/02/10 6

Cuando se declarara una variable de un tipo primitivo el compilador reserva un área de memoria para ella int i, j; i X j X Cuando se asigna un valor, éste es escrito en el área reservada i=16; i 16 j 3 j=3; La asignación entre variables significa copiar el contenido de una variable en la otra i=j; i 3 j 3 Prácticas de Programación 23/02/10 7 Referencias y objetos Cuando se declara una variable objeto la situación es diferente Si no se usa el operador new sólo se crea una referencia a objeto Complejo,; X X El espacio en memoria del objeto se reserva con el operador new =new Complejo(2.0,-3.2); =new Complejo(1.3,2.1); i=-3.2 r=1.3 i=2.1 Prácticas de Programación 23/02/10 8 Referencias y objetos (cont.) La asignación entre objetos sólo copia referencias después de la copia ambas referencias apuntan al mismo objeto =; i=-3.2 r=1.3 i=2.1 La comparación entre objetos compara las referencias no los contenidos en la figura anterior == es true en la situación de debajo == es false i=1.0 i=1.0 el método equals permite comparar contenidos (Ver 2.5) Prácticas de Programación 23/02/10 9

Arrays de tipos primitivos Java trata los arrays como objetos Crear una variable de tipo array sólo crea una referencia int a[]; a X El espacio en memoria para el array se crea con new cuando se trata de un array de un tipo primitivo se crean los elementos del array y se inicializan a sus valores por defecto a = new int[5]; a 0 0 0 0 0 Prácticas de Programación 23/02/10 10 Arrays de referencias a objetos Crear una variable de tipo array de objetos sólo crea la referencia Complejo a[]; a X Con new se reserva el espacio para el array de referencias pero no los objetos a los que apuntarán las referencias las referencias que forman el array se inicializan a null a=new Complejo[4]; null null null null a Los objetos hay que crearlos posteriormente a[1]=new Complejo(2.0,-3.2); null null null i=-3.2 a Prácticas de Programación 23/02/10 11 Copia y comparación de arrays (y strings) Los arrays y los strings son objetos, por consiguiente: La asignación entre arrays (o strings) sólo copia referencias a2=a1; 4-3 0 1-3 -7 8 2 1 a1 a2 La comparación entre arrays (o strings) compara las referencias no los contenidos en la figura anterior a1==a2 es true en la situación de debajo a1==a2 es false a1 4-3 0 1 a2 4-3 0 1 Para comparar contenidos debe utilizarse el método equals Prácticas de Programación 23/02/10 12

2.4 Recolector de basura 2.4 Recolector de basura La memoria ocupada por un objeto se reserva con el operador new en Java no existe ningún operador para liberar la memoria de un objeto que no se va a usar más La liberación de memoria la realiza el Recolector de Basura de forma automática el recolector va contando el número de referencias que apuntan a cada objeto cuando un objeto no está apuntado por ninguna referencia, se convierte en basura (no va a poder ser utilizado nunca más) en los periodos de inactividad del sistema, el recolector reincorpora la basura a la memoria disponible Prácticas de Programación 23/02/10 13 Ejemplo de generación de basura 2.4 Recolector de basura Complejo = new Complejo(2.0, 3.2); Complejo = new Complejo(1.3, 2.1); i=3.2 r=1.3 i=2.1 = ; i=3.2 r=1.3 i=2.1 Se convierte en basura al no estar apuntado por ninguna referencia Prácticas de Programación 23/02/10 14 2.5 Comparación de objetos 2.5 Comparación de objetos La comparación entre objetos (obj1==obj2) compara referencias si queremos comparar los contenidos de los objetos debemos utilizar el método equals Ejemplo: método equals para la clase Coordenada: public class Coordenada { private int x; // coordenada en el eje x private int y; // coordenada en el eje y public boolean equals(object obj) { Coordenada c = (Coordenada) obj; return c.x == x && c.y == y; Prácticas de Programación 23/02/10 15

Ejemplo de uso del método equals 2.5 Comparación de objetos if (.equals()) { true :Coordenada x=2 y=-3 if (.equals(c4)) { if (.equals()) { if (.equals(c3)) { false true c3 c4 :Coordenada x=10 y=4 :Coordenada x=2 y=-3 Prácticas de Programación 23/02/10 16 2.5 Comparación de objetos Comparación de contenidos de arrays y strings La clase String dispone del método equals: String str1 = "hola", str2 = "hola"; if (str1.equals(str2)) { System.out.println("Los strings son iguales"); Para comparar arrays existe el método equals de la clase Arrays: import java.util.arrays; int[] a1= {4, -3, 0, 1, a2= {4, -3, 0, 1; if (Arrays.equals(a1, a2)) { System.out.println("'a1' es igual a 'a2'"); Volveremos a hablar del método equals en el tema 3, Herencia y Polimorfismo Prácticas de Programación 23/02/10 17 Los sistemas software pueden llegar a ser muy complejos Para abordar con éxito su desarrollo es necesario aplicar los principios de: modularidad: descomposición del sistema en un conjunto de piezas poco acopladas ocultamiento de información: se ocultan los detalles de implementación de las piezas Ventajas de utilizar modularidad y ocultamiento de información el ocultamiento de los detalles facilita la comprensión global del sistema el cambio en la implementación de un módulo no afecta al resto de la aplicación el acoplo débil entre módulos facilita la reutilización de código Prácticas de Programación 23/02/10 18

Modularidad y abstracción en POO En POO ambos principios se basan en el concepto de objeto cada objeto es una pieza del sistema final los objetos se relacionan mediante sus miembros públicos los miembros privados están ocultos para los demás objetos Parte Pública método público 1 método público 2 método público n Objeto métodos privados atributos Parte Privada Prácticas de Programación 23/02/10 19 Modificadores de acceso Se pueden poner a una clase o miembro (campo o método) indican desde dónde es accesible Modificadores de acceso para clases: <ninguno>: accesible desde el paquete public: accesible desde todo el programa Modificadores de acceso para miembros de clases: <ninguno>: accesible desde el paquete public: accesible desde todo el programa private: accesible sólo desde esa clase protected: accesible desde el paquete y desde sus subclases en cualquier paquete Prácticas de Programación 23/02/10 20 Uso habitual Lo normal es que una clase: tenga todos sus atributos privados sólo proporcione los métodos públicos estrictamente necesarios De esta forma el estado del objeto sólo puede cambiar a través de unos puntos de entrada bien definidos Prácticas de Programación 23/02/10 21

Ejemplo de uso de los modificadores de acceso public class Coche { private String matrícula; private String nombrepropietario; private String dnipropietario; // constructor public Coche(String m, String n, String dni) { // métodos para leer los atributos public String matrícula() { public String nombrepropietario() { public String dnipropietario() { // métodos para cambiar los atributos public void cambiapropietario(string n, String dni) { NO existe un método para cambiar la matrícula, ya que ese dato no cambia en toda la existencia del coche NO existe un método para cambiar el nombre y el DNI por separado, ya que cuando cambia uno, también hay que cambiar el otro Prácticas de Programación 23/02/10 22 Una clase puede tener atributos y métodos estáticos: no pertenecen a los objetos de la clase, sino a la clase misma si son atributos, sólo existe uno por clase, no uno por objeto - la vida es la de la clase, y no la del objeto si son métodos, sólo pueden acceder a los objetos pasados como parámetros y a campos y métodos estáticos nos referimos a ellos como NombreClase.miembroEstático public class Clase { private static int st; private int i; :Clase i=2 :Clase i=23 Clase.st=10 :Clase i=-12 :Clase i=-45 :Clase i=125 Prácticas de Programación 23/02/10 23 Ejemplo de atributo y método de clase public class Coche { // atributo estático private static int últimonumserie=0; // atributos normales private int numserie; private String matrícula; // constructor public Coche(String matrícula){ ultimonumserie++; numserie=últimonumserie; this.matrícula=matrícula; Coche -últimonumserie: int -numserie: int -matrícula: string +Coche(matrícula: string) +matrícula(): string +numserie(): int +últimonumserie(): int Prácticas de Programación 23/02/10 24

Ejemplo de atributo y método de clase (cont.) // retorna la matrícula public String matrícula() { return matrícula; // retorna el número de serie public int numserie() { return numserie; // retorna el último número de serie usado public static int últimonumserie() { return últimonumserie; Prácticas de Programación 23/02/10 25 Ejemplo de atributo y método de clase (cont.) public class PruebaCoche { public static void main(string[] args) { // consulta el último número de serie usado System.out.println("Último número usado:" + Coche.últimoNumSerie()); // crea dos coches Coche =new Coche("1111 XXX"); Coche =new Coche("2222 YYY"); // muestra los datos de un coche System.out.println("Coche: " +.matrícula()); System.out.println("Num serie: "+.numserie()); // muestra los datos del otro coche System.out.println("Coche: " +.matrícula()); System.out.println("Num serie: "+.numserie()); Prácticas de Programación 23/02/10 26 Ejemplo de método de clase public class Vector2D { // atributos private double x; private double y; /** Constructor */ public Vector2D(double x, double y) { this.x=x; this.y=y; Prácticas de Programación 23/02/10 27

Ejemplo de método de clase (cont.) /** * Método NO estático: Suma el vector v con * el vector actual */ public void suma(vector2d v){ x = x + v.x; y = y + v.y; /** * Método ESTÁTICO: Retorna el vector * resultado de v1+v2 */ public static Vector2D suma(vector2d v1, Vector2D v2) { return new Vector2D(v1.x+v2.x, v1.y+v2.y); Prácticas de Programación 23/02/10 28 Vector2D v1 = new Vector2D(1,2); Vector2D v2 = new Vector2D(5,10); Vector2D v3; v1 x=1.0 y=2.0 v2 Ejemplo de método de clase (cont.) x=5.0 y=10.0 v3 X // suma no estática v1.suma(v2); refobjeto.nombremétodo v1 x=6.0 y=12.0 v2 x=5.0 y=10.0 v3 X // suma estática v3=vector2d.suma(v1,v2); NombreClase.nombreMétodo v1 x=6.0 y=12.0 v2 x=5.0 y=10.0 v3 x=11.0 y=22.0 Prácticas de Programación 23/02/10 29 2.8 Anidamiento de clases 2.8 Anidamiento de clases Una clase puede definirse dentro de otra las clases anidadas no estáticas se denominan clases internas y están asociadas con una instancia (objeto) de la clase las clases anidadas estáticas se comportan como cualquier otra clase - salvo que su nombre es ClaseContenedora.ClaseAnidada - las usaremos cuando veamos las excepciones y los enumerados Prácticas de Programación 23/02/10 30

Ejemplo de clase anidada estática 2.8 Anidamiento de clases public class Línea { public static class Punto { double x, y; clase anidada estática // atributos private Punto pini, pfin; /** constructor */ public Línea (Punto pini, Punto pfin) { this.pini=pini; this.pfin=pfin; Prácticas de Programación 23/02/10 31 2.8 Anidamiento de clases Ejemplo de clase anidada estática (cont.) public class PruebaLínea { public static void main() { Línea.Punto pini = new Línea.Punto(); Línea.Punto pfin = new Línea.Punto(); pini.x=10.2; pini.y=4.3; pfin.x=1.3; pfin.y=5.6; Línea l = new Línea(pIni, pfin); Prácticas de Programación 23/02/10 32 2.9 Bibliografía 2.9 Bibliografía Ken Arnold, James Gosling, David Holmes, El lenguaje de programación Java, 3ª edición. Addison-Wesley, 2000. Eitel, Harvey M. y Deitel, Paul J., Cómo programar en Java, quinta edición. Pearson Educación, México, 2004. King, Kim N. Java programming : from the beginning. W. W. Norton & Company, cop. 2000 Francisco Gutiérrez, Francisco Durán, Ernesto Pimentel. Programación Orientada a Objetos con Java. Paraninfo, 2007. Prácticas de Programación 23/02/10 33