Clases y Objetos Silvia Larrayoz Leire Urriza 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .1

Download Report

Transcript Clases y Objetos Silvia Larrayoz Leire Urriza 22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .1

Clases y Objetos
Silvia Larrayoz
Leire Urriza
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.1
Clases
• Implementación formato texto *.java y
nombre idéntico al nombre de la clase
• Declaración mediante la keyword class +
nombre
• Keyword precedido por un modificador de
acceso:
•
•
•
•
22/11/2005
Public
Protected
Private
Default
• static
• final
E.T.S de Ingenieros de Telecomunicación - UPNA
.2
• La implementación ira en un bloque
contenida en {}
Modificador_acceso class nombre_class { }
• La implementación consiste en
• Atributos
modificador_acceso tipo
nombre[valor_inicial]
• Métodos
modificador_acceso tipo_retorno nombre
([tipo parámetro,...])
{ }
• Método especial en
Java,constructor
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.3
Clases: Constructor
• Sirve para la construcción
(instanciación) de objetos (instancias)
a partir de esa clase.
• Declaración similar a los métodos
• Si nuestra clase no tiene constructores
el compilador añade uno sin parámetros
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.4
Clases: Sobrecarga de
métodos
• Métodos con el mismo nombre y tipo de
retorno pero diferentes parámetros
• Se permite también sobrecargar un método
cambiando el tipo de retorno
• Convenciones:
• Nombre de clases en mayúscula
• Nombre de atributos minúsculas
• Nombre de métodos minúsculas , salvo el del constructor
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.5
Objetos
Aunque su
declaración es
como de tipo
primitivo
• Es una variable de tipo complejo
• El tipo de un objeto es la clase de la que
se ha instanciado
• Sin inicializar su valor por defecto null
• Se inicializa mediante new y se llama al
constructor del que instanciaremos
Variable primitiva : contiene el dato directamente
Variable compleja:contiene una referencia a memori a
donde esta el objeto
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.6
Objeto : manejo de objetos
• Trabajar con un objeto:
acceder atributos y métodos
• Utilizaremos el operador .(punto)
• Acceso a un método se denomina
mensaje
• Objeto.método([parámetro,..])
• Las llamadas a métodos se pueden
encadenar
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.7
Método main
• Existe un método especial llamado main
• public satatic void main(String[] arg)
• Método donde comienza la ejecución en
un programa
• Crearemos una clase a parte que solo
tenga el método main.
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.8
Destructores: Garbage Collector
• Métodos encargados de eliminar los
objetos de la memoria
• Garbage Collector: busca y limpia todo
objeto de la memoria no utilizados
• No referenciado por ninguna variable:
• Se iguala a null
• Se iguala a otro objeto
• Se termina su ambito
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.9
Ejemplo: Clases y Objetos
-Clase Punto
-Clase Circulo
-Clase Triangulo
-Clase Practica5a
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.10
Clase punto
public class Punto {
//Atributos
private double x=0.0;
private double y;
//Getters
public double getX()
{
return x;
}
//Constructores
public double getY()
public Punto()
{
{
return y;
x=2.2;
}
y=0.0;
//Resto de mertodos
}
public double
calcularDistanciaDesde(Punto
public Punto(double param1,double
param)
param2)
{
{
double cateto1=x-param.getX();
x=param1;
double cateto2=y-param.getY();
y=param2;
double
}
hipotenusa=Math.sqrt(cateto1*catet
o1+cateto2*cateto2);
return hipotenusa;
}
E.T.S de Ingenieros de} Telecomunicación - UPNA
22/11/2005
.11
Clase Circulo
//Getters
public Punto getCentro()
{
return centro;
}
public double getRadio()
//Constructores
{
public Circulo()
return radio;
{
}
centro=new Punto();
//Resto de metodos
radio=3.1;
public double calcularArea()
}
{
public Circulo(Punto param1,double
return Math.PI*radio*radio;
param2)
}
{
public double calcularPerimetro()
centro=param1;
{
radio=param2;
return 2*Math.PI*radio;
}
}
public Circulo(double param1,double
param2,double param3)
public double
calcularDistanciaDesde(Puntoparam)
{
{
centro=new Punto(param1,param2);
return centro.calcularDistanciaDesde(param);
radio=param3;
}
}
E.T.S de Ingenieros de} Telecomunicación - UPNA
22/11/2005
public class Circulo {
//Atributos
private Punto centro=null;
private double radio=0.0;
.12
Clase triangulo
public class Triangulo {
//Atributos
private Punto p1,p2;
private Punto p3=null;
//Constructores
public Triangulo()
{
p1=new Punto();
p2=new Punto(1.2,10.7);
p3=new Punto(5.5,5.5);
}
public Triangulo(Punto param1,Punto param2,Punto
param3)
{
p1=param1;
p2=param2;
p3=param3;
}
public Triangulo(double x1,double y1,double
x2,double y2,double x3,double y3)
{
p1=new Punto(x1,y1);
p2=new Punto(x2,y2);
p3=new Punto(x3,y3);
}
22/11/2005
//Getters
public Punto getP1()
{
return p1;
}
public Punto getP2()
{
return p2;
}
public Punto getP3()
{
return p3;
}
//Resto de metodos
public double calcularArea()
{
double base=p1.calcularDistanciaDesde(p2);
double altura=p1.calcularDistanciaDesde(p3);
return base*altura/2;
}
public double calcularPerimetro()
{
double lado1=p1.calcularDistanciaDesde(p2);
double lado2=p2.calcularDistanciaDesde(p3);
double lado3=p3.calcularDistanciaDesde(p1);
return lado1+lado2+lado3;
}
public double calcularDistanciaDesde(Punto param)
{
return p1.calcularDistanciaDesde(param);
}
}
E.T.S de Ingenieros de Telecomunicación - UPNA
.13
Clase Practica 5a
public class Practica5a {
public static void main(String[] args) {
Punto a= new Punto();
Punto b= new Punto(1.1,42.3);
double distancia=a.calcularDistanciaDesde(b);
System.out.println("La distancia es:" + distancia);
Circulo c= new Circulo(a,5.0);
System.out.println("El area es:" + c.calcularArea());
System.out.println("El perimetro es:" + c.calcularPerimetro());
System.out.println("La distancia es:" + b.calcularDistanciaDesde(c.getCentro()));
Triangulo t= new Triangulo(a,b,new Punto(7.3,1.9));
System.out.println("El area es:" + t.calcularArea());
System.out.println("El perimetro es:" + t.calcularPerimetro());
System.out.println("La distancia es:" + t.calcularDistanciaDesde(new
Punto(8.0,9.0)));}
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.14
Diagrama de clases de la
practica5a
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.15
Bibliografía:
• Java2.
tutorial de javahispano
(http://javahispano.org)
• Progamación en Java
(http://javahispano.org)
- teoría
- practica
• Piensa en Java
22/11/2005
E.T.S de Ingenieros de Telecomunicación - UPNA
.16