Upload
mayte-vita
View
4
Download
0
Embed Size (px)
Citation preview
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 .2
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:
• Public • static• Protected • final• Private• Default
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .3
• 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 .4
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 .5
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 .6
Objetos
• 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
Aunque su declaración es como de tipo primitivo
Aunque su declaración es como de tipo primitivo
Variable primitiva : contiene el dato directamente
Variable compleja:contiene una referencia a memori a donde esta el objeto
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 .7
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 .8
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 .9
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 .10
Ejemplo: Clases y Objetos
-Clase Punto -Clase Circulo
-Clase Triangulo -Clase Practica5a
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .11
public class Punto {//Atributosprivate double x=0.0;private double y;
//Constructorespublic Punto(){x=2.2;y=0.0;}public Punto(double param1,double
param2){x=param1;y=param2;}
//Getterspublic double getX(){return x;}public double getY(){return y;}//Resto de mertodospublic double
calcularDistanciaDesde(Punto param){double cateto1=x-param.getX();double cateto2=y-param.getY();double
hipotenusa=Math.sqrt(cateto1*cateto1+cateto2*cateto2);
return hipotenusa;}}
Clase punto
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .12
public class Circulo {//Atributosprivate Punto centro=null;private double radio=0.0;
//Constructorespublic Circulo(){centro=new Punto();radio=3.1;}public Circulo(Punto param1,double param2){centro=param1;radio=param2;}public Circulo(double param1,double
param2,double param3){centro=new Punto(param1,param2);radio=param3;}
//Getterspublic Punto getCentro(){return centro;}public double getRadio(){return radio;}//Resto de metodospublic double calcularArea(){return Math.PI*radio*radio;}public double calcularPerimetro(){return 2*Math.PI*radio;}public double
calcularDistanciaDesde(Puntoparam){return centro.calcularDistanciaDesde(param);}}
Clase Circulo
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .13
public class Triangulo {//Atributosprivate Punto p1,p2;private Punto p3=null;
//Constructorespublic 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);}
//Getterspublic Punto getP1(){return p1;}public Punto getP2(){return p2;}public Punto getP3(){return p3;}
//Resto de metodospublic 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);}}
Clase triangulo
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .14
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)));}
Clase Practica 5a
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .15
Diagrama de clases de la practica5a
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA .16
Bibliografía:
• Java2.
tutorial de javahispano (http://javahispano.org)
• Progamación en Java (http://javahispano.org)
- teoría
- practica
• Piensa en Java