Poo4

  • 336 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
336
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
1
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Programación orientada aobjetos Resumen de Temas Unidad 4: Sobrecarga
  • 2. 4.1 Conversión de tipos(1)Conversiones implícitas: La conversión entre tipos primitivos se realizan de modo automático de un tipo a otro de más precisión, por ejemplo de int a long, de float a double, etc. Estas conversiones se hacen al mezclar variables de distintos tipos en expresiones matemáticas o al ejecutar sentencias de asignación en las que el miembro izquierdo tiene un tipo distinto (más amplio) que el resultado de evaluar el miembro derecho.
  • 3. 4.1 Conversión de tipos(2)Conversiones explícitas: Las conversiones de un tipo de mayor a otro de menor precisión requieren una orden explícita del programador, pues son conversiones inseguras que pueden dar lugar a errores (por ejemplo, para pasar a short un número almacenado como int, hay que estar seguro de que puede ser representado con el número de cifras binarias de short). A estas conversiones explícitas de tipo se les llama cast. El cast se hace poniendo el tipo al que se desea transformar entre paréntesis, como por ejemplo: long result; result = (long) (a/(b+c)); A diferencia de C/C++, en Java no se puede convertir un tipo numérico a boolean.
  • 4. 4.1.1 Conversiones segurasEl tamaño de los tipos que queremos convertir es muy importante. Notodos los tipos se convertirán de forma segura. Por ejemplo, al convertirun long en un int, el compilador corta los 32 bits superiores del long(de 64bits), de forma que encajen en los 32 bits del int, con lo que si contieneninformación útil, esta se perderá.Por ello se establece la norma de que "en las conversiones el tipo destinosiempre debe ser igual o mayor que el tipo fuente":
  • 5. 4.1.2 Conversiones entre tipos primitivos y cadenas1Las clases wrapper contiene útiles métodos y constantes muyutilizados en conversión de tipos, y para el manejo de sistemasbases de números, hexadecimal ,octal, binario, etc. Operación Sintaxisboolean to String String s = theBoolean ? “true”: “false”; String s = “” + TheBoolean;byte, short, char,int to String s = Byte.toString(theByte);String String s = Short.toString(theShort); String s = Integer.toString(theNumber);byte, short, char, String s = Integer.toString(theNumber, base);int to String String s = Integer.toBinaryString(theNumber); String s = Intefer.toOctalString(theNumber); String s = Integer.toHexString(theNumber); String s = String.valueOf(theNumber), Strin s = ""+theNumber;
  • 6. 4.1.2 Conversiones entre tipos primitivos y cadenas2 Operación Sintaxislong to String String s = Long.toString(theLong); String s = Long.toString(theLong , base); String s = Long.toBinaryString(theLong); String s = Long.toOctalString(theLong); String s = Long.toHexString(theLong); String s = String.valueOf(theLong); String s = "" + theLongfloat to String String s = Float.toString(theFloat); String s = String.valueOf(theFloat); String s = “”+theFloat;double to String String s = Double.toString(theDouble): String s = "" + TheDoubleString to boolean booelan b= Boolean.getBoolean(theString);
  • 7. 4.1.2 Conversiones entre tipos primitivos y cadenas3 Operación SintaxisString to byte byte b = Byte.parseByte(theString); byte b = Byte.parseByte(theString , base);String to short short s = Short.parseShort(theString); short s = Short.parseShort(theString , base);String to int int ¡ = Integer.parseInt(theString); int ¡ = Integer.parseInt(theString , base);String to long long x= Long.parseLong(theString); long x= Long.parseLong(theString , base);String to char char c= (char)integer.parseInt(theString); char c = (char)integer.parseInt(theString , base);String to float float f= Float.parseFloat(theString);String to double double d = Double.parseDouble(theString)
  • 8. 4.1.3 LiteralesEn Java hay una forma de especificar un valor determinado a una variable oconstante, mediante una literal, que es una expresión constante utilizada paraexpresar un valor: Notaciones literales Tipo Formato int Decimal dígitos 0-9 ejemplo: (1234) Octal cero (0) seguido de los dígitos 0-7 ejemplo: (01234) Hexadecimal 0x o 0X seguido de los dígitos 0-9, A-F ejemplo: (0x1234) long Añade l o L al final del término literal int ejemplo: 0xDECADAL float Añade f o F al final del término literal double y sustituye a d/D en caso de existir por ejemplo: 3.14f , 3.14E+15F double Notación científica como en 1.345e+10, donde el exponente puede expresarse con una e o una E; puede encontrarse una d o D al final del elemento literal double char Un único caracter o secuencia de escape entre comillas sencillas, por ejemplo: X, r. String Varios caracteres o secuencias de escape entre comillas dobles. . boolean verdadero, falso Null nulo
  • 9. 4.1.4 Secuencias de escape de caracterSon caracteres que pueden utilizarse en los flujos o en el métodoSystem.out.println() para control de la salida que el programador desea, y siempretienen como prefijo la diagonal invertida o back slash: Escape Significado n nueva línea t tabulador b espacio en blanco r retorno de carro f formfeed back slash, para comentarios comilla simple " comillas ddd número en octal (ejemplo: 231 ) xdd número en hexadecimal (ejemplo: x12 ) udddd caracter UNICODE (ejemplo: u1914 )
  • 10. 4.1.5 Valores por defectoCuando datos de tipo primitivo son miembros de una clase, se garantiza que poromisión toman estos valores de inicialización:Cuando las variables son referencias a un objeto y no son instanciadas, segarantiza que su valor tendrá un valor constante Null ( nulo ).
  • 11. 4.2 Sobrecarga de métodos Java permite métodos sobrecargados (overloaded), es decir, métodos distintos que tienen el mismo nombre, pero que se diferencian por el número y/o tipo de los argumentos. Se pueden sobrecargar los constructores de una clase al igual que otros métodos. Se puede llamar a un constructor desde otro constructor usando la palabra this. Diferente de la sobrecarga de métodos es la redefinición. Una clase puede redefinir(override) un método heredado de una superclase. Redefinir un método es dar una nueva definición. En este caso el método debe tener exactamente los mismos argumentos en tipo y número que el método redefinido.
  • 12. 4.2.1 Proceso en la llamada de un método sobrecargado1. Si existe el método cuyos argumentos se ajustan exactamente al tipo de los argumentos de la llamada (argumentos actuales), se llama ese método.2. Si no existe un método que se ajuste exactamente, se intenta promover los argumentos actuales al tipo inmediatamente superior (por ejemplo char a int, int a long, float a double,etc.) y se llama el método correspondiente.3. Si sólo existen métodos con argumentos de un tipo más restringido (por ejemplo, int en vez de long), el programador debe hacer un cast explícito en la llamada, responsabilizándose de esta manera de lo que pueda ocurrir.4. El valor de retorno no influye en la elección del método sobrecargado. En realidad es imposible saber desde el propio método lo que se va a hacer con él. No es posible crear dos métodos sobrecargados, es decir con el mismo nombre, que sólo difieran en el valor de retorno.
  • 13. 4.2.3 Ejemplo de sobrecarga de métodospublic class Circulo { static int numCirculos = 0; Propiedades public static final double PI=3.14159265358979323846; public double x, y, r; public Circulo(double x, double y, double r) { this.x=x; this.y=y; this.r=r; numCirculos++; } public Circulo(double r) { this(0.0, 0.0, r); } Sobrecarga de public Circulo(Circulo c) { this(c.x, c.y, c.r); } constructores public Circulo() { this(0.0, 0.0, 1.0); } public double perimetro() { return 2.0 * PI * r; } public double area() { return PI * r * r; } Sobrecarga de Métodos // método de objeto para comparar círculos public Circulo elMayor(Circulo c) {if (this.r>=c.r) return this; else return c;} // método de clase para comparar círculos public static Circulo elMayor(Circulo c, Circulo d) { if (c.r>=d.r) return c; else return d;}} // fin de la clase Circulo
  • 14. 4.3 Sobrecarga de operadores La sobrecarga de operadores a diferencia de C++ en JAVA No existe. Solo en los objetos String el operador + y += se permiten para la concatenación de cadenas.