Anda di halaman 1dari 19

Programacin Orientado

a Objetos
Clases y Objetos
Temario

Clases
Propiedades
Instanciacin
Mtodos

2
OOP

En Object-Oriented Programming (OOP), o


Programacin Orientada a Objetos, un programa est
hecho de clases, con sus campos y mtodos

La creacin de un programa involucra ensamblar objetos


y hacerlos interactuar entre ellos

3
Clases y Objetos

Clase Objeto
Empresa Sodimac
Casa La Moneda
Empleado Juan Prez
Ventana (tiempo de diseo) Ventana (tiempo de ejecucin)
String Juan Prez

4
Definicin de una Clase

class Circulo {
// campos
// mtodos
// constructores
// main()
}

5
Propiedades Propiedad radio
(read-write)

Propiedad
circunferencia
(read-only)
En Java, las propiedades se definen por la existencia de mtodos getter y setter:
class Circulo {
void setRadio(double radio) { ... }
double getRadio() { ... }
double getCircunferencia() { ... }
}
Las propiedades pueden basarse en el uso de campos o no: la clase Circulo puede
tener un campo radio, pero probablemente no tenga un campo circunferencia
Las propiedades de una clase pueden ser determinadas en ejecucin mediante
reflection (lo que es utilizado por frameworks como JSP, JSF, JPA)

6
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 Memoria
direccin de un objeto (es
similar a los punteros de Stack Heap
otros lenguajes)
Una asignacin entre objetos
es una asignacin de
referencias
c1
Circulo c1 = new Circulo();
Circulo c2 = c1;
c2
7
Campos
Los objetos almacenan informacin en sus campos
Existen dos tipos de campos: de instancia y static (de
clase)
Campos de instancia
Hay una copia de un campo de instancia por cada objeto de la
clase
El campo de instancia es accesible a travs del objeto al que
pertenece
Campos static (de clase)
Hay una nica copia de un campo static en el sistema
(equivalente a lo que en otros lenguajes es una variable global)
El campo static es accesible a travs de la clase (sin necesidad de
instanciar la clase)
8
Acceso a Campos
Acceso a variables de instancia: se utiliza la
sintaxis "objeto."
Circulo c1 = new Circulo();
c1.radio = 5;
c1.color = "rojo";
// si c1 es null,
// se genera una excepcin NullPointerException

Acceso a variables static: se utiliza la sintaxis


"clase."
Circulo.numeroCirculos++;
System.out.println(Circulo.PI);

9
Mtodos
Instrucciones que operan sobre los datos de un objeto para obtener
resultados
Tienen cero o ms parmetros
Pueden retornar un valor o pueden ser declarados void para indicar
que no retornan ningn valor
Pueden ser de instancia o static:
Un mtodo de instancia se invoca sobre un objeto de la clase, al cual
tiene acceso mediante la palabra this (y sus variables de instancia son
accesibles de manera directa)
Un mtodo static no opera sobre un objeto de la clase, y la palabra this
no es vlida en su interior
Sintaxis
[static] <tipo retorno> <nombre mtodo> (<tipo> parmetro1, ...)
{
// cuerpo del mtodo
return <valor de retorno>; 10
}
Acceso a Mtodos
Acceso a campos y mtodos de instancia: se
utiliza la sintaxis "objeto."
Circulo c1 = new Circulo();
c1.radio = 5;
c1.color = "rojo";
double d = c1.getCircunferencia();
// Si c1 es null,
// se genera una excepcin NullPointerException;

Acceso a campos y mtodos static: se utiliza la


sintaxis "clase."
Circulo.numeroCirculos++;
int n = Circulo.getNumeroCirculos();
11
System.out.println(Circulo.PI);
Modificadores de Acceso
Nivel de acceso para miembros de clases (campos,
mtodos, y clases anidadas)
Public: miembro es accesible en cualquier lugar en que la clase
sea accesible
Protected: miembro es accesible por subclases y clases del
mismo package
Package (default): miembro es accesible por clases del mismo
package
Private: miembro es accesible slo al interior de la clase
Nivel de acceso para clases e interfaces
Public: clase/interfaz es accesible globalmente
Package (default): clase/interfaz es accesible por clases del
mismo package
12
Modificadores de Acceso

class Circulo {
// campos
private double radio = 5;
private String color;
private static int numeroCirculos = 0;
public static final double PI = 3.1416;
// mtodos
// constructores
// main( )
}

13
Recomendacin: los campos siempre deben ser privados (a menos
Paso de Parmetros

En Java el paso de parmetros se realiza "por valor"


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

14
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) 15
Ejemplo

class Circulo {
...

// constructores
public Circulo() {
radio = 1;
}
public Circulo(double r) {
radio = r;
}

void f() {
16
Circulo c = new Circulo(30);
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;
private static int numeroCirculos = 0;
Circulo(double radio) {
this.radio = radio;
Circulo.numeroCirculos++;
}
Circulo() {
this(10); // radio default: 10
}
} 17
Resumen

Una clase es una plantilla a partir de la cual se instancian


objetos
Los objetos contienen informacin (en campos de instancia y
static) y comportamiento (en mtodos de instancia y static)
Los miembros de instancia se utilizan con la sintaxis "objeto."
Los miembros static se utilizan con la sintaxis "clase."
Una clase puede tener varios mtodos con el mismo nombre
(sobrecarga), siempre que tengan diferentes parmetros

18
Resumen
Para instanciar una clase (crear un objeto) se utiliza el
operador new
Los constructores son mtodos especiales invocados al
instanciar una clase
Los objetos se manejan a travs de referencias
La palabra this representa una referencia al objeto sobre
el cual se invoca un mtodo de instancia
Los modificadores de acceso controlan quin tiene acceso
a los miembros de una clase

19

Anda mungkin juga menyukai