Вы находитесь на странице: 1из 22

Subsecretara de Educacin Superior

Direccin General de Educacin Superior Tecnolgica

INSTITUTO TECNOLGICO DE SALINA CRUZ

INGENIERA EN TECNOLOGIAS DE LA INFORMACION Y DE LAS COMUNICACIONES

MATERIA

PROGRAMACION ORIENTADA A OBJETOS

PROFESORA MC. SUSANA MONICA ROMAN NAJERA

TEMA IV. METODOS

ALUMNO MEJIA BALAN FRANCISCO SABINO

SALINA CRUZ, OAXACA A 27 DE ABRIL DEL 2012

INTRODUCCION
En la programacin orientada a objetos, un mtodo es una subrutina asociada exclusivamente a una clase (llamados mtodos de clase o mtodos estticos) o a un objeto (llamados mtodos de instancia). Anlogamente a los procedimientos en los lenguajes imperativos, un mtodo consiste generalmente de una serie de sentencias para llevar a cabo una accin, un juego de parmetros de entrada que regularn dicha accin y o, posiblemente, un valor de salida (o valor de retorno) de algn tipo. Algunos lenguajes de programacin asumen que un mtodo debe de mantener el invariante del objeto al que est asociado asumiendo tambin que ste es vlido cuando el mtodo es invocado. En lenguajes compilados dinmicamente, los mtodos pueden ser objetos de primera clase, y en este caso se puede compilar un mtodo sin asociarse a ninguna clase en particular, y luego asociar el vnculo o contrato entre el objeto y el mtodo en tiempo de ejecucin. En cambio en lenguajes no compilados dinmicamente o tipeados estticamente, se acude a precondiciones para regular los parmetros del mtodo y post condiciones para regular su salida (en caso de tenerla). Si alguna de las precondiciones o post condiciones es falsa el mtodo genera una excepcin. Si el estado del objeto no satisface la invariante de su clase al comenzar o finalizar un mtodo, se considera que el programa tiene un error de programacin. La diferencia entre un procedimiento (generalmente llamado funcin si devuelve un valor) y un mtodo es que ste ltimo, al estar asociado con un objeto o clase en particular, puede acceder y modificar los datos privados del objeto correspondiente de forma tal que sea consistente con el comportamiento deseado para el mismo. As, es recomendable entender a un mtodo no como una secuencia de instrucciones sino como la forma en que el objeto es til (el mtodo para hacer su trabajo). Por lo tanto, podemos considerar al mtodo como el pedido a un objeto para que realice una tarea determinada o como la va para enviar un mensaje al objeto y que ste reaccione acorde a dicho mensaje.

INDICE
TEMAS 4.1 DEFINICION DE UN METO 4.2 ESTRUCTURA DE UN METODO 4.3 VALOR DE RETORNO 4.4 DECLARACION DE UN METODO 4.5 AMBITO Y TIEMPO DE VIDA DE VARIABLES 4.6 ARGUMENTOS Y PASO DE PARAMETROS 4.7 SOBRECARGA DE METODOS 4.8 ENCAPSULAMIENTO

4.1 DEFINICION DE UN METODO


Los mtodos reflejan el comportamiento de los objetos. El comportamiento de clase determina que instancias de esa clase requieren cambiar su estado interno o cuando esa instancia es llamada para realizar algo por otra clase u objeto. El comportamiento es la nica manera en que los objetos pueden hacerse algo a s mismos o tener que hacerles algo. Algunos comportamientos para nuestra clase de ejemplo: saludar como hola soy Homero dameTuEdad como 40 o 15 Los mtodos son la interfaz de comunicacin del objeto con el mundo exterior, permiten mandar mensajes a los objetos para que realicen cosas. Por ejemplo: Si alguna vez jugaste Mario Bross o un video juego parecido, recordaras que para hacer que Mario salte o bote fuego haba que apretar algunos botones del mando, pues as es la utilizacin de los mtodos de un objeto, en este caso para hacer que el objeto Mario salte, pues le mandamos un mensaje desde el mando para esto, apretando un botn, si quisiramos que bote fuego, pues apretamos otro botn. Los mtodos no siempre afectan a un solo objeto; los objetos tambin se comunican entre s mediante el uso de mtodos. Un objeto puede llamar a mtodos en otro objeto para avisar sobre los cambios en el ambiente o para solicitarle a ese objeto que cambie su estado.

