Logo Studenta

Clases y objetos

¡Este material tiene más páginas!

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

Continuar navegando