2. 2
Clases y Objetos
– Estructura de una clase
– Atributos de instancia y de clase (static)
– Control de acceso.
– Métodos
– Creación de objetos: constructores e inicialización
– this
– main
– Paquetes
– Comentarios y documentación (javadoc)
3. El lenguaje de programación Java 3
Estructura de una clase
class NombreDeLaClase {
// declaración de las variables de instancia
// declaración de las variables de la clase
metodoDeInstancia() {
// variables locales
// código
}
metodoDeClase() {
// variables locales
// código
}
}
• Todo forma parte de una clase
• Java NO soporta funciones o variables GLOBALES
4. 4
Clases definidas por usuario
Partamos con un ejemplo; en el archivo Auto.java se tiene:
public class Auto {
public String nombre;
public int construccion;
public float rendimiento;
}
Podemos entonces escribir un programa que use esto:
public class Programa {
public static void main(String args[]) {
Auto miAuto1 = new Auto(); // el constructor clase()
es gratis!
miAuto1.nombre = “Volkswagen”; //porque es public
!!!!
miAuto1.construccion = 1994;
miAuto1.rendimiento = 9.65;
System.out.println(“mi auto es un “+miAuto1.nombre+
“fue construido el
“+miAuto1.construccion+
“y gasta “+rendimiento+”litros cada
100km”);
} }
5. 5
Clases Abstractas
• Son clases de las cuales no se pueden crear directamente
objetos. Están destinadas a ser superclases de otras.
Definen un conjunto de atributos comunes para todas las
clases derivadas.
abstract class Personal {
int numero; String nombre; int ingreso;
public Personal(int num, String nom){
numero=num; nombre=nom;
}
public abstract int sueldoBruto(); //implementar en clase
derivada
}
6. El lenguaje de programación Java 6
Atributos
– Atributos de clase:
• Común a todas las instancias de una clase
• Sólo se inicializan una vez.
Ej: static public int nextCodigo;
– Atributos de instancia:
• determina el estado de los objetos
• cada objeto reserva memoria para todas las variables de instancia
• Declaración:
[acceso][static][final] tipo nombreAtributo [= valor_inicial];
7. El lenguaje de programación Java 7
Inicialización de los atributos
• Si un atributo no se inicializa se le asigna un valor por
defecto en función de su tipo:
Tipo Valor Inicial
boolean false
char ‘u000’
byte,short,int,long 0
float +0.0f
double +0.0d
Referencia a objeto null
8. El lenguaje de programación Java 8
Control de acceso
• public – los miembros que se declaran como public
son accesibles en cualquier parte donde la clase sea
accesible
• private – miembros declarados como private sólo
accesibles en la propia clase
public class A{
public int at1;
private int at2;
…
}
• Atributos privados y acceso a través de métodos públicos
(set/get)
A a;
//creamos el objeto
a.at1 = 6 //OK
a.at2 = 5 //ERROR
9. 9
Métodos
• Código que “entiende” y manipula el estado de un objeto
• Pueden ser llamados dentro de la clase o por otras clases
• Es obligatorio indicar el tipo de retorno o void
• Declaración:
[acceso][static] tipoRetorno nomMet ([argumentos]){
//cuerpo del metodo
[return valorRetorno;]
}
• Invocación: Notación punto
objReceptor.nomMet(argumentos);
10. El lenguaje de programación Java 10
Métodos de clase
• Se invocan sobre la clase, no sobre un objeto
• Sólo puede acceder a las variables y métodos de clase
(static)
• Ejemplos:
1. int i = Integer.parseInt(“123”);
2. public class Ejemplo{
static private int at;
static public int getAt(){
return at;
}
}
Se invoca Ejemplo.getAt();
11. 11
Métodos
• Java soporta sobrecarga de métodos
– el mismo nombre pero con DIFERENTE lista de argumentos
– SIEMPRE devuelven el mismo tipo
public class ListaEnteros{
…
public void add (int elem){…}
public void add (int elem, int index){…}
}
• Paso de parámetros siempre por valor
– los valores de los parámetros son copias de los valores que especifica el que
lo invoca
– tipos primitivos no cambian
– los objetos pueden cambiar su estado se pasa por valor la referencia
12. El lenguaje de programación Java 12
Paso de parámetros
public class Contador {
int valor;
…
public void sincronizar(Contador c){
c.setValor(valor);
}
}
23 valorc1
c
Se puede modificar el estado del objeto
pero no la referencia
c2
45 valor
c1.sincroniza(c2);
23
c=c2
13. 13
Métodos de una Clase
• Son los que tienen la responsabilidad de:
- Entregar datos acerca del objeto
- Modificar datos dentro del objeto (especialmente si las componenetes
del objeto no fueron declarados como public)
- Crear un nuevo objeto (constructores)
• Los métodos pueden ser públicos, privados o protegidos
(public, private, protected), al igual que
las compoenetes
- pirvate: implica que pueden ser vistas sólo en la clase actual. Son
invisibles incluso para clases derivadas de esta.
- protected: implica que pueden ser vistas por las derivadas. Tambien
son vistas dentro del paquete (agrupación de clases en un archivo).
Este es eldefault.
- public:son vistas desde cualquier lado.
14. 14
Más sobre métodos
• Los métodos dinámicos (sobre objetos) se invocan:
variableObjeto.nombreMétodo(parametro1,..,parámetroN)
Ej: miAuto.cambiaConstruccion(1999)
• En el caso de los métodos estáticos:
NombreClase.nombreMétodo(parámetro1,..,parámetroN)
Ej: int i = AutoColeccion.cuantos()
• En Java existe la clase Math cuya función más importante es proveer al
leguage de los métodos matemáticos típicos:
Math.sqr(x), Math.sin(x), Math.max(x,y), Math.pow(x,y)
• El paso de parámetros es siempre por valor, salvo en el caso de objetos
y arreglos, que es por referencia (se pasa una copia del puntero al
objeto)
• main es un método estático de una clase !!!!!