CARACTERISTICAS DE LOS METODOS: 1.-Contiene una o ms declaraciones 2.-Cada mtodo tiene un nombre y este nombre se utiliza para llamar al mtodo (las palabras clave no pueden ser utilizadas como el nombre del mtodo). 3.-Debe llevar parntesis despus del nombre. 4.-El mtodo main () est reservado por java como el mtodo que inicializa la ejecucin del programa.

4.2 ESTRUCTURA DE UN METODO

Los mtodos en java pueden tener parmetros, es decir, que un mtodo puede utilizar variables predefinidas para ser utilizadas en sus procesos, Veamos un ejemplo de cmo hacer un mtodo en el siguiente ejemplo En este ejemplo vemos un programa normal en el cual se ejecuta un ciclo while que imprime nmeros del 0 al 7, pero es posible hacerlo utilizando un mtodo?

01 package ciclos; 02 03 /** 04 * 05 * @author xymind 06 */ 07 public class Main { 08 09 /** 10 * @param args the command line arguments 11 */ 12 public static void main(String[] args) { 13 14 int x=0; 15 while(x!=7) 16 { 17 System.out.println("X vale: "+x); 18 x++; 19 20 } 21 } 22 23 }

Ahora utilizaremos este mismo programa pero el ciclo se ejecutara en un mtodo:

01 package ciclos; 02 03 /** 04 * 05 * @author xymind 06 */ 07 public class Main { 08 09 /** 10 * @param args the command line arguments 11 */ 12 public static void main(String[] args) { 13 14 iniciarCiclo();//aqui estamos ejecutando el metodo escrito en 15 //la parte de abajo, se puede utilizar mas de 1 vez 16 } 17 18 /*Comienza el metodo 19 Este metodo no regresa valores, es un metodo que unicamente 20 realiza un procedimiento, por lo que se declara como "void" seguido del 21 nombre que tendra el metodo*/ 22 public void iniciarCiclo(){ 23 24 int x=0; 25 while(x!=7) 26 { 27 System.out.println("X vale: "+x); 28 x++; 29 30 } 31 } 32 33 }

Los dos anteriores programas hacen exactamente lo mismo a diferencia de que el segundo programa est utilizando un mtodo. En este ltimo ejemplo se mostrara un mtodo que regrese un valor, estos mtodos se declaran diferente y siempre deben terminar con la palabra "return var;" donde "var" es una variable cualquiera del mismo tipo del mtodo. Ejemplo: Declaramos el mtodo:
..// 1 public int obtenerValor(){ 2 int x=10; 3 return x; 4} //..

Ntese que se utiliza "int" en lugar de "void", lo cual indica que se regresara una variable del tipo integer o numrico, por lo que dentro del mtodo se declara int x=10; que es precisamente un valor numrico, y se regresa el valor de x, es decir 10. Finalmente el mtodo puede ser usado para obtener el valor de 10 del siguiente modo. //..codigo...//
1 int variable; 2 3 variable = obtenerValor(); //estamos diciendo que variable vale ahora 10.

//..mas codigo...// Utilizando parmetros Se puede utilizar parmetros en un mtodo. En el siguiente ejemplo se utilizara un parmetro el cual es un valor que se puede asignar al mtodo para realizar operaciones, este puede ser variable y se obtendrn diferentes resultados dependiendo del valor asignado.

Declaramos el mtodo:
..// 1 public int obtenerValor(int parametro){ 2 //notese que dentro de los parentesis se declara una variable 3 //esta variable es el parametro 4 int x=parametro/2; 5 //utilizamos una variable x para calcular el parametro dividido entre 2 6 return x;//se obtiene finalmente la variable "parametro" dividida entre 2 7}

//..Vemos que este mtodo utiliza un parmetro, y el resultado del mismo es este parmetro pero dividido entre 2, si el parmetro varia, entonces vemos que el resultado tambin. Su implementacin en cdigo seria algo as: //..cdigo...//
view source print? 1 int variable; 2 3 variable = obtenerValor(10); //debido a que el parametro es 10, la variable valdra 5 4 //pues el metodo regresa la division del parametro entre 2.

4.3 VALOR DE RETORNO


Cuando un programa termina de ejecutarse, devuelve o retorna un valor. En el caso de los programas, el valor de retorno es un nmero. El valor es cero (0) si el programa finaliz con xito o distinto de cero si el programa no finaliz con xito. Cada uno de los valores distintos de cero va asociado a una causa distinta (sabiendo este valor podramos saber por qu razn fall el programa), pero puede que por ahora no lo necesites. En Java existe una serie de reglas para el retorno de valores en los mtodos. Resumidamente son: 1. En un mtodo que devuelve un objeto (de hecho, una referencia), se puede devolver null 2. Un array (o arreglo) es un tipo de retorno legal 3. Un mtodo con tipo de retorno void no devuelve nada! 4. En un mtodo que devuelve un tipo de dato primitivo, se puede devolver cualquier valor o variable que pueda ser implcitamente convertida hacia el tipo de retorno declarado 5. En un mtodo con un tipo de dato primitivo como retorno, se puede devolver cualquier valor o variable que pueda ser casteada hacia el tipo de retorno declarado 6. En un mtodo con un objeto como tipo de retorno, se puede devolver cualquier tipo de objeto que pueda ser implcitamente convertido hacia el tipo de retorno declarado

En un mtodo que devuelve un objeto (de hecho, una referencia), se puede devolver null.
public Button metodo() { return null; }

Un array (o arreglo) es un tipo de retorno legal.


public String[] metodo() { return new String[] {"hugo","paco","luis"}; }

Un mtodo con tipo de retorno void no devuelve nada!


public void inicializar() { return; }

En un mtodo con un tipo de dato primitivo como retorno, se puede devolver cualquier valor o variable que pueda ser implcitamente convertida hacia el tipo de retorno declarado.
public int Turno() { char c = 'c'; return c; //devuelve un char casteado a int }

En un mtodo con un tipo de dato primitivo como retorno, se puede devolver cualquier valor o variable que pueda ser casteada hacia el tipo de retorno declarado.
public int Peso() { float f = 79.5f; return (int) f; }

En un mtodo con un objeto como tipo de retorno se puede devolver cualquier tipo de objeto que pueda ser implcitamente convertido hacia el tipo de retorno declarado .
public Figura getFigura() { return new Triangulo; //Triangulo extends Figura }

4.4

DECLARACION DE UN METODO

En Java toda la lgica de programacin (Algoritmos) est agrupada en funciones o mtodos. Un mtodo es:

Un bloque de cdigo que tiene un nombre, recibe unos parmetros o argumentos (opcionalmente), contiene sentencias o instrucciones para realizar algo (opcionalmente) y devuelve un valor de algn Tipo conocido (opcionalmente).

La sintaxis global es: Tipo_Valor_devuelto nombre_mtodo ( lista_argumentos ) { bloque_de_codigo; } y la lista de argumentos se expresa declarando el tipo y nombre de los mismos (como en las declaraciones de variables). Si hay ms de uno se separan por comas. Por ejemplo: int sumaEnteros ( int a, int b ) { int c = a + b; return c; }

El mtodo se llama sumaEnteros. Recibe dos parmetros tambin enteros. Sus nombres son a y b. Devuelve un entero.

En el ejemplo la clasula return se usa para finalizar el mtodo devolviendo el valor de la variable c.

A declaracin mnima sin modificadores de un mtodo es:


TipoDevuelto NombreMetodo (Lista_Parametros)

Donde:

TipoDevuelto es el tipo de dato devuelto por el mtodo (funcin). Si el mtodo no devuelve ningn valor, en su lugar se indica la palabra reservada void. NombreMetodo es un identificado vlido en Java. Lista_Parametros si tiene parmetros, es una sucesin de pares tipo - valor separado por comas. Los parmetros pueden ser tambin objetos. Los tipos simples de datos se pasan siempre por valor y los objetos y vectores por referencia

Cuando se declara una subclase, esa subclase hereda, en principio, todos los atributos y mtodos de la superclase (clase padre). Estos mtodos pueden ser redefinidos en la clase hija simplemente declarando mtodos con los mismos identificadores, parmetros y tipo devuelto que los de la superclase. Si desde uno de estos mtodos redefinidos se desea realizar una llamada al mtodo de la superclase, se utiliza el identificador de la superclase y se le pasan los parmetros. Tambin se pueden declarar mtodos para una misma clase con los mismos identificadores pero con parmetros distintos. EJEMPLO:
class Mayor{ // declara 2 metodos con el mismo identificativo // uno de ellos acepta 2 enteros y el otro 2 // enteros largos. // ambos metodos devuelven el valor mayor de los // dos enteros que se pasan como parametros. static int mayor (int x, int y) { if (x>y){ return x; } else { return y; } } static long mayor (long x, long y){ if (x>y){ return x; } else { return y; } }

} class constantesMayor{ static final int INT = 15; static final long LONG = 15; } class SubMayor extends Mayor{ // modifica la clase mayor de la siguiente forma: // los metodos devuelven el valor mayor de entre // los 2 parametros que se le pasan, pero // siempre, como minimo devuelve el valor // de las constantes INT y LONG static int mayor (int x, int y){ // llama al metodo mayor de la superclase int m = Mayor.mayor(x,y); return Mayor.mayor(m,constantesMayor.INT); } static long mayor (long x, long y){ // llama al metodo mayor de la superclase long m = Mayor.mayor(x,y); return Mayor.mayor(m,constantesMayor.LONG); } } class ejecutaMayor{ public static void main (String args[]){ int int1=12, int2=14; long long1=20, long2=10; System.out.println("Enteros:"); System.out.println("mayor de 12 y 14 = "+ Mayor.mayor(int1, int2)); System.out.println("mayor de 12 y 14 y 15 = " + SubMayor.mayor(int1,int2)); System.out.println("Enteros largos:"); System.out.println("mayor de 20 y 10 = "+Mayor.mayor(long1, long2)); System.out.println("mayor de 20 y 10 y 15 = " + SubMayor.mayor(long1,long2)); } }

4.5 AMBITO Y TIEMPO DE VIDA DE VARIABLES

mbito de vida El mbito de una variable u objeto es el espacio del programa en el que esa variable existe. Por ello, se habla de mbito de vida De forma general (hay excepciones que veremos ms adelante), la vida de una variable comienza con su declaracin y termina en el bloque en el que fue declarada (los bloques de cdigo se delimitan por llaves: {}). Por ejemplo, cul es el mbito de la variable radio y del vector args?:

public static void main(String[] args) { double PI = 3.1416; double radio = 3; System.out.println( El rea es + (PI*radio*radio) ); } Tipos de mbito Ya vimos que el mbito de una variable u objeto es el espacio del programa en el que esa variable existe. Por ello, se habla de mbito de vida Los principales tipos de mbitos son: mbito de objeto. Los atributos de un objeto (que no son static) viven en el espacio de vida del objeto y son accesibles por cualquier mtodo del objeto (siempre que el mtodo no sea static). Por ello, a veces se llaman variables de objeto o variables de instancia mbito de mtodo. Variables y objetos declarados en un mtodo. Su mbito de vida se cie al mtodo en el que fueron declaradas, por ello a veces se llaman variables de mtodo o funcin mbito de clase. Las variables static viven con independencia de que hayamos hecho instancias de la clase. Podemos acceder a ellas (si son pblicas) usando el nombre de la clase y viven desde que se declara la clase, por ello se llaman variables de clase.

4.6 ARGUMENTOS Y PASO DE PARAMETROS

En el paso de parmetros a funciones hay dos aproximaciones clsicas: el paso por valor y paso por referencia. En el paso por valor se realiza una copia de los valores que se pasan, trabajando dentro de la funcin con la copia. Es por ello que cualquier cambio que sufran dentro, no repercute fuera de la funcin. En el paso por referencia no se realiza dicha copia, por lo que las modificaciones de dentro de las funciones afectan a los parmetros y esos cambios permanecen al final de la funcin. En Java el paso por parmetro es por valor, aunque los efectos son de paso por referencia cuando los argumentos son objetos. cmo sucede eso? Pues es muy fcil, si una funcin tiene como argumento un tipo primitivo (int, float, etc...), en Java se realiza una copia para la funcin y cualquier cambio a dicho argumento no afecta a la variable original. Este paso de parmetros en Java est orientado a utilizar el valor de la variable para otros clculos. En el caso de los objetos es distinto. En realidad lo que sucede es que en Java siempre tenemos referencias a los objetos. Por eso al pasar a una funcin como argumento un objeto, pasamos la referencia al mismo, es decir, aunque se hace una copia para el paso por valor, como lo que se copia es una referencia, los cambios al objeto referenciado s son visibles y afectan fuera de la funcin. La nica excepcin es la clase String , cuyos objetos no son mutables. Cualquier modificacin de un objeto String lleva aparejada la creacin de una nueva instancia del objeto. Si deseamos el mismo comportamiento para el paso de parmetros del resto de objetos, tenemos que recurrir al objeto StringBuffer. Las palabras parmetro y argumento, aunque de significado similar, tiene distintas connotaciones semnticas: Se denominan parmetros los tipos declarados en el prototipo 4.4.1 (que deben corresponder con los declarados en la definicin 4.4.2). Cuando se realiza una llamada a la funcin, los valores pasados se denominan argumentos. A veces se utilizan tambin las expresiones argumentos formales, para los parmetros y argumentos actuales para los valores pasados. Parmetros (en prototipo o definicin) argumentos formales

Valores pasados (en tiempo de ejecucin) argumentos actuales 2 La sintaxis utilizada para la declaracin de la lista de parmetros formales es similar a la utilizada en la declaracin de cualquier identificador. A continuacin se exponen varios ejemplos: int func(void) {} // sin parmetros inf func() {} // dem. int func(T1 t1, T2 t2, T3 t3=1) {} // tres parmetros simples, // uno con argumento por defecto int func(T1* ptr1, T2& tref) {} // los argumentos son un puntero y // una referencia. int func(register int i) {} // Peticin de uso de registro para

// argumento (entero) int func(char* str,) {} /* Una cadena y cierto nmero de otros argumentos, o un nmero fijo de argumentos de tipos variables */ 3 Los argumentos son siempre objetos. Sus tipos pueden ser: escalares; estructuras; uniones, o enumeraciones; clases definidas por el usuario; punteros o referencias a estructuras y uniones, o punteros a funciones, a clases o a matrices. El tipo void est permitido como nico parmetro formal. Significa que la funcin no recibe ningn argumento : d(o_O)b Existen dos formas de enviar parmetros a una funcin ::. Por valor: cualquier cambio que se realice dentro de la funcin en el argumento enviado, NO afectar al valor original de las variables utilizadas en la llamada. Es como si trabajaramos con una copia, no con el original. No es posible enviar por valor arrays, deberemos hacerlo por referencia. Por referencia: lo que hacemos es enviar a la funcin la direccin de memoria donde se encuentra la variable o dato. Cualquier modificacin SI afectar a las variables utilizadas en la llamada. Trabajamos directamente con el original.

4.7 SOBRECARGA DE METODOS


Un mtodo sobrecargado se utiliza para reutilizar el nombre de un mtodo pero con diferentes argumentos (opcionalmente un tipo diferente de retorno). Las reglas para sobrecargar un mtodo son las siguientes: + Los mtodos sobrecargados debe de cambiar la lista de argumentos. + Pueden cambiar el tipo de retorno. + Pueden cambiar el modificador de acceso. + Pueden declarar nuevas o ms amplias excepciones. + Un mtodo puede ser sobrecargado en la misma clase o en una subclase. Veamos un mtodo que se desea sobrecargar: public void cambiarTamano(int tamano, String nombre, float patron){ } Los siguientes mtodos son sobrecargas legales del mtodo cambiarTamano(): public void cambiarTamano(int tamano, String nombre){} public int cambiarTamano(int tamano, float patron){} public void cambiarTamano(float patron, String nombre) throws IOException{}

Cmo invocar un mtodo sobrecargado: Lo que define qu mtodo es el que se va a llamar son los argumentos que se envan al mismo durante la llamada. Si se invoca a un mtodo con un String como argumento, se ejecutar el mtodo que tome un String como argumento, si se manda a llamar al mismo mtodo pero con un float como argumento, se ejecutar el mtodo que tome un float como argumento y as sucesivamente. Si se invoca a un mtodo con un argumento que no es definido en ninguna de las versiones sobrecargadas entonces el compilador arrojar un mensaje de error. Ejemplo de una clase con un mtodo sobrecargado: public class Sobrecarga { public void Numeros(int x, int y){ System.out.println("Mtodo que recibe enteros."); } public void Numeros(double x, double y){ System.out.println("Mtodo que recibe flotantes."); } public void Numeros(String cadena){ System.out.println("Mtodo que recibe una cadena: "+ cadena); } public static void main (String... args){ Sobrecarga s = new Sobrecarga(); int a = 1; int b = 2; s.Numeros(a,b); s.Numeros(3.2,5.7); s.Numeros("Monillo007"); } } Al ejecutar el cdigo anterior obtendremos lo siguiente: Mtodo que recibe enteros. Mtodo que recibe flotantes. Mtodo que recibe una cadena: Monillo007

Al utilizar objetos en lugar de tipos primitivos o cadenas se vuelve ms interesante. Veamos lo que sucede cuando se tiene un mtodo sobrecargado que en una de sus versiones toma un Animal como parmetro y en otra un Caballo. class Animal { } class Caballo extends Animal{ } class Animales{ public void MetodoSobrecargado(Animal a){ System.out.println("Mtodo de parmetro Animal..."); } public void MetodoSobrecargado(Caballo c){ System.out.println("Mtodo de parmetro Caballo..."); } public static void main(String... args){ Animales as = new Animales(); Animal objetoAnimal = new Animal(); Caballo objetoCaballo = new Caballo(); as.MetodoSobrecargado(objetoAnimal); as.MetodoSobrecargado(objetoCaballo); } } Al ejecutar el cdigo anterior obtenemos: Mtodo de parmetro Animal... Mtodo de parmetro Caballo... Como era de esperarse, cada objeto manda a llamar al mtodo que le corresponde de acuerdo a su tipo, pero qu pasa si creamos una referencia Animal sobre un objeto Caballo... Animal objetoAnimalRefCaballo = new Caballo(); as.MetodoSobrecargado(objetoAnimalRefCaballo); El resultado es: Mtodo de parmetro Animal...

Aunque en tiempo de ejecucin el objeto es un Caballo y no un Animal, la eleccin de qu mtodo sobrecargado invocar no se realiza dinmicamente en tiempo de ejecucin, el tipo de referencia, no el objeto actual, es el que determina qu mtodo es el que se ejecutar. Reglas de la sobrecarga y sobreescritura de mtodos:: Ahora que hemos visto ambas formas de reescribir mtodos, revisemos las reglas y diferencias entre ambos tipos de reescritura: +Argumentos: En un mtodo sobrecargado los argumentos deben de cambiar mientras que en un mtodo sobreescrito NO deben cambiar. + El tipo de retorno: En un mtodo sobrecargado el tipo de retorno puede cambiar, en un mtodo sobreescrito NO puede cambiar, excepto por subtipos del tipo declarado originalmente. + Excepciones: En un mtodo sobrecargado las excepciones pueden cambiar, en un mtodo sobreescrito pueden reducirse o eliminarse pero NO deben de arrojarse excepciones nuevas o ms amplias. + Acceso: En un mtodo sobrecargado puede cambiar, en un mtodo sobreescrito el acceso NO debe de hacerse ms restrictivo (puede ser menos restrictivo). + Al invocar: En un mtodo sobrecargado los argumentos son los que determinan qu mtodo es el que se invocar, en un mtodo sobreescrito el tipo de objeto determina qu mtodo es elegido.

4.8 ENCAPSULAMIENTO

Imaginemos que se crea una clase, una docena de programadores tienen acceso a dicha clase y la utilizan a discrecin, posteriormente dicha clase comienza a comportarse de una manera inesperada debido a que los valores que algunas variables han tomado no fueron anticipados y todo comienza a desmoronarse. Para corregir el problema se crea una versin ms nueva de dicha clase y listo. Bueno, a esto le llamamos flexibilidad y capacidad de mantenimiento, ambas son caractersticas y beneficios de la programacin Orientada a Objetos (OO) pero para que una clase pueda cumplir dichas funciones los programadores debemos de hacer algo. Imaginemos que creamos una clase con variables de instancia pblicas a las cuales podemos acceder sin problemas desde fuera de la misma clase...

Analizando el cdigo anterior podemos darnos cuenta de que las variables enteras tipo y clase son pblicas y pueden ser accedidas directamente a travs de una instancia de la clase MiClase, esto compila sin ningn problema, digamos que es 'legal', sin embargo, qu pasa si ingresamos un valor que no se supone debe de tener una variable (en este caso el -5 que le asignamos a tipo)?, simplemente no hay nada que nos detenga para hacerlo. La nica manera de proteger el cdigo es escribiendo un mtodo que nos permita regular los valores que cada variable puede tener y escondiendo las variables para que no se pueda acceder a ellas de manera directa, esto es el principio bsico de encapsulamiento. Si se desea flexibilidad, buen mantenimiento y extensibilidad, nuestro diseo en el cdigo debe de incluir encapsulamiento, para ello debemos de hacer lo siguiente: 1. Mantener las variables de instancia protegidas (puede ser con un modificador de acceso, p.ej., private).

2. Hacer mtodos de acceso pblicos para forzar al acceso a las variables por medio de dichos mtodos en lugar de acceder directamente. 3. Utilizar las convenciones de cdigo para los nombres de los mtodos, p. ej., set y get. El ejemplo anterior modificado para un buen encapsulamiento quedara as:

Si nos fijamos un poquito, en el mtodo setTipo() no existen validaciones para prevenir que un valor no vlido sea asignado a la variable, sin embargo, el proveer de un mtodo de este tipo desde el diseo inicial de la aplicacin nos permite posteriormente modificar el comportamiento de la misma sin afectar los mtodos utilizados, tal vez en un futuro se desee que dicha variable solamente pueda tener uno entre un rango de valores y se podrn aplicar posteriormente los cambios sin que haya repercusiones negativas.

FUENTES CONSULTADAS
http://www.mitecnologico.com/Main/ValorDeRetorno http://www.arrakis.es/~abelp/ApuntesJava/ElementosBasicosAlgoritmos.htm http://www.mitecnologico.com/Main/AmbitoYTiempoDeVidaDeVariables http://www.webtaller.com/construccion/lenguajes/java/lecciones/paso-parametros-funcionesjava.php http://www.ciberaula.com/articulo/encapsulacion_java/ http://www.mitecnologico.com/Main/SobrecargaDeMetodos http://www.mitecnologico.com/Main/ArgumentosYPasoDeParametros http://www.mitecnologico.com/Main/AmbitoYTiempoDeVidaDeVariables

Вам также может понравиться