Tema 2: Objetos y Clases de Objetos Martes Jueves Dpto. de Ingeniería de Sistemas Telemáticos

Documentos relacionados
Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

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

12. Tipos de atributos

Métodos CON valor de retorno

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

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

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Abstracción. Encapsulamiento. Polimorfismo. Objeto. método / objeto / clase / módulo. Separación de las propiedades de un

Curso Informática Lección 6. Métodos de objetos y clases

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

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

FACULTAD DE ECONOMIA Y ADMINISTRACION DEPARTAMENTO DE CIENCIAS DE LA COMPUTACION CÁTEDRA PROGRAMACION GENERAL. Trabajo Práctico Nº 4

Informática Lección 5. Arreglos (vectores) Curso Pedro Álvarez y José Ángel Bañares 2/11/2010. Dpto. Informática e Ingeniería de Sistemas.

Programación Tema 3: Tipos y expresiones simples. Programación DIT-UPM

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

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

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C.

Examen escrito de Programación 1

Estructuras de control selectivas

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

HOJA DE EJERCICIOS 3 HERENCIA ENTRE CLASES Y POLIMORFISMO DE MÉTODOS

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Docente: Juan Carlos Pérez P. Alumno : Fecha : Nota:

Prueba N o 1. Programación II

FUNDAMENTOS DE INFORMÁTICA

Programación orientada a objetos I

Herencia Java y Servicios Web I Master en Ingeniería Matemática

Programación Tema 4: Métodos. Programación DIT-UPM

HERENCIA. Problema: Reparar el el coche. Jesús (Valencia) Luis, Mecánico (Valencia) Antonio, Servicio Técnico Ferrari (Madrid)

Estructura de datos y Programación

Introducción a Java. Introducción a Java. Programación I

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2007.

Unidad IV. Este tipo de codificación nos es permitido gracias a la sobrecarga, la cual se aplica a métodos y constructores.

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

IMPORTAR Y USAR CLASES DEL API DE JAVA. EJEMPLO CLASE MATH Y MÉTODO POW. CONSTRUCTORES PRIVADOS. (CU00647B)

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

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

Fundamentos de Programación

IMPLEMENTACIÓN DE CONCEPTOS P.O.O. EN JAVA

INTERACCION ENTRE OBJETOS

Sintaxis básica, variables y 7pos

Diferentes Perspectivas de un Ordenador

FACULTAD DE INGENIERÍA

Java para programadores

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

Los parámetros: son los campos que se comunican a los métodos de los objetos.

Prácticas de Programación

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

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

1. (1 punto) Dado el siguiente fragmento en Java:

Programación Orientada a Objetos. Orientación a Objetos en Java

Construcciones del Lenguaje Java

PROGRAMACIÓN GENÉRICA

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Programación Orientada a Objetos con Java

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

int[] nombrearray1; int nombrearray2[];

Tipos de datos algebraicos

Tema 1. Herencia y Polimorfismo

Sintaxis básica, variables y 7pos

Los tipos de datos primitivos

Programación Orientada a Objetos

EJERCICIO Y EJEMPLO RESUELTO: USO DE LA INTERFAZ CLONEABLE DE JAVA. MÉTODO CLONE() PARA CLONAR OBJETOS. (CU00912C)

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

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

TEMA 3:Programación con Clases y Objetos.

Examen de Métodos de Programación Ingeniería Informática Primera Parte

Conceptos Básicos. Programación Orientada a Objetos 2

Los Constructores(1)

VARIABLES, CONSTANTES Y EXPRESIONES ASIGNACIÓN. TIPOS ELEMENTALES. PRECEDENCIA DE LOS ESTRUCTURAS DE CONTROL. CONDICIONAL E

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Java. Introducción a la Programación Orientada a Objetos

JAVA 1. Introducción

Curso de Java Introducción a la Programación I

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

Bloque II. Elementos del lenguaje de programación Java

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Definición de clase: Una clase es un prototipo que define las variables y los métodos de todos los objetos con características comunes.

Sebastián García Galán

! Fundamentos de la POO. ! Comportamiento y estado. ! Clases y objetos en Java

Programación orientada a objetos (I)

Pruebas de escritorio

Taller de Programación I. Tema 05: Programación Orientada a Objetos en Java 01

