Unidad 5 y 6 2 Clase Clase a) Conjunto de datos (atributos) y funciones (mtodos) que definen la estructura de los objetos y los mecanismos para su manipulacin. b) Atributos y mtodos junto con interfaces y clases anidadas constituyen los miembros de una clase. 3 Que es una Clase ? En el software orientado a objetos es posible tener muchos objetos que compartan caractersticas comunes: clientes, facturas, pedidos, artculos, notas de ventas, pagos cuentas etc. Una clase software es una plantilla genrica que define las variables de instancia y mtodos de instancia de todos los objetos (instancias de clase) que forman la coleccin de objetos. A partir de una clase es posible crear objetos que compartan el mismo comportamiento, pero que cada uno de ellos posea un estado particular distinto. 4 Clase (Plantilla Genrica) 5 Estructura de una clase class NombreDeLaClase { // declaracin de las variables de instancia // declaracin de las variables de la clase metodoDeInstancia() { // variables locales // cdigo } metodoDeClase() { // variables locales // cdigo } } Todo forma parte de una clase Java NO soporta funciones o variables GLOBALES 6 Variables de la Clase Adems de las variables de instancia, de las cuales cada objeto posee un conjunto de las mismas; la clase puede obtener variables propias cuyo valor es nico para todos los objetos de la clase. Estas variables son conocidas como variables de clase, y pueden considerarse como variables globales a todos los objetos de la clase. Las variables de clase en java se declaran con la palabra static. 7 Instancia de una clase. Al disear sus primeros programas en Java, pudo notar que todo gira alrededor de instancias de Objetos que son manipuladas a travs de referencias:
Lampara candil = new Lampara(); candil.prender();
Al utilizar referencias en Java estas pueden ser inicializadas sin que pertenezcan a ninguna instancia de Objeto:
String let;
8 Instancia de una clase. La declaracin anterior genera una referencia, sin embargo, esta no es asociada con ninguna instancia de Objeto, para llevar acabo este proceso es necesario utilizar el vocablo new.
String let = new String("Algo sencillo")
La declaracin anterior no solo genera una instancia nueva de la Clase String, sino le asigna un valor inicial ("Algo sencillo") el cual es asignado a la referencia let; este mecanismo de agregar valores al generar una instancia es llevada acabo a travs de mtodos denominados constructores los cuales sern descritos posteriormente. 9 Instancia de una clase.
Para su uso es necesaria la declaracin, la instanciacin y la
inicializacin del objeto. class Empleado{ long idEmpleado = 0; String nombre = "SinNombre"; double sueldo = 0; } Declaracin. Empleado e; Instanciacin. e = new Empleado(); Se puede resumir en una nica instruccin: Empleado e = new Empleado(); 10 Instancia de una Clase 11 Instancia de una Clase 12 DEFINICIN DE CONSTRUCTORES El constructor de una clase es un mtodo estndar para inicializar los objetos de esa clase. Es una funcin que se ejecuta siempre al crear un objeto. Los constructores de una clase tienen siempre el nombre de la clase y no tiene ningn valor devuelto (ni siquiera void). Si el usuario no declara un constructor el sistema (En este caso Java) siempre crea un constructor por defecto sin argumentos. En el momento en el que el usuario define un constructor el constructor del sistema se elimina y es sustituido por el, o los, constructores definidos (al tratarse de un mtodo ms el constructor puede sobrecargarse). 13 Constructores de la clase El constructor lo que hace es crear o reservar en memoria la cantidad de bytes necesaria para la clase, y regresa la direccin donde esta este espacio, el cual es guardado en la identificador:
Deben tener el mismo nombre de la clase.
No es obligatorio definir un constructor para la clase. Si no se hace, el Java Runtime System provee uno por default, el cual crea la instancia de la clase. 14 Que es un constructor de la clase a) Constructor por omisin (constructor no-args): Asignatura(){} b) Bloques de sentencias declarado dentro de una clase con el mismo nombre que la clase y sin valor de retorno. c) Las sentencias inicializan la instancia y se invocan despus de asignar los valores por omisin de los atributos. d) Para inicializar un objeto basta con llamar a su constructor despus de la palabra reservada new y asignarlo a una referencia declarada previamente. e) Un constructor es un mtodo que se ejecuta cada vez que se crea un objeto, el propsito de este procedimiento es el de inicializar los datos del objeto. El nombre del constructor siempre es igual al nombre de la clase. 15 Ejemplo de constructor de la clase Empleado(String nom){ //constructor nombre = nom; }
//creacin del objeto Empleado e = new Empleado(Enrique Martnez); Un constructor Se invoca automticamente cuando new crea un objeto de esa clase. 16 Ejemplo Constructores 1/2 package unidad_5;
public class Arboles { public static void main(String args[]) { Arboles arbol1 = new Arboles(); Arboles arbol2 = new Arboles("Cedro"); Arboles arbol3 = new Arboles(4); Arboles arboli4 = new Arboles(6, "pino"); } public Arboles() { System.out.println("Clasificacion de los Arboles"); }
17 Ejemplo Constructores 2/2 public Arboles(String tipo) { System.out.println("Este arbol se llama " + tipo); } public Arboles(int altura) { System.out.println("y tiene una altura de " + altura + " metros"); } public Arboles(int altura,String tipo) { System.out.println("Este arbol se llama " + tipo + " y tiene una altura de " + altura + " metros"); } } 18 Ejemplo (Clase Arboles)
a) Como en todo programa Java , primeramente se define la Clase a travs del vocablo class. b) Posteriormente son definidos 4 Constructores; ntese que cada uno recibe el mismo nombre de la Clase y posee distintos argumentos de entrada. c) Dentro del mtodo principal (main) son generadas cuatro instancias de la Clase, como se puede observar, al ser generada la instancia a travs del vocablo new se pasa un parmetro, y es dependiendo de este parmetro que es llamado el Constructor correspondiente, el cual a su vez invoca la Clase System.out.println que imprime a pantalla.
19 Modificadores de clase public, todo el mundo puede acceder a ella. Sin este modificador slo podran acceder los miembros de su clase o los de las clases de su paquete. abstract, clase incompleta de la que no se pueden crear instancias. Se utiliza para implementar superclases que las clases hijas debern completar. final, no admite subclases por lo que no se podrn sobreescribir. Todos sus mtodos sern a su vez final, por lo que no podrn ser Sobreescritos. synchronizable, todos sus mtodos son sincronizables, es decir no se puede acceder a ellos desde distintos hilos (threads) de ejecucin. 20 Accesibilidad de las clases a) Por omisin: acceso de paquete (friendly o amistoso). La clase slo puede ser utilizada por otras clases del paquete. b) Modificador public: permite que sea utilizada por otras clases. Slo puede haber una clase pblica por unidad de compilacin. Su nombre debe coincidir con el de la unidad de compilacin. Puede haber una unidad de compilacin sin clases pblicas. a) No hay clases private.