Publicidad
Publicidad

Más contenido relacionado

Publicidad
Publicidad

Diapositivas curso programación orientada a objetos en Java

  1. Universidad Autónoma del Carmen Diapositivas Título: “Programación Orientada a Objetos” Curso: Programación Orientada a Objetos Academia de Programación Programación Orientada a Objetos 1
  2. Integrante: MCC. José Ángel Pérez Rejón Ciudad del Carmen, Campeche, Febrero 2016 Tema I Introducción Tema II Clases y objetos Tema III Relaciones entre clases Secuencia de Aprendizaje 1 / 1 Programación Orientada a Objetos Programación Orientada a Objetos 2
  3. Contenido •Identificadores •Tipos de Datos Primitivos •Asignación •Conversiones •Asignación entre variables •Ámbito de las variables •Valores por defecto de las variables •Paso de variables a métodos •Operadores •Estructuras de control •Bibliografía Programación Orientada a Objetos 3
  4. Identificadores Programación Orientada a Objetos 4
  5. Identificadores Técnicamente los identificadores deben ser formados solamente con caracteres UNICODE, números y caracteres $, y caracteres como el guión bajo (_) Los identificadores debe iniciar con una letra, un símbolo $ o un guión bajo. Los identificadores no pueden iniciar con un número Después del primer carácter los identificadores pueden contener cualquier combinación de otros caracteres, números, caracteres $, y guiones bajos. Programación Orientada a Objetos 5
  6. Identificadores En la practica no hay un limite de caracteres para formar un identificador. No se pueden utilizar las palabras reservadas del lenguaje Java como un identificador (ver tabla de palabras reservadas) Los identificadores en Java son sensitivos a letras mayúsculas y minúsculas; por ejemplo: no es el mismo identificador foo que Foo Programación Orientada a Objetos 6
  7. Palabras reservadas Lista completa de palabras reservadas de Java (assert es agregado en la version1.4, enum es agregado en la version 1.5) abstract boolean break byte case catch char class const continue default do double else extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while assert enum Programación Orientada a Objetos 7
  8. Ejemplos de identificadores Ejemplos de identificadores válidos: int _a; int $c; int ______2_w; int _$; int this_is_a_very_detailed_name_for_an_identifier; Ejemplos de identificadores no válidos, ¿porque?: int :b; int -d; int e#; int .f; int 7g; Programación Orientada a Objetos 8
  9. Convenciones en Java El 80% del tiempo en que se desarrolla un sistema se utiliza para darle mantenimiento y mejorar cada una de las piezas de código que lo forman Las convenciones son estándares de código que ayudan a reducir el esfuerzo en las etapas de prueba, mantenimiento, y mejoras sobre las piezas de código. Programación Orientada a Objetos 9
  10. CamelCase CamelCase es la práctica de escribir frases o palabras compuestas eliminando los espacios y poniendo en mayúscula la primera letra de cada palabra. El nombre viene del parecido de estas mayúsculas, entre las demás letras, con las jorobas de los camellos. Existen dos tipos de CamelCase: UpperCamelCase, cuando la primera letra de todas está escrita en mayúscula. Ej: EjemploDeUpperCamelCase lowerCamelCase, la primera letra de la primera palabra está escrita en minúscula y las primeras letras de las demás palabras están escritas en mayúsculas. Ej: ejemploDeLowerCamelCase Se trata de un estándar en varios lenguajes de programación.Programación Orientada a Objetos 10
  11. Convenciones Clases: El nombre de las clases debe iniciar con la primera letra capitalizada, se utiliza la notación UpperCamelCase Los nombres de las clases deben ser típicamente sustantivos Ejemplos: Dog Account PrintWriter Programación Orientada a Objetos 11
  12. Convenciones Interfaces: Se aplica el mismo criterio que en las clases, se utiliza la notación UpperCamelCase El nombre de las interfaces debe ser un adjetivo Ejemplos: Serializable Runnable Programación Orientada a Objetos 12
  13. Convenciones Métodos: El nombre de un método debe formarse con la primera letra en minúsculas, y se deben aplicar la notación lowerCamelCase Por lo regular el nombre de los métodos debe ser verbo-sustantivo Ejemplos: getBalance getAccount setCustomerName Programación Orientada a Objetos 13
  14. Convenciones Variables: Aplica la misma notación que los métodos, la lowerCamelCase. Deben ser por lo regular nombres cortos y manejables Ejemplos: myVar buttonWidth accountBalance Programación Orientada a Objetos 14
  15. Convenciones Constantes: Estas son creadas para identificar variables estáticas (static) o finales (final) Estas deben ser nombradas utilizando sólo letras mayúsculas, si el nombre contiene mas de una palabra estas deben ser separadas mediante un guión bajo (_) Ejemplos: MIN_HEIGHT MAX_HEIGHT Programación Orientada a Objetos 15 Índice
  16. Tipos de datos primitivos Programación Orientada a Objetos 16
  17. Tipos de datos enteros Rango de valores para una variable de tipo entero Tamaño Tipo Rango Valores 8 bits byte -27 to 27-1 -128 a 127 16 bits short -215 to 215 -1 -32768 a 32767 32 bits int -231 to 231 -1 -2147483648 a 2147483647 64 bits long -263 to 263 -1 -9223372036854775808 a 9223372036854775807 Programación Orientada a Objetos 17
  18. Tipo de datos flotante Rango de valores permitido para una variable de tipo flotante Tipo Tamaño Rango float 32 bits +/-3.40282347E+38F double 64 bits +/- 1.79769313486231570E+308 Programación Orientada a Objetos 18
  19. Valores literales Una valor literal es la representación en el código fuente de un valor para un tipo de dato primitivo: 'b' 42 false 2546789.343 // char literal // int literal // boolean literal // double literal Programación Orientada a Objetos 19
  20. Valores Literales para tipos enteros Existen tres manera de representar valores literales para el tipo int en Java: Literales decimal Literales octales Literales hexadecimales Las literales decimales se representan de manera sencilla: int longitud = 350;Programación Orientada a Objetos 20
  21. Valores literales para tipos enteros Los valores octales sólo utilizan dígitos entre el 0 y 7. Ejemplo: class Octal { public static void main(String [] args) { int six = 06; // Equal to decimal 6 int seven = 07; // Equal to decimal 7 int eight = 010; // Equal to decimal 8 int nine = 011; // Equal to decimal 9 System.out.println("Octal 010 = " + eight); } }Programación Orientada a Objetos 21
  22. Valores literales para tipos enteros Los valores hexadecimales son construidos por 16 símbolos diferentes: 0 1 2 3 4 5 6 7 8 9 a b c d e f Ejemplo: class HexTest { public static void main (String [] args) { int x = 0X0001; int y = 0x7fffffff; int z = 0xDeadCafe; System.out.println("x = " + x + " y = " + y + " z = " + z); } }Programación Orientada a Objetos 22
  23. Valores literales para tipos flotante Los números de punto flotante están formados por un numero en base decimal y una serie de números que son la parte fraccionaria: double d = 11301874.9881024; El valor 11301874.9881024 es un valor literal. Programación Orientada a Objetos 23
  24. Valores literales para tipos flotante Las literales de punto flotante son definidos por default como un double (64 bits). Si queremos asignar un valor literal punto flotante a una variable del tipo float, debemos utilizar como sufijo la letra F o f. float f = 23.467890; // Compiler error, possible loss // of precision float g = 49837849.029847F; // OK; has the suffix "F" Programación Orientada a Objetos 24
  25. Valores literales para tipos flotante Si queremos ser explícitos en la declaración de literales de tipo double, podemos agregar el sufijo D o d al valor literal double d = 110599.995011D; // Optional, not required double g = 987.897; // No 'D' suffix, but OK because the // literal is a double by default int x = 25,343; // Won't compile because of the comma Programación Orientada a Objetos 25
  26. Valores literales para boolean Los valores literales que sólo puede aceptar una variable de tipo boolean son: true ó false boolean t = true; // Legal boolean f = 0; // Compiler error! Uso de valores boolean: int x = 1; if (x) { } // Compiler error! Programación Orientada a Objetos 26
  27. Valores literales para char Un valor literal para un tipo de dato char, es un carácter entre comillas simples char a = 'a'; char b = '@'; Es posible utilizar valores literales en formato Unicode: char letterN = 'u004E'; // The letter 'N' Programación Orientada a Objetos 27
  28. Valores literales para char Hay que recordar que el tipo de dato char utiliza 16 bits, por tal motivo es posible asignarle valores numéricos a una variable del tipo char siempre y cuando no exceda el rango de 65535 o menos. char a = 0x892; // hexadecimal literal char b = 982; // int literal char c = (char)70000; // The cast is required; 70000 is // out of char range char d = (char) -98; // Ridiculous, but legalProgramación Orientada a Objetos 28 Índice
  29. Asignación Programación Orientada a Objetos 29
  30. Operador de Asignación Para poder realizar una asignación de un valor literal a una variable de tipo primitivo, esta se realiza de manera directa: int a = 100; Una variable es conjunto de bits (bit holder) de un tipo de dato designado, los bits representan un valor. Programación Orientada a Objetos 30
  31. Asignación de variables de tipo primitivo Ejemplo: una variable de tipo byte utiliza 8 bits para almacenar un valor, supongamos que la variable x guarda el valor 6, en realidad lo que almacena la variable es un patrón de bits como: 00000110 que representan el valor 6 (byte holder) byte x = 6; 00000110 Programación Orientada a Objetos 31
  32. Asignación de variables referencia ¿Que hay dentro de una variable que recibe un objeto? Button a = new Button(“Aceptar”); Este tipo de variables no contienen al objeto, contienen el camino para llegar al objeto, es decir una referencia al objeto, por ello se les denomina variables de referencia. Ellas guardan al igual que las variables de tipo primitivo un patrón de bits. Programación Orientada a Objetos 32
  33. Asignación de variables referencia Si la variable de referencia no ha sido asignada esta contiene un valor null, que indica que esta variable no apunta a ningún objeto. Button b = null; // esta variable // no apunta a ningún objeto Programación Orientada a Objetos 33
  34. Asignación de tipos de datos primitivos Operadores de asignación = Asignación a = b ++ Incremento en 1 a++ o ++a -- Decremento en 1 a-- o --a += Suma y asignación a+=b Asignación -= Resta y asignación a-=b Multiplicación y *= asignación a*=b /= División y asignación a/=b %= Módulo y asignación a%=b Programación Orientada a Objetos 34
  35. Asignación de tipos entero La asignación de un valor primitivo a una variable primitiva se puede hacer directamente o a través del resultado de una expresión: int x = 7; // literal assignment int y = x + 2; // assignment with an expression // (including a literal) int z = x * y; // assignment with an expression Nota: Hay que recordar el valor literal 7 implícitamente representa un tipo de dato int. Programación Orientada a Objetos 35
  36. Asignación de tipos entero La asignación de valores literales a una variable byte es: byte b = 27; Para el caso anterior el compilador pone de manera automática el cast (conversión) para convertirlo a byte, de la siguiente manera: byte b = (byte) 27; // Explicitly cast the int literal to a byte Programación Orientada a Objetos 36
  37. Asignación de tipos entero Ejemplos válidos donde es posible la asignación directa de un valor int a un byte: byte a = 127; byte a = -128; Ejemplos inválidos: byte a = 128; //dentro del rango //dentro del rango //fuera del rango Programación Orientada a Objetos 37
  38. Asignación de tipos entero El resultado de una expresión que involucra tipos int o menores (short, byte), dará como resultado por default un valor de tipo int. Por ejemplo la suma de dos variables de tipo byte, su resultado será un tipo int. La división de un int entre un byte da como resultado un int Programación Orientada a Objetos 38
  39. Asignación de tipos entero byte b = 3; // No problem, 3 fits in a byte byte c = 8; // No problem, 8 fits in a byte byte d = b + c; // Should be no problem, sum of the two bytes // fits in a byte La última línea no compila, debido a que el resultado de sumar dos variables de tipo byte su resultado es de tipo int. Para corregir el problema se debe hacer una conversión: byte d = (byte) b + c; TestBytes.java:5: possible loss of precision found : int required: byte byte c = a + b; ^Programación Orientada a Objetos 39 Índice
  40. Conversiones Programación Orientada a Objetos 40
  41. Conversiones de tipos de datos primitivos Java permite la conversión de un tipo de dato primitivo a otro, esta conversión puede ser de manera implícita o explicita. De manera implícita: int a = 100; long b = a; // Implicit cast, // an int value always fits in a long De manera explicita: float a = 100.001f; int b = (int)a; // Explicit cast, the float could lose info Programación Orientada a Objetos 41
  42. Conversiones de tipos de datos primitivos Un valor entero puede asignarse a un tipo flotante a través de una conversión (cast) implícita: double d = 100L; // Implicit cast Conversión explicita necesaria: class Casting { class Casting { public static void main(String [] args) public static void main(String [] args) { { int x = 3957.229; // illegal int x = (int )3957.229; // llegal } } } }Programación Orientada a Objetos 42
  43. Conversiones de tipos de datos primitivos Asignado tipos de datos grandes a tipos más pequeños: class Casting { public static void main(String [] args) { long l = 56L; byte b = (byte)l; System.out.println("The byte is " + b); }} En el código anterior funciona correctamente, el resultado de la ejecución es: The byte is 56Programación Orientada a Objetos 43
  44. Conversión de tipos de datos primitivos ¿Cuál es el comportamiento si asignamos un valor mayor a 127 a la variable de tipo long? class Casting { public static void main(String [] args) { long l = 130L; byte b = (byte)l; System.out.println("The byte is " + b); } } En el código anterior funciona correctamente, el resultado de la ejecución es: The byte is -126 Programación Orientada a Objetos 44
  45. Asignación de tipos flotante Si tratamos de asignar un valor double a un tipo float, el compilador debe marcar un error debido a que un tipo double utiliza 64 bits y el float solo 32 bits. El siguiente código parece correcto, pero no compilará: float f = 32.3; Aparentemente el valor cabe perfectamente dentro de la variable float, pero el compilador marcará un error de perdida de precisión: Programación Orientada a Objetos 45 Índice
  46. Asignación entre variables Programación Orientada a Objetos 46
  47. Asignación entre variables de tipo primitivo Cuando se asigna una variable a otra, el valor de la primera se copia a la segunda: int a = 10; int b = a; La asignación puede leerse de la siguiente manera: “El patrón de bits que almacena la variable a, tómala y cópiala en la variable b” La relación que existe entre la variable a y b es que almacenan el mismo patrón de bits Programación Orientada a Objetos 47
  48. Ejemplo de asignación entre variables class ValueTest { public static void main (String [] args) { int a = 10; // Assign a value to a System.out.println("a = " + a); int b = a; b = 30; System.out.println("a = " + a + " after change to b"); } } The output from this program is: C:java ValueTest a = 10 a = 10 after change to b Las variables a y b no apuntan a la misma localidad de memoria. Programación Orientada a Objetos 48
  49. Asignación de variables referencia Nosotros podemos asignar un objeto nuevo a una variable referencia de la siguiente manera: Button b = new Button(“Aceptar”); El código anterior realiza lo siguiente: Crea una variable referencia llamada b, del tipo Button Crea un nuevo objeto en el “heap” Asigna la referencia del nuevo objeto creado a b Programación Orientada a Objetos 49
  50. Asignación de variables referencia Nosotros podemos asignarle a una variable referencia el valor null, que indica que esta variable no apunta a ningún objeto. Button b = null; Nosotros podemos asignar a una variable un objeto que es subclase del tipo declarado, por ejemplo: public class Foo { public void doFooStuff() { } } public class Bar extends Foo { public void doBarStuff() { } } class Test { public static void main (String [] args) { Foo reallyABar = new Bar(); // Legal because Bar is a subclass of Foo Bar reallyAFoo = new Foo(); // Illegal! Foo is not a subclass of Bar } } Programación Orientada a Objetos 50
  51. Asignación entre variables referencia Las variables referencia guardan el “camino” hacia un objeto dentro del “heap”. Cuando se asignamos a una variable referencia otra variable referencia, esta recibe una copia de la ubicación del objeto, esto implica que dos variables puede apuntar al mismo objeto. import java.awt.Dimension; class ReferenceTest { public static void main (String [] args) { Dimension a = new Dimension(5,10); System.out.println("a.height = " + a.height); Dimension b = a; b.height = 30; System.out.println("a.height = " + a.height + " after change to b"); } } Programación Orientada a Objetos 51 Índice
  52. Ámbito de las variables Programación Orientada a Objetos 52
  53. Ámbito de las variables class Layout { // class static int s = 343; // static variable int x; // instance variable { // initialization block x = 7; int x2 = 5; } Layout() { // constructor x += 8; int x3 = 6; } void doStuff() { // method int y = 0; // local variable for(int z = 0; z < 4; z++) { // 'for' code block y += z + x; } } } Programación Orientada a Objetos 53
  54. Ámbito de las variables Del código anterior observamos lo siguiente: s es una variable estática, las variables estáticas tienen el ámbito mas largo de todas las variables, estas son creadas cuando se cargan las clases. Esto quiere decir que ellas están “vivas” mientras las clases estén cargadas en la JVM. Las variables de instancia como x, tienen el siguiente nivel de supervivencia, es decir ellas son creadas cuando se crea una instancia, y existen hasta que la instancia sea removida. Las variables locales son un tercer nivel, estas variables son colocadas en el stack, por ejemplo las variables x2 y y Por ultimo el ámbito de bloque es aquel donde las variables sólo están disponibles dentro de un bloque de código { }, que pertenece a un método o una sentencia de control o un bloque de inicialización, por ejemplo las variables x2 y z. Programación Orientada a Objetos 54
  55. Ámbito de las variables El siguiente código muestra un error común al querer acceder a una variable que esta fuera del alcance del método: class ScopeErrors { int x = 5; public static void main(String[] args) { x++; // won't compile, x is an 'instance' variable } } Programación Orientada a Objetos 55
  56. Ámbito de las variables Cuando queremos acceder a una variable desde un método anidado: class ScopeErrors { public static void main(String [] args) { ScopeErrors s = new ScopeErrors(); s.go() ; } void go() { int y = 5; go2() ; y++; // once go2() completes, y is back in scope } void go2() { y++; // won't compile, y is local to go() } } Programación Orientada a Objetos 56
  57. Ámbito de las variables Cuando queremos acceder a una variable que solo tiene de ámbito un bloque de código: void go3() { for(int z = 0; z < 5; z++) { boolean test = false; if(z == 3) { test = true; break; } } System.out.print(test); // 'test' is an ex-variable, // it has ceased to be... }Programación Orientada a Objetos 57 Índice
  58. Valores por defecto de las variables Programación Orientada a Objetos 58
  59. Valores por defecto de las variables Java nos permite crear variables inicializadas o no inicializadas, cuando queremos acceder a una de esas variables el comportamiento puede variar dependiendo del tipo de dato, y del ámbito de la variable. Las variables tiene valores por defecto cuando son creadas, ya sean de tipo primitivo o de referencia: Variable Type Default Value Object reference null (not referencing any object) byte, short, int, long 0 float, double 0.0 boolean false char 'u0000'Programación Orientada a Objetos 59
  60. Valores por defecto de las variables public class BirthDate { int year; // Instance variable public static void main(String [] args) { BirthDate bd = new BirthDate( ); bd.showYear(); } public void showYear() { System.out.println("The year is " + year); } } Cuando la programa es ejecutado, la variable year no es inicializada, por tal motivo el resultado de la ejecución es: The year is 0 Programación Orientada a Objetos 60
  61. Valores por defecto de los objetos Cuando utilizamos variables referencia que no son inicializadas el comportamiento es diferente: public class Book { private String title; // instance reference variable public String getTitle() { return title; } public static void main(String [] args) { Book b = new Book() ; System.out.println("The title is " + b.getTitle()); } } The title is nullProgramación Orientada a Objetos 61
  62. Accediendo a variables con valor null Cuando accedemos a una variable que tiene un valor null, se dispara error en tiempo de ejecución: Exception in thread "main" java.lang.NullPointerException at Book.main(Book.java:9) public class Book { private String title; // instance reference variable public String getTitle() { return title; } public static void main(String [] args) { Book b = new Book(); String s = b.getTitle(); // Compiles and runs String t = s.toLowerCase(); // Runtime Exception! } }Programación Orientada a Objetos 62
  63. Valores por defecto de variables arreglo Un arreglo es un objeto. Una instancia de un arreglo que sólo se declaró y no ha sido explícitamente inicializada tiene el valor null. Si el arreglo ha sido al menos inicializado, los elementos del arreglo contendrán el valor default del tipo que almacenan. public class BirthDays { static int [] year = new int [100] ; public static void main(String [] args) { for(int i=0;i<100;i++) System.out.println("year[" + i + "] = " + year[i]); } }Programación Orientada a Objetos 63
  64. Variables locales de tipo primitivo Se considera a una variable como local, aquella que pertenece a un método, incluyendo los parámetros del método. Una variable local siempre, siempre, siempre debe ser inicializada con un valor antes de querer usarla. Java no les da a las variables locales un valor por default, es responsabilidad nuestra asignarle un valor de manera explicita. public class TimeTravel { public static void main(String [] args) { int year; // Local variable (declared but not initialized) System.out.println("The year is " + year); // Compiler error } } Programación Orientada a Objetos 64
  65. Variables locales de tipo primitivo public class TimeTravel { public static void main(String [] args) { int year; // Declared but not initialized int day; // Declared but not initialized System.out.println("You step into the portal."); year = 2050; // Initialize (assign an explicit value) System.out.println("Welcome to the year " + year); } } Es posible declarar y después inicializar explícitamente una variable local. Nótese que la variable day no es inicializada, el programa ejecuta bien, la única diferencia es que la variable day no es utilizada. Programación Orientada a Objetos 65
  66. Variables locales de referencia a objetos De manera similar a las variables locales de tipo primitivo, estas no son inicializadas con el valor por defecto, para el caso de objetos el valor null, por tal motivo debemos inicializar de manera explicita a un objeto. import java.util.Date; public class TimeTravel { public static void main(String [] args) { Date date; if (date == null) System.out.println("date is null"); } } C:javac TimeTravel.java TimeTravel.java:5: Variable date may not have been initialized. if (date == null) 1 errorProgramación Orientada a Objetos 66 Índice
  67. Paso de variables a métodos Programación Orientada a Objetos 67
  68. Paso de variables referencia a métodos Cuando nosotros pasamos un objeto como parámetro de un método, estamos pasando la referencia de ese objeto, y no el objeto como tal. 1. import java.awt.Dimension; 2. class ReferenceTest { 3. public static void main (String [] args) { 4. Dimension d = new Dimension(5,10); 5. ReferenceTest rt = new ReferenceTest(); 6. System.out.println("Before modify() d.height = " + d.height); 7. rt.modify(d); 8. System.out.println("After modify() d.height = " + d.height); 9. } 10. void modify(Dimension dim) { 11. dim.height = dim.height + 1; C:java ReferenceTest 12. System.out.println("dim = " + dim.height); Before modify() d.height = 10 13. } 14. } dim = 11 After modify() d.height = 11 Programación Orientada a Objetos 68
  69. Paso de variables primitivas a métodos Cuando pasamos variables primitivas a un método pasamos una copia del valor que almacena esa variable, por ejemplo: class ReferenceTest { public static void main (String [] args) { int a = 1; ReferenceTest rt = new ReferenceTest(); System.out.println("Before modify() a = " + a); rt.modify(a); System.out.println("After modify() a = " + a) ; } void modify(int number) { number = number + 1; System.out.println("number = " + number); } } Before modify() a = 1 number = 2 After modify() a = 1 Programación Orientada a Objetos 69 Índice
  70. Operadores Programación Orientada a Objetos 70
  71. Operadores de asignación compuestos Operadores de asignación compuestos, los mas comunes son +=, -=, *=, /= Pero existen %=, Ejemplos sin operadores compuestos: y = y - 6; x = x + 2 * 5; Ejemplos con operadores compuestos: y -= 6; x += 2 * 5; Programación Orientada a Objetos 71
  72. Operadores relacionales Los operadores relacionales son: <, <=, >, >=, ==, != El resultado de una expresión que utiliza operadores relacionales arrojará como resultado un valor boolean (true o false) Ejemplo de uso común: int x = 8; if (x < 9) { // do something } Programación Orientada a Objetos 72
  73. Operadores relacionales El resultado de una expresión que utiliza operadores relacionales puede ser asignado directamente a una variable de tipo boolean: class CompareTest { public static void main(String [] args) { boolean b = 100 > 99; System.out.println("The value of b is " + b); } } Programación Orientada a Objetos 73
  74. Operadores de “igualdad” Java maneja dos operadores denominados de “igualdad” Este operador compara dos cosas similares y regresan un valor boolean Los operadores son: == (se lee “igual a”) != (se lee “no igual a”) Los operadores de igualdad se aplican a cualquier tipo de dato primitivo y se aplica a variables referencia, donde los operadores de igualdad comparan referencias a objetos y no objetos como tal. Programación Orientada a Objetos 74
  75. Comparando variables primitivas Ejemplo de comparación de variables primitivas: class ComparePrimitives { public static void main(String[] args) { System.out.println("char 'a' == 'a'? " + ('a' == 'a')); System.out.println("char 'a' == 'b'? " + ('a' == 'b')); System.out.println("5 != 6? " + (5 != 6)); System.out.println("5.0 == 5L? " + (5.0 == 5L)); System.out.println("true == false? " + (true == false)); } } Programación Orientada a Objetos 75
  76. Comparando variable referencia Cuando se utiliza los operadores de “igualdad” entre variables referencia, se comparan las referencias de los objetos que intervienen JButton a = new JButton("Exit"); JButton b = a; Si consideramos el código anterior a y b tienen la misma referencia if (a == b) { System.out.println(“a is equals b”); } Programación Orientada a Objetos 76
  77. Comparando Enumeraciones Se pueden utilizar los operadores de comparación para saber si dos variables tiene la misma referencia a una constante. class EnumEqual { enum Color (RED, BLUE} // ; is optional public static void main(String[] args) { Color cl = Color.RED; Color c2 = Color.RED; if(cl == c2) { System.out.println("=="); } if(cl.equals(c2)) { System.out.println("dot equals"); } } } Programación Orientada a Objetos 77
  78. Operadores aritméticos Los operadores aritméticos básicos son: *, / ,+, -, % Ejemplos de uso: int x = 5 * 3; int y = x - 4; System.out.println("x - 4 is " + y); // Prints 11 El operador % (residuo de la división) class MathTest { public static void main (String [] args) { int x = 15; int y = x % 4; System.out.println("The result of 15 % 4 is the " + "remainder of 15 divided by 4. The remainder is " + y); } } Programación Orientada a Objetos 78
  79. Operador de concatenación de Strings El operador + puede ser usado para concatenar cadenas: String animal = "Grey " + "elephant"; El operador + es más interesante cuando se concatenan cadenas y números: String a = "String"; int b = 3; String37 int c = 7; System.out.println(a + b + c); Si utilizamos parentesis: String a = "String"; int b = 3; int c = 7; String10 System.out.println(a + (b + c));Programación Orientada a Objetos 79
  80. Operadores incremento y decremento Estos operadores incrementan o decrementan a una variable en uno: -- (como prefijo o postfijo) ++ (como prefijo o postfijo) Ejemplo: class MathTest { static int players = 0; public static void main (String [] args) { System.out.println("players online: " + players++); System.out.println("The value of players is " + players); System.out.println("The value of players is now " + ++players); } } C:java MathTest players online: 0 The value of players is 1 The value of players is now 2Programación Orientada a Objetos 80
  81. Operadores lógicos Los operadores lógicos más comúnmente usados son: && || ! Los operadores lógicos solo trabajan con operandos boolean if ((2 < 3) && (3 < 4) ) { } El operador ! Sirve para invertir el valor de una expresión boolean, inclusive se aplica a variables boolean: if (!(7 == 5)) { system.out.println ("not equal"); } El resultado es: not equal Programación Orientada a Objetos 81 Índice
  82. Estructuras de control Programación Orientada a Objetos 82
  83. Estructuras de control Las estructuras de selección son if y switch. Para la estructura if la sintaxis es: if (booleanExpression) { System.out.println("Inside if statement"); } La expresión entre paréntesis siempre debe ser una expresión boolean. if (x > 3) { System.out.println("x is greater than 3"); } else { System.out.println("x is not greater than 3"); } Programación Orientada a Objetos 83
  84. Estructuras de control Expresiones legales e ilegales para una estructura if int trueInt = 1; int falseInt = 0; if (trueInt) // illegal if (trueInt == true) // illegal if (1) // illegal if (falseInt == false) // illegal if (trueInt == 1) // legal if (falseInt == 0) // legal Programación Orientada a Objetos 84
  85. Estructuras de control Cuando tenemos muchas estructuras if-else es mas sencillo utilizar una estructura switch int x = 3; switch (x) { case 1: System.out.println("x is equal to 1"); break; case 2: System.out.println("x is equal to 2"); break; case 3: System.out.println("x is equal to 3"); break; default: System.out.println("Still no idea what x is"); } Programación Orientada a Objetos 85
  86. Estructuras de control Las expresiones que son evaluadas por la estructura switch deben retornar algún tipo char, byte, short, int o enum. String s = "xyz"; switch (s.length()) { case 1: System.out.println("length is one"); break; case 2: System.out.println("length is two"); break; case 3: System.out.println("length is three"); break; default: System.out.println("no match"); } Programación Orientada a Objetos 86
  87. Estructuras de control Ejemplos de declaración ilegales para la estructura switch: switch(x) { switch(x) { case 0 { y = 7; } } 0: { } 1: { } } La evaluación de cada caso (case) es de arriba hacia abajo, cuando la constante del case coincide con la expresión del switch lo podemos considerar un punto de entrada. Esto da como resultado que se ejecuten todas las instrucciones subsecuentes (incluyendo las de otros casos) si no existe un break. Programación Orientada a Objetos 87
  88. Estructuras de control Sin presencia de break enum Color {red, green, blue} class SwitchEnum { public static void main(String [] args) { Color c = Color.green; switch(c) { case red: System.out.print("red "); case green: System.out.print("green "); case blue: System.out.print("blue "); default: System.out.println("done"); } } } Programación Orientada a Objetos 88 Índice
  89. Bibliografía •Schildt, Herbert. Java 2. Manual de referencia. Cuarta edición, editorial Osborne Mc Graw Hill. 2001. •Allen, Mark. Estructuras de datos JAVA. Primera edición, editorial Addison Wesley. 2004. Programación Orientada a Objetos 89 Índice

Notas del editor

  1. lowerCamelCase se utilza para nombrar a los metodo UpperCamelCas es una clase
  2. Las interfaces no son ventanas .. Cuando definimos una interfax ….
  3. Es la asignación que realizamos Chart l= ¨b¨ Todo lo que tecleamos en java .. Es una cadena.
  4. Todo valor fraccionario.. Es un double Y todo lo q tecleamos en java es una cadena Los valores por default si son fraccionaros son doublés en coma flotante
Publicidad