Upload
jesus-navarro
View
238
Download
0
Embed Size (px)
Citation preview
Jesús Navarro | Programación orientada a objetos | 01 de noviembre de 2015
Manual interno de JavaJAVA SE 8
P á g i n a | 1
JavaJava es un lenguaje de programación orientado a objetos que se popularizó a partir del lanzamiento de su primera versión comercial de amplia difusión, la JDK 1.0 en 1996. Actualmente es uno de los lenguajes más usados para la programación en todo el mundo.
Este manual está basado en Java SE (Standard Edition) en su versión 8 cuya fecha de lanzamiento fue en marzo del 2014. Para mayo del 2015 Java se ejecuta en más de 7 billones de dispositivos y tiene una comunidad de más de 9 millones de desarrolladores a nivel mundial.
Palabras reservadasLas palabras reservadas son identificadores predefinidos que tienen un significado para el compilador y por tanto no pueden usarse como identificadores creados por el usuario en los programas.
abstract continue for new switchassert default goto package synchronize
dboolean do if private thisbreak double implements protected throwbyte else import public throwscase enum instanceof return transientcatch extends int short trychar final interface static voidclass finally long strictfp volatileconst float native super while
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 2
Tipo de datosTipos de datos primitivos
Tipo de dato
Representación
Tamaño (Bytes)
Rango de valores
Valor por defecto
Clase asociada
byte Numérico Entero con
signo
1 -128 a 127 0 Byte
short Numérico Entero con
signo
2 -32768 a 32767 0 Short
int Numérico Entero con
signo
4 -2147483648 a 2147483647
0 Integer
long Numérico Entero con
signo
8 -9223372036854775
808 a 9223372036854775
807
0 Long
float Numérico en Coma flotante de precisión
simple Norma IEEE 754
4 ± 3.4x10-38 a ± 3.4x1038
0.0 Float
double Numérico en Coma flotante de precisión
simple Norma IEEE 754
8 ± 1.8x10-308 a ± 1.8x10308
0.0 Double
char Carácter Unicode
2 \u0000 a \uFFFF \u0000 Character
boolean Dato lógico - True o False false Boolean
void - - - - Void
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 3
Operadores aritméticos
Nombre Símbolo Asignación Ejemplo
Suma “+” “+=” “x+y”
Resta “-” “-=” “x-y”
Multiplicación “*” “*=” “x*y”
División “/” “/=” “x/y”
Modulo “%” “%=” “x%y”
Incremento “x++” n/d “x++”
Decremento “x--” n/d “x—“
Operadores relacionales y lógicos
Nombre Símbolo Ejemplo
Asignación “ = ” “ x=5 ”
Comparación “ == ” “ x==y ”
Diferente “ != ” “ x!=y ”
Menor que “ < ” “ x<y ”
Menor o igual que “ <= ” “ x<=y ”
Mayor que “ > “ “ x>y ”
Mayor o igual que “ >= ” “ x=>y ”
NOT “ ! ” “ !x ”
AND “ && ” “ x&&y ”
OR “ || ” “ x||y ”
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 4
XOR “ ^ ” “ x^y ”
DocumentaciónCada programa que se realice deberá contar con la información necesaria para saber quién lo hizo, versión y fecha, así como el debido uso de los comentarios necesarios para el mantenimiento del código.
Cada programa contara con la siguiente información:
Programa: Hacer referencia al nombre del programa
Utilidad: Para qué sirve el programa
Programador: Siempre puede haber más de uno
Fecha: La fecha en que se realiza la última modificación a la versión correspondiente
Versión: Modificaciones mayores hacen que cambie el primer digito, menos solo el decimal
Changelog: Lista de cambios entre versiones del programa
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 5
Variables y ConstantesUna variable es una zona de memoria donde se almacena un valor dado, asignándole un nombre para su posterior referencia. Una constante es una variable a la que no se le puede modificar el valor después de su declaración. Para declarar una constante en Java se utiliza la palabra final delante de la declaración de la variable.
Modificadores de accesoSe utilizan para definir el nivel de ocultación o visibilidad de los atributos, funciones y métodos, así como el de la misma clase. Ordenados de menor a mayor visibilidad los modificadores de acceso son los siguientes:
Modificador de acceso Efecto Aplicable en
private Solo puede ser usado en el interior de su propia clase
Atributos
Métodos
Sin modificador Solo puede ser usado por las clases dentro de su mismo paquete
Clases
Atributos
Métodos
protected El elemento puede ser utilizado por cualquier clase dentro de su paquete y por cualquier subclase
Atributos
Métodos
public El elemento es visible Clases
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 6
desde cualquier clase Atributos
Métodos
Programación estructuradaLa programación estructurada es un paradigma de programación orientado a mejorar la claridad, calidad y tiempo de desarrollo de un programa de computadora, utilizando únicamente subrutinas y tres estructuras: secuencia, selección (if y switch) e iteración (bucles for y while), considerando innecesario y contraproducente el uso de la instrucción de transferencia incondicional (GOTO), que podría conducir a "código espagueti", que es mucho más difícil de seguir y de mantener, y era la causa de muchos errores de programación.
SENTENCIA IFEn programación, una sentencia condicional es una instrucción o grupo de instrucciones que se pueden ejecutar o no en función del valor de una condición. (Ejemplo 1).
Código
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 7
SWITCHLa instrucción switch es una forma de expresión de un anidamiento múltiple de instrucciones if ... else. Su uso no puede considerarse, por tanto, estrictamente necesario, puesto que siempre podrá ser sustituida por el uso de if. No obstante, a veces nos resultará útil al introducir mayor claridad en el código. (Ejemplo 2).
Código
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 8
BUCLE FOREl bucle for se utiliza para repetir una o más instrucciones un determinado número de veces. De entre todos los bucles, el for se suele utilizar cuando sabemos seguro el número de veces que queremos que se ejecute. (Ejemplo 3).
BUCLE WHILEEl Bucle while o bucle mientras es una estructura cuyo propósito es repetir un bloque de código mientras una condición se mantenga verdadera. (Ejemplo 4).
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 9
BUCLE DO WHILELa sentencia de iteración do-while es de tipo pos prueba. Primero realiza las acciones luego pregunta. (Ejemplo 5).
Arreglos Un array (arreglo) en Java es una estructura de datos que nos permite almacenar un conjunto de datos de un mismo tipo. El tamaño de los arrays se declara en un primer momento y no puede cambiar luego durante la ejecución del programa, como sí puede hacerse en otros lenguajes. Los arrays se numeran desde el elemento cero, que sería el primer elemento, hasta el n-1 que sería el último elemento. Es decir, si tenemos un array de 5 elementos, el primer elemento sería el cero y el último elemento sería el 4.
Aclarar que los valores por defecto son los siguientes:
a) Para números el valor cero “0”
b) Para cadenas y letras el valor vacío
c) Para booleanos el valor false
Array unidimensional (Ejemplo 6):
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 10
ARRAY MULTIDIMENSIONALEn Java es posible crear arrays con más de una dimensión, pasando de la idea de lista, vector o matriz de una sola fila a la idea de matriz de “m x n” elementos, estructuras tridimensionales, tetra dimensionales, etc. Gráficamente podría ser descrito así:
int array1 [][] = new int [2][3];
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
Hay que recordar que los elementos empiezan a numerarse por 0. Así, la esquina superior izquierda de la matriz será el elemento [0][0] y la esquina inferior derecha será el [1][2].
Array multidimensional (Ejemplo 7);
FuncionesUna función es un fragmento de código que es llamado por su nombre. Se pueden pasar los datos a operar en (parámetros) y, opcionalmente, puede devolver datos (el valor de retorno).
Función void (No regresa datos)
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 11
Función return (Regresa datos)
Llamada a una función (Ejemplo 8)
Programación orientada a objetosLa programación Orientada a objetos (POO) es un paradigma de programación más cercano a como expresaríamos las cosas en la vida real. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita entender un poco con este tipo de programación. A continuación, se resumen los conceptos básicos de POO.
Objeto: Entidad existente en la memoria del ordenador que tiene unas propiedades (atributos o datos sobre sí mismo almacenados por el objeto) y unas operaciones disponibles específicas (métodos).
Clase: Representa al conjunto de objetos que comparten una estructura y un comportamiento comunes. Se puede considerar como una plantilla: Define los atributos que componen ese tipo de objetos y los métodos que pueden emplearse para trabajar con esos objetos. Las clases siguen una jerarquía: Superclase, Clase y Subclase.
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 12
Abstracción: Podríamos definir la abstracción como la "acción de aislar
mentalmente o considerar por separado las cualidades de un objeto, considerar un objeto en su esencia". ¿Qué quiere decir esta definición? A través de la abstracción conseguimos extraer las cualidades principales sin detenernos en los detalles.
Encapsulamiento: Se denomina así al ocultamiento del estado, es decir, de los datos miembro de un objeto de manera que sólo se pueda cambiar mediante las operaciones definidas para ese objeto. Cada objeto está aislado del exterior, es un módulo natural, y la aplicación entera se reduce a un agregado o rompecabezas de objetos. El aislamiento protege a los datos asociados de un objeto contra su modificación por quien no tenga derecho a acceder a ellos, eliminando efectos secundarios e interacciones. De esta forma el usuario de la clase puede obviar la implementación de los métodos y propiedades para concentrarse sólo en cómo usarlos. Por otro lado, se evita que el usuario pueda cambiar su estado de maneras imprevistas e incontroladas.
Herencia: Consideraremos la herencia como la transmisión de los métodos y atributos de una clase a otra. Gracias a la herencia se pueden establecer jerarquías entre clases. Establecer una jerarquía es un proceso subjetivo, que depende del programador y de los matices de apreciación de cada uno.
Polimorfismo: Esta característica permite definir distintos comportamientos para un método dependiendo de la clase sobre la que se realice la implementación. En todo momento tenemos un único medio de acceso, sin embargo, se podrá acceder a métodos distintos.
MétodosUn método es una función que es propiedad de un objeto (en algunos orientado a objetos de sistemas, es más correcto decir que es de titularidad de una clase). Ser "propiedad" de un objeto/clase significa que se refiere al método a través del objeto/clase; por ejemplo, en Java si desea invocar el método "SumaNumeros()" propiedad de la clase "Ejercicio8" entonces se puede crear una instancia llamada “Operación” y se escribe "Operación.SumaNumeros()". Para mandar llamar un método necesitamos instanciar la clase donde se encuentra y después mandamos llamar el método.
Instancia de un objeto (Ejercicio 9)
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 13
SOBRECARGA DE METODOS (OVERLOADING)Un método sobrecargado (Ejemplo 10) se utiliza para reutilizar el nombre de un método, pero con diferentes argumentos. Las reglas para sobrecargar un método son las siguientes:
-Los métodos sobrecargados deben de cambiar la lista de argumentos
-Se puede cambiar el tipo de retorno
-Se puede cambiar el modificador de acceso
-Se pueden crear nuevas o extender las excepciones
-Un método puede ser sobrecargado en la misma clase o en una subclase
La forma en que se manda llamar un método sobrecargado es como cualquier otro método, para diferenciar entre el método original y el sobrecargado es dependiendo del tipo de argumento que se envié, es decir, si tenemos dos métodos, uno que acepta de parámetro un float y el otro un int, dependiendo del tipo de parámetro que le pasemos será el método que se ejecuta.
SOBRESCRITURA DE METODOS (OVERRIDING)La sobrescritura es la forma por la cual una clase que hereda puede re-definir los métodos de su clase Padre, de esta manera puede crear nuevos métodos con el mismo nombre de su superclase. Es decir, si se tiene un método en la clase padre llamado revisar() se puede crear en la clase hija un método también llamado revisar() pero implementando lo que se necesite. Existen reglas para sobre-escribir métodos que son las siguientes:
-A diferencia de los métodos sobrecargados los argumentos en los métodos sobrescritos no deben de cambiar
-En un método sobrescrito no se puede cambiar el tipo de retorno, excepto por los subtipos del tipo declarado originalmente
-Las excepciones en estos métodos pueden reducirse o eliminarse, pero no se pueden crear nuevas o ampliar las ya establecidas
-Los modificadores de acceso no pueden hacerse más, pero si pueden ser menos restrictivos
-En los métodos sobrecargados los argumentos son los que determinan que método es el que se invocara sin embargo en los métodos sobrescritos el tipo de objeto determina que método es el elegido
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 14
Librería MathEn cuanto a las funciones matemáticas en Java, las funciones disponibles vienen definidas en la clase Math. Hay muchas funciones disponibles. Se puede consultar la lista completa en la documentación oficial del API de Java (según versión de Java en uso, por ejemplo, para la versión 8 ver http://docs.oracle.com/javase/8/docs/api/java/lang/Math.html).
Funciones de mayor importancia en la librería Math
Función Matemática
Significado Ejemplo Resultado
abs Valor absoluto int x = Math.abs(2.3); x=2;
atan Arco Tangente double x = Math.atan(1);
x= 0.7853981633;
sin Seno double x = Math.sin(0.5);
x= 0.479425538;
cos Coseno double x = Math.cos(0.5);
x = 0.87758256189037;
tan Tangente double x = Math..tan(0.5);
x = 0.54630248984379;
exp Exponenciación
double x = Math.exp(1);
x= 2.71828182845904;
log Logaritmo double x= Math.log(2.7172);
x= 0.99960193833500;
pow Potencia double x = Math.pow(2.3);
x = 8.0;
round Redondeo double x = Math.round(2.5);
x = 3;
random Numero aleatorio
double x = Math.random();
x= 0.20614522323378;
Observaciones:
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 15
- Las funciones matemáticas, al pertenecer a la clase Math, se invocan siempre de la siguiente manera: Math.funcion(argumentos)
- Las funciones relacionadas con ángulos (atan, cos, sin, tan) trabajan en radianes. Por tanto, para operar con grados, tendremos que realizar la conversión oportuna
- La función random, permite generar números aleatorios en el rango ]0,1[. Por tanto, el 0 y el 1 están excluidos
- La función exponenciación neperiana o exponenciación de e, matemáticamente significa ex, que en Java sería Math.exp(x), donde x es un número real y la base es la constante neperiana e= 2.7172...
- La función logaritmo neperiano, matemáticamente significa Ln x, que en Java correspondería a la expresión Math.log(x).
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 16
EjemplosEJEMPLO 1
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 17
EJEMPLO 2
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 18
EJEMPLO 3
EJEMPLO 4
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 19
EJERCICIO 5
EJERCICIO 6
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 20
EJERCICIO 7
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 21
EJERCICIO 8
EJERCICIO 9
MANUAL INTERNO DE JAVA | JAVA SE 8
P á g i n a | 22
EJERCICIO 10
EJERCICIO 11
MANUAL INTERNO DE JAVA | JAVA SE 8