Tema 8: Manejo de Métodos

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

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

Clases y Objetos en C++

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

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

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

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

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

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

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

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

12. Tipos de atributos

Construcciones del Lenguaje Java

Estructura de un programa en Java. Tipos de datos básicos. class miprimerprograma{ // comentario, no es parte del programa

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Programación Orientada a Objetos en C++

Definición. Mónica E. García García Feb 07

3.4 Clases y Objetos 05/04/2004. Conceptos Generales. Modificadores de la Clase. Estructura de una Clase. Variables Miembros

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

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.

Tema 6: Clases. Índice

Estructura de datos y Programación

Qué 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 + +.

CAPITULO 2: VARIABLES Y CONSTANTES

Arrays. Los arreglos son una colección de objetos del mismo tipo los cuales tienen un nombre en común y su acceso es mediante un índice.

Los Constructores(1)

Tema 2: Programación basada en Objetos

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

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

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

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

2. Tratamiento de objetos con JAVA

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

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

INTERACCION ENTRE OBJETOS

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

Declaración de una clase

int[] nombrearray1; int nombrearray2[];

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

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

Clases y herencia. FJP Unidad 8. Diseño de clases

Introducción a la Programación Orientada a Objetos (POO)

En Java, un arreglo es un grupo de variables (llamados elementos o componentes) que contienen valores, todos del mismo tipo.

o Una clase en Java se compone de: o A los anteriores se les conoce también como miembros de la clase.

Práctica 2. Reutilización de código Elementos básicos del lenguaje Java Definición de variables, expresiones y asignaciones

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Programación orientada a objetos. Resumen de Temas Unidad 2: Métodos y Mensajes

Programación Avanzada CONCEPTOS BÁSICOS DE IMPLEMENTACIÓN EN C++

CAPITULO 2. COMPRENDER LAS DEFINICIONES DE CLASE

PRÁCTICA No 4 POO Encapsulación. El alumno conocerá los principios de la encapsulación, y el uso de constructores para la inicialización de datos

Clases y Objetos en Java. ELO329: Diseño y Programación Orientados a Objetos

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

Academia de computación de IE, ICA e ISISA. Unidad didáctica Programación Orientada a Objetos

Principios de Computadoras II

CAPÍTULO 2 DISEÑO E IMPLEMENTACIÓN DE MÉTODOS EN C#

Guía práctica de estudio 04: Clases y objetos

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

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Temas. Taller III 2007 Gentile,Vazquez

Java para programadores

Tema 2: Clases y Objetos. Programación Orientada a Objetos Curso 2017/2018

Prueba N o 1. Programación II

Algoritmos y Estructuras de Datos Ingeniería en Informática, Curso 2º SEMINARIO DE C++ Sesión 2

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

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

Examen Teórico Convocatoria de Junio de 2012

Tema 7: Polimorfismo. Índice

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

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Es ambigua, ya que la división y la multiplicación tienen el mismo grado de precedencia, qué parte de la expresión se realiza primero?

FUNCIONES O MÉTODOS. Algoritmia y Programación

Tema 2. El lenguaje JAVA

Manejo de Clases y Objetos. Manejo de Clases y Objetos

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

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

Java. Clases y Objetos. H. Tejeda V. Universidad Michoacana Facultad de Ciencias Físico-Matemáticas. Java p.

TEMA 3:Programación con Clases y Objetos.

UNIDAD 3 Modularidad

CAPITULO 6: FUNCIONES

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

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Programación Orientada a Objetos (POO)

Variables Globales: Estas se crean durante toda la ejecución del programa, y son globales, ya que pueden ser llamadas, leídas, modificadas, etc;

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

Práctica #3: Uso de Clases y Métodos

Tema 15: Aserciones 0

Clases en Java. Declaración

Introducción a la Programación Métodos

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

class identificador{ //Bloque de propiedades (datos miembro, atributos, propiedades) //Bloque de métodos (comportamientos) }

Tema 2: Clase y objetos en C# Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Modulo 11. Clases y Objetos en Java

5. Sentencias selectivas o condicionales

Programación II Objetos en Java

ARTÍCULO: IMPLEMENTACIÓN DE MÉTODOS EN C#.NET

Herencia y Polimorfismo

Estructuras de control selectivas

JAVA 1. Introducción

Transcripción:

Tema 8: Manejo de Métodos 0

Miembros de una clase Una clase puede contener variables y métodos. Las variables pueden ser tipos primitivos (int, char, etc.) Los métodos son funciones. Ejemplo: public MiClase { int i; public MiClase() { i = 10; public void Suma_a_i( int j ) { i = i + j; 1

Métodos Un método debe ser definido dentro de una clase. Sintaxis [m. acceso] [m. Comport.] tiporetorno nombremetodo([tipo arg1, tipo arg2,...]) [throws Excepcion_1,..., Excepcion_n] { // declaraciones, Cuerpo de método Invocación //Desde otra clase diferente o desde el main: Variableobjeto.nombreMetodo([argumentos]); // Si es dentro de la misma clase : nombremetodo ([argumentos]); Ejemplo: int producto ( int a, int b ) { int c = a * b; return c; // Invocación: int x=objeto,producto(5,4); 2

Características No hay límite en el número de llamadas a un método. La invocación puede hacerse dentro de la misma clase o desde otra. La invocación de métodos puede ser en cualquier orden no necesariamente como estás listados en la clase. Paso de argumentos Deberá de existir un método con la misma cantidad y orden del tipo de dato que se recibe como parámetros. Retorno de valor Un método sólo puede retornar un valor (o varios si es un String, un array o una colección). El compilador no asume un tipo de retorno por default. 3

Argumentos Paso de argumentos por valor Al ser una copia, el dato original no se altera en caso de que el método cambiara el valor de la copia. En Java los tipos primitivos siempre se pasan por valor. Ejemplo void a(int n){ // a recibe un valor en el argumento n n=n+1; // a modifica su copia. void b(){ int n=0; // n vale 0 a(n); // pasa n en 0 como argumento real System.out.println(n); // n sigue con valor 0 4

Argumentos Paso de argumentos por referencia Cuando se pasa una referencia al dato. Aunque el método no puede alterar la referencia propiamente dicha, si puede alterar aquello a que se refiere la referencia. Java pasa todo por valor aquello que no sean primitivos como un arreglo y objetos. Ejemplo void a(int datos[ ]){ // recibe la referencia de un array datos[0]=1; // modifica el array compartido void b(){ int datos[] =new int[2]; datos[0]=0; // la 1ra posicion contine 0; a(datos); // se pasa a a una referencia al array System.out.println(datos[0]); // imprime 1 5

Ejemplo void a(int datos[ ]){ // recibe la referencia de un array datos=new int[2]; // crea su propia copia datos[0]=1; // modifica el array compartido void b(){ int datos[] =new int[2]; datos[0]=0; // la 1ra posicion contine 0; a(datos); // se pasa a a una referencia al array System.out.println(datos[0]); // imprime 0 6

Constructor Definición Un constructor es un método que lleva el mismo nombre de la clase. Se invoca automáticamente cada vez que se crea un nuevo objeto (por default). Sirve para inicializar las variables de instancia del objeto. Un constructor puede incluir parámetros. Estos parámetros se enlazan con los argumentos especificados al crear un objeto con new. Una clase puede definir varios constructores con distintos tipos de argumentos (sobrecarga). 7

Constructor Sintaxis [modificadores de aceso] Nombre_Clase([argumentos]) { // Acciones 8

Ejemplo 1 class Datos { String name; int height; int weight; Datos() { name = Luis"; height = 70; weight = 75; Datos(String thename) { name = thename; height = 70; weight = 75; public static void main (String args[]) { Datos d = new Datos(); // llama al 1er constructor System.out.println( d.nombre = " + d.name); System.out.println( d.altura = " + d.height); System.out.println( d.peso = " + d.weight); Datos p = new Datos( Francisco"); // llama al 2do constructor System.out.println("p.nombre = " + p.name); System.out.println("p.altura = " + p.height); System.out.println("p.peso = " + p.weight); // Datos err = new Datos(37.2, Manuel ); // No hace match con algún constructor 9

Ejemplo 2 public class Canario{ public void vuela(){ System.out.println( Estoy volando ); //Está la llama del constructor por default que es vacío y sin parámetros. public static void main(sting[] args){ Canario piolin=new Canario(); piolin.vuela(); 10

Ejemplo 3 public class Canario{ public void vuela(){ System.out.println( Estoy volando ); public Canario(){ System.out.println( Mensaje en creacion ); public static void main(sting[] args){ Canario piolin=new Canario(); piolin.vuela(); 11

Recordar A manera de resumen, considerar los puntos siguientes: Una Clase es una definición de un nuevo Tipo, al que se da un nombre. Una Clase contiene miembros: Datos y Métodos que conforman el estado y las operaciones que puede realizar. Un Objeto es la instanciación (materialización) de una clase. Puede haber tantos objetos de una clase como sea necesario. Los Objetos se crean (asignación memoria) con el operador new. Los Objetos se manipulan con referencias. Una Referencia es una variable que apunta a un objeto. El acceso a los elementos de un Objeto (Datos o métodos) se hace con el operador. (punto) : nombre_referencia.miembro 12

Sobrecarga Definición y características Es definir más de una vez el mismo método (incluyendo al constructor). Con diferentes argumentos (tipo, número, y orden) y pueden o no tener diferente tipo de retorno. La sobrecarga se da en la misma clase. El modificador no interfiere en la sobrecarga. Puede haber o no herencia. 13

Sobrecarga de constructores Ejemplos: class Ejemplo1{ public void metodo (int a){ public int metodo (int b){ class Ejemplo2{ public void metodo (int a,float b){ public int metodo (float a,int b){ También se puede invocar un constructor dentro de otro. 14

Ejemplo: class Point { int x, y; Point(int x, int y) { this.x = x; this.y = y; Point() { x = -1; y = -5; class PointCreate { public static void main (String args[]) { Point p = new Point(10, 20); System.out.println("x = " + p.x + " y = " + p.y); Point p1 = new Point(); System.out.println("x = " + p1.x + " y = " + p1.y); 15

Sobrecarga de métodos Existe la sobrecarga de métodos usando el mismo nombre de un método pero dependiendo del número, tipo y orden de los argumentos (signature) es la invocación de un método. Los métodos pueden tener el mismo o diferente valor de retorno. Ejemplo: System.out.printl(xxx); 16

Sobrecarga de métodos Ejemplo (pagina 10-16): class Statistics Se muestra el uso de diferente número de argumentos del mismo tipo Ejemplo 2 class SumaGenerica { int suma (int a, int b) { return a+b; double suma (double a, double b) { return a+b;... 17

Varargs Uso desde la ver. 1.5 Permiten escribir métodos mas genéricos, llamada también variable arguments. Sintaxis: tipo... Identificador int... x; int...x; int... x; Ҳ int... x; Todos los argumento son del mismo tipo. 18

Varargs Notas: 1 En la sobrecarga si hay un método que haga exactamente match se toma en cuenta dicho método y no el que tenga las vararg. 2 También puede usarse en la sobreescritura haciendo primero match con algún método del padre sino con uno del hijo. 19

Ejemplo Varargs class VarArgs1 { static void vatest(int... v) { System.out.print("vaTest(int...): " + "Numero de args: " + v.length + " Contenido: "); for(int x : v) System.out.print(x + " "); System.out.println(); static void vatest(boolean... v) { System.out.print("vaTest(boolean...) " + "Numero de args: " + v.length + " Contenido: "); for(boolean x : v) System.out.print(x + " "); System.out.println(); 20

Ejemplo... Varargs //continuación static void vatest(string msg, int... v) { System.out.print ("vatest(string, int...): " + msg + v.length + " Contenido: "); for(int x : v) System.out.print(x + " "); System.out.println(); public static void main(string args[]) { vatest(1, 2, 3); vatest( Prueba: ", 10, 20); vatest(true, false, false); 21

Implementando encapsulación Encapsulación se refiere a ocultar datos sin una clase y hacerlos disponibles a través de métodos públicos, esto con el fin de que los datos no sean modificados inapropiadamente. Implementación es/son los detalles de cómo una clase manipula o trabaja a partir de los métodos públicos y variables públicas. 22

Métodos get y set Accesar a atributos y métodos privados es posible siempre y cuando se tengan métodos públicos para obtener y devolver un valor privado. Métodos de acceso (getters) Se dice de aquellos métodos que devuelven el valor de un campo del objeto. Por convenio se escriben iniciando con la palabra get seguida del nombre del campo. El tipo de retorno es del tipo de dato que se accede. Métodos de carga(setters) Se dice de aquellos que cargan el valor de un campo de objeto. 23

Ejemplos get y set Método de acceso: class Circulo{ private double radio; //... double getradio(){ return radio; Método de carga: class Circulo{ private double radio; //... double setradio(double radio){ return this.radio=radio; 24

static Todo lo declarado como static se crea una vez. Si un atributo (variable) es declarado como static se vuelve variable de clase. Si un método se declara static se vuelve método de clase. Un objeto static es compartido por todas las demás instancias, si una de esas instancias modifica su estado se habrá modificado para todas las demás instancias que lo usen. 25

Métodos static Todos los métodos estáticos pueden usar métodos y atributos estáticos así como sus variables locales. No se pueden sobreescribir métodos estáticos. El método main siempre será estático. Puede ser invocado sin una instancia de la clase. NombreClase.metodoStatico(); Un método estático no puede accesar a miembros no estáticos directamente, tiene que crear primero un objeto?. 26

Métodos static Ejemplo 1 Pagina 7-23 Ejemplo 2 class Punto { int x, y ; static int numpuntos = 0; Punto ( int a, int b ) { x = a ; y = b; numpuntos ++ ; static int cuantospuntos() { return numpuntos; //La llamada es usando sólo el nombre de la clase: int totalpuntos = Punto.cuantosPuntos(); 27

Ejemplos Ejemplo 3 static void Inc2() { cv++; static void Inc3() { iv++; // error iv es de un objeto static void Inc4() { Inc(); // error Inc necesita un obj. Inc2(); // Ok, porque Inc2 es static 28

Variables static El modificador de comportamiento permite que la variable actúe como global. Dentro de la misma clase no se coloca el nombre de la clase, únicamente el nombre de la variable. Sintaxis declaración: static tipo identificador; Invocación NombreClase.identificador; 29

Ejemplo class VarNativos{ public static boolean vb; private static short vs; private static int vi; public float vf; public class Main{ public static void main(string[] args){ System.out.println(VarNativos.vB); //System.out.println(vS); //error porque es privado VarNativos x=new VarNativos(); System.out.println(x.vF); 30

Bloques static El bloque estático se ejecuta cuando la clase es cargada. Si hay muchos bloques estáticos en una clase se ejecutan en orden de aparición. Ejemplo: class StaticBlock { static int i = 20; static { System.out.println( El bloque static dice: i = " + i); System.out.println( Yo soy mas rápido que el main!!"); i *= 2; public static void main(string args[]) { System.out.println( Main() dice: i = " + i); System.out.println( pensé que era ei primero..."); 31

Bloques static Usados también para inicializar campos static (v. de clase). Ejemplo: class Diccionario { public static final String diccionario[ ][ ]; static { diccionario=new String[2][2]; diccionario[0]=new String[ ] { Hola, hi ; diccionario[1]=new String[ ] { Adios, bye ; 32

Ejemplo static class Estatica { static int a = 3; static int b; static void show(int x) { System.out.println("x = " + x); System.out.println("a = " + a); System.out.println("b = " + b); static { System.out.println("Bloque estático inicializado"); b = a * 4; // aunque declarada como static //b se inicializa en tiempo de ejecución public static void main(string args[]) { show(15); 33

Métodos final final es un modificador de comportamiento. Cuando un método es final se indica que no puede ser sobreescrito. Si este modificador se aplica a una clase ésta no puede heredar. 34

Variables final Este tipo de variables indican que su valor no podrá ser modificado tras su carga inicial. Si una variable es public static final además se dice que dicha variable es una cosntante. Sintaxis: [modificador] final tipo_dato NOMBRE[=valor]; Ejemplo public static final int VAR=18; 35

Ejemplos blank final variable. Es una variable final que no ha sido inicializada, puede ser asignada en el constructor pero sólo UNA vez. Ejemplo final float vluz;... // sentencias del programa... vluz = 3.1+ 5F; //inicialización otravar= vluz * 2; Ver otros ejemplos en el tema 11(herencia) 36

Invocación de un método dentro de otro I public class Canario{ public void come(){ System.out.println( Comiendo alpiste ); public void vuela(){ System.out.println( Estoy volando ); public Canario(){ System.out.println( Me pareció ver un lindo gatito ); come(); public static void main(sting[] args){ Canario piolin=new Canario(); piolin.vuela(); 37

Método recursivo Un método recursivo es aquel que se llama (directa o indirectamente) a sí mismo. Debe contener: Un condicional: Un caso no recursivo Un caso recursivo (que se aproxima a la condición de parada) 38

Ejemplo1 recursión public static long metodo1(int s){ if (s == 1) return else return metodo1(s-1)+n; Si s vale 3 : llamada recursiva llamada recursiva llamada recursiva suma suma 39

Ejemplo2 recursión public static long ack(int n, int m){ if (n == 0) return (m+1); else if (m == 0) return ack(n-1,1); else return ack(n-1,ack(n,m-1); 40

Alcance de las variables Los objetos tienen un tiempo de vida y consumen recursos durante el mismo. Cuando un objeto no se va a utilizar más, debería liberar el espacio que ocupaba en la memoria de forma que las aplicaciones no la agoten (especialmente las grandes). Recordar que en Java, la recolección y liberación de memoria es responsabilidad del GC. De acuerdo al tipo de variable es el tiempo de vida que ocupan durante la ejecución del programa. 41

Alcance: variables locales Se crean cada vez que se ejecuta al bloque, pero sólo a partir del punto en el que se declararán. Desaparece cuando el bloque termina. Cuando se definen en el cuerpo de un método (o como parámetros) y si hay 25 llamadas, se crean 15 veces. Si un método se llama así mismo, se generan nuevas variables en el nuevo método. Desaparecen cuando el método devuelve su resultado. 42

Alcance: variables de referencia Variables de instancia. Llamadas también de objeto. Se crean al crear al objeto (con new) y desaparecen cuando el objeto deja de utilizarse. Variables de clase. Llamadas también static. Se crean al arrancar el programa y se destruyen cuando termina el programa. Siempre están disponibles 43