Вы находитесь на странице: 1из 24

Leccin 2.

4: Diagramas de interaccin entre objetos

Tema 2

Clases, objetos y mensajes

Leccin 2.4: Diagramas de interaccin entre objetos

Leccin 2.1
Concepto y caractersticas
de las clases

Leccin 2.1: Concepto y caractersticas de las clases

1. Concepto de clase
Los seres humanos tendemos a clasificar las cosas que
nos rodean atendiendo a diversos criterios

Como estudiante,
t tambin usas
clases... y cmo
informtico/a?

Leccin 2.1: Concepto y caractersticas de las clases

1. Concepto de clase (software)


Las clases son un mecanismo de abstraccin sobre la
estructura y el comportamiento.
Atributos

Mtodos

Una clase es una especie de molde o plantilla para crear objetos.


Decimos que un objeto es una instancia de una determinada
clase, o que pertenece a dicha clase.

Leccin 2.1: Concepto y caractersticas de las clases

2. mbito de los atributos

Atributos de instancia: Almacenan los valores que


configuran el estado de un objeto en particular.
Cada objeto tiene una copia distinta de cada atributo de
instancia, las cuales se almacenan en posiciones de memoria
diferentes. As, cada objeto puede darle sus propios valores.

Atributos de clase: Almacenan un nico valor para


todos los objetos de una clase.
El atributo est asociado a la clase, de forma que toma un valor
nico para todos los objetos de la clase y est almacenada en
una nica posicin de memoria.

Leccin 2.1: Concepto y caractersticas de las clases

2. mbito de los atributos


Un ejemplo ilustrativo:
Clase: Len
Atributo de instancia: peso
Atributo de clase: numeroPatas

Cada objeto de la clase Len tendr su propio atributo


peso al que puede dar valores distintos. Sin embargo,
todos los objetos comparten un nico atributo de clase
numeroPatas que tomar siempre el mismo valor para
todos los objetos de la clase Len.

10

Leccin 2.1: Concepto y caractersticas de las clases

3. mbito de los mtodos


Un ejemplo realista:

public class Bicicleta {


private int marchas;
private int color;
private int numeroSerie;
private static int numeroDeBicicletas = 0;
public Bicicleta(int numeroMarchas, int unColor){
marchas = numeroMarchas;
color = unColor;
numeroSerie = Bicicleta.getNumeroDeBicicletas();
Bicicleta.incrementarNumeroDeBicicletas();
}
public int getColor() {
return color;
}
public int getNumeroSerie() {
return numeroSerie;
}
public static int getNumeroDeBicicletas() {
return numeroDeBicicletas;
}
public static void incrementarNumeroDeBicicletas(){
numeroDeBicicletas++;
}
...

Variable
de clase
Uso de los
mtodos
de clase
Mtodos
de clase

}
12

Leccin 2.1: Concepto y caractersticas de las clases

4. Constructores, consultores y modificadores


Los constructores crean objetos de la clase a la que
pertenecen ( sirven para instanciar la clase).
Caractersticas comunes:
No son mtodos de instancia
Tienen un propsito especfico: crear instancias de la clase a la
que pertenecen e inicializar su estado.
No pueden especificar un valor de retorno (ni siquiera void!).
Si una clase no declara ningn constructor, se le asigna un
constructor por defecto que no recibe ningn argumento y no
realiza ninguna operacin salvo la creacin del objeto.

13

13

Leccin 2.1: Concepto y caractersticas de las clases

4. Constructores, consultores y modificadores


Caractersticas diferenciadoras:

Segn el nombre:

En las clases-plantilla suelen tener el mismo nombre que la clase


(p.ej. en Java).
En las clases-objeto pueden tener cualquier nombre, incluso new
(p.ej. Smalltalk).

Segn responsable:

En las clases-plantilla, al constructor se le suele invocar usando la


palabra reservada new.
En clases-objeto, al constructor se le suele invocar como un mtodo
de clase ms.

14

Leccin 2.1: Concepto y caractersticas de las clases

4. Constructores, consultores y modificadores


Constructores por defecto:

Ejemplo Java:
class MuertoViviente {
public void asustar () {
System.out.println(uuuhhh);
}
}

Creacin y uso de un objeto:


MuertoViviente vampiro = new MuertoViviente();
vampiro.asustar();

15

Leccin 2.1: Concepto y caractersticas de las clases

4. Constructores, consultores y modificadores


Si se incorpora un
constructor por defecto
para qu queremos
implementar otro nosotros?

1. Crear un objeto e
inicializar sus
atributos:

El constructor se ejecuta (paso 1) antes de


asignar una referencia al objeto (paso 2),
por tanto podemos hacer cosas con l antes
de que nadie lo use.

2. Enlazar la referencia
con el objeto:
frankestein

16

16

Leccin 2.1: Concepto y caractersticas de las clases

4. Constructores, consultores y modificadores


Qu puede interesarnos hacer? Inicializar el estado del objeto (dar valor a
sus atributos) a gusto del programador.
Ejemplo de constructor en clase-plantilla
Java:
public class MuertoViviente {
private float cociente_intelectual;

Nombre
igual que
la clase

public MuertoViviente(float cociente){


setCocienteIntelectual(cociente);
}
public void setCocienteIntelectual(float cociente)
{
cociente_intelectual = cociente;
Invocacin con palabra
}
reservada new

}
Invocacin:

Java: MuertoViviente frankestein = new MuertoViviente(3.25);


17

17

Leccin 2.1: Concepto y caractersticas de las clases

5. Paquetes de clases
Los paquetes son especficos de Java.
Permiten agrupar clases con caractersticas
comunes (por tanto son otro elemento de
encapsulamiento).
Son de gran utilidad para la reutilizacin de cdigo:
Existen paquetes estndar con las clases ms utilizadas.
Recuerda: Slo debes definir clases propias cuando
no haya disponibles clases predefinidas adecuadas.
Con la misma idea es posible hacer paquetes con las clases
que uno mismo implementa.

Permiten adems tener un nivel ms de control de


acceso (lo veremos a continuacin).
20

20

Leccin 2.1: Concepto y caractersticas de las clases

6. Especificadores de acceso
Los especificadores de acceso sirven para restringir la
visibilidad de clases, atributos y mtodos.
Pueden existir hasta cuatro especificadores de acceso:
pblico, paquete, protegido y privado.

Imagen del libro C# for sharp kids: http://msdn.microsoft.com/library/bb330920.aspx

22

22

Leccin 2.1: Concepto y caractersticas de las clases

6. Especificadores de acceso
Especificadores de acceso Java:
Visible en:

Mismo paquete
Subclase

Otra

Otro paquete
Subclase

private

package

protected

public

Otra

Si no se indica nada, la visibilidad por defecto es de paquete


tanto en variables como en mtodos.
23

23

Leccin 2.1: Concepto y caractersticas de las clases

6. Especificadores de acceso
Especificadores de acceso en otros lenguajes:
Por regla general, los otros lenguajes OO poseen slo los
especificadores: public, private y protected (p.ej. PHP, C++,
Ruby...).
Algunos lenguajes hacen un uso distinto de algunos
modificadores de acceso:
Smalltalk:
No tiene especificadores de acceso.
Todos los mtodos son pblicos y los atributos privados.

Ruby:
Cuando un mtodo es privado puede ser invocado por el
propio objeto o por algn otro de la misma clase.
Los atributos son privados, aunque hay mecanismos para
facilitar su acceso.
24

24

Вам также может понравиться