ALGORITMICA Y PROGRAMACION POR OBJETOS I

PRINCIPIOS DE PROGRAMACIÓN. Mtro. en Ingeniería de Software. Especialidad en e-commerce Ismael Jiménez Hernández

Tema 2: Programación basada en Objetos

Tema 2: Clases y Objetos en Java. Programación Orientada a Objetos Curso 2010/2011

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Tema 2: Clases y Objetos. Programación Orientada a Objetos Curso 2015/2016

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

INICIACIÓN A LA PROGRAMACIÓN LENGUAJE JAVA

Java en 2 horas. Rodrigo Santamaría

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

El lenguaje Java. Apéndice A Elementos del lenguaje

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

4. Operadores Operador asignación

Transcripción:

Fundamentos de Programación Tema 2: Objetos y Clases de Objetos Martes 23-09-2007 Jueves 25-09-2007 Dpto. de Ingeniería de Sistemas Telemáticos http://www.lab.dit.upm.es/~fprg/ 1

Índice Objetos Clases Notación UML Encapsulamiento Convenio de nombres Métodos referencias null Comparación de objetos Composición Tipos enumerados Declaración de colecciones cerradas de valores Clases predefinidas Math String Ejercicios para Casa 2

Qué es un objeto? Un objeto es un trocito de programa Un programa es un conjunto de objetos Se programan cosas que pueden ser muy complejas y para mantener esa complejidad bajo control hay que partir el problema en piezas controlables divide y vencerás 3

Los objetos son objetos? Los objetos de programación NO son objetos materiales Inicialmente los objetos se inventaron para estructurar programas de simulación viaria un coche, un peatón, una calle, un semáforo,... Actualmente se usan para estructurar objetos materiales, servicios, conceptos,..., en general cualquier abstracción mental 4

Ejemplos de objetos Una estructura t algebraica (ej. un grupo) Un ámbito de trabajo (ej. colores) Un objeto material (ej. un satélite) Un servicio inmaterial (ej. www) Algo muy real : una cuenta corriente... 5

