Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación...

42
Definición de Clases y Variables de referencia.

Transcript of Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación...

Page 1: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Definición de Clases y Variables de referencia.

Page 2: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones

(métodos). Estos datos y estas acciones están relacionadas entre sí, de

manera que dan sentido al objeto. Esto es encapsulación. Ejemplo: Un punto x,y en un plano Cartesiano.

objeto: punto1

datos: coordenadas (x, y )

métodos: getX, getY, setX, setY.

Page 3: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

¿Qué es una clase?

Una clase es una generalización de un objeto. Una clase es un modelo o formato que deben cumplir todos los

objetos que pertenecen a dicha clase. En el ejemplo del Punto, podemos tener un objeto punto1, sin

embargo no será único. Todos los demás puntos que se dibujen en el plano Cartesiano, punto2, punto3, etc., tienen el mismo patrón de datos y comportamiento; es decir todos están dibujados en una posición (x,y), y se pueden accesar sus datos con getX y en getY.

Cada uno de estos puntos es un objeto o instancia de la clase Point

x

y

Page 4: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

más sobre clases... Una vez que especificamos o creamos una clase podemos

construir cualquier numero de objetos que pertenezcan a dicha clase y que por lo tanto tengan el mismo comportamiento.

Los objetos creados a partir de una clase son instancias de esa clase.

Page 5: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Variables de Instancia y Variables de Clase: Variables de Instancia.- Cada objeto que pertenece a la

clase tiene una copia personal de la variable. Variables de Clase.- Existe una sola copia de la variable,

sin importar el numero de objetos que fueron creados de dicha clase.

Page 6: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Caracterísiticas de la Programación orientada a objetos: Polimorfismo...

Si tuvieramos una clase Circulo, para la cual también se definieron los métodos getX y getY, JAVA por su característica de polimorfismo sabrá a qué método referenciar cuando se invoque objeto.getX

Esto es, si tenemos la siguiente definición:private Point punto1;private Circulo circulo1;

Cuando se invoca al método:punto1.getX(); // se está referenciando al método getX que

pertenece a la clase Point.circulo1.getX(); // se está referenciando al método getX que

pertenece a la clase Circulo.

Page 7: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Caracterísitcas de la Programación orientada a objetos: Herencia... Cuando una clase hereda las variables y métodos de otra

clase, se dice que la primera extiende a, o es una subclase de la segunda.

Se profundizará en este tema más adelante.

Page 8: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Clase Point:

private static int numCreated=0

private int x=0private int y=0

public class Point {

Métodos

}

x,y x,y x,y

punto1 punto2 punto3

x = 5Y = 7

x = 8Y = 3

x = 4Y = 9

numCreated

= 1 = 2 = 3

Estos campos no pueden ser accesados desde afuera de la clase

Variable de clase (estática)

Page 9: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Definiendo un objeto.Las siguientes son opciones válidas para definir un objeto de una

clase:

public Persona persona1; //con acceso para otras clasesprivate Persona persona1; //para uso exclusivo dentro de la clase

Un arreglo de objetos:public Persona[] personas;

Para asignar el objeto a la variable:persona1 = new Persona();personas = new Persona[100];personas = new Persona[MAX_PERSONAS];

Se puede hacer al mismo tiempoprivate Persona personas = new Persona();private Persona[] personas = new Persona[maxPersona];

Page 10: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Creando un constructor Es posible crear varios constructores para una misma

clase, que hagan algo dependiendo del tipo de parámetros que reciben. Esto se llama polimorfismo.

Recordar:*NO lleva definición Tipo de dato de entrada.*El nombre del constructor esel mismo que el de la clase.*Los constructores accesan directamente las variables de instancia. No se usan métodos para asignar los valores.

public Vagon() {

peso = 0;

}

Page 11: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Constructores: Cuando utilizas una variable de tipo int o double, es necesario

inicializarla con los valores que tu requieres. De la misma manera los objetos de una clase necesitan ser

inicializados cuando son creados. La forma de inicializar los objetos de una clase, es al momento de

crearlos con el estatuto new. El estatuto new llama a los métodos constructores de la clase y

envía los datos iniciales con los que se creará el objeto.

Page 12: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Caracterísiticas de los métodos constructores:

Tienen el mismo nombre de la clase. Pueden existir varios métodos constructores para la misma

clase, con diferentes parámetros, siempre y cuando se conserve el mismo nombre de la clase.

El método NO debe de decir int, double, void ni nada. Aunque el método constructor no requiera parámetros, es

necesario dejar los paréntesis vacíos. Default Constructor Ejemplo: public Point( ) {}

Page 13: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Cambiando los valores de las variablesde instancia. Normalmente los valores de las variables de instancia los

declararemos como private. Para cambiar el valor de una variable de instancia se usan

metodos mutadores:public void setEdad(int edad) {

this.edad = edad;}ópublic void setEdad(int e) {

edad = e;}

Si la variable local que serecibe se llama igual que lavariable de instancia se usa el this.

