Sie sind auf Seite 1von 81

Orientacin a Objetos, una tcnica

para mejorar la calidad del software


Programacin Orientada a Objetos

Desarrollo de software OO
Mtodo de desarrollo de software que basa la
arquitectura del sistema en mdulos deducidos
de los tipos de objetos que se manipulan (en
lugar de basarse en la funcin o funciones a las
que el sistema est destinado a asegurar).

Desarrollo de software OO

Encontrar los objetos relevantes


Encontrar las operaciones para los tipos
de objetos
Describir los tipos de objetos
Encontrar relaciones entre objetos
Utilizar los tipos de objetos y las
relaciones para estructurar el software

Ejemplo: objeto coche

id: nmero de bastidor

Funciones que puede realizar:


Ir
Parar
Girar a la derecha
Girar a la izquierda
Arrancar
Tiene las caractersticas:
Color
Velocidad
Tamao
Carburante

Clases de objetos

Los objetos con estados similares y el mismo


comportamiento se agrupan en clases

Clase Coche
Coche
color
velocidad
tamao
carburante
ir
parar
girarDerecha
girarIzquierda
arrancar

Relaciones entre objetos

B es un cliente de A si todo objeto de B puede contener


informacin sobre uno o mas objetos de A

A at

B hereda de A si B denota una versin especializada de


A

Relacin de cliente

Coche

propietario

Persona

Relacin de Herencia
TRANSPORTE

Estructura del software


Autor

Publicacion

Revista

Libro

Actas

Congreso

Libro es una especializacin de Publicacion


Publicacion usa servicios de Autor

Modelo de objetos
Programacin Orientada a Objetos

Mtodos de Anlisis y Diseo OO

Modelo de Objetos
Abstraccin
Encapsulacin
Modularidad
Herencia
Polimorfismo
Bases de Datos OO
Otros desarrollos se asientan en el paradigma OO
Desarrollo basado en componentes
Tecnologa de objetos distribuidos

Abstraccin

Supresin intencionada, u
ocultamiento,
de
algunos
detalles de un proceso o
artefacto, con el objeto de
destacar de manera ms clara
otros aspectos, detalles o
estructuras
Tipos de abstraccin:

Datos, procedural

Mtodos de abstraccin:

Parametrizacin
Especificacin

Curso 2009/2010
del Sofware
OO Aplicaciones. Addison-Wesley. 1996
57
[Booch96]
Booch, G. Anlisis y DiseoCalidad
Orientado
a Objetosy con

Encapsulacin

Proceso de almacenar en un mismo compartimento los


elementos de una abstraccin que constituyen su
estructura y su comportamiento

El enfoque de la POO
Programa OO

Coleccin estructurada
de clases

Clase

Implementacin de un
Tipo Abstracto de Datos (TAD)

Objeto

Una instancia de una clase

Los objetos se comunican mediante mensajes

Clases

DEFINICIN: Implementacin total o parcial de un TAD


Entidad sintctica que describen objetos que van a
tener la misma estructura y el mismo
comportamiento.
Doble naturaleza: Mdulo + Tipo de Datos
Mdulo (concepto sintctico)

Mecanismo para organizar el software

Tipo (concepto semntico)

Mecanismo de definicin de nuevos tipos de datos: describe


una estructura de datos (objetos) y las operaciones
aplicables.

Componentes de un clase

Atributos:

Mtodos:

Determinan una estructura de almacenamiento para cada


objeto de la clase
Operaciones aplicables a los objetos
nico modo de acceder a los atributos

Ejemplo : En una aplicacin bancaria, encontramos objetos


cuenta. Todos los objetos cuenta tienen propiedades comunes:

atributos: saldo, titular, ...


operaciones: reintegro, ingreso,

Definimos una clase CUENTA

Ejemplo: Clase Cuenta


Cuenta
titular: String;
saldo: double;
reintegro(valor:double);
ingreso (valor:double);

Tiempo de ejecucin

Definicin de la clase
Atributos
Mtodos

Jos Martnez titular


1200.0
saldo

Objeto Cuenta

Clase Cuenta en Java


class Cuenta{
String titular;
double saldo;

ATRIBUTOS

void ingreso (double cantidad){


saldo = saldo + cantidad;
}
void reintegro (double cantidad){
if (cantidad <= saldo)
saldo = saldo cantidad;
MTODOS
}
}

