2. POO: Una nueva manera de
ver el mundo
“
Juan quiere mandar flores a su amiga Ana que vive
en otra ciudad. Debido a la distancia Juan no puede
llevar las flores directamente a Ana. Juan acude a
Pedro, un florista local, y le da el número y tipo de
flores que quiere enviarle a Ana y su dirección. Juan
puede estar seguro que las flores serán entregadas
a Ana. ”
2
3. Agentes, Responsabilidad,
Mensajes y Métodos
Juan encuentra un agente apropiado (Pedro)
Y le envía un mensaje que contiene una petición.
Es la responsabilidad de Pedro el satisfacer esa
petición.
Existe algún método (conjunto de operaciones)
usadas por Pedro para entregar las flores.
3
4. Clases e Instancias
A pesar de que Juan no conoce a Pedro muy bien, el tiene
una idea aproximada de como tratar y que pedir a Pedro.
Juan es capaz de hacer ciertas asunciones basado en su
experiencia previa con otros floristas. El espera que
Pedro, siendo una instancia de la categoría de floristas, se
ajuste a ese patrón.
Todos los objetos son instancias de una clase. El método
invocado por un objeto para responder a un mensaje es
determinado por su clase.
4
5. Paradigma Orientado a
Objetos
¿Qué es una clase?
Las clases son los planos para construir los objetos
Lo que se especificamos no son los objetos, sino las
clases de que estos se construyen.
Las clases especifican que atributos y métodos
tendrá un objeto que se fabrique a partir de dicha
clase.
5
7. Paradigma Orientado a
Objetos
Clase Bicicleta
Atributos
Tamaño de frame
Tamaño de llanta
Material ...
Abstraídos en
Operaciones
Cambio
Mover
Reparar
Objetos bicicletas
7
8. Clase
Una clase es la definición de un tipo de objeto
Es el plano para construir ese tipo de objeto
9. Clase
Una clase es la definición de un tipo de objeto
Es el plano para construir ese tipo de objeto
Nombre de la Clase: Automovil
Datos:
cantidad de combustible
velocidad
placa
Metodos (acciones):
acelerar: incrementar velocidad
decelerate: disminuir velocidad
11. Objetos, Instancias
Nombre Objeto: CarroJuan
cantidad de combustible: 10 galones
velocidad: 55 millas por hora
placa: “135 XJK”
12. Objetos, Instancias
Nombre Objeto: CarroJuan Nombre Objeto: CarroLuis
cantidad de combustible: 10 galones cantidad de combustible: 10 galones
velocidad: 55 millas por hora velocidad: 0 millas por hora
placa: “135 XJK” placa: “MBX623”
13. Objetos, Instancias
Nombre Objeto: CarroJuan Nombre Objeto: CarroLuis
cantidad de combustible: 10 galones cantidad de combustible: 10 galones
velocidad: 55 millas por hora velocidad: 0 millas por hora
placa: “135 XJK” placa: “MBX623”
Nombre Objeto: CarroMaría
cantidad de combustible: 2 galones
velocidad: 75 millas por hora
placa: “351 WLF”
14. Objetos, Instancias
Nombre Objeto: CarroJuan Nombre Objeto: CarroLuis
cantidad de combustible: 10 galones cantidad de combustible: 10 galones
velocidad: 55 millas por hora velocidad: 0 millas por hora
placa: “135 XJK” placa: “MBX623”
Nombre Objeto: CarroMaría
cantidad de combustible: 2 galones
velocidad: 75 millas por hora
placa: “351 WLF”
Instancias de la clase Automovil
16. Anatomía de una Clase en Java
Visibilidad Keyword class Nombre de Clase
public class Fecha
{
Cuerpo Clase: atributos, métodos
} SIN punto y coma
17. ATRIBUTOS
Concepto: Características que definen a la clase, es lo
que el usuario (de la clase) puede ver. Es la
abstracción.
Otro concepto: variables que están dentro de los
objetos y que contienen los valores del objeto.
También son llamados: propiedades, datos miembro.
12
18. ATRIBUTOS – Ejemplo 1
Una Fracción está definido por un par de números
naturales, los cuales se denominan el numerador y
denominador.
num_
Fraccion den
Numerador
Denominador
13
19. ATRIBUTOS – Ejemplo 2
Un Fecha está definido por tres datos: día, mes y año.
Fecha
15/ 12/ 2005
Día
Mes
Año
14
20. Atributos en Java
Nombre Atributo
Visibilidad tipo atributo
punto y coma
public int mes ;
21. Comportamiento
El comportamiento de un objeto es la forma en que actúa
y reacciona, en términos de sus cambios de estado e
intercambio de mensajes con otros objetos.
El comportamiento de un objeto está determinado por las
operaciones que pueden ser invocadas sobre el mismo.
Los tres tipos de operaciones más comunes son:
16
22. MÉTODOS
Concepto: Son las operaciones que se pueden
realizar con los objetos de la clase.
Otro concepto: Son los procesos (funciones o
procedimientos) que permiten trabajar con los datos
de los objetos
También son llamados: funciones miembro
De acuerdo al trabajo que realizan los métodos,
estos se clasifican en:Constructores,destructores,
ponedores, selectores.
17
23. Métodos en Java
Los métodos son como las funciones. Los métodos
incluyen la visibilidad, el tipo de la respuesta, el nombre
del método y los parámetros.
Nombre Método
Visibilidad Tipo respuesta
Parametros
public double imprimir (double fTemp)
{
Código del método: variables y sentencias
}
24. La clase Fecha
Esta clase tiene que ir en un archivo llamado Fecha.java
public class Fecha
{
public String mes;
public int dia;
public int anio;
public void print( )
{
System.out.println(mes + " " + dia + ", " + anio);
}
}
32. Usar la clase
Fecha miFecha = new Fecha();
Scanner keyboard = new Scanner(System.in);
33. Usar la clase
Fecha miFecha = new Fecha();
Crear el objeto
Scanner keyboard = new Scanner(System.in);
34. Usar la clase
Fecha miFecha = new Fecha();
Retornar la dirección
de memoria del Crear el objeto
objeto
Scanner keyboard = new Scanner(System.in);
35. Usar la clase
Fecha miFecha = new Fecha();
Asignar un dirección Retornar la dirección
de memoria a la de memoria del Crear el objeto
variable objeto
Scanner keyboard = new Scanner(System.in);
37. Usando Fecha
Creamos una instancia de Fecha, la modificamos e imprimimos la fecha. Este
programa se graba dentro de un archivo llamado DemoFecha.java
public class DemoFecha
{
public static void main( String[ ] args )
{
Fecha miFecha;
miFecha = new Fecha( );
miFecha.mes = “Julio”;
miFecha.dia = 5;
miFecha.anio = 2009;
miFecha.print( );
}
}
38. Creating the Date1 Object
La sentencia Fecha miFecha; define la variable del tipo
Fecha, pero el objeto miFecha NO existe todavía.
La sentencia miFecha = new Fecha( ); instancia un
objeto del tipo Fecha y se lo asigna a la variable
“miFecha”.
39. Notación Punto
Los atributos públicos de un objeto son
referenciados usando el operador “punto”.
miFecha.mes = “July”;
miFecha.dia = 4;
miFecha.anio = 2007;
40. Notación Punto
myDate.print( );
invoca al método print del objeto myFecha , un objeto del tipo
Fecha
Estamos enviando el mensaje print al objeto referenciado por
miFecha.
41. Otros Métodos
• incrementarDia - aumenta un día a la fecha
• printDMY - imprime en un diferente formato
• setDate - inicializa/cambia el año, mes, y día
42. New Date1 Methods
// change the month (using an int), day, and year.
public void setDate( int newMonth, int newDay, int newYear )
{
month = monthString( newMonth );
day = newDay;
year = newYear;
}
// change month number (int) to string - used by setDate
public String monthString( int monthNumber ) {
switch ( monthNumber ) {
case 1: return "January";
case 2: return "February";
case 3: return "March";
case 4: return "April";
case 5: return "May";
case 6: return "June";
case 7: return "July";
case 8: return "August";
case 9: return "September";
case 10: return "October";
case 11: return "November";
case 12: return "December";
default: return “????”;
}
}
43. Confusion
public void setDate( int month, int day, int year)
{
month = monthString( month );// which month is which?
day = day; // which day is which?
year = year; // which year is which?
}
El problema es que en este código el compilador asume
que day, month, y year se refieren a los parámetros del
método y no a los atributos del objeto.
44. Usar this
Si queremos referirnos a los atributos del objeto o a sus
métodos, podemos usar la palabra reservada this
public void setDate( int month, int day, int year)
{
this.month = monthString( month );
this.day = day;
this.year = year;
}
46. Creación de Objetos
Los objetos son creados usando la palabra reservada
new
Date myDate = new Date( );
La expresión new Date( )
invoca a un método especial al que se denomina
constructor.
Los constructores son utilizados para crear objetos e
inicializar el estado de sus atributos.
47. Constructores
Un constructor es un método especial
Tiene el mismo nombre que la clase que construye
No tiene tipo de retorno (ni siquiera void).
Si la clase no define ningún constructor, el compilador
de Java automáticamente crea un constructor sin
parámetros
49. Tarea
Cree la clase Estudiante
Sus atributos son: nombre, fechaDeNacimiento,
matrícula
Sus métodos son: calcularEdad, print
El print debe colocar la “matricula - nombre - edad”
Debe crear un programa que cree al menos 3
estudiantes, los inicialize e imprima sus datos en
pantalla.
Notas del editor
print is a method of the Date1 class. Its definition and implementation are part of the Date1 class.
Like functions in C, class methods may be void, return a value, and (optionally) have parameters. Method parameters may be primitive types passed by value or may be objects (which need further discussion later).
All class methods have access to all class instance variables.