Clases de objetos Habitualmente t un programa emplea muchos objetos de la misma clase muchos coches, muchos satélites, muchas conexiones www, muchos transistores,... Los programadores definen clases class Car {... detalles... Y luego crean objetos de las clases definidas Car micoche= new Car (...); Car cochedeelisa= new Car (...); 6

Representación gráfica una clase nombre de la clase atributos características de la clase lo que se es o cómo se está métodos lo que puede hacerse con objetos de esta clase: comportamiento t posible nombre nombre nombre nombre......... nombre nombre nombre......... un objeto nombre del objeto valores memoria o estado particular de cada objeto todos los objetos de una clase hacen exactamente lo mismo 7

class Circulo class Circulo { double radio; Circulo radio:double Circulo (double _radio) { radio= _radio; dameradio:double area:double double dameradio () { return radio; circunferencia:double escala:void double area () { return Math.PI * Math.pow(radio, 2); double circunferencia () { return 2 * Math.PI * radio; void escala (double proporcion) { radio= radio * proporcion; UML unified modelling language 8

Encapsulamiento Quien programa un objeto controla los métodos de acceso a su estado y su comportamiento El programador puede (y debe) responsabilizarse de la corrección del código correspondiente a un objeto compromiso contractual Objeto Métodos privados Atributos Métodos publicos 9

Convenios Para identificar clases y objetos unívocamente, cada uno recibe un nombre diferente mayúsculas minúsculas SePuedenUtilizarPequenasFrases ynumeroscomodia28oano2000 peronosepuedenusaracentosnienes Las clases empiezan con letra mayúscula Los objetos empiezan con letra minúscula 10

Métodos Constructores t para crear un método Otros: Consultas extraen características del objeto Modificadores crean impronta en el objeto Operaciones hacen que el objeto evolucione, con memoria 11

Referencias Cuando se crea un objeto de una clase, el programador se queda con una referencia para poder llegar a ese objeto Circulo c1= new Circulo(1.0); c1 Circulo 1.0 dameradio area circunferencia escala Circulo c2= new Circulo(3.5); c2 Circulo 3.5 dameradio area circunferencia escala 12

Acceso Al los componentes de un objeto se accede referenciadelobjeto. nombredelcomponente c1.dameradio(); 1.0 c2.dameradio(); 3.5 c1.area(); 3.1416 c2.area(); 38.4846 c1.escala(2.0); c1.area(); 12.5664 13

Referencias compartidas Un objeto puede tener varias referencias alias Circulo c1= new Circulo(1.0); 1 Circulo c2= c1; c1 Circulo 1.0 dameradio area circunferencia i escala c1.area(); // 3.1416 c2.area(); // 3.1416 c1.escala(2.0); c2 c2.area(); // 12.5664 14

cuando una referencia no se refiere a ningún objeto (por ejemplo, antes de crearlo) se dice que apunta a null null Circulo c1; c1.area(); // error c1= new Circulo(1.0); c1.area(); // 3.1416 c1= null; c1.area(); // error 15

Adiós Cuando un objeto se queda sin referencias 1. no es accesible por el programa 2. el sistema se reserva el derecho de reciclarlo Circulo c1= new Circulo(1.0); c1= null; // reciclable Circulo c1= new Circulo(1.0); Circulo c2= c1; c1= null; // aún queda c2 c2= null; // reciclable 16

Se comparan referencias Comparación cierto si ambas referencian el mismo objeto No se comparan los objetos falso, incluso si son dos objetos iguales en todos Circulo c1= new Circulo(1.0); Circulo c1= new Circulo(1.0); Circulo c2= c1; Circulo c2= new Circulo(1.0); c1 == c2 // true c1.escala(2.0); c1 == c2 // true c1 == c2 // false 17

Composición Un objeto puede ser parte integrante t de otros Ejemplo: un rectángulo esta compuesto por 4 puntos p1 p2 p3 p4 18

Composición Punto x: double y: double Punto: distancia: double Rectangulo p1: Punto p2: Punto p3: Punto p4: Punto Rectangulo: Rectangulo: area: double 19

Composición class Punto { double x, y; Punto (double _x, double _y) { x= _x; y= _y; void desplaza (double deltax, double deltay) { x= x + deltax; y= y + deltay; double distancia (Punto Q) {... class Rectangulo { Punto p1, p2, p3, p4; Rectangulo (Punto _p1, Punto _p2, Punto _p3, Punto _p4) { p1= _p1; p2= _p2; p3= _p3; p4= _p4; Rectangulo (double base, double altura) { p1= new Punto(0.0, altura); p2= new Punto(base, altura); p3= new Punto(0.0, 0.0); p4= new Punto(base, 0.0); double area () {... 20

Cuándo creamos clases? Cuando encontremos un concepto nuevo del problema a solucionar de la solución al problema Con objetos la programación se vuelve parsimoniosa e incluso algo contemplativa: vamos definiendo objetos interesantes, el programa queda muy clarito y comprensible y funciona solo porque cada objeto sabe lo que tiene que hacer 21

Tipos Enumerados Un enumerated type es un tipo de dato que contiene un conjunto de valores constantes JDK 5 permite definir tipos de datos enumerados Características ti avanzadas incluyen la capacidad d de agregar los métodos y campos a los enums. Enums son Comparable y Serializables. Las constantes de Enum deberían ser nombradas de manera similar que las constantes. Enums son básicamente un nuevo tipo de Clase. Hasta el momento no he usado Enums en mi código, es que todavía no pienso cómo debería usarlo Cuando debería usar Enums? Tipos de enumerados naturales: días de la semana, fases de la luna, et estaciones. Otros conjuntos donde sepamos todos los valores posibles: opciones de un menú, etc. 22

Enumerados Básicos Uso básico: El enumerado Coin public enum Coin {penny, nickel, dime, quarter Uso: public class PruebaCoin2 { public static void main (String [] args){ Coin2 moneda = Coin2.penny; System.out.print ("La Moneda:" + moneda); 23

Enumerados: Uso Ficheros diferentes Coin2.java public enum Coin2 { penny, nickel, dime, quarter PruebaCoin2.java public class PruebaCoin2 { public static void main (String [] args){ Coin2 moneda = Coin2.penny; System.out.print ("La Moneda:" + moneda); En el mismo fichero PruebaCoin3.java enum Coin {penny, nickel, dime, quarter public class PruebaCoin3 { public static void main (String [] args){ Coin moneda = Coin.penny; System.out.print ("La Moneda:" + moneda); 24

Enumerados: Ejecución public static void main (String [] args) { Método para comenzar la ejecución Nombre main Delante Public: se puede utilizar desde d cualquier sitio i Static: no necesita crear ningún objeto Void: no devuelve nada ( String [] args) Se le pasan los argumentos en forma de Matriz de una dimensión conteniendo listas de Caracteres y se llaman args el nombre puede cambiar Ficheros diferentes Coin2.java PruebaCoin2.java Javac Coin2.java Javac PruebaCoin2.java Aparecen Coin.class PruebaCoin2.class Java PruebaCoin2 En el mismo fichero PruebaCoin3.java Javac PruebaCoin3.java Aparecen Con.class PruebaCoin3.class Java PruebaCoin3 25

Enumerados Ampliados Uso básico: El enumerado Coin, conuncampoque campo representa el valor de la moneda en céntimos public enum Coin { penny (1), nickel (5), dime (10), quarter (25); Coin (int value) { this.value = value; private final int value; public int value (){ return value; Uso Coin Moneda = new Coin (10) 26

Clases predefinidas Incluidas en el SDK de Java. Documentación: http://java.sun.com/j2se/1.5.0/docs/index.html /j / / / Descargable de: http://java.sun.com/javase/downloads/ Como J2SE 5.0 Documentation Analizaremos a modo de ejemplo: java.lang.math biblioteca de funciones matemáticas java.lang.string biblioteca de funciones para tratar cadenas de texto 27

Math class Punto { // teorema de Pitágoras double distancia (Punto Q) { double m= Q.x; double n= Q.y; return Math.sqrt( Math.pow(m-x, 2) + Math.pow(n-y, 2) ); <x, y> <Q.x, Qy> 28

Math class EcuacionGrado2 { boolean raicesreales () { double a, b, c; return discriminante >= 0; double discriminante; EcuacionGrado2 (double _a, double _b, double _c) { a= _a; b= _b; c= _c; discriminante= b*b - 4*a*c; boolean raicesimaginarias () { return discriminante < 0; double raiz1 () { return (-b + Math.sqrt(discriminante)) / (2*a); double raiz2 () { return (-b - Math.sqrt(discriminante)) / (2*a); 29

String Cadena de caracteres de cualquier longitud tiene su sintaxis propia una cadena normal Jose Canas (alias \ pepon\ ) Jos\u00e9 Ca\u00f1as (alias \042pep\u00f3n\042) caracteres especiales \n \r \t \ \\ \ooo octal \uxxxx hexadecimal (unicode - iso10646) 30

String Operaciones concatenación: +, += saludo.equals(nombre) o saludo.compareto(mensaje) saludo.length() l saludo.charat(indice) crear cadena desde d tipo primitivo iti tostring(); imprimir en pantalla: System.out.println(saludo) 31

String String pedro= "Lopez, Pedro"; String perico= "Lopez, Pedro"; String manolo= "Pi, Manuel"; System.out.println(pedro); System.out.println(perico); System.out.println(perico + " [perico]"); System.out.println(manolo); System.out.println(manolo.substring(0, 2)); // Pi System.out.println(manolo.length()); // 10 System.out.println(pedro.equals(perico)); // true System.out.println(pedro.equals(manolo)); // false System.out.println(pedro.compareTo(perico)); // 0 System.out.println(pedro.compareTo(manolo)); // < 0 32

Ejercicios Ejercicio n.11 Temas:2 L Dificultad:2 Escriba un programa que muestre el mensaje "Hola Mundo" por pantalla. Cuántas clases necesitará definir para conseguir la funcionalidad deseada? Cuántos métodos habrá que definir como mínimo? Ejercicio n.16 Temas:2 3 Dificultad:5 Escriba un programa que reciba como argumento el radio de una circunferencia y calcule (y muestre por pantalla) la longitud de la circunferencia y el área del círculo delimitado por la misma. Utilice 3.141592 como valor de la constante PI. Ejercicios complementarios Método distancia de la clase punto Métodos perimetro y area de la clase Rectangulo Definir el Rectangulo como p3, base y latura 33