SlideShare una empresa de Scribd logo
1 de 89
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
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
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
Identificadores
Programación Orientada a Objetos 4
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
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
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
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
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
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
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
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
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
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
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
Tipos de datos
primitivos
Programación Orientada a Objetos 16
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
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
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
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
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
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
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
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
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
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
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
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
Asignación
Programación Orientada a Objetos 29
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
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
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
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
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
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
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
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
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
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
Conversiones
Programación Orientada a Objetos 40
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
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
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
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
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
Asignación entre
variables
Programación Orientada a Objetos 46
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
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
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
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
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
Ámbito de las
variables
Programación Orientada a Objetos 52
Á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
Á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
Á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
Á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
Á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
Valores por defecto
de las variables
Programación Orientada a Objetos 58
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
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
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
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
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
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
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
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
Paso de variables a
métodos
Programación Orientada a Objetos 67
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
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
Operadores
Programación Orientada a Objetos 70
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
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
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
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
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
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
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
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
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
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
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
Estructuras de
control
Programación Orientada a Objetos 82
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
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
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
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
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
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
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

Más contenido relacionado

La actualidad más candente

Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Tensor
 
Variables, constantes y tipos de datos en C
Variables, constantes y tipos de datos en CVariables, constantes y tipos de datos en C
Variables, constantes y tipos de datos en CRonny Parra
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadenaTensor
 
Fundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveGabriel Romero
 
Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Eloy Rodriguez
 
Republica bolivariana de venezuela
Republica bolivariana de venezuelaRepublica bolivariana de venezuela
Republica bolivariana de venezuelaroyimar
 
Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1drakul09
 
TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++Idalia Tristan
 
Variables, Constantes y Tipos de datos en C
Variables, Constantes y Tipos de datos en CVariables, Constantes y Tipos de datos en C
Variables, Constantes y Tipos de datos en CMarvin Romero
 
Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++Obmaro García
 
Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1Karin Rojas Gutiérrez
 
Caracteres y Cadenas en C
Caracteres y Cadenas en CCaracteres y Cadenas en C
Caracteres y Cadenas en CRonny Parra
 

La actualidad más candente (20)

Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++Arrays, arreglos o vectores en c++
Arrays, arreglos o vectores en c++
 
Variables, constantes y tipos de datos en C
Variables, constantes y tipos de datos en CVariables, constantes y tipos de datos en C
Variables, constantes y tipos de datos en C
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadena
 
4 variables, arreglos, estructuras y enum
4 variables, arreglos, estructuras y enum4 variables, arreglos, estructuras y enum
4 variables, arreglos, estructuras y enum
 
6 excepciones
6 excepciones6 excepciones
6 excepciones
 
Fundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octaveFundamentos de computación(ICM) en octave
Fundamentos de computación(ICM) en octave
 
Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)Lenguaje c (expresiones logicas)
Lenguaje c (expresiones logicas)
 
Republica bolivariana de venezuela
Republica bolivariana de venezuelaRepublica bolivariana de venezuela
Republica bolivariana de venezuela
 
Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1
 
Webcd
WebcdWebcd
Webcd
 
TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++
 
Java teoría
Java teoríaJava teoría
Java teoría
 
Variables, Constantes y Tipos de datos en C
Variables, Constantes y Tipos de datos en CVariables, Constantes y Tipos de datos en C
Variables, Constantes y Tipos de datos en C
 
Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++Tipos de dato y expresiones en C++
Tipos de dato y expresiones en C++
 
Poo4
Poo4Poo4
Poo4
 
Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1Variables constantes-y-tipos-de-datos-1231094571639405-1
Variables constantes-y-tipos-de-datos-1231094571639405-1
 
T 6
T 6T 6
T 6
 
Lenguajec(1)
Lenguajec(1)Lenguajec(1)
Lenguajec(1)
 
Tutorial de Lenguaje de Programación Swift
Tutorial de Lenguaje de Programación SwiftTutorial de Lenguaje de Programación Swift
Tutorial de Lenguaje de Programación Swift
 
Caracteres y Cadenas en C
Caracteres y Cadenas en CCaracteres y Cadenas en C
Caracteres y Cadenas en C
 

Destacado

Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a ObjetosManuel Antonio
 
Programación Orientada por Objetos para programadores Ruby
Programación Orientada por Objetos para programadores RubyProgramación Orientada por Objetos para programadores Ruby
Programación Orientada por Objetos para programadores RubyGerman Escobar
 
POO Programación Orientada a Objetos
POO Programación Orientada a ObjetosPOO Programación Orientada a Objetos
POO Programación Orientada a ObjetosLuis Berganza
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetosJavier Camacho
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
Orientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesOrientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesSorey García
 
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...Conalep Puebla III
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y ObjetosKudos S.A.S
 

Destacado (13)

Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Pilares de las poo
Pilares de las pooPilares de las poo
Pilares de las poo
 
Programacion en C#
Programacion en C#Programacion en C#
Programacion en C#
 
Programación Orientada por Objetos para programadores Ruby
Programación Orientada por Objetos para programadores RubyProgramación Orientada por Objetos para programadores Ruby
Programación Orientada por Objetos para programadores Ruby
 
Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1Programación Orientada Objetos Java Unidad 1
Programación Orientada Objetos Java Unidad 1
 
Pilares de la POO
Pilares de la POOPilares de la POO
Pilares de la POO
 
POO Programación Orientada a Objetos
POO Programación Orientada a ObjetosPOO Programación Orientada a Objetos
POO Programación Orientada a Objetos
 
programacion orientada a objetos
programacion orientada a objetosprogramacion orientada a objetos
programacion orientada a objetos
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
Orientacion A Objetos Para Dummies
Orientacion A Objetos Para DummiesOrientacion A Objetos Para Dummies
Orientacion A Objetos Para Dummies
 
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
 

Similar a Diapositivas curso programación orientada a objetos en Java

Introduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezIntroduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezederhenriquez
 
Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacionthaynasantos1997
 
Estructura sintactica de los lenguajes de programacion
Estructura sintactica de los lenguajes de programacionEstructura sintactica de los lenguajes de programacion
Estructura sintactica de los lenguajes de programacionandreinagracielarojasadam
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacionrotflol
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programamanuel tenezaca
 
Introducción a los Lenguaje de Programación.pptx
Introducción a los Lenguaje de Programación.pptxIntroducción a los Lenguaje de Programación.pptx
Introducción a los Lenguaje de Programación.pptxJosé Luis Alonso Ochoa
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivasstarduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
TUTORIAL LENGUAJE C
TUTORIAL LENGUAJE CTUTORIAL LENGUAJE C
TUTORIAL LENGUAJE CJesus Agreda
 
TUTORIAL DE LENGUAJE C
TUTORIAL DE LENGUAJE CTUTORIAL DE LENGUAJE C
TUTORIAL DE LENGUAJE CJesus Agreda
 
Introduccion a la programacion
Introduccion a la programacionIntroduccion a la programacion
Introduccion a la programacionCarlos Chevez
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacionkarenyulithza
 

Similar a Diapositivas curso programación orientada a objetos en Java (20)

Introduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezIntroduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquez
 
ELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdfELEMENTOS DE PROGRA 30-05.pdf
ELEMENTOS DE PROGRA 30-05.pdf
 
Elementos basicos de_programacion
Elementos basicos de_programacionElementos basicos de_programacion
Elementos basicos de_programacion
 
Estructura sintactica de los lenguajes de programacion
Estructura sintactica de los lenguajes de programacionEstructura sintactica de los lenguajes de programacion
Estructura sintactica de los lenguajes de programacion
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 
3. lenguaje c-
3. lenguaje c-3. lenguaje c-
3. lenguaje c-
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programa
 
Introducción a los Lenguaje de Programación.pptx
Introducción a los Lenguaje de Programación.pptxIntroducción a los Lenguaje de Programación.pptx
Introducción a los Lenguaje de Programación.pptx
 
Introducción al lenguaje c
Introducción al lenguaje cIntroducción al lenguaje c
Introducción al lenguaje c
 
Introducción
IntroducciónIntroducción
Introducción
 
Introducción
IntroducciónIntroducción
Introducción
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Tipos de datos para C++
Tipos de datos para C++Tipos de datos para C++
Tipos de datos para C++
 
TUTORIAL LENGUAJE C
TUTORIAL LENGUAJE CTUTORIAL LENGUAJE C
TUTORIAL LENGUAJE C
 
TUTORIAL DE LENGUAJE C
TUTORIAL DE LENGUAJE CTUTORIAL DE LENGUAJE C
TUTORIAL DE LENGUAJE C
 
Introduccion a la programacion
Introduccion a la programacionIntroduccion a la programacion
Introduccion a la programacion
 
C# Diferencias
C# DiferenciasC# Diferencias
C# Diferencias
 
37 tarazona karen programacion
37 tarazona karen programacion37 tarazona karen programacion
37 tarazona karen programacion
 

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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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