Professional Documents
Culture Documents
3
PROGRAMACIN ORIENTADA A OBJETOS
De instancia
Esttica
nradio y color son variables de instancia,
hay una copia de ellas por cada objeto
Circulo
class Circulo {
// campos
double radio = 5;
String color;
static int numeroCirculos = 0;
static final double PI = 3.1416;
// mtodos
// constructores
// main( ) numeroCirculos y PI son
n
9
Referencias en Java
public class TestClase {
public static void main( String args[] ){
Circulo c1 = new Circulo();
Circulo c2; c2 = c1;
}
}
Creacin de Objetos de una Clase:
c1 es una variable Referencia al nuevo Objeto creado.
c2 es una variable Referencia a ningn Objeto, i.e. tras la
declaracin Circulo c2 ; c2 == null
Qu ocurre si se ejecuta c2 = c1; ?
Referencias en Java
Una variable Referencia almacena la direccin de
memoria en la que se encuentra el Objeto al que
referencia.
Al hacer:
Circulo c2 = c1;
La variable referencia c2 pasa a tener el mismo valor que 7 c1,
es decir, ambas apuntan al mismo objeto.
Definicin de constructores
Un constructor es un mtodo especial invocado para
instanciar e inicializar un objeto de una clase
Invocado con la sentencia new
Tiene el mismo nombre que la clase
Puede tener cero o ms parmetros
No tiene tipo de retorno, ni siquiera void
Un constructor no pblico restringe el acceso a la creacin de objetos
Si la clase no tiene ningn constructor, el sistema
provee un constructor default, sin parmetros
Si la clase tiene algn constructor, debe usarse alguno
de los constructores definidos al instanciar la clase (el
sistema no provee un constructor default en este caso)
Definicin de constructores
class Circulo {
...
Dos diferentes
// constructores constructores
public Circulo() {
radio = 1;
}
public Circulo(int r) {
radio = r;
Instanciacin usando el
} segundo constructor
void f() {
Circulo c = new Circulo(30);
...
}
}
Definicin de constructores
Los Constructores de una clase permiten dar un valor
inicial a los atributos del objeto. Ejemplo: definicin de
los mtodos Constructores de Circulo
Invocacin entre Constructores
La palabra this puede ser utilizada en la primera lnea
de un constructor para invocar a otro constructor.
class Circulo {
private double radio; This hace referencia al
objeto sobre el que se
private static int numeroCirculos = 0;
invoca el mtodo y
Circulo(int radio) { sirvde para evitar
this.radio = radio; aliasing de nombres
Circulo.numeroCirculos++;
}
Circulo() {
this(10); // radio default: 10
}
}
This?
Sirve para hacer referencia a un mtodo o propiedad
del objeto actual.
This?
Donde se puede usar el this?
Puede referirse a cualquier miembro del objeto actual
desde dentro de un mtodo de instancia o un
constructor.
Si se intenta utilizar dentro de un mtodo esttico (Static
methods) lanzara:
"Cannot use This in a static context"
Definicin de Mtodos
Instrucciones que operan sobre los datos de un objeto
para obtener resultados.
Pueden retornar un valor o pueden ser declarados
void para indicar que no retornan ningn valor
Pueden ser de instancia o static.
Mtodo de instancia, tiene acceso
directo a las variables de instancia del
objeto sobre el que se invoca
class Circulo {
// campos
double radio = 5;
String color;
static int numeroCirculos = 0;
static final double PI = 3.1416;
// mtodos
double getCircunferencia() {
return getCircunferencia(radio);
}
static double getCircunferencia(double r) {
return 2 * r * PI;
}
// constructores
// main( ) Mtodo static, no tiene acceso
} directo a variables de instancia
Definicin de Mtodos
Los Mtodos de una clase definen su funcionalidad.
Ejemplo: Definicin de Mtodos Consultores en la clase Circulo.
Se podra utilizar this
para referenciar a
atributos pero no es
necesario puesto que
no hay aliasing de
nombres.
Crea la
referencia en
el stack
Crea el objeto
en el heap y
en el mismo
momento
hacemos la
referencia
desde el stack
Como interactan el Heap y el Stack
Un objeto puede estar siendo apuntado por muchas referencias, pero una
referencia solo apunta a un objeto.
Instanciacin y Referencias
Los objetos se crean con el operador new, y se manejan
mediante referencias
Los objetos se crean en el rea de memoria dinmica
conocida como el heap
Una referencia contiene la
direccin de un objeto (es
similar a los punteros de
otros lenguajes)
Una asignacin entre objetos
es una asignacin de
referencias
Circulo c1 = new Circulo();
Circulo c2 = c1;
Garbage Collection
El primer objeto se
queda sin
referencia
Paso de Parmetros
En Java el paso de parmetros se realiza "por valor.
Significa que cuando un argumento se pasa a una
funcin, la funcin recibe una copia del valor original.
Por lo tanto, si la funcin modifica el parmetro, slo la
copia cambia y el valor original permanece intacto.
Argumentos de tipos primitivos
Si un mtodo modifica el valor de un parmetro, este cambio slo
ocurre al interior del mtodo; al retornar el mtodo, se mantiene
el valor original
Argumentos de tipo referencia (objetos)
Al retornar el mtodo, la referencia pasada como parmetro sigue
referenciando al mismo objeto; sin embargo, los campos del
objeto podran haber sido modificados por el mtodo
ArrayList
Clase que permite almacenar datos en memoria de
forma similar a los Arrays.
Estructura dinmica de datos.
http://docs.oracle.com/javase/6/docs/api/java/util/Arra
yList.html
ArrayList nombreArray = new ArrayList();
Puede contener cualquier tipo de
elementos.
Ventajas
No es necesario declarar su tamao como pasa con
los Arrays porque el almacenamiento es dinmico lo
cual permite aumentar o disminuir el consumo de
memoria de acuerdo a las necesidades.
La clase ArrayList tiene muchos mtodos predefinidos
que hacen ms fcil su uso. Por ejemplo: ara saber si
un array cuenta con un dato tendrs que recorrerlo
entero. Sin embargo un ArrayList te devuelve el
objeto que en la coleccin tiene ese valor.
Un ArrayList colecciona objetos, un array colecciona
dtos de un mismo tipo, que adems es bsico.
Mtodos de ArrayList
ArrayList
Recorrer un Array
Podemos recorrerlo de forma clsica con un bucle for: