Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Lenguaje Java: manual completo, Apuntes de Programación Orientada a Objetos

Asignatura: Análisis y Diseño de Algoritmos, Profesor: Mariam Cobalea, Carrera: Grado en Ingeniería Informática, Universidad: UMA

Tipo: Apuntes

2016/2017

Subido el 02/01/2017

pedrito3003yt
pedrito3003yt 🇪🇸

5

(2)

6 documentos

1 / 87

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Universidad Autónoma de Baja California
Facultad de Ciencias Químicas e Ingeniería
Ingeniería en Computación
Apuntes del curso Programación
orientada a objetos I
Basados en los libros “Object-Oriented Technology” de David A.
Taylor, Addison-Wesley, 1990 y “Programming with Java” de John R.
Hubbard, Serie Schaum’s, McGraw Hill, 1999.
Dr. Guillermo Licea Sandoval
Profesor titular de tiempo completo
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57

Vista previa parcial del texto

¡Descarga Lenguaje Java: manual completo y más Apuntes en PDF de Programación Orientada a Objetos solo en Docsity!

Universidad Autónoma de Baja California

Facultad de Ciencias Químicas e Ingeniería

Ingeniería en Computación

Apuntes del curso Programación

orientada a objetos I

Basados en los libros “Object-Oriented Technology” de David A.

Taylor, Addison-Wesley, 1990 y “Programming with Java” de John R.

Hubbard, Serie Schaum’s, McGraw Hill, 1999.

Dr. Guillermo Licea Sandoval

Profesor titular de tiempo completo

Contenido del curso

1. Aspectos básicos de Java 1.1. ¿ Que es el lenguaje Java? 1.2. ¿ Donde conseguir y como instalar el JDK? 1.3. ¿ Como crear y ejecutar el programa Hola Mundo con el JDK bajo Windows de Microsoft? 1.4. Los comentarios en Java 1.5. La entrada de datos 1.6. La entrada numérica 1.7. Las variables y los objetos 1.8. La aritmética y los operadores 2. Las cadenas de caracteres 2.1. La clase String 2.2. Utilizando la clase String 2.3. Los métodos de la clase String 2.4. La clase StringBuffer 2.5. Utilizando la clase StringBuffer 2.6. Los métodos de la clase StringBuffer 3. Las estructuras de control de programa 3.1. La selección 3.1.1. El enunciado if … else 3.1.2. El operador condicional 3.1.3. El enunciado switch 3.2. La iteración 3.2.1. El enunciado for 3.2.2. El enunciado while 3.2.3. El enunciado do … while 3.2.4. Ciclos anidados 4. Conceptos de orientación a objetos 4.1. Introducción 4.2. Los objetos 4.3. Los mensajes 4.4. Las clases 4.5. la herencia 4.6. Las jerarquías de clases 4.7. Los lenguajes de programación orientados a objetos 5. Los métodos 5.1. ¿ Que es un método y como se define? 5.2. Un par de ejemplos sencillos 5.3. Las variables locales

1. Aspectos básicos de Java 1.1.¿ Qué es el lenguaje Java? El lenguaje Java fue desarrollado por James Gosling en la compañía Sun Microsystems a partir de 1991. El nombre del lenguaje proviene de un populismo para nombre el café. Cuando apareció la World Wide Web tuvo su auge en 1993, el lenguaje fue mejorado para facilitar la programación en la Web y fue lanzado al mercado a finales de

  1. Desde entonces se ha convertido en uno de los lenguajes más populares, especialmente para la programación de aplicaciones de redes. Para entender porque Java es el lenguaje que eligen los programadores de aplicaciones para redes, imaginemos una red de computadoras heterogéneas. Estación de trabajo PC Dell con PC Macintosh IBM con AIX Windows NT con Mac OS PC Laptop Toshiba Red PC para red Sony con Linux con Windows 98 PC Compaq Estación de trabajo Estación de trabajo con Windows 2000 Sun Blade con Solaris Silicon Graphics con IRIX Las computadoras que se muestran en la figura anterior podrían estar en una red local, o tal vez en diferentes ciudades, países o continentes. Lo principal es que funcionan con diferentes sistemas operativos y posiblemente con diferentes microprocesadores. Si escribiéramos un programa para la estación de trabajo IBM, este programa no funcionaría en las otras computadoras debido a que el programa es traducido por un compilador al lenguaje máquina de la computadora, este lenguaje esta relacionado con el microprocesador y por tanto varía de una computadora a otra. Para resolver este problema, el lenguaje Java provee un compilador y un sistema llamado la máquina virtual de Java (JVM) para cada tipo de computadora. El compilador de Java traduce el código Java a un lenguaje intermedio llamado código de bytes (bytecode). El código de bytes es independiente del tipo de computadora, el mismo código de bytes puede ser utilizado por cualquier computadora que pueda ejecutar la máquina virtual de Java. La figura siguiente muestra la misma red de computadoras heterogéneas. Aquí se muestra como un programa escrito para la estación de trabajo IBM puede ser ejecutado en una PC para red Sony aun cuando funcionan con diferente sistema operativo.

Estación de trabajo IBM con AIX Hola.java  javac (compilador)  Hola.class Red PC para red Sony con Windows 98 Hola.class  java (máquina virtual de Java) 1.2.¿ Dónde conseguir y como instalar el JDK? El JDK (Java Development Kit) es una colección de programas para ayudar a los programadores a compilar, ejecutar y depurar programas escritos en Java. No es tan bueno como un ambiente integrado de desarrollo (IDE), pero contiene lo suficiente para iniciar con la programación en Java. El JDK es distribuido gratuitamente por Sun Microsystems. La dirección del sitio es http://www.sun.com. Sólo se necesita presionar en la liga Products & APIs y después presionar en la versión del JDK que se quiere obtener. Una vez que se tiene el archivo con el JDK se requiere ejecutar el archivo para realizar la instalación. 1.3.¿ Cómo crear y ejecutar el programa hola mundo con el JDK bajo Windows? Para crear un programa en Java se requiere un editor de textos:

  1. Se escribe el programa
  2. Se escribe un archivo por cada clase
  3. El nombre de la clase y del archivo deben ser iguales
  4. La extensión del archivo debe ser .java Ejemplo 1.1: el programa Hola.java public class Hola { public static void main(String[] args) { System.out.println(“Hola mundo”); } } La primera línea declara una clase llamada Hola. Cualquier programa en Java inicia así, el nombre de la clase puede ser cualquiera que cumpla con la sintaxis. El nombre de la clase debe ser igual al del archivo y debe tener la extensión .java. Al final de la primera línea se encuentra una llave { , está debe aparecer inmediatamente después del nombre de la clase. La segunda línea contiene las palabras public, static, void y main. La palabra public significa que el contenido del siguiente bloque está accesible para las otras clases. La palabra static significa que el método que se está definiendo pertenece a la clase misma y no a los objetos de la clase. La palabra void indica que el método que se define no regresará ningún valor. La palabra main indica el nombre del método.

Lo convencional es utilizar los comentarios estilo C para comentarios que requieren varias líneas. Los comentarios estilo C++ se utilizan para hacer anotaciones al final de una línea de código. Por ejemplo en el programa anterior podríamos agregar comentarios. /* Este programa despliega una linea con el mensaje Hola mundo / public class Hola { // Declaracion de la clase public static void main(String[] args) { // Metodo principal System.out.println(“Hola mundo”); // Mensaje } } 1.5. La entrada de datos La entrada de datos es más sensible a los errores, si la entrada de datos no es del tipo correcto, el programa falla. Este tipo de error se llama excepción. Java provee mecanismos especiales para manejar las excepciones. La forma más simple de manejar las excepciones de entrada/salida es a través de la cláusula throws IOException sólo hay que agregar está cláusula a la declaración del método main. Ejemplo 1.2: Entrada interactiva import java.io.; public class EntradaInteractiva { public static void main(String[] args) throws IOException { InputStreamReader lector = new InputStreamReader(System.in); BufferedReader entrada = new BufferedReader(lector); System.out.println(“Escribe tu nombre: “); String nombre = entrada.readLine(); System.out.println(“Hola, “+ nombre + “.”); } } Este programa despliega en la pantalla el mensaje “Escribe tu nombre: “ y espera una entrada de datos. Cuando el usuario escribe su nombre y presiona la tecla Enter, el sistema despliega “Hola, y el nombre del usuario”. La primera línea del programa es import java.io.*; Esto le dice al compilador que busque en el paquete (biblioteca) java.io la definición de las clases de entrada/salida que se utilizan en el programa. La cuarta línea define el objeto lector como una instancia de la clase InputStreamReader, atándola al flujo de entrada del sistema System.in. Esto significa que el objeto lector servirá como un conducto del teclado al programa. La quinta línea define al objeto entrada como una instancia de la clase BufferedReader, atándola al objeto lector. Esto significa que el objeto entrada puede ser usado para extraer el dato de entrada de una manera fácil. En particular, es posible utilizar el método readLine() para leer una cadena de caracteres completa desde el teclado y guardarla en un objeto String, esto se hace en la séptima línea del programa: String

nombre = entrada.readLine();. Esto declara el objeto nombre de tipo String y es inicializado al valor regresado por el método entrada.readLine(). El resultado es que el objeto nombre contendrá lo que el usuario teclee. La expresión “Hola, “ + nombre + “.” Significa que se deben concatenar las tres cadenas para formar una nueva. 1.6. La entrada numérica La entrada en el ejemplo anterior fue un String: una cadena de caracteres. Las cadenas de caracteres y los números son procesados de manera distinta. Por ejemplo el operador + funciona sobre ambos tipos, pero con resultados muy distintos. En el caso de números se realiza una suma y en el caso de cadenas de caracteres se realiza una concatenación. Ejemplo 1.3: Cálculo del año de nacimiento import java.io.; public class Nacimiento { public static void main(String[] args) throws IOException { InputStreamReader lector = new InputStreamReader(System.in); BufferedReader entrada = new BufferedReader(lector); System.out.println(“Escribe tu edad: “); String cadena = entrada.readLine(); int edad = new Integer(cadena).intValue(); System.out.println(“Tu tienes “ + edad + “años ahora”); int ano = 2002 – edad; System.out.println(“Probablemente naciste en “ + ano); } } Al igual que el programa anterior también se importan clases del paquete java.io. También se incluye la cláusula throws IOException en el método main() para usar el método readLine(). Después de leer la entrada como un String, se convierte el dato en un valor entero con la expresión new Integer(text).intValue(). Este valor entero se utiliza para iniciar la variable edad que es de tipo int. El programa despliega ese valor, calcula el año de nacimiento y lo despliega también. Ejemplo 1.4: Cálculo del área de un círculo import java.io.; public class Area { public static void main(String[] args) throws IOException { InputStreamReader lector = new InputStreamReader(System.in); BufferedReader entrada = new BufferedReader(lector); System.out.println(“Escribe el radio: “); String cadena = entrada.readLine(); Double x = new Double(cadena); double radio = x.doubleValue(); System.out.print(“El area del circulo de radio “ + radio);

nombre-del-tipo nombre-de-la-variable = valor-inicial; Ejemplo 1.5: Tipos de datos primitivos public class DespliegaTiposDeDatos { public static void main(String[] args) { boolean b = false; char c = ‘R’; byte j = 127; short k = 32767; int m = 2147483647; long n = 9223372036854775807L; // L es por long float x = 3.14159265F; // F es por flota double y = 3.141592653589793238; System.out.println(“b = “ + b); System.out.println(“c = “ + c); System.out.println(“j = “ + j); System.out.println(“k = “ + k); System.out.println(“m = “ + m); System.out.println(“n = “ + n); System.out.println(“x = “ + x); System.out.println(“y = “ + y); } } Para los valores literales de tipo long y flota es necesario escribir las letras L y F al final de la literal, respectivamente. 1.8. La aritmética y los operadores Un operador es una función que tiene un nombre simbólico especial y es invocado a través de ese símbolo en una expresión. Los operadores aritméticos y de asignación de Java son los siguientes: Aritméticos: +, -, *, /, % De asignación: +=, -=, *=, /=, %=, &=, ^=, |= Incremento/decremento: ++, -- Ejemplo 1.6: Operadores aritméticos, de incremento y de decremento public class Aritmetica { public static void main(String[] args) { char c = ‘R’; byte j = 127; short k = 32767; int m = 25, n = 7; System.out.println(“c = “ + c); ++c; System.out.println(“c = “ + c);

System.out.println(“j = “ + j); --j; System.out.println(“j = “ + j); ++j; System.out.println(“j = “ + j); ++j; System.out.println(“j = “ + j); System.out.println(“k = “ + k); K -= 4; System.out.println(“k = “ + k); K += 5; System.out.println(“k = “ + k); System.out.println(“m = “ + m); System.out.println(“n = “ + n); int suma = m + n; System.out.println(“m + n = ” + suma); int resta = m - n; System.out.println(“m - n = ” + resta); int multiplicacion = m * n; System.out.println(“m * n = ” + multiplicacion); int division = m / n; System.out.println(“m / n = ” + division); } } La expresión ++c indica que se debe incrementar la variable c a su siguiente valor. Cuando una variable es incrementada a su siguiente valor después del valor mayor, se le asigna el valor negativo menor. Preguntas de repaso

  • ¿ Cuantos años tiene el lenguaje Java?
  • ¿ Qué compañía desarrolló el lenguaje Java?
  • ¿ Qué es el código fuente y de donde viene?
  • ¿ Qué tipo de archivos contienen código fuente Java?
  • ¿ Qué es el código de bytes (bytecode) y de donde viene?
  • ¿ Que tipo de archivos contienen código de bytes?
  • ¿ Porque Java es diferente a otros lenguajes de programación?
  • ¿ Que es una Máquina Virtual de Java?
  • ¿ Que es el JDK?
  • ¿ Cual es la diferencia entre los comentarios estilo C y estilo C++?
  • ¿ Qué es un objeto “stream” (flujo)?
  • ¿ Qué es una excepción?
  • ¿ Cuáles son las diferencias entre una variable y un objeto?
  • ¿ Cuáles son los ocho tipos de datos primitivos de Java?
  • ¿ Que es un tipo referencia?

2. Las cadenas de caracteres Una cadena es una secuencia de caracteres. Las palabras, oraciones y nombres son cadenas. En esta unidad se describen las dos clases de cadenas fundamentales: String y StringBuffer. 2.1. La clase String El tipo mas simple de cadena en Java es un objeto de la clase String. Estos objetos son inmutables, no pueden ser cambiados. Ejemplo 2.1: Operaciones sobre una cadena public class Alfabeto { public static void main(String[] args) { String alfabeto = “ABCDEFGHIJKLMNÑOPQRSTUVWXYZ”; System.out.println(alfabeto); System.out.println(“Esta cadena contiene “ + alfabeto.length() + “caracteres”); System.out.println(“El caracter en la posicion 4 es “ + alfabeto.charAt(4)); System.out.println(“La posicion del caracter Z es “ + alfabeto.indexOf(‘Z’)); System.out.println(“El codigo hash para esta cadena es “ + alfabeto.hashCode()); } } El objeto llamado alfabeto es declarado en la tercera línea como una instancia de la clase String y es inicializado con la literal “ABCDEFGHIJKLMNÑOPQRSTUVWXYZ”. El resto del programa consiste de cinco enunciados de salida. ABCDEFGHIJKLMNÑOPQRSTUVWXYZ Esta cadena contiene 27 caracteres El caracter en la posicion 4 es E La posicion del caracter Z es 26 El codigo hash para esta cadena es - 2.2. Utilizando la clase String 2.2.1. Las subcadenas Una subcadena es una cadena cuyos caracteres forman una parte de otra cadena. La clase String incluye un método para extraer subcadenas.

Ejemplo 2.2: Subcadenas public class Subcadenas { public static void main(String[] args) { String alfabeto = “ABCDEFGHIJKLMNÑOPQRSTUVWXYZ”; System.out.println(alfabeto); System.out.println(“La subcadena en la posición 4 a 7 es “ + alfabeto.substring(4,8)); System.out.println(“La subcadena en la posición 0 a 7 es “ + alfabeto.substring(0,8)); System.out.println(“La subcadena en la posición 8 hasta el final es “ + alfabeto.substring(8)); } } La salida sería: ABCDEFGHIJKLMNÑOPQRSTUVWXYZ La subcadena de la posicion 4 a la 7 es EFGH La subcadena de la posicion 0 a la 7 es ABCDEFGH La subcadena de la posicion 8 hasta el final es IJKLMNÑOPQRSTUVWXYZ 2.2.2. Cambio de tipo de letras En Java se distingue entre las mayúsculas y las minúsculas. La clase String incluye métodos para cambiar los tipos de letras. Ejemplo 2.3: Minúsculas y mayúsculas public class MayusculasMinusculas { public static void main(String[] args) { String mm = “minusculasMAYUSCULAS”; System.out.println(mm); String minusculas = mm.toLowerCase(); System.out.println(minusculas); String mayusculas = mm.toUpperCase(); System.out.println(mayusculas); } } La salida sería: minusculasMAYUSCULAS minusculasmayusculas MINUSCULASMAYUSCULAS 2.2.3. Localización de un caracter en una cadena En la clase String se incluyen métodos para encontrar la posición de un caracter dentro de una cadena.

Ejemplo 2.6: Conversión de tipos primitivos en cadena public class ConversionPrimitivosCadena { public static void main(String[] args) { boolean b = true; char c = ‘$’; int n = 44; double x = 3.1415926535897932; System.out.println(“b = “ + b); System.out.println(“c = “ + c); System.out.println(“b = “ + n); System.out.println(“b = “ + x); String cadenab = String.valueOf(b); String cadenac = String.valueOf(c); String cadenan = String.valueOf(n); String cadenax = String.valueOf(x); System.out.println(“cadenab = “ + cadenab); System.out.println(“cadenab = “ + cadenac); System.out.println(“cadenab = “ + cadenan); System.out.println(“cadenab = “ + cadenax); } } La salida sería: b = true c = $ n = 44 x = 3. cadenab = true cadenac = $ cadenan = 44 cadenas = 3. Ejemplo 2.7: Conversión de cadenas en enteros public class ConversionCadenaEntero { public static void main(String[] args) { String hoy = “Septiembre 03, 2001”; String diaCadena = hoy.substring(11,12); int diaEntero = Integer.parseInt(diaCadena); System.out.println(“La fecha de hoy es: “ + hoy); System.out.println(“El dia de hoy es “ + diaEntero); } } La salida sería: La fecha de hoy es: Septiembre 03, 2001 El dia de hoy es 3

2.3. Los métodos de la clase String A continuación se presenta un resumen de los métodos de la clase String. String cadena = new String(); String cadena = new String(char[]); String cadena = new String(StringBuffer); String cadena = new String(String); String cadena = new String(char[],int, int); String cadena = String.copyValue(char[]); String cadena = String.copyValue(char[],int,int); String cadena = String.valueOf(boolean); String cadena = String.valueOf(char); String cadena = String.valueOf(int); String cadena = String.valueOf(float); String cadena = String.valueOf(double); String cadena = String.valueOf(char[]); String cadena = String.valueOf(char[],int,int); String cadena = String.valueOf(Object); s = cadena.toString(); i = cadena.length(); c = cadena.charAt(int); i = cadena.compareTo(String); s = cadena.concat(String); b = cadena.endsWith(String); b = cadena.startsWith(String); b = cadena.equals(String); b = cadena.equalsIgnoreCase(String); i = cadena.hash(); i = cadena.indexOf(char); i = cadena.indexOf(char,int); i = cadena.indexOf(String); i = cadena.indexOf(String,int); i = cadena.lastIndexOf(char); i = cadena.lastIndexOf(char,int); i = cadena.lastIndexOf(String); i = cadena.lastIndexOf(String,int); s = cadena.substring(int); s = cadena.substring(int,int); s = cadena.toChar(); s = cadena.toLowerCase(); s = cadena.toUpperCase(); 2.4. La clase StringBuffer La clase String es una de las más útiles en Java. Pero sus instancias (objetos) tienen la restricción de ser inmutables. Cuando se desea modificar un String, se tiene que hacer construyendo otro String, ya sea implícita o explícitamente. Java provee la clase StringBuffer para cadenas que necesitan ser modificadas. La razón para tener dos clases es que, para proveer la flexibilidad para cambiar una cadena, se requiere de más espacio en memoria y complejidad.

La salida sería: sb = Facultad de La longitud de sb es: 11 La capacidad de sb es: 22 sb = Facultad de Ciencias Quimicas La longitud de sb es: 29 La capacidad de sb es: 46 sb = Facultad de Ciencias Químicas e Ingenieria La longitud de sb es: 42 La capacidad de sb es: 46 El objeto sb es inicializado vacío con capacidad de 10 caracteres. Después de ejecutar el enunciado sb.append(), sb aumenta su capacidad si es necesario. La capacidad de sb es ajustada automáticamente por el sistema operativo. 2.5.2. Reemplazo de caracteres en un StringBuffer El siguiente programa ilustra como reemplazar los caracteres que componen un objeto StringBuffer. Ejemplo 2.10: Reemplazando los caracteres de un objeto StringBuffer public class ReemplazandoStringBuffer { public static void main(String[] args) { StringBuffer sb = new StringBuffer(); sb.append(“Ingenieria en Computacion”); System.out.println(“sb = “ + sb); System.out.println(“La longitud de sb es: “ + sb.length()); System.out.println(“La capacidad de sb es: “+sb.capacity()); sb.setCharAt(15,’K’); System.out.println(“sb = “ + sb); sb.insert(10,’s’); System.out.println(“sb = “ + sb); } } La salida sería: sb = Ingenieria en Computacion La longitud de sb es: 25 La capacidad de sb es: 34 sb = Ingenieria en Komputacion sb = Ingenierias en Computación Para modificar el contenido de un objeto StringBuffer se requiere utilizar los métodos setCharAt() e insert().

2.5.3. Conversión de StringBuffer en String El siguiente programa ilustra como convertir un objeto StringBuffer en un objeto String. Ejemplo 2.11: Conversión de StringBuffer en String public class ConversionStringBufferAString { public static void main(String[] args) { StringBuffer sb = new StringBuffer(“Ingenieria”); System.out.println(“sb = “ + sb); System.out.println(“La longitud de sb es: “ + sb.length()); System.out.println(“La capacidad de sb es: “+sb.capacity()); String s = sb.toString(); System.out.println(“s = “ + s); System.out.println(“La longitud de s es: “ + s.length()); sb.append(“” +s.substring(0,9) + “ en Computacion”); System.out.println(“sb = “ + sb); System.out.println(“La longitud de sb es: “ + sb.length()); System.out.println(“La capacidad de sb es: “+sb.capacity()); System.out.println(“s = “ + s); } } La salida sería: sb = Ingenieria La longitud de sb es: 10 La capacidad de sb es: 26 s = Ingenieria La longitud de s es: 10 sb = Ingenieria en Computacion La longitud de sb es: 25 La capacidad de sb es: 26 s = Ingenieria En el programa anterior se utiliza el método toString() para crear un objeto String a partir de un objeto StringBuffer(). 2.5.4. Reestableciendo la longitud e invirtiendo un objeto StringBuffer Ejemplo 2.12: Restablecimiento de la longitud e inversión de un StringBuffer. public class ReestableciendoLongitud { public static void main(String[] args) { StringBuffer sb = new StringBuffer(“Ingenieria en Computacion”); System.out.println(“sb = “ + sb); System.out.println(“La longitud de sb es: “ + sb.length()); System.out.println(“La capacidad de sb es: “+sb.capacity()); sb.setLength(10); System.out.println(“sb = “ + sb);