Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Clases y Objetos Parte del material es extracto y traducción del Libro “Head First Java. 2nd.Edition” . Kathy Sierra & Bert Bates . O'Reilly 2005 Ing. Marcelo Paris (2008) Las cosas que un objeto sabe de si mismo son denominadas Variables de Instancia Las cosas que un objeto hace son denominadas Métodos Las variables de instacia representan el estado del objeto. Los métodos representan el comportamiento del objeto. Cuando diseña una clase, piense en los objetos que serán creados a partir del tipo de la clase. Piense en: Cosas que el objeto sabe. Cosas que el objeto hace. CarroDeCompras items agregarItem() quitarItem() confirmar() sabe hace Button label color setLabel() setColor() presionar() sabe hace Alarma duracion modo setDuracion() getDuracion() estaActiva() activar() sabe hace Pensando en Objetos Variables de Instancia (estado) Canción título artista setTitulo() getArtista() play() sabe hace Métodos (comportamiento) Ing. Marcelo Paris (2008) Variables de Instancia Televisor Métodos Ejercicio - Pensando en Objetos Complete con lo que necesita saber y hacer un objeto del tipo Televisor. Ing. Marcelo Paris (2008) Cual es la diferencia entre Clase y Objeto? Una Clase no es un Objeto (pero es utilizada para construirlo) Una Clase es un plano de diseño para un objeto. Cada objeto creado desde la clase tiene sus propios valores para las variables de instancia de esa clase. Por ej. puede utilizar la clase Button para crear docenas de diferentes botones y cada uno de estos podrá tener sus propio color, tamaño, rótulo, forma, etc. Perro edad raza nombre ladrar() Una Clase Muchos Objetos Ing. Marcelo Paris (2008) Construyendo su primer Objeto (1) Escriba su Clase Perro edad raza nombre ladrar() class Perro { int edad ; String raza ; String nombre; void ladrar(){ System.out.println("Guau! Guau!"); } } (2) Escriba una Clase de Prueba class TestPerro { public static void main(String[] args) { // el código de prueba estará aqui } } (3) En la prueba, cree un Objeto y accesa a variables de instancia y métodos class TestPerro { public static void main(String[] args) { Perro unPerro = new Perro(); unPerro.edad=3; unPerro.ladrar(); } } El Operador Punto (.) Permite el acceso a las variables de instancia y métodos del objeto Ing. Marcelo Paris (2008) Declaración, creación y asignación de Objeto (1) Declarar una variable de referencia (2) Crear un objeto (3) Unir el objeto y la referencia Perro unPerro = new Perro(); Perro unPerro = new Perro(); Perro unPerro = new Perro(); Perro unPerro = new Perro(); Ref.Perro unPerro Objeto Perro raza:__ edad:__ nombre:__ Ing. Marcelo Paris (2008) class Pelicula { String titulo; String genero; int calificacion; void reproducir(){ System.out.println("Reproduciendo pelicula"); } } public class TestPelicula { public static void main(String[] args) { Pelicula uno = new Pelicula(); uno.titulo="Java 2 vs Alien"; uno.genero="Ciencia Ficcion"; uno.calificacion=5; Pelicula dos = new Pelicula(); dos.titulo = "Perdidos en POO"; dos.genero = "Documental"; dos.calificacion = 4 ; dos.reproducir(); Pelicula tres = new Pelicula(); tres.titulo = "Quien es Polimorfico?"; tres.genero = "Comedia"; tres.calificacion = -127; } } Pelicula titulo genero calificacion reproducir() titulo genero calificacion Objeto uno titulo genero calificacion Objeto dos titulo genero calificacion Objeto tres La clase TestPelicula crea objetos (instancias) de la clase Pelicula y utiliza el operador (.) para setear las variables de instancia a un valor específico. La clase TestPelicula también invoca (llama) un método sobre uno de los objetos. Complete las fichas con los valores que tendrán los tres objetos al final del método main. Ejercicio – Creando y Testeando Objetos Ing. Marcelo Paris (2008) class Grabadora{ boolean puedeGrabar = false; void reproducir(){ System.out.println("reproduciendo"); } void grabar(){ System.out.println("grabando"); } } class TestGrabadora { public static void main(String[] args) { g.puedeGrabar=true; g.reproducir(); if ( g.puedeGrabar == true ){ g.grabar(); } } } class ReproductorDVD { boolean puedeGrabar = false; void grabar(){ System.out.println("grabando DVD"); } } class TestReproductorDVD { public static void main(String[] args) { ReproductorDVD d = new ReproductorDVD(); d.puedeGrabar=true; d.reproducir(); if ( d.puedeGrabar == true ){ d.grabar(); } } } Ejercicio – Sea un Compilador Cada archivo java representa un código fuente completo.El ejercicio consiste en cumplir el rol del compilador sobre los códigos fuentes y determinar cual de estos compilarán correctamente. Si no compilan, como los corregiría para solucionar el problema y si compilan cual sera su salida? A B Ing. Marcelo Paris (2008) Bateria b = new Bateria();Bateria b = new Bateria(); boolean platillo = true; boolean bombo = true; boolean platillo = true; boolean bombo = true; void tocarPlatillo(){ System.out.println("ding ding ding"); } void tocarPlatillo(){ System.out.println("ding ding ding"); } public static void main(String[] args) {public static void main(String[] args) { if ( b.platillo == true ){ b.tocarPlatillo(); } if ( b.platillo == true ){ b.tocarPlatillo(); } b.platillo=false;b.platillo=false; class TestBateria {class TestBateria { b.tocarBombo();b.tocarBombo(); class Bateria {class Bateria { b.tocarPlatillo();b.tocarPlatillo(); void tocarBombo(){ System.out.println("bum bum bum"); } void tocarBombo(){ System.out.println("bum bum bum"); } Ejercicio – Reordenar Código Reorganizar el código para que el programa compile y tenga por resultado la salida indicada. Complete las llaves ( “{“,”}” ) que necesite. Ing. Marcelo Paris (2008) Ejercicio – Quien soy? Soy compilado desde un archivo .java ___________________ Mis valores de variable de instancia pueden ser diferentes de los valores de mis amigos ___________________ Me comporto como una Plantilla ___________________ Me gusta hacer cosas ___________________ Puedo tener varios métodos ___________________ Yo represento el “estado” ___________________ Yo tengo comportamientos ___________________ Estoy ubicado dentro de los objetos ___________________ Vivo en la Memoria (“Heap”) ___________________ Soy utilizado para crear instancias de objetos ___________________ Mi estado puede cambiar ___________________ Declaro métodos ___________________ Puedo cambiar en tiempo de ejecución ___________________ Identifique a partir de cada comentario cual o cuales pueden ser los elementos a los cuales aplica: Clase,Método,Objeto,Variable de Instancia Ing. Marcelo Paris (2008) Puntos Importantes ● La programación Orientada a Objetos nos permite extender un programa sin tener que tocar código en funcionamiento previamente testeado. ● Todo código Java esta definido en una Clase. ● Una clase describe como crear un objeto de ese tipo de clase. La clase es semejande a un plano de construcción. ● Un objeto se cuida a si mismo; no tenemos que conocer o preocuparnos como el objeto lo hace. ● Un objeto sabe cosas y hace cosas. ● Las cosas queun objeto conoce de si mismo se denominan variables de instancia. Estas representan el estado de un objeto. ● Las cosas que un objeto hace son se denominan métodos. Estos representan el comportamiento del objeto. ● En tiempo de ejecución, un programa java es nada mas que varios objetos “conversando” con otros objetos. Ing. Marcelo Paris (2008) Encapsulación La encapsulación es cuando ocultamos parte de los datos para el resto de la aplicación, y limitamos la posibilidad que otras partes del código accedan a estos datos. La Encapsulación se produce cuando protegemos la información de nuestro código para que no sea utilizada incorrectamen te. Dado valor tirar() class Dado { int valor = 6; void tirar(){ valor = (int)(Math.random()*6)+1; } } public class TestDado { public static void main(String[] args) { Dado d = new Dado(); d.tirar(); System.out.println(d.valor); d.valor=-12; System.out.println(d.valor); } } Ing. Marcelo Paris (2008) class Dado { private int valor = 6; public void tirar(){ valor = (int)(Math.random()*6)+1; } public int getValor(){ return valor; } public void setValor( int nueValor ){ if ( nueValor>0 || nueValor <7 ) valor = nueValor; } } public class TestDado { public static void main(String[] args) { Dado d = new Dado(); d.tirar(); System.out.println(d.getValor()); d.valor=6; d.setValor(-12); System.out.println(d.valor); } } Ahora nadie puede acceder directamente a las variables de instancia. Encapsulación Ing. Marcelo Paris (2008) Página 1 Página 2 Página 3 Página 4 Página 5 Página 6 Página 7 Página 8 Página 9 Página 10 Página 11 Página 12 Página 13
Compartir