Ocultacin de Informacin

A las caractersticas de una clase (atributos y


mtodos) se les puede asignar un modificador
de visibilidad:

public:

private:

Caracterstica pblica, accesible desde todas las clases


Caracterstica privada, accesible slo dentro de la clase
donde se define

Principio de diseo:

Todos los atributos de una clase son privados


Los mtodos pueden tener distintos niveles de
visibilidad

Clase Cuenta en Java


class Cuenta{
private String titular;
private double saldo;
public void ingreso (double cantidad){
saldo = saldo + cantidad;
}
public void reintegro (double cantidad){
if (puedoSacar(cantidad))
saldo = saldo cantidad;
}
private boolean puedoSacar(double cantidad){
return cantidad <= saldo;
}
}

Acceso y modificacin de atributos

La nica forma de acceder a los atributos es a


travs de mtodos pblicos

Mtodos get para consultar el valor del


atributo
Mtodos set para establecer el valor del
atributo

La implementacin de los mtodos set/get


depende del nivel de acceso de los atributos.
Se asla al cliente de los cambios en la
estructura de datos.

Clase Cuenta en Java


class Cuenta{
private String titular;
private double saldo;
public String getTitular(){
return titular;
}
//No setTitular porque es inmutable
public double getSaldo(){
return saldo;
}
/* No setSaldo porque se modifica con ingresos
y reintegros */
}

Paquetes

Unidad modular del lenguaje que permite agrupar


clases que estn relacionadas
Adems de public y private, se puede establecer
que una caracterstica de la clase tiene visibilidad a
nivel de paquete
A las clases tambin se les puede especificar un nivel
de visibilidad:

public: la clase es visible desde cualquier paquete


A nivel de paquete: la clase slo es visible en el paquete al que
pertenece.

Paquetes

La pertenencia de una clase a un paquete se


debe especificar antes de la declaracin
(package)
Para utilizar una clase definida en un paquete
distinto:

Se utiliza el nombre cualificado de la clase

Ejemplo: java.util.LinkedList unaLista;

Se importa la clase o el paquete al comienzo de la


declaracin

Se puede utilizar el nombre de la clase sin cualificar


import java.util.LinkedList; o bien
import java.util.*;

Clase Cuenta en Java


package banco;
import java.util.LinkedList;
public class Cuenta{
String titular;
double saldo;
LinkedList ultimasOperaciones;
void ingreso (double cantidad){
}
void reintegro (double cantidad){
}
}

Objetos

Un objeto es una instancia de una clase,


creada en tiempo de ejecucin
Es una estructura de datos formada por tantos
campos como atributos tiene la clase.
El estado de un objeto viene dado por el valor
de los campos.
Los mtodos permiten consultar y modificar el
estado del objeto.

Objetos dominio vs. Objetos aplicacin


Ejemplo: Aplicacin Correo electrnico

Objetos externos:

Procedentes del dominio de la aplicacin:

carpeta, buzn, mensaje

Objetos software:

Procedentes del ANALISIS: todos los externos


Procedentes del DISEO/IMPLEMENTACION:

lista enlazada, ventana,...

cuentaAhorro

Cuenta

Persona

empleado
CuentaCorriente
cliente

AN

Cliente

Sistema Software (Clases)


DI
S

Objetos del mundo real

Empleado

E
O

cuentaCorriente

CuentaAhorro

EJECUCIN

AL
ISI
S

empleado

Cada objeto es
instancia
directa
de una clase

cuentaCorriente

cuentaAhorro

cliente

Instancias de las clases (objetos software)

Tipos de los atributos

Tipos de datos primitivos:

Enteros: byte, short, int, long


Reales: float, double
Carcter: char
Booleano: boolean

Referencias:

Sus valores son objetos de tipos no bsicos, otras


clases.
Enumerados: son clases que representan un
conjunto finito de valores

Enumerados
enum EstadoCuenta{
OPERATIVA, INMOVILIZADA, NUM_ROJOS;
}
public class
private
private
private

Cuenta{
String titular;
double saldo;
EstadoCuenta estado;

Relacin cliente

Cuando en una clase A establecemos que el


tipo de un atributo es otra clase B, decimos que
A es cliente de B.
Por ejemplo:

Definimos la clase Persona


Declaramos el tipo del atributo titular (en la clase
Cuenta) como Persona.
La clase Cuenta es cliente de la clase Persona

Relacin de cliente
Cuenta
titular: Persona;
saldo: double;
reintegro(valor:double);
ingreso (valor:double);

Persona
nombre: String;
dni: String;

Referencia a otro objeto!!

titular
saldo 1200.0
Objeto Cuenta

Jos Martnez
34789567R
Objeto Persona

Semntica referencia

Una referencia es un valor que en tiempo de ejecucin


est o vaco (null) o conectado.
Si est conectado, una referencia identifica a un nico
objeto.
Mientras exista, cada objeto posee una identidad nica,
independiente de su estado identificador de
objeto (oid):

Dos objetos con diferentes oids pueden tener los mismos


valores en sus campos.
Los valores de los campos de un objeto pueden cambiar, pero
su oid es inmutable.

Cuando se asigna un objeto a una variable no se asigna


la estructura de datos del objeto sino el oid.

Igualdad vs. identidad


b
a
c

uno

uno

dos

23

23

23

Igualdad entre referencias Identidad

a == c
a == b

{true}
{false}

Igualdad entre objetos

Podemos utilizar el mtodo equals

Copia de objetos

Si la asignacin no implica copia de


objetos cmo se pueden copiar?

copia = obj.clone();

Constructor de copia:

Se pasa como parmetro un objeto de la misma


clase
Se inicializan los campos del nuevo objeto con los
mismos valores de los campos del objeto que se
pasa como parmetro.

Semntica referencia

Ventajas de las referencias:

Comparticin de objetos integridad referencial


Permite definir estructuras recursivas (autoreferencias)
Ms eficiente manejo objetos complejos
Los objetos se crean cuando se necesitan
Soporte para el polimorfismo

Semntica referencia
miCuenta
J. Gomez nombre

titular
codigo

123456

87654321 dni

saldo

100000

Objeto Persona

ultimasOperaciones
-5000

10000
Objeto Array

Semntica referencia
Comparticin
Objeto Cuenta

titular
codigo

123456

saldo

100000

Autorreferencias

Objeto Cuenta

titular
876234 codigo
saldo
50000
ultOper

ultOper
-5000
10000

55000
-5000
J. Gmez nombre
87654321 dni
Objeto Persona

nombre

M. Martinez

categoria

Fijo

salario

100000000

jefe
Objeto Empleado

Mtodos y mensajes

Un mtodo est compuesto por:

Mensaje:

Cabecera: Identificador y Parmetros


Cuerpo: Secuencia de instrucciones
Mecanismo bsico de la computacin OO.
Invocacin de la aplicacin de un mtodo sobre un
objeto.

Un mensaje est formado por tres partes

Objeto receptor
Selector o identificador del mtodo a aplicar
Argumentos

Ejemplo mtodo vs. mensaje

Mtodo reintegro en la clase Cuenta:

public double reintegro (double cantidad) {


if (puedoSacar(cantidad))
saldo = saldo cantidad;

Mensaje, aplica el mtodo reintegro sobre un


objeto cuenta:
cuenta.reintegro(600.0);

Definicin de Mtodos

Todo mtodo tiene un valor de retorno

Si no devuelve nada se indica con void

Para cada mtodo se establece el nivel de


visibilidad
Qu instrucciones podemos incluir en el
cuerpo de un mtodo?

Asignacin
Estructuras condicionales
Iteracin
Invocacin a otro mtodo = Mensajes
Creacin de objetos

Sentencias de control de flujo


switch(expresin) {
case valor1:
if( expresin-booleana )

sentencias;

break;

sentencias;

case valor2:

sentencias;

[else {

break;

sentencias;

[default:

}]

sentencias;]
}

Ejemplos
int saldo;

if (saldo<0)
estadoCuenta = Estado.NUMEROS_ROJOS;
int dia;

switch (dia){
case 1: System.out.println(Lunes); break;
case 2: System.out.println(Martes); break;

case 7: System.out.println(Domingo); break;


}

Ejemplo

Mtodo reintegro teniendo en cuenta el estado de la


cuenta:
public boolean reintegro (double cantidad){
switch (estadoCuenta) {
case INMOVILIZADA:
case NUMEROS_ROJOS: return false;
case OPERATIVA: if (puedoSacar(cantidad))
saldo = saldo - cantidad;
return true;
default: return false;

}
}

Bucles (1/2)
[inicializacin;]
do {
sentencias;
[iteracin;]
}while (expresin-booleana );
[inicializacin;]
while( expresin-booleana ) {
sentencias;
[iteracin;]
}

Ejemplos
public class Cuenta{

private double[] ultimasOperaciones;


public double getSaldo(){
int index = 0;
double saldo = 0;
while (index < ultimasOperaciones.length){
saldo = saldo + ultimasOperaciones[index];
++index;
}
return saldo;
}
}

Bucles (2/2)
for( inicializacin; exp-booleana; iteracin ) {

sentencias;
}

Bucle ForEach
for(Tipo valor : nombreColeccion){

//hacer algo con valor


}

Ejemplos
public double getSaldo(){
double saldo = 0;
for (int index=0; i<ultimasOperaciones.length; index++)
saldo = saldo + ultimasOperaciones[index];
return saldo;
}
public double getSaldo(){
double saldo = 0;
for (double operacion : ultimasOperaciones)
saldo = saldo + operacion;
return saldo;
}

Sobrecarga de mtodos

Java soporta sobrecarga de mtodos

el mismo nombre pero con DIFERENTE lista de tipos de


argumentos.
No pueden diferenciarse nicamente en el tipo de retorno.

//Pago de una compra en una vez


public boolean cobrar(Compra ticket){
return reintegro(ticket.getTotal());
}
//Pago a plazos devuelve el nmero de plazos
public int cobrar(Compra ticket, boolean aplazado){

Paso de parmetros

Sea el mtodo

y la invocacin (mensaje)

met (T1 p1,, Tn pn)


Donde p1 pn son los parmetros formales
obj.met (a1,,an)
Donde a1 an son los parmetros reales

Debemos responder a las siguientes preguntas:

Cul es la correspondencia entre parmetros reales y


formales?
Qu operaciones se permiten sobre los parmetros formales?
Qu efecto tendrn las operaciones aplicadas sobre los
parmetros formales sobre los parmetros reales
correspondientes?

Paso de parmetros

El efecto del paso de parmetros es una asignacin


pi = ai

Paso de parmetros siempre por valor

En el caso de las referencias, el argumento formal referencia al


mismo objeto referenciado por el argumento real
En el caso de los tipos primitivos pi es una copia de ai

Al parmetro real no le afectan los cambios en el parmetro


formal

Cuando trabajamos con referencias el efecto de una


operacin sobre el parmetro formal implica que se
modifique el estado del parmetro real.

Paso de parmetros

No existe ninguna restriccin sobre las


operaciones aplicables sobre los parmetros
formales

Es posible modificar el parmetro formal

El parmetro real no se cambia porque el


parmetro formal era una copia de la
referencia o del tipo primitivo.

Paso de parmetros
public void transferencia(Cuenta emisor, Cuenta receptor,
double cantidad) {
emisor.reintegro(cantidad);
receptor.ingreso(cantidad);
emisor = null;

Cambia el estado
de los dos objetos

No afectara a la
variable cuenta1

banco.transferencia(cuenta1, cuenta2, 3000.0);

Instancia actual

Cada operacin de una computacin OO es


relativa a cierto objeto, la instancia actual,
en el momento de la ejecucin de la operacin
A qu objeto Cuenta se refiere el texto de la
rutina reintegro?

El cuerpo de una rutina se refiere a la instancia


sobre la que se aplica

La instancia actual es el receptor de la llamada


actual, el objeto receptor del mensaje

Ejemplo: c1.reintegro(300)
c1
J. Gomez nombre

titular
codigo

saldo-300

saldo

ultimasOperaciones

123456
600

87654321 dni
Objeto Persona

-5000

10000
Objeto Array

public double reintegro (double cantidad) {


if (puedoSacar(cantidad))
saldo = saldo cantidad;
}

Instancia actual

Si se aplica un mtodo y no se especifica


el objeto receptor, se asume que es la
instancia actual.
public double reintegro (double cantidad) {
if (puedoSacar(cantidad))
saldo = saldo cantidad;
}

El objeto receptor de puedoSacar ser


el objeto receptor del reintegro

Referencia this

El lenguaje Java proporciona la palabra clave


this que referencia a la instancia actual.
Utilidad:

Distinguir los atributos de los parmetros y variables


locales dentro de la implementacin de un mtodo.
Aplicar un mensaje a otro objeto estableciendo como
parmetro la referencia al objeto actual.

Referencia this
public void trasladar(Sucursal sucursal){
this.sucursal.eliminar(this);
sucursal.aadir(this);
}
Se refiere al parmetro
Se refiere al atributo de la clase

Se refiere a la instancia actual, la cuenta


que se va a trasladar

Creacin de Objetos

La declaracin de una variable cuyo tipo sea


una clase no implica la creacin del objeto.
Se necesita un mecanismo explcito de creacin
de objetos: new
Por qu?

Evitar cadena de creaciones antes de empezar a


hacer nada til
Estructuras recursivas
Los objetos se crean cuando se necesitan
(referencias vacas, compartir objeto)

Declaracin vs. Creacin


Cuenta c;

//declaracin
Estado null

c = new Cuenta() //creacin explcita


Estado conectado

c contiene la referencia al objeto


objeto CUENTA

c almacena el oid asignado al


objeto al crearse

Constructores

Mtodo encargado de inicializar correctamente los


objetos
Mtodos con el mismo nombre de la clase pero sin valor
de retorno
No se pueden invocar una vez que el objeto se ha
creado
Permite sobrecarga para especificar formas distintas
de inicializar los objetos
Toda clase tiene que tener al menos un constructor
Si no se define ningn constructor, el compilador crea
uno por defecto sin argumentos, vaco, que inicializa
los atributos a los valores por defecto.

Inicializacin por defecto


Tipo
boolean
char
byte,short,int,
long
float
double
Referencia a objeto

Valor Inicial
false
Carcter 0 (\u000)
0
+0.0f
+0.0d
null

Constructores para la clase Cuenta


public Cuenta(Persona quien){
//Utilizamos this para invocar al otro constructor
// reutilizacin de cdigo
this(quien, 100);
}
public Cuenta(Persona quien, double saldoInicial){
titular = quien;
saldo = saldoInicial;
ultimasOperaciones = new double[20];
}
El array hay que crearlo!!!

Creacin de objetos

La construccin de un objeto consta de tres


etapas:

Se reserva espacio en memoria para la estructura de


datos que define la clase.
Inicializa los campos de la instancia con los valores
por defecto

Garantiza que cada atributo de una clase tenga un valor


inicial antes de la llamada al constructor

Se aplica sobre la instancia el constructor que se


invoca

Creacin de objetos
Cuenta cta = new Cuenta (persona, 300.0);

cta

titular
saldo
codigo
ultimasOperaciones

null
300.0
0.0
01
null

Objeto
Persona

Atributos finales

Java permite especificar que el valor de un


atributo no podr variar una vez construido el
objeto
Un atributo se declara de slo consulta
anteponiendo el modificador final a su
declaracin
Los atributos finales slo pueden ser
inicializados en la declaracin o en el
constructor

Atributo final
public class Cuenta {
//Los atributos se pueden inicializar
//en el momento de la declaracin
private double saldo = 100;
private final Persona titular;
public Cuenta(Persona persona) {
titular = persona;
}
Error en tiempo de compilacin

public void setTitular(Persona persona){


titular = persona;
}
}

Atributos de clase

Representa una propiedad cuyo valor es


compartido por todos los objetos de una misma
clase
Ejemplo:

Aadimos a las cuentas un atributo para el cdigo de


cuenta.
Es necesario una variable que almacene el ltimo
cdigo de cuenta asignado.

En un lenguaje imperativo se declarara una


variable global.
Java es un lenguaje OO puro que no permite
declaraciones fuera del mbito de una clase.

Atributos de clase
public class Cuenta {
private static int ultimoCodigo = 0;
private
private
private
private

int codigo;
double saldo;
final Persona titular;
double [] ultimasOperaciones;

public Cuenta(Persona nombre, double saldoInicial) {


codigo = ++ultimoCodigo;
titular = nombre;
saldo = saldoInicial;
ultimasOperaciones = new double[20];
}

A los atributos de clase se tiene acceso desde cualquier mtodo de la clase

Constantes

En Java no hay una declaracin especfica


para las constantes.
Se consigue el mismo resultado definiendo un
atributo de clase y final.
Las constantes no pueden ser modificadas.
No tiene sentido definir mtodos de acceso y
modificacin.
El nivel de acceso es controlado por su
visibilidad.

Constantes
public class Cuenta {
private static final int MAX_OPERACIONES = 20;
private static final double SALDO_MINIMO = 100;
private static int ultimoCodigo = 0;
private
private
private
private

int codigo;
double saldo;
final Persona titular;
double[] ultimasOperaciones;

public Cuenta(Persona persona) {


codigo = ++ultimoCodigo;
titular = persona;
saldo = SALDO_MINIMO;
ultimasOperaciones = new double[MAX_OPERACIONES];
}
}

Tema 2

Clases y Objetos

68

Mtodos de clase

Cmo definimos operaciones que manejan


atributos de clase?
Un mtodo se define de clase anteponiendo el
identificador static a su declaracin
En el cuerpo del mtodo de clase slo se
puede acceder a los atributos de clase
Para la aplicacin de un mtodo de clase no
se hace uso de ningn objeto receptor, sino del
nombre de la clase

Mtodos de clase
public class Cuenta {
private static int ultimoCodigo = 0;

public static int getNumeroCuentas() {


return ultimoCodigo;
}
}

Cuenta.getNumeroCuentas();

Destruccin de objetos

En Java los objetos no se destruyen


explcitamente
Recoleccin automtica de memoria de los
objetos no referenciados (Garbage Collector)
Existe un mtodo finalize()

Este mtodo se invocar justo antes de la


recoleccin de basura
Interesa para liberar recursos (ej. conexin bases de
datos).

Modelo de ejecucin OO

Para obtener un cdigo ejecutable se deben ensamblar


las clases para formar sistemas (cerrado).

Un sistema viene dado por:

Un conjunto de clases
La clase raz
El procedimiento de creacin de la clase raz.

La ejecucin de un programa OO consiste en:

Creacin dinmica de objetos


Envo de mensajes entre los objetos creados, siguiendo un
patrn impredecible en tiempo de compilacin

Modelo de ejecucin OO

Cmo empieza la ejecucin de un programa OO?

En tiempo de ejecucin, el flujo de ejecucin siempre


se encuentra:

Creacin de un objeto raz


Aplicar mensaje sobre objeto raz

aplicando una operacin sobre un objeto (instancia actual) o


ejecutando una operacin que no es un mensaje (asignacin,
creacin).

En un instante dado bien se aplica un mensaje sobre la


instancia actual o sobre un objeto accesible desde l.
Un mensaje siempre formar parte del cuerpo de una
rutina de una clase

Modelo de ejecucin OO
RAIZ

obj2

obj7

obj1

obj4
ACTUAL
obj5
obj9
obj3
obj8

El mtodo main

Debemos proporcionar el nombre de la clase


que conduzca la aplicacin
Cuando ejecutamos un programa, el sistema
localizar esta clase y ejecutar el main que
contenga
El mtodo main es un mtodo de clase que
recibe como parmetro un array de cadenas de
texto que son los parmetros del programa

El mtodo main

Definicin del mtodo main

public class Eco{


public static void main(String[] args){
for(int i=0; i < args.length; i++)
System.out.println(args[i]+ );
}
}

Parmetros del programa:


c:\ java Eco estamos aqu --> SALIDA: estamos aqu

Principios de diseo de clases

Favorecer la legibilidad del cdigo:

Asignar nombres significativos para los identificadores de


atributos, variables y mtodos
Inicializar los atributos

Favorecer la extensibilidad:

Utilizar constantes simblicas significativas


Seguir los principios de diseo modular

Principios de diseo de clases

Ocultacin de la Informacin

Alta Cohesin

Los atributos de una clase deben ser privados y ofrecer los mtodos
de consulta necesarios dependiendo de su nivel de acceso (set y/o
get)
Diferenciar entre mtodos pblicos (interfaz de la clase) y mtodos
privados (mtodos auxiliares)
Para acceder a una constante, sta debe ser pblica en lugar de
ofrecer un mtodo de consulta.
Fragmentar clases que tengan demasiadas responsabilidades

Bajo Acoplamiento

Ley de Demeter: Habla slo con tus amigos para un mtodo m de


una clase C slo deberan invocarse los mtodos: de la clase C, de
los parmetros que recibe el mtodo m, de cualquier objeto creado
en el mtodo m, de cualquier atributo (variable de instancia) de la
clase C

Das könnte Ihnen auch gefallen