Está en la página 1de 27

Entender las definiciones

de clases

Mirando dentro de las clases

3.0
Conceptos principales
a abordar
• campos
• constructores
• métodos
• parámetros
• asignación
• sentencia condicional

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 2
Ticket machines – una vista
externa
• Explorando el comportamiento de
una maquina de boletos típica.
– Usar el proyecto naive-ticket-machine.
– Las maquina proveen tickets de precio
fijo.
• Como es determinado el precio?
• Como es el dinero ingresado en la maquina?
• Como mantiene registro del dinero
ingresado?

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 3
Ticket machines – una vista
externa

Demo

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 4
Ticket machines – una vista
interna
• La interacción con un objeto nos da
pistas sobre su comportamiento (caja negra).

• Mirando en sus detalles internos nos


permite determinar como ese
comportamiento es provisto o
implementado.
• Todas las clases Java tienen una vista
interna de aspecto similar.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 5
Como será por dentro?
• ...

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 6
Estructura de la clase

El envoltorio de
public class TicketMachine
{ TicketMachine
Parte interna de la clase omitida.
}

public class Nombre de Clase


{
Campos
Constructores
El contenido
Métodos de una clase
}

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 7
Campos

• Los campos almacenan public class TicketMachine


valores para un objeto. { private int price;
• También son conocidos private int balance;
private int total;
como variables de
instancia. }
Otros detalles omitidos.

• Use la opción
Inspeccionar para ver
modificador de tipo nombre de
los campos de un visibilidad variable
objeto.
• Los campos definen el private int price;
estado de un objeto.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 8
Constructores

• Los constructores public TicketMachine(int ticketCost)


inicializan un objeto. {
price = ticketCost;
• Tienen el mismo balance = 0;
nombre que su clase. } total = 0;
• Almacenan el valor
inicial en los campos.
• Usualmente reciben
valores externos por
parámetro para esto.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 9
Pasando datos por parametros

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 10
Asignación
• Los valores son almacenados en los
campos (y otras variables) a través de
las sentencias de asignación:
– variable = expresión;
– price = ticketCost;
• Una variable alamcena un valor
simple, por lo que cualquier valor
previo se pierde.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 11
Métodos de acceso
• Los métodos implementan el comportamiento
de los objetos.
• Los métodos de acceso proveen información
sobre un objeto.
• Los métodos tienen una estructura que
consiste de un encabezado y un cuerpo.
• El encabezado define la signatura de un
método. public int getPrice()
• El cuerpo encierra las sentencias del método.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 12
Métodos de Acceso

tipo de
modificador de nombre del
retorno
visibilidad método lista de
parámetros
public int getPrice() (vacía)
{
return price; sentencia return
}
comienzo y fin del cuerpo
del método (block)

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 13
Métodos de modificación
• Tienen una estructura de método
similar: encabezado y cuerpo.
• Usados para modificar (i.e., cambiar,
mutar) el estado de un objeto.
• Estos lo logra cambiando el valor de
uno o mas campos.
– Generalmente contienen sentencias de
asignación.
– Generalmente reciben parámetros.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 14
Métodos de modificación
modificador de tipo de
visibilidad retorno nombre del
método parámetro

public void insertMoney(int amount)


{
balance = balance + amount;
}
sentencia de
campo siendo
asignación
modificado

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 15
Impresión desde los métodos
public void printTicket()
{
// Simula la impresion de un ticket.
System.out.println("##################");
System.out.println("# The BlueJ Line");
System.out.println("# Ticket");
System.out.println("# " + price + " cents.");
System.out.println("##################");
System.out.println();

// Actualiza el total cobrado con el saldo.


total = total + balance;
// Limpia el saldo.
balance = 0;
}

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 16
Practica...

• Lo visto hasta aquí corresponde a


las secciones 2.0 a 2.10 del libro.

• La practica a realizar es del


ejercicio 2.1 al 2.42

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 17
Reflexionados sobre las
maquinas (ticket machines)
• Su comportamiento es inadecuado en
varios sentidos:
– No verifica el importe ingresado (>precio?).
– No da vuelto (si paga de mas).
– No verifica precio en la inicialización (> 0?).
• Como se podría hacer mejor?
– Necesitamos un comportamiento mas
sofisticado.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 18
Mejorando la Maquina de
Boletos

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 19
Haciendo elecciones

public void insertMoney(int amount)


{
if(amount > 0) {
balance = balance + amount;
}
else {
System.out.println("Use a positive amount: " +
amount);
}
}

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 20
Haciendo elecciones
condición booleana
‘if’ keyword a ser testeada
acciones si la condición
es verdadera (true)

if(hacer algun test) {


Ejecutar estas sentencias si el test da verdadero
}
else {
Ejecutar estas sentencias si el test da falso
}

acciones si la condición
‘else’ keyword
es falsa(false)

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 21
Variables locales
• Los campos son un tipo de variable.
– Almacenan valores durante la vida del objeto.
– Son accesibles en toda la clase.
• Los métodos pueden incluir variables de
vida mas corta.
– Existen solo mientras el método esta siendo
ejecutado.
– Son solo accesible desde dentro el método.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 22
Variables locales

Una variable local

public int refundBalance()


sin modificador
{
de visibilidad int amountToRefund;
amountToRefund = balance;
balance = 0;
return amountToRefund;
}

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 23
Revisión
• El cuerpo de las clases contienen
campos, constructores y métodos.
• Los campos almacenen valores que
determinan el estado de un objeto.
• Los constructores inicializan los
objetos.
• Los métodos implementan el
comportamiento de los objetos.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 24
Revisión

• Campos, parámetros y variables locales


son todas variables.
• Los campos duran la vida de un objeto.
• Los parámetros son utilizados para
recibir valores en un constructor o un
método.
• Las variables locales son usadas para
almacenamiento temporal (vida corta).

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 25
Revisión
• Los objetos pueden hacer decisiones
a través de la sentencia condicional
(if).
• Un testeo verdadero (true) o falso
(false) permite tomar uno de los dos
cursos de acción.

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 26
Practica
• Lo visto hasta aquí corresponde a las
secciones 2.11 a 2.14 del libro.

• La practica a realizar es del ejercicio


2.43 al 2.68

Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling 27

También podría gustarte