Por convención los métodosSe inician con minúscula y cada palabraque define el método va con mayúscula.

No olvidar el void.

Page 14: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Regresando el valor de una variable de instanciaLos métodos que regresan un valor de variable de instancia

se declaran usando el valor de retorno. Y de denominan métodos accesores.

public int getNumMaq() {

return numMaq;}

No recibe parámetros

Page 15: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Métodos: Los métodos describen lo que un objeto puede “hacer”. Métodos de instancia o no-estáticos.- Existen solo para los

objetos y deben ser llamados por un objeto en particular.

Formato: objeto.método

Ejemplo: punto1.getX();

Page 16: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Métodos: Los métodos describen lo que un objeto puede “hacer”. Métodos de clase o estáticos.- Existen solo para la clase y NO

pueden ser llamados por los objetos en forma individual.

Formato: clase.método

Ejemplo: Point.getNumCreated();

Este es un método estático !!

Nota: Los métodos estáticos NO

accesan datos del objeto !!

Page 17: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Métodos:

Definición de un método:return-type name(argument-list) body

Parámetros Formales: Lista de argumentos que se encuentran en el encabezado de la definición

del método

Argumentos Actuales:Lista de argumentos que se encuentran al momento de hacer la llamada

al método.

Los parámetros deben de corresponder en número, orden y tipo.

Page 18: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Métodos: Variables Locales: Son declaradas dentro del método y se

crean cada vez que se llama a dicho método. Paso de parámetros por valor: Para variables primitivas,

los parámetros formales son copia de los argumentos, de manera que se protege la integridad de los argumentos actuales.

Page 19: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Métodos: El paso de parámetros por valor protege la integridad de

los argumentos actuales: Si el método modifica sus parámetros formales, los argumentos actuales permanecen sin cambio.

Page 20: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Creando métodos de la clase Asegúrate de reflejar el valor de retorno en la definición del

método y recibir los parámetros.

private boolean setAutores(int numAutores) {

if (numAutores <= MAX_AUTORES) {this.numAutores = numAutores;return true;

} else {return false;

}}

public boolean agregaAutor(String nombre) {

autores[numAutores] = new Autor(nombre);return setAutores(numAutores + 1);

}

Page 21: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Regresando un objeto. El siguiente código muestra un ejemplo de retorno con un

objeto.

public Persona masEdad() {

int posMax = 0;

for (int i = 0; i <= numPersonas; ++i) {

If (personas[i].getEdad() > personas[posMax].getEdad()) {

posMax=i;

}

}

return personas[posMax];

}

Page 22: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Mandando llamar a los métodos de una clase.int i = 0;String titulo;String nombre;do {

stdOut.print("Dame el título del libro");stdOut.flush();libro[i].setTitulo(stdIn.readLine());stdOut.print("Dame el número de páginas");stdOut.flush();libro[i].setPagina(Integer.parseInt(stdIn.readLine()));do {

stdOut.print("Dame el nombre del autor");stdOut.flush();libro[i].agregaAutor(stdIn.readLine());stdOut.print("Deseas ingresar otro autor s/n?");stdOut.flush();cont = stdIn.readLine();

} while (cont.equals("s"));stdOut.print("Deseas ingresar otro libro s/n?");stdOut.flush();cont = stdIn.readLine(); ++i;

} while (cont.equals("s"));

Page 23: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Trabajando con valores de retorno.stdOut.printLn(“La persona de mayor edad, tiene”

+persona1.masPeso().getPeso());

El método masEdad() regresa un objeto de tipo Persona El objeto Pesona tiene un método getEdad();

Separando la instrucción:

Persona p1 = persona1.masPeso();int edad = p1.getPeso();stdOut.printLn(“La persona de mayor edad, tiene” +edad);

Page 24: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Acceso a los datos

Page 25: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Representación de los datos: Primitivos o Escalares.- Representan un valor por sí mismos.

Son datos pequeños y se requieren pocos recursos (tiempo y espacio) para crearlos o destruirlos.

Objetos.- Es una variable más compleja que puede contener varios valores. Tienden a ocupar más espacio que los escalares. En este caso los identificadores o nombres de variables representan una dirección o localidad en memoria.

Los objetos son representados por referencia y los datos escalares o primitivos por valor.

Page 26: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Representación de los datos: Objetos.- Ejemplo:

Point p1; En este caso p1 es solamente una dirección o una

referencia en memoria. Mientras p1 no sea inicializado adecuadamente su valor

será null Para crear realmente un objeto debemos utilizar el

operador new en conjunto con los contstructores definidos.

Page 27: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Acceso a los datos: Para accesar un método se utiliza el operador infijo “.”

De manera que tenemos: objeto.método Generalmente para accesar una variable de instancia NO

se hace directamente (objeto.variable) sino que se recurre a un método hecho especialmente para ello, por ejemplo: p1.getX();

Si se desea accesar una variable de clase, entonces se utiliza el formato: clase.método

Page 28: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Acceso a los datos: Si un objeto NO ha sido creado, ovbiamente no podemos

accesar su información a través de ningún método. Los únicos que sí pueden ser accesados aunque no exista

ningún objeto, son los métodos y campos estáticos, pues estos dependen de la clase y no de los mismos objetos.

Page 29: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Igualdad y Asignación de objetos:

int x = 5;int y = 5;x== y // la comparación será verdadero !

Point p1 = new Point(2,4);Point p2 = new Point(2,4);p1 == p2 // será falso !

porque está comparando dos direcciones.

Asignación y comparación de variables primitivas

Asignación y comparación de variables objeto

Page 30: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Igualdad y Asignación de objetos:

Point p1 = new Point(-1, -1);Point p2 = new Point(5, 10);p2 = p1; // lo que tenía p2 se va al garbage collector...

¿cuál será el resultado de la siguiente comparación?p1 == p2;

// será verdadero ! porque los dos objetos tienen la misma dirección.

Page 31: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Paso de parámetros por referencia: En JAVA, cuando se pasan parámetros a un método... Todos los valores primitivos son pasados por valor. Todos los valores no-primitivos (referencias (direcciones) y

objetos) son pasados por referencia.

Page 32: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Alcance de Variables (Scope):Scope = Alcance de las variables. Se refiere a la porción de

programa donde una variable “vive” o tiene significado.

Class Scope.- Comprende los identificadores declarados a nivel clase. Toda la clase puede ver dichas variables.

Block Scope.- Comprende identificadores declarados dentro de un bloque { }. Las variables locales a un método pueden ser utilizadas desde su punto de declaración hasta el final del bloque. Cuando sales de bloque se “mueren” las variables.

Page 33: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores de acceso

Page 34: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores de Acceso Normalmente se manejan 2 modificadores de acceso:

• public• private

Public

Private

Page 35: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores de Acceso Cuando se heredan los objetos todos sus

elementos con modificadores de public pueden seguir siendo accesados de la misma manera por instancias de la subclase.

Los elementos con modificadores de private solo van a poder ser accesado por métodos declarados en la superclase*.

*El objetivo del modificador private es que aquellos elementos declarados con él sean accesados únicamente por otros elementos internos a la clase.

Page 36: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores de Acceso

Superclase Subclase

Public

Private

Public

Private

Public

Private

Page 37: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores de Acceso Cuando se maneja herencia y se desea

que elementos que necesitan ser privados puedan ser accesados por otros elementos nuevos dentro de las sublcases entonces se utiliza el modificador de acceso protected.

*El modificador protected es en todos los aspectos idéntico al modificador private excepto en la forma en la que funciona con la herencia.

Page 38: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Superclase Subclase

Public

Private

Private

Public

Modificadores de Acceso

ProtectedPublic

Private

Protected

Page 39: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores de Acceso

Acceso desde

public private protected package

Métodos anexos de subclases

Métodos del mismo paquete entre la superclase y la

subclase

Una clase externa

Acceso a miembro heredado

Page 40: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores para campos...Modificadores para Campos: modificadores de acceso

public – se puede tener acceso a él desde cualquier parte desde donde la clase que lo contiene pueda accesarse

protected – puede accesarse solamente desde adentro de su clase, desde clases del mismo paquete donde está su clase y por subclases de su clase

default (no se especifica el acceso) – puede accesarse solamente desde adentro de su clase y por clases del mismo paquete de su clase

private – pueden accesarse solamente desde adentro de su clase

modificadores de existencia static – existe uno para toda la clase, en lugar de uno para

cada objeto de su clase modificadores de uso

final – no puede modificarse (i.e., constante o de sólo lectura)

Page 41: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores para métodos...Modificadores para Métodos: modificadores de acceso

public – se puede tener acceso a él desde cualquier parte desde donde la clase que lo contiene pueda accesarse

protected – puede accesarse solamente desde adentro de su clase, desde clases del mismo paquete donde está su clase y por subclases de su clase

default (no se especifica el acceso) – puede accesarse solamente desde adentro de su clase y por clases del mismo paquete de su clase

private – pueden accesarse solamente desde adentro de su clase modificadores de existencia

static – existen para servir a su clase y no para servir a objetos individuales de su clase; como consecuencia, los métodos static no tienen acceso a variables de instancia ya que éstas pertenecen a los objetos individuales, aún más, estos métodos no tienen acceso a this ni a super.

modificadores de uso final – no puede sobreescribirse abstract – debe sobreescribirse para que sea útil

Page 42: Definición de Clases y Variables de referencia.. ¿Qué es un objeto? Un objeto es una combinación de datos (variables) y acciones (métodos). Estos datos.

Modificadores para clases...Modificadores para Clases: modificadores de acceso

public – se puede tener acceso a ella desde cualquier clase default (no se especifica su acceso) – puede accesarse desde

adentro de cualquier clase de su mismo paquete, esto es, A fin de tener acceso por default a una clase, estas deben estar en el mismo paquete.

modificadores de uso final – no puede extenderse(heredada) abstract – debe extenderse (heredada) para que sea útil