Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
ORIENTADO A OBJETOS
1
Definiciones iniciales
1. El encapsulamiento se basa en los métodos de instancia.
2. La sobrecarga de métodos nos brinda una interfase mas legible.
3. Los constructores aseguran una consistente creación de objetos
4. El Garbage Collector libera espacio en memoria.
2
Implementando clases
1. Las clases se agrupan en paquetes
• Un paquete contiene una colección de clases relacionadas
lógicamente
3
Mensajes
1. Los mensajes invocan el comportamiento de un objeto a traves
de un método.
cuenta.debitar(50.5)
receptor parametros
mensaje
4
Metodos
1. Los métodos determinan como los objetos responden a los
mensajes (la conducta de la clase).
5
Firma del método
1. Una clase puede tener muchos métodos con el mismo nombre
(sobrecarga), pero deben tener una firma diferente.
2. La firma del método consiste de:
• El nombre del método
• Los tipos y cantidad de argumentos
tipo de
nombre argumento
metodo
8
Iniciación de atributos de instancia
1. Las variables de instancia se pueden iniciar en la declaración.
2. Esta iniciación ocurre cuando se crea un objeto.
3. Los atributos de instancia conservan sus propios valores en
cada objeto.
9
Inicialización de atributos
1. Los atributos se inician implícitamente como:
char '0'
byte, short, int, long 0
boolean false
float, double 0.0
Referencia a Objeto null
10
Pelicula.java
public class Pelicula {
private String titulo;
private String tipo = "Drama";
public Pelicula() {
titulo = "Pelicula sin definir.";
}
public Pelicula(String nuevoTitulo) {
titulo = nuevoTitulo;
}
public Pelicula(String nuevoTitulo, String nuevoTipo) {
titulo = nuevoTitulo;
tipo = nuevoTipo;
}
...
}
11
Constructores
1. Para una adecuada iniciación de variables de instancia, la clase
debe tener un constructor.
2. Un constructor se invoca automáticamente cuando se crea un
objeto.
3. Se declaran de forma pública.
4. Tiene el mismo nombre que la clase.
5. Si no se codifica un constructor, el compilador crea uno por
defecto sin argumentos que inicializa las variables de instancia
en forma explicita o implicita.
Definicion del
public BankAccount(String nombre) { Constructor
setPropietario(nombre);
}
Uso del Constructor
public Pelicula() {
titulo = "Pelicula sin definir.";
}
public Pelicula(String nuevoTitulo) {
titulo = nuevoTitulo;
}
public Pelicula(String nuevoTitulo, String nuevoTipo) {
titulo = nuevoTitulo;
tipo = nuevoTipo;
}
public String getTitulo() {
return titulo;
}
public String getTipo() {
return tipo;
}
} Cuantos constructores encuentra en Pelicula.Java?
14
public class Pelicula {
private String titulo;
private String tipo = "Drama";
public Pelicula() {
titulo = "Pelicula sin definir.";
}
public Pelicula(String nuevoTitulo) {
TestConstructores.java }
titulo = nuevoTitulo;
}
Que muestra el programa?
15
La referencia this
1. Los métodos de instancia reciben el argumento this
implícitamente que se refiere al mismo objeto.
public BankAccount() {
this("TestName");
}
19
Atributos de clase
1. Los atributos de clase comparte un único valor entre todos las
instancias de la clase.
2. Se declaran con el calificador static.
3. Todos los objetos creados a partir de la clase obtienen el mismo
dato de un atributo estático.
20
Atributos de clase
Pelicula.java 1. Los atributos de clase se
pueden iniciar en la
import java.util.*; declaración.
public class Pelicula {
// iniciación explicita 2. La iniciación ocurre
private static int numeroDias = 3; cuando se carga la clase
// iniciación compleja
en memoria.
private static double precioMinimo;
static { 3. Para una iniciación
Date hoy = new Date();
compleja se usara un
// si es Domingo
if (hoy.getDay() == 0) bloque static
precioMinimo = 5.10;
else
precioMinimo = 3.29;
}
public int getNumeroDias() {
return numeroDias;
}
public double getPrecioMinimo() {
return precioMinimo;
}
21
}
Métodos de clase
1. Estos métodos son compartidos por todas las instancias.
2. Se usan estos métodos principalmente para manipular variables
de instancia.
3. Se les declara con el calificador static
4. Se invoca a este método de clase con el nombre de la clase o
con el nombre de una instancia.
5. No es necesario crear un objeto para utilizar un metodo de
clase, basta con referenciar a la clase.
22
Pelicula.java
public class Pelicula {
private static float precio = 3.50f;
private String titulo;
public Pelicula(String titulo) { this.titulo = titulo; }
public String getTitulo() { return titulo; }
public static void setPrecio(float nuevoPrecio) {
precio = nuevoPrecio;
}
public static float getPrecio() {
return precio;
}
}
TestStatic2.java
public class TestStatic2 {
public static void main (String[] args) {
Pelicula.setPrecio(3.98f);
Pelicula oscar = new Pelicula("Ben Hur");
Pelicula video = new Pelicula(“Aeropuerto”);
System.out.println(oscar.getPrecio());
oscar.setPrecio(4.98f);
Pelicula camara = new Pelicula(“Odisea 2001”);
System.out.println(video.getPrecio());
System.out.println(camara.getPrecio());
System.out.println(Pelicula.getPrecio());
} 23
} Que resultados se obtienen?
Métodos main
1. Una aplicacion no puede ejecutarse a menos que una clase
presente un metodo main
2. La JVM carga la clase e inicia la ejecucion al llamar al metodo
main(String[] args)
• public: puede ser llamado por cualquier objeto
• static: no necesita crearse un objeto previamente
• void: no retornara ningún valor
Nombre del
Nombre de la clase
paquete
pe.com.megabank.model. BankAccount
25
Modificadores de Acceso
Las variables y métodos en Java tiene restricciones de acceso, descrito
por los siguientes modificadores de acceso:
private: El acceso es limitado a la clase
Ejemplo: private int x;
default (sin modificador): Acceso limitado al paquete
Ejemplo: int x;
protected: Limitado al paquete y las subclases.
Ejemplo: protected void setName() { . . . }
public: Acceso desde todas las clases en todos los paquetes
Ejemplo: public String getName() { . . . }
26
Accesibilidad a las clases
1. Las clases pueden referirse a otras clases dentro del mismo
paquete por el nombre de la clase solamente
2. Debe proporcionarse el nombre completamente calificado
(incluyendo el paquete) para las clases definidas en diferentes
paquetes
3. Se muestra como Tester y BankAccount se han definido en
diferentes paquetes
package pe.com.megabank.testing;
29
Universidad Nacional de Ingeniería 29