Libro de lenguaje Java

Embed Size (px)

Citation preview

2011

APRENDIENDO JAVAJava y sus aplicacionesDescubra de una forma cmoda y clara el lenguaje del nuevo siglo.

ANDINO, ARAUJO, ENRQUEZ, MENESES QUINTO B1 16/07/2011

Gerente de marca: Ing. Darwin Alulema

LENGUAJE JAVA Prohibida la reproduccin parcial o total de esta obra, por cualquier medio, sin autorizacin escrita de los autores y editor. DERECHOS RESERVADOS 2011, respecto a la primera edicin. ISBN 970-10-2546-6 Realizado en Quito Ecuador.

2

Agradecemos a nuestros padres y amigos que han comprendido nuestras arduas tareas de estudio.

De igual manera agradecemos al Ing. Darwin Alulema por su dedicacion, paciencia y extraordinaria eficacia al transmitirnos sus conocimientos y permitirnos desarrollar aplicaciones prcticas para nuestra carrera.

Carlos, Roberto, Luis, Patty.

3

PROLOGO Este libro est escrito con el fin de que sea til como texto para los estudiantes de Ingeniera en Electrnica. Los temas tratados cubren totalmente el programa semestral de estudios de una asignatura fundamental en la carrera. El nombre oficial de esta materia puede variar segn la institucin en la que se imparta, pero su contenido y los temas que deben ser cubiertos son casi los mismos. Escribir este libro no fue una tarea fcil, ya que la investigacin con seriedad y la redaccin e ilustracin con originalidad exigieron inversin de mucho tiempo. Sin embargo, adems de la propia motivacin que constantemente nos dieron nuestros padres, la razn final por la que decidimos hacerlo fue porque la tarea de nuestro profesor as lo exigi ya que en el camino de este semestre de se hizo necesaria comprobar el grado de enseanza que obtuvimos en el camino. La obra que ponemos a consideracin est realizado por jvenes estudiantes, es por ello que el lenguaje utilizado es una forma de comunicar todo lo aprendido en nuestras palabras, gracias a ello se ha hecho totalmente entendible para cualquier pblico que lo quiera aprender. De igual forma lo que tratamos es subsanar deficiencias que encontramos en tutoriales o textos previamente indagados presentando temas de un orden lgico y con una buena cantidad de ejemplos. Esperamos que los futuros ingenieros la vean como una herramienta til en sus estudios y agradecemos la oportunidad de nuestro tutor por la invaluable oportunidad para poder realizarla.

4

NDICECaptulo 1 ...................................................................................................................................... 8 1. Historia de Java ......................................................................................................................... 9 2. Caractersticas ........................................................................................................................... 9 3. Programando en Bloc de notas ............................................................................................... 11 4. Fundamentos para escribir en Java ......................................................................................... 16 4.1. Tipos de variables............................................................................................................. 17 4.2. Peticiones de valores al usuario ....................................................................................... 23 4.2.1. Instrucciones condicionales y de repeticin .............................................................. 23 CAPTULO 2 ................................................................................................................................. 32 5 Objetos ..................................................................................................................................... 33 5.1. Instanciacin de Objetos: ................................................................................................. 33 6. Clases ....................................................................................................................................... 33 7. Netbeans IDE ........................................................................................................................... 35 7.1. Preparando el rea de trabajo ........................................................................................... 36 8. Referencias .............................................................................................................................. 41 9. Tipos de acceso ....................................................................................................................... 41 Ejercicios...................................................................................................................................... 42 Ayudas al Usuario ........................................................................................................................ 44 Capitulo 3 .................................................................................................................................... 48 13. Polimorfismo ......................................................................................................................... 51 14. Clases abstractas ................................................................................................................... 51 15. Interfaces............................................................................................................................... 51 15.1. Excepciones.................................................................................................................... 52 15.1.1. Bloques Try-Catch. ................................................................................................. 54 16. JOptionPane .......................................................................................................................... 55 Ejemplos ...................................................................................................................................... 58 Ejercicio ....................................................................................................................................... 65 Ayudas al usuario ........................................................................................................................ 66 Capitulo 4 .................................................................................................................................... 69 17. Componentes de una interfaz grafica con el usuario ........................................................... 70 17.1. Componentes y contenedores ......................................................................................... 71 17.1.1. Acciones sobre los componentes ............................................................................. 72 5

Ejemplo........................................................................................................................................ 79 18. Interfaces GUI........................................................................................................................ 82 Ejercicio ....................................................................................................................................... 82 CAPITULO 5 ................................................................................................................................. 87 19. Informacin Datos Entrada ................................................................................................... 88 19.1. Entrada y Salida de Datos .............................................................................................. 88 19.2. Tipos de Flujos ............................................................................................................... 88 19.3. Acceso Aleatorio a Datos ............................................................................................... 89 19.4. Entrada Salida de Datos con Flujo de Bytes y Caracteres.............................................. 89 20. Serializacin........................................................................................................................... 89 20.1. ObjectOutputStream y ObjectInputStream .................................................................... 90 Ejemplo........................................................................................................................................ 90 Ejercicio ....................................................................................................................................... 98 Ayudas al usuario ........................................................................................................................ 99 CAPITULO 6 ............................................................................................................................... 106 21.1. Diferencia entre proceso de Sistema Operativo y Thread Java .................................... 107 21.2. Multi-threading ............................................................................................................ 107 21.2.1. Un solo Hilo vs Multi-hilo .................................................................................... 107 22. Thread desde el mismo lenguaje ........................................................................................ 108 23. Formas de definir una clase para ejecutarse con otras clases ............................................ 108 24. Clase Thread ........................................................................................................................ 109 25. Interfaz Runnable ................................................................................................................ 109 26. Suspensin de un Hilo ......................................................................................................... 110 26.1. Mtodo Suspend ........................................................................................................... 111 26.2. Parada de un Hilo ......................................................................................................... 111 Ejemplo...................................................................................................................................... 112 Capitulo 7 .................................................................................................................................. 114 27. Adquisicin de Datos .......................................................................................................... 115 28. Acondicionamiento de seales ........................................................................................... 115 29. Seales Digitales .................................................................................................................. 115 29.1. Regeneracin de una seal digital maltratada .............................................................. 116 30. Puerto Serie ......................................................................................................................... 117 30.1. Descripcin del puerto Serie ........................................................................................ 117 31. Puerto Paralelo .................................................................................................................... 117 6

31. 1. Modos de Transmisin de Datos ................................................................................. 118 32. Manejo del Puerto Serie...................................................................................................... 118 Ejemplos .................................................................................................................................... 120 33. Manejo del Puerto Paralelo ................................................................................................ 123 Ejemplos .................................................................................................................................... 125

7

Captulo 1

Introduccin al captulo

En este captulo veremos una breve historia del desarrollo de Java as como sus caractersticas. De igual manera desarrollaremos ejemplos que sern ejecutados solo en el DOS, en esta parte no se realizarn programas en el IDE Netbeans, sin embargo se desarrollar la explicacin de ciertos mtodos y convenciones a usar en Java.

8

1. Historia de JavaJava fue desarrollado por la compaa Sun Microsystems en los aos 90s y es de cdigo abierto hasta la actualidad, sin embargo en la actualidad tiene que solventar muchos problemas como la velocidad de ejecucin ya que si hacemos una comparacin tarda 20 veces mas que un programa en C, adems se prevee que dejar de ser de cdigo abierto ya que la empresa originaria lo vendi a Oracle. Java utiliza muchas caractersticas de C++ que no estaban incluidas en C, sin embargo entre las caractersticas que podemos destacar que Java no usa de C++ tenemos las siguientes:

Punteros Variables globales Goto Asignacin de memoria Conversin de tipos insegura

No existen punteros evitando el acceso a la memoria voltil (RAM). Lo nico global son los nombres de las clases.

En reemplazo a esta sentencia tenemos break y continue que cumple los casos importantes de goto.El operador new asigna un espacio de memoria a un objeto. Se realiza una comprobacin en tiempo de ejecucin y emite excepciones si algo llega a fallar.

2. CaractersticasJava es un lenguaje que gracias a sus caractersticas permite que se desarrolle de una manera ms amigable con el usuario por ello es:

9

Simple Diseo similar a C o C++. Seguro Implementa barreras de seguridad en el lenguaje y en el sistema de ejecucin en tiempo real. Orientado a objetos Con caracteristicas de encapsulamiento, herencia y polimorfismo.

Robusto Proporciona comprobaciones en compilacin y tiempo de ejecucin.

Interpretado y compilado a la vez Compilado en la medida de que su cdigo fuente se transforma en cdigo de mquina e interpretado os bytecodes se ejecutan directamente sobre la mquina.

Distribuido Proporciona una coleccin de clases para uso en aplicaciones de red.

Indiferente a la arquitectura y portable Cualquier computador que contenga un sistema de ejecucin (jre) puede ejecutar el cdigo. Produce applets Son pequeos programas que aparecen en las pginas web con la capacidad de ejecutar acciones muy complejas. Multihilo Mientras un hilo se encarga de comunicacin, el otro se encargue de interactuar con el usuario y otro de realizar clculos.

Dinmico No conecta los mdulos hasta la ejecucin, cada pieza es responsable de una funcin que se pueden aadir mediante una red.

10

En resumen, Java necesita de una mquina virtual (jre)donde el 80% no depende de la misma y el 20% depende, es decir que dependiendo de la mquina virtual se puede ejecutar el cdigo (jdk compilador).

3. Programando en Bloc de notasAntes de proceder a programar en Netbeasn IDE, debemos familiarizarnos con el lenguaje es por ello que vamos aprender hacerlo en Bloc de notas. Este es el primer paso, luego de desarrollar varias aplicaciones estaremos listos para hacerlo en el IDE estipulado. Vamos a ver paso a paso como hacerlo as que tenga en cuenta lo siguiente: 1ro: Configurar el Path. Para ello usted puede observarlo como hacerlo en las siguientes grficas: Dirigirse a Panel de control y seleccionar Sistema.

Ilustracin 1. Panel de Control - Sistema.

En Sistema seleccionar Opciones Avanzadas y all Variables de entorno.

11

Ilustracin 2. Opciones Avanzadas - Variables de Entorno. En la ventana de Variables de entorno usted debe asegurarse de seleccionar MODIFICAR mas no en las opciones Nueva o Borrar.

Ilustracin 3. Modificando Variables del sistema.

Luego de seleccionar correctamente debe dirigirse a la carpeta de destino donde instalo Java y copiar la direccin solo hasta Bin.

Ilustracin 4. Direccin de origen Java.

De esta forma quedar configurado y podremos ejecutar los programas desde el Command. 2do: Escribir el programa. En este punto con sus conocimientos bsicos de C++ usted puede escribir un programa. Veremos el siguiente ejemplo para demostrar cmo proceder y familiarizarnos con ciertos elementos: a. Nombre de la clase. El nombre de la clase debe ser igual al nombre del archivo, sin embargo el mismo debe ser guardado en un tipo .java.12

Ilustracin 5. Nombre de la clase.

Ilustracin 6. Nombre.java b. Llaves. Las llaves nos indican el comienzo y fin de un bloque de cdigo, es por ello que se debe tener un cuidado especial en abrir y cerrar las mismas.

Ilustracin 7. Llaves. c. Definir el comienzo del programa. Para ello se debe hacer uso de la palabra public (acceso ilimitado a los objetos de la clase). Seguidamente se debe incorporar la lnea de cdigo correspondiente. Que es la que nos indica el mtodo principal en donde la mquina virtual comienza a leer y ejecutar.

Ilustracin 8. Mtodo Principal. d. Bloque de cdigo. En esta parte escribiremos los mtodos y objetos que nuestro programa. Se debe tener especial cuidado entre maysculas y minsculas ya que java si reconoce los mismos.

13

Ilustracin 9. Bloque de cdigo. 3ro: Compilar y ejecutar el programa. Para ello se debe asegurar que el archivo se guarde como Nombre.java. Ahora nos dirigimos a Command (en la opcin Ejecutar del DOS).

Ilustracin 10. cmd.

En la ventana que se abrir debemos escribir las siguientes lneas. Hasta empezar en el disco donde est guardado el proyecto.

Ilustracin 11. Escribiendo en el DOS.

Ahora buscaremos el origen el nombre del programa con que guardamos y lo compilamos.

14

Ilustracin 12. Compilando el programa.

Sabremos que el programa se compilo correctamente si no salta ninguna lnea de mensaje de error. Enseguida corremos el programa con la siguiente lnea de cdigo.

Ilustracin 13. Ejecutando el programa. De esta forma observamos el programa y sus resultados. Despus de desarrollar este ejemplo, el estudiante est en la capacidad de desarrollar los ejercicios para mejorar sus habilidades. Ojo. Si tiene problemas en realizar estos ejercicios puede revisar la programacin en la seccin de Ayudas al usuario, al final de este captulo.

Ejercicios1. Escriba un programa que presente en pantalla su nombre completo en una lnea de cdigo y en la siguiente lnea su fecha de nacimiento. Tips: Debe hacer manejo de saltos de lnea con \n.15

2. Escriba un programa que presente en pantalla las notas de la asignatura de Tecnologas de Software. En la primera lnea se escribir el nombre de la asignatura. En las siguientes lneas se escribirn las notas de los tres parciales poniendo la nota de cada uno en lneas distintas. En la ltima escribir la nota final de la asignatura. Escriba lo que sea texto como un texto entre comillas dobles y lo que sea un nmero como nmero. Tips: El enunciado no da restriccin alguna, preferiblemente guarde en una variable las notas y luego imprima.

3. Basndose en la clase Hola modifique su cdigo de tal manera que se imprima en pantalla su nombre y apellido en una lnea y en la segunda lnea su nmero de cdula. Considerando que tanto su nombre, apellido y nmero de cdula deben guardarse en una variable cada una. Tips: Como lo pide el ejercicio guarde en una variable los datos y luego imprima.

4. Fundamentos para escribir en JavaPara programa en Java se necesita de ciertas consideraciones acotando que en un futuro usaremos el patrn de diseo MVC (modelo, vista, controlador) el mismo que ser explicado en el siguiente captulo, ahora veremos cmo se desarrollar en Java los :

16

Paquetes

Clases

Todas las letras deben ser escritas en minsculas.

La primera letra en mayscula.

Ejem: araujomeneses.ejemplo

Ejem: NombreClase

Mtodos y Variables

La primera letra en minscula la siguiente palabra en mayscula.

Ejem: nombreMetodo() nombreVariable

4.1. Tipos de variables Las variables pueden clasificarse segn su funcin y segn su naturaleza:

17

Tipos de variables

Segn su funcin

Segn su naturaleza

De Intancia

De Clase

Locales

Tipo Primitivo

De una Clase

Un array

Segn la funcin que cumplen las variables se pueden clasificar en:

De instancia Usadas para almacenar atributos del objeto, estn disponibles para todas las clases

De clase Usadas para almacenar atributos del objeto, estn disponibles para una clase determinada

Locales Son variables usadas dentro de los mtodos del programa

Ahora vamos a ver la definicin de las variables del tipo primitivo ya que son de suma importancia por dos motivos: Nos ayudan a no desperdiciar memoria utilizando variables que ocupan ms espacio de memoria del que en realidad necesitamos Por otro lado nos ayuda a que podamos elegir un tipo de dato que represente lo que deseamos adecuadamente

18

boolean

Valores verdaderos o falsos, ocupan un bit Caracteres, ocupan 16 bits

char

byteTipos de datos primitivo

Enteros con signo, ocupan 8 bits

int

Enteros con signo, ocupan 16 bits Enteros, ocupan 16bits y 64 bits respectivamente Reales, ocupan 32 bits

short, long

float, double

Otro tipo de datos primitivo son los vectores y matrices:

Arreglos

Estructura de datos que contienen el mismo tipo de datos

Propiedades

Se utilizan como contenedores Todos los datos son del mismo tipo El tamao del mismo se establece al crear el array (operador new) 19

Terminologa

Vectores

Matrices

Arrays unidimensionales

Arrays bidimensionales

Se usa corchetes [] para diferenciar de una variable normalDeclaracin

tipo identificador []; Unidimensional tipo [] identificador tipo identificador [][]; Bidimensional tipo [][] identificador; tipo, es el tipo de dato identificador, nombre de la variable

Donde

20

Son llamados del tipo String

Declara explicitamente un array llamado args

Cadenas

Implementada por la clase String

Declaracion: String [] args

Existen operadores en Java que nos permiten relacionar las variables para obtener datos como sumas, restas, etc: Operadores aritmticos:

+, p+q

Suma p y q

-, p-q

Resta q de p

*, p*q

Multiplica p y q

Operadores aritmticos

/, p/q

Divide p por q

%, p%q p++ ++p p---p

Residuo de dividir p por q Incrementa p en 1 Decrementa p en 1 Evalua antes/despus de incrementar Evalua antes/despus de decrementar

Existe una precedencia con la que Java maneja los operadores:21

Operadores sufijo Operadores unarios Creacin o tipo Multiplicadores Suma, resta Desplazamiento Relaciones Igualdad Bitwise AND Bitwise exclusive OR Bitwise inclusive OR AND lgico OR lgico Condicional Asignacin

[], (params), expr++, expr-++expr, --expr, +expr, -expr, ~, ! new (type) expr *, /, % +, , >>> , =, instance of ==, != & ^ | && || ?, : =, +=, -=, *=, /=, %=, ^=, &=, |=, =, >>>=

Ejercicios Ojo. Si tiene problemas en realizar estos ejercicios puede revisar la programacin en la seccin de Ayudas al usuario, al final de este captulo.

4. Escriba un programa que defina dos variables enteras para describir las longitudes de los lados de un rectngulo. El programa debe calcular y escribir en la pantalla las longitudes de los lados, el permetro y el rea del rectngulo. (Suponga que el rectngulo mide 15cm de alto y 25 cm de ancho).

Tips. Revisar la frmula para calcular el rea y permetro del rectngulo.

5. Escriba un programa para calcular el rea y el volumen de un cilindro. Para ello declare una constante que guarde el valor de PI. Declare, tambin, variables para el dimetro y la altura del cilindro. Suponga para el ejemplo que el cilindro tiene un dimetro de 15.5 cm y una altura de 42.4

22

Ilustracin 14. Cilindro.

4.2. Peticiones de valores al usuario Se utiliza para obtener datos del exterior por ejemplo del teclado

Peticiones de valores al usuarioDeclaracin: Scanner nombre = new Scanner (System.in) Llamar objeto: variable = nombre.nextTipoVariable();

Tipos y mtodo para leer teclado

byte

short

int

long

float

double

boolean

teclado.next Byte();

teclado.nex tShort();

teclado.nex tInt();

teclado.nex tLong();

teclado.nex tFloat();

teclado.nex tDouble();

teclado.nex tBoolean();

4.2.1. Instrucciones condicionales y de repeticin

Las instrucciones condicionales y las de repeticin nos permiten realizar operaciones que nos tomaran muchas lneas de cdigo y mucho tiempo programando23

Este tipo de instrucciones se usa cuando debemos repetir una operacin varias veces.

Condiciones y repeticin Toma de decisin switch case Bucle Miscelneo

while

continue

if - else

for

return

do - while

label:

break

Switch - Case

Para realizar sentencias condicionalmente basadas en alguna expresin

switch(op) case 1: sentencia; brake; case 2: ...........................

Se debe poner brake para finalizar el flujo y salir del Case

24

If - Else

Da la posibilidad de ejecutar selectivamente otras sentencias basndose en algn criterio

if (expresin) sentencia1 else sentencia2

Despus del primer if podemos poner los else q queramos

Realiza una accin mientras se cumpla una cierta condicin

While

while(expresin) sentencia

Se ejecuta sentencia mientras la expresin sea verdadera, sentencia puede ser todo un bloque de cdigo

25

Se usa cuando se conoce los lmites del bucle y su variacin for(inicializacin; terminacin; incremento) sentencia Generalmente se lo usa para recorrer por los espacios de un arreglo

For

Do - While

Usado cuando por lo menos se quiere que el bucle ejecute una vez

do{ sentencias} while(expresin boleana);

Sentencia de repeticin muy poco usada

Java cuenta con toda una clase que contiene operaciones matemticas, esta clase se conoce como Math

26

Librera matemtica de Java

Math.abs(x) Math.sin(double) Math.log(double) Math.pow(a,b) etc...

Clase Math

El constructor de la clase es privado

Math es public para que pueda llamarse desde cualquier sitio

Clase String

Creacin implcita:

Dentro del objeto, Java crea un array de caracteres

System.out.println("Patty") Creacin explicita: String str=new Sring("Patty")

Extrae una porcin del String

SubstringDebemos determinar el espacio donde queremos cortarDeclaracin: String subStr=str.substring(14);

27

Convertir numero a string

Usamos la funcin miembro esttica valueOf

Ejemplo: int valor=10; String str=String.valueOf(valor); La clase String proporciona versiones de valueOf para convertir: int, long, float, double

Convertir un string en nmero

Debemos usar la funcin miembro esttica parseInt de la clase Integer

Ejemplo: String str="12"; int numero=Integer.parseInt(str.trim());

str.trim(), quita los espacios en blanco que muchas veces se producen al inicio o final de los nmeros

Usada para leer archivos de texto plano Buffered Reader Buffered Reader in=new Buffered Reader(new File Reader(archivo)); String archivo="nombr e,txt" Si queremos leer una lnea del archivo se usa aux=in.readLine();

28

Ayudas al usuario Ejercicio 1. String nombre="Carlos Araujo"; int anioNacimiento=1988; System.out.println("su nombre es: "+nombre); System.out.println("su fecha de nacimiento es: "+anioNacimiento);

Ejercicio 2.String Materia="TECNOLOGIAS DEL SOFTWARE"; String nota1="Primer parcial: "; String nota2="Segundo parcial: "; String nota3="Tercer parcial: "; String total="NOTA FINAL"; int n1=17; int n2=18; int n3=19; System.out.print(Materia+"\n"+nota1+n1+"\n"+nota2+n2+"\n"+nota3+n3+"\n"+total+(( n1+n2+n3)/3));

Ejercicio 3.String nombre="Patty "; String apellido="Meneses"; String saludo="Hola "; String cedula="\n Tu # de cedula es: "; String numero="1002610234"; System.out.print(saludo+nombre+apellido+cedula+numero);29

Ejercicio 4.public class PrincipalRectangulo{ public static void main(String args []){ //llamando a la funcion /*Rectangulo rectangulo1= new Rectangulo (); System.out.println("valor de perimetro: "+rectangulo1.perimetro()); System.out.println("valor de area: "+rectangulo1.area());*/ //asignando una variable Rectangulo rectangulo1= new Rectangulo(); int perimetro = rectangulo1.perimetro(); int area = rectangulo1.area(); System.out.println("valor de perimetro: "+perimetro); System.out.println("valor de area: "+area); } public class Rectangulo{ public int b=25; public int h=15; int perimetro (){ int p=0; p=2*b+2*h; return p; } int area (){ int a=0; a=b*h; return a;

30

Ejercicio 5.public class Cilindro{ double pi=3.1416; double a=42.4; double r=(15.5/2); double volumen(){ double v=0; v=pi*r*r*a; return v; } double area(){ double area=0; area=2*pi*r*(a+r); return area; } } public class PrincipalCilindro{ public static void main(String args []) //llamando a la funcion Cilindro cilindro1= new Cilindro (); System.out.println("valor de volumen: "+cilindro1.volumen()); System.out.println("valor de area: "+cilindro1.area()); } } {

31

CAPTULO 2

INTRODUCCIN AL CAPTULO En esta parte, vamos revisar brevemente lo que se refiere a objetos y clases en Java ya que es muy similar a C++, lenguaje que en estas instancias el estudiante debe saber manejar correctamente. Para poder empezar a programar en Netbeans es necesario que se conozca este entorno, por ello el objetivo de este captulo ser introducir al estudiante al mundo del IDE Netbeans para poder realizar aplicaciones aptas de nuestro nivel de aprendizaje.

32

5 ObjetosPrimero recordaremos la diferencia de declaracin en programacin tradicional y en orientada a objetos:

Tradicional Fraccion_simp = simplificada_fraccion (fraccion);

Orientada a Objetos Scanner teclado = new Scanner(System.in);

5.1. Instanciacin de Objetos:Para instanciar un objeto el mtodo que se usa es new.

Antes de esto se tiene que declarar la variable que contendr ese nuevo objeto Crea un objeto de la clase que le especifiquemos String palabra1=new String("Ecuador");

new6. ClasesUna clase define la forma y comportamiento de un objeto.

33

a. Para crear una clase slo se necesita usar la palabra clave reservada class seguida de un identificador legal y un bloque delimitado por dos llaves para el cuerpo de la clase. class MiPunto { ... } OJO: El nombre de la clase debe tener el mismo nombre del archivo, como ya se explico en el captulo anterior. b. Los atributos Los datos se encapsulan dentro de una clase declarando variables dentro de las llaves de apertura y cierre de la declaracin de la clase, variables que se conocen como atributos. Se declaran igual que las variables locales de un mtodo en concreto. class MiPunto { int x, y; } c. Los mtodos Son subrutinas que definen la interfaz de una clase, sus capacidades y comportamiento. Un mtodo puede tener cualquier nombre para identificarlo pero diferentes de los nombres los nombres de la clase en que est contenido. Los mtodos se declaran al mismo nivel que las variables de instancia dentro de una definicin de clase. tipo_devuelto nombre_de_mtodo( lista-formal-de-parmetros ){ cuerpo_del_mtodo; }

34

7. Netbeans IDE

Netbeanses

Un IDE que permite que las aplicaciones sean desarrolladas a partir de un conjunto de componentes de software llamados mdulos

Una herramienta para programadores pensada para escribir, compilar, depurar y ejecutar programas

Un proyecto de cdigo abierto de gran xito con una gran base de usuarios y una comunidad en constante crecimiento

La Plataforma Netbeans:

Administracin de las interfaces de usuario (ej. mens y barras de herramientas).

Es una base modular y extensible usada como una estructura de integracin para crear aplicaciones de escritorio grandes

Administracin de las configuraciones del usuario

Administracin del almacenamiento (guardando y cargando cualquier tipo de dato) Administracin de ventanas

Framework basado en asistentes (dilogo paso a paso).

35

7.1. Preparando el rea de trabajoEl rea de trabajo de Netbeans est dado por:

1 3 4

2

Ilustracin 15. rea de trabajo. 1.- Projects: Como vemos, el nombre del proyecto aparece en la esquina superior y en negrita, a partir de el se ramifica el rbol de las subcarpetas, las cuales agrupan los cdigos fuente de las clases junto con sus respectivos enlaces a sus interfaces grficas (en caso de tenerlas), las libreras usadas, y algunos otros aspectos. 2.- Navegador: Esta zona funciona a modo de rbol; es el navegador de los objetos presentes en nuestra interfaz grfica; es decir que all se mostrar una lista jerrquica de todos los componentes colocados en el formulario, y desde ah se controlar el orden de estos, sus respectivos nombres y con el clic derecho sobre cada objeto, se podr modificar las propiedades que cada uno posee. 3.- Esta ser la zona que mostrar todo el trabajo que realicemos en el proceso de diseo de nuestra interfaz y clases. 4.- Propiedades: En este espacio podremos modificar las propiedades propias de nuestras clases. Para empezar debemos tener en cuenta que seguiremos el patrn de diseo MVC: 1ro. Creamos el nuevo archivo seleccionando el cono de Nuevo proyecto.

36

Ilustracin 16. Nuevo Proyecto. Seleccionamos la opcin Java-Java application.

Ilustracin 17. Java Application.

Le asignamos un nombre en este caso es Ejemplo y dejamos seleccionada la Opcin de Main class.

Ilustracin 18. Nombre Proyecto.37

Ya creado el proyecto se deben introducir 3 paquetes con los siguientes pasos:

Ilustracin 19. Paso 1.

Ilustracin 20. Paso 2. De esta forma cuando creemos los 3 paquetes podremos observarlo en el esquema del proyecto.

Ilustracin 21. Esquema del proyecto.

38

As hemos logrado seguir el patrn de diseo MVC, ahora podremos crear nuestras clases en las cuales realizaremos nuestras aplicaciones.

Ilustracin 22. Creando una Clase.

Ilustracin 23. Nombre de la Clase.

Para poder ejecutar el programa haremos una breve salida de informacin de la siguiente forma: a. Escribimos el cdigo

Ilustracin 24. Escribir cdigo.

Nos dirigimos al cono Compilar, cuando el IDE termine de comprobar que no existan errores en el espacio de Output podremos observar en letras verdes lo siguiente:

39

Ilustracin 25. Compilar.

Ilustracin 26. Sin error.

Enseguida podremos ejecutar el proyecto seleccionando el cono con el mismo nombre.

Ilustracin 27. Run. Y observaremos los resultados en el espacio Output

Ilustracin 28. Salida en consola.

De esta forma hemos dado un breve vistazo al rea en el cual trabajaremos, como pudimos observar no es muy complejo y al contrario cualquier estudiante estar en la capacidad de manejar este entorno de manera fcil y correcta.

40

8. ReferenciasLas referencias en Java no son punteros ni referencias como en C++. Este hecho crea un poco de confusin entre los programadores que llegan por primera vez a Java. Las referencias en Java son identificadoras de instancias de las clases Java. Una referencia dirige la atencin a un objeto de un tipo especfico. No tenemos por qu saber cmo lo hace ni necesitamos saber qu hace ni, por supuesto, su implementacin. Entre las ms usadas tenemos this y null:Referencia al objeto que est ejecutando al mtodoThis this.largo = largo; Referencias

Para asignar a una referencia el valor nulo se utiliza la constante nullNull Por defecto: Clase clase1; Explcitamente: auto1=null;

9. Tipos de accesoEl control de acceso se aplica siempre a nivel de clase, no a nivel de objeto. La tabla siguiente muestra el nivel de acceso que est permitido a cada uno de los especificadores:

Nivel de Acceso Private Protected Public Package

clase X X X X

subclase X* X

paquete X X X

todos

X

41

En otras palabras podemos definir:

Private

Public

Protected

Friendly

Solamente puede ser accedido por otros miembros de la propia clase. No puede ser accedido por miembros de una clase heredada

Puede ser accedido desde cualquier cdigo dentro del mbito de un objeto instanciado a partir de la clase.

Solamente cuando se ve involucrada en herencia

Acceso a todos los miembros privados y protegidos de esa clase

public void CualquieraAcced e(){}

Aparece como public para los miembros de clases derivadas de la clase

void MetodoDeMiPaquet e(){}

private String Numero

Aparece como private para todas las dems

protected void SubClases(){}

EjerciciosOjo. Si tiene problemas en realizar estos ejercicios puede revisar el cdigo fuente en la seccin de Ayudas al usuario, al final de este captulo.

1. Definir una clase que represente un auto. En la definicin se debe incluir: El modelo, el color si la pintura es metalizada o no, la matricula, el tipo de auto, el ao de fabricacin, la modalidad del seguro. Tips: Revise la forma de ingresar constructores para la inicializacin de las variables.

2. Se desea imprimir el modelo y el color de un auto dado, para ello se pide escribir un mtodo que acepte un objeto de la clase Auto. Si dicha referencia no es null, el mtodo deber imprimir el modelo y el color. Si es null, el mtodo no har nada. Tips. Revisar el manejo de la referencia null.

42

3. Aadir a la clase Auto del ejercicio 1 un mtodo de nombre imprime Auto que imprima el modelo y el color del auto.

4. Escribir un programa que tenga una instancia de Auto, que un Audi de color gris. El programa ha de imprimir un mensaje que diga de qu modelo y color es el auto. Tips. Asigne objetos en donde crea conveniente.

5. Escriba un programa que disponga de una clase para representar las asignaturas de una carrera. Una asignatura tiene, un cdigo numrico y el nivel en el cual se imparte. Los valores iniciales han de proporcionarse en el constructor ya que la clase utiliza el principio de encapsulamiento. La clase ha de tener mtodos para obtener los valores de los atributos. El programa ha de construir un objeto con los siguientes valores: nombre TECNOLOGAS DE SOFTWARE PARA ELECTRNICA, cdigo 1017, nivel 5. A continuacin el programa debe imprimir los valores del objeto por pantalla. Tips. Lea detenidamente el enunciado y realice el programa paso a paso con encapsulamiento.

43

Ayudas al UsuarioEjercicios 1, 2, 3, 4: public class Acciones { public void imprimir(Auto auto) { if (auto.equals(null)) {} else { System.out.println(auto); } } public void imprimirAuto(String color,String modelo){ Auto carro=new Auto(modelo, color, "wesco", "pbd-4498", "vmw",88, "soat"); System.out.println("el "+carro.getColor()); } } public class Auto { private String modelo; private String color; private String pintura; private String matricula; private String tipoDeAuto; private int ao; private String seguro; public Auto() { this.modelo = "ninguno"; this.color = "ninguno"; modelo es :"+carro.getModelo()+"\nel color es:

44

this.pintura = "ninguno"; this.matricula = "ninguno"; this.tipoDeAuto = "ninguno"; this.ao = 0; this.seguro = "ninguno"; } public Auto(String modelo, String color, String pintura, String matricula, String tipoDeAuto, int ao, String seguro) { this.modelo = modelo; this.color = color; this.pintura = pintura; this.matricula = matricula; this.tipoDeAuto = tipoDeAuto; this.ao = ao; this.seguro = seguro; } public int getAo() { return ao; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public String getMatricula() { return matricula;45

} public String getModelo() { return modelo; } public String getPintura() { return pintura; } public void setPintura(String pintura) { this.pintura = pintura; } public String getSeguro() { return seguro; } public void setSeguro(String seguro) { this.seguro = seguro; } public String getTipoDeAuto() { return tipoDeAuto; } public void setTipoDeAuto(String tipoDeAuto) { this.tipoDeAuto = tipoDeAuto; } public String toString(){ return ("modelo: "+modelo+"color: "+color); } public class Principal { public static void main(String[] args) {46

Auto a1 = new Auto(); /* new Acciones().imprimir(a1); //new para no crear el objeto (x vagos) //a1.imprimirAuto(a1.getColor(), a1.getModelo()); a1.*/ Acciones mostrar=new Acciones(); mostrar.imprimirAuto("gris", "Audi"); }

47

Capitulo 3

Introduccin al CaptuloEn este captulo contemplaremos conceptos ms avanzados para programar en Java como herencia, polimorfismo, abstraccin de clases. Con esto el estudiante estar en la capacidad de manipular completamente el lenguaje y podr realizar interfaces ms complejas.

48

10. HerenciaDentro de la programacin orientada a objetos existe el concepto de herencia, podemos crear objetos que requieran tener las mismas caractersticas de otras, como los seres humanos heredamos de nuestros padres el color de cabello, color de ojos, color de la piel, entre otras cosas. Puede haber clases que necesiten de atributos o mtodos que ya han sido escritos y definidos en otras clases, las clases que reciben los atributos y mtodos de otro objeto son llamadas clase hijas y las que dan estos atributos son llamadas clases padre. Una clase hija puede ser hija de otra clase que a su vez ya es hija de otra clase superior y la ultima heredara los atributos y mtodos tanto de la primera como de la segunda. Las ventajas entre otras pueden ser estandarizacin de clases, una de las ms importantes es la reutilizacin de cdigo que ya ha sido escrito y probado, entre otras.

10.1. JerarquaLa jerarqua de objetos hace completamente referencia a la herencia entre ellos. Se dice que una superclase es una clase padre y una subclase es la case hija.

Ilustracin 29. Jerarqua.

En la imagen podemos ver un ejemplo de herencia donde la clase Animal es la clase padre (superclase) y las clases Vertebrados e Invertebrados son clases hijas (subclases), como vemos podemos crear nuevas clases que tienen algn tipo de relacin y al heredar mtodos y atributos de las clases padre, podra decirse que es una familia de clases con caractersticas especificas. Dentro del lenguaje todas las clases que hagamos o utilicemos son clases hijas de una sper clase en comn. La clase Object y esta es una herencia implcita (que no necesitamos declarar dentro de nuestro cdigo).49

10.2. Declaracin de herenciaPara declarar que una clase es hija de otra utilizamos la palabra reservada extends de la siguiente forma. public class ClaseHija extends ClasePadre{ }

11. Referencias polimrficas

En la que ClaseHija hereda los atributos de ClasePadre pero con esto surge una pregunta. Cmo hacer referencia a los atributos de la clase padre o de s misma cuando se necesite? Y ms aun cuando sus atributos o mtodos tengan el mismo nombre. Pues esto se logra con la palabra this o con la palabra super las cuales son apuntan a la clase hija o padre respectivamente por ejemplo. this.w = w; super.incrementarX();

Con las referencias polimrficas solo especificaremos a que clase pertenece los elementos que usemos.

12. Sobrecarga de mtodosLa sobrecarga de mtodos es la escritura de mtodos dentro de un programa con la misma etiqueta pero con diferente definicin, esta definicin dentro de java se la hace mediante el tipo y cantidad de argumentos que recibe un mtodo. Tambin existe la sobrecarga de constructores de igual manera estar definido por la cantidad de parmetros que se le enve al constructor. String imprimir() {} String imprimir(int a) {} String imprimir(int a, int b) {} String imprimir(String mensaje) {}

50

13. PolimorfismoEl polimorfismo es la creacin de un mtodo ya existente pero definido por la clase que lo posee, para ser ms claros vamos a expresarlo con un ejemplo, tenemos varias clases Triangulo, Cuadrado, Circulo. Todas estas clases son hijas de la clase Figuras todas poseen el mtodo rea, y el mtodo permetro, pero cada clase realiza el clculo de los mtodos de diferente forma.

14. Clases abstractasUna clase abstracta es una clase que posee atributos y mtodos pero la cual no puede ser usada directamente como objeto ya que podra decirse que es intangible, los mtodos que posee una clase abstracta pueden ser definidos en la misma o podrn ser definidos por las clases hijas. Para su declaracin se utiliza la palabra abstract como veremos en el ejemplo abstract class A{ }

15. InterfacesUna interface es como crear una plantilla de una clase ya que se crearan mtodos no definidos pero que deben existir de carcter obligatorio en las clases que implementen la interface y ser en estas donde se definir la forma que tienen los mtodos dependiendo la necesidad del usuario, una interface es una clase abstracta pura ya que todos sus mtodos sern abstractos. Una interface puede tambin contener datos miembro, pero estos son siempre static y final. Una interface sirve para establecer un 'protocolo' entre clases. interface A{ final int X; String metodo (String msn); }

Los datos miembro de esta clase se escriben con mayscula ya que sern tomadas como constantes, en la clase que implemente esta interface se deber

51

especificar el cdigo para el mtodo que como vemos solo hemos escrito el encabezado mas no lo que hace el mtodo en s. class B implements A{ int constante=X; String metodo (String msn){ System.uot.println(msn+constante); } }

15.1. ExcepcionesDentro de la programacin en lenguaje java existen objetos creados especficamente para el manejo de errores ya que en general, como programadores podemos dejar pasar cierto tipo de cosas que nos pueden o no generar problemas en nuestro programa, un ejemplo muy tpico y muy claro seria la operacin divisin, si creamos un cdigo donde realizaremos la divisin de dos nmeros pero realizamos una divisin para cero tendremos un error con lo que podra entrar a un bucle infinito o hacer que nuestro computador no contine trabajando, pero java nos permite manejar el error de cierta manera con las excepciones. Una excepcin en lenguaje java es una clase que nos permite manejar un error, existen varios tipos de ellas, ya que existen una gran cantidad de aplicaciones para java existe tambin una numero de excepciones para las mismas Los nombres de las excepciones indican el tipo de error que se ha producido. Como se menciono anteriormente una excepcin de este tipo es la divisin para cero

ArithmeticException

Se produce cuando se intenta acceder a una variable o mtodo que todava no ha sido creado

NullPointerException

52

El intento de cambiar una clase afectada por referencias en otros objetos, especficamente cuando esos objetos IncompatibleClassChangeEx todava no han sido recompilados. ception

El intento de convertir un objeto a otra clase que no es vlidaClassCastException

NegativeArraySizeExcep tion

Puede ocurrir si hay un error aritmtico al intentar cambiar el tamao de un arreglo

No debera producirse nunca! El intento de crear un objeto con el operador new ha fallado por falta de memoria.

OutOfMemoryException

53

Se referenci una clase que el sistema no encuentra.

NoClassDefFoundExcept ion

Se genera al intentar acceder a un elemento de un arreglo ms all de los ArrayIndexOutOfBound lmites definidos inicialmente para ese arreglo

sException

Por definicin, el usuario nunca debera ver este error y esta excepcin no debera lanzarse

InternalException

Estos son algunos ejemplos de Excepciones que pueden ocurrir. Todas las excepciones son hijas de la clase Exception la cual es hija de la clase Throwable, nosotros tambin podemos crear nuestras propias excepciones.

15.1.1. Bloques Try-Catch.Dentro del lenguaje Java se utiliza estas dos palabras reservadas para el manejo de errores, al escribir la palabra try generamos un bloque de cdigo el cual ser donde se realiza la operacin que podra darnos algn tipo de error, y con la palabra catch crearemos el bloque de cdigo encargado de manejar la excepcin. try{ }54

catch (Exception e){ } Este es un ejemplo de cmo se escribe el cdigo de una excepcin dentro de los parntesis que se encuentran despus de la palabra catch escribimos el tipo de excepcin con la que trabajaremos que pueden ser ArithmeticException, NullPointerExceptio, y todos los casos que ya mencionamos anterior mente seguido de un nombre que en este casos es la letra e. Se puede agregar varios catch especificando a qu tipo de excepcin pertenece cada uno, y tambin hay una palabra reservada que es finally la cual se usa despus de los catch, este es un bloque de cdigo que se ejecutara obligatoriamente, se que ocurra o no una excepcin, se usa en casos en los que necesariamente debemos ejecutar algn proceso como por ejemplo cerrar un fichero que se est utilizando. try{ } catch (IOException error1){ } catch (NullPointerException error2){ } finally{ }

16. JOptionPaneTodo lo que hemos mencionado anterior mente sobre Java es una programacin que solo podemos visualizar en consola, ya sea en la consola CMD de Windows o en la consola de NetBeans.

55

Pero dentro de las aplicaciones de java tenemos herramientas que nos permiten hacer programas con los que se puede interactuar sin necesidad de que sea por consola, con esto realizaremos programas ms funcionales. Tenemos mtodos como los siguientes dentro de la clase JOptionPane:

JOptionPane.showInputDialog() La diferencia entre ellos es que tienen ms o menos parmetros, segn queramos aceptar o no las opciones por defecto. Los parmetros y sus significados son muy similares a los del mtodo showOptionDialog(), pero hay una diferencia. Si usamos los mtodos que no tienen array de opciones, la ventana mostrar una caja de texto para que el usuario escriba la opcin que desee (un texto libre)

JOptionPane.showMessageDialog()

Slo muestra una ventana de aviso al usuario. La ejecucin se detiene hasta que el usuario cierra la ventana. Hay varios mtodos con el mismo nombre y ms o menos parmetros, en funcin de si aceptamos las opciones por defecto (icono, por ejemplo) o queremos cambiar alguna cosa.

JOptionPane.showConfirmDialog() Muestra una ventana pidiendo una confirmacin al usuario, estilo "Seguro que lo quieres borrar todo?" y da al usuario opcin de aceptar o cancelar ese borrado masivo que est a punto de hacer YES_OPTION, NO_OPTION, CANCEL_OPTION, OK_OPTION, CLOSED_OPTION

JOptionPane.showOptionDialog() Devuelve un entero que representa la opcin que ha seleccionado el usuario. La primera de las opciones del array es la posicin cero. Si se cierra la ventana con la cruz de la esquina superior derecha, el mtodo devolver -1

56

parentComponent Se intentar determinar cul es la ventana que debe hacer de padre del JOptionPane. Se puede pasar null, pero conviene pasar, por ejemplo, el botn desde el cual se lanza la accin que provoca que se visualice el JOptionPane

message El mensaje a mostrar, habitualmente un String, aunque vale cualquier Object cuyo mtodo toString() devuelva algo con sentido

.

title El ttulo para la ventana

optionType:

Un entero indicando qu opciones queremos que tenga la ventana. Los posibles valores son las constantes definidas en JOptionPane: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION, o OK_CANCEL_OPTION

57

messageType Un entero para indicar qu tipo de mensaje estamos mostrando. Este tipo servir para que se determine qu icono mostrar. ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE, o PLAIN_MESSAGE options Si los objetos son componentes visuales, aparecer tal cual como opciones. Si son String, el JOptionPane pondr tantos botones como String

initialValue Seleccin por defecto. Debe ser uno de los Object que hayamos pasado en el parmetro options. Se puede pasar null

Ejemplos

En los siguientes ejemplos crearemos diferentes clases donde usaremos los conceptos aprendidos en este captulo. 1.- Crearemos una clase principal donde se encuentre el mtodo Main, crearemos la clase A que ser padre de la clase B y esta ultima ser padre de la clase C, estas tres clases tendrn atributos del tipo entero y sern privados, cada una tendr un atributo x y un atributo y, la clase A tendr dos constructores del tipo public uno sin parmetros y el otro con parmetros uno para x y otro para y, y poseer mtodos del tipo protected que sern heredados. Y una clase Acciones donde utilizaremos la visualizacin que nos brinda JOptionPane

58

Ilustracin 30. Proyecto.

Ilustracin 31. Clase Principal.

59

Ilustracin 32. Clase A.

Ilustracin 33. Clase B.

60

Ilustracin 34. Clase C.

Ilustracin 35. Clase Acciones. El programa en funcionamiento nos presentara las siguientes pantallas de ingreso para todas las variables

61

Ilustracin 36. Ingreso de variables.

Y finalmente nos mostrara como resultado una pantalla donde veremos nuestros datos ingresados y despus veremos otra pantalla con los datos incrementados

Ilustracin 37. Salida del programa.

2.-Definir una clase abstracta aviones, con dos mtodos despegar y aterrizar. Definir una interface vuelos, con dos constantes una para velocidad mxima 1500, y otra para velocidad mnima 1000. Adems el mtodo abstracto cinturones. Definir clase Boing747 que sea hija de aviones e implemente la interface vuelos. Que tenga como atributos el peso y el estado del aeropuerto. Adems defina los mtodos abstractos heredados. Para poder despegar el peso debe ser menos a 180 y el aeropuerto debe estar libre. Para poder aterrizar el aeropuerto debe estar libre y la velocidad menor a 1000. En caso de la velocidad mayor a 1500 se debe indicar que los cinturones deben asegurarse. Definir una clase Hrcules que sea hija de aviones e implemente a la interface vuelos. Que tenga como atributos el peso y el estado del aeropuerto. Adems defina los mtodos abstractos heredados. Para poder despegar el peso debe ser menor a 160 y el aeropuerto debe estar libre. Para poder aterrizar el aeropuerto debe estar

62

libre y la velocidad menor a 1500. En caso de ser la velocidad mayor a 1500 se debe indicar que los cinturones deben asegurarse.

Ilustracin 38. Clase Aviones.

Ilustracin 39. Interface Vuelos.

63

Ilustracin 40. Clase Boing747.

Ilustracin 41. Clase hrcules.

64

Para realizar las pruebas defina una clase principal en la que se cree dos aviones, uno Hrcules y otro Boing; y se pida al usuario que ingrese el peso de cada avin y el estado del aeropuerto. El usuario determinara si se encuentra volando o por despegar. Si el avin est volando se deber ingresar la velocidad. A partir de los datos ingresados hacer el anlisis si puede o no despegar o aterrizar y si deben o no asegurar los cinturones.

Ejercicio 1. Desarrolle un programa que permita almacenar el nombre y telfono de usuario de una biblioteca en una clase. Un constructor que inicialice sus atributos con Nadie y ooo Un constructor que inicialice sus atributos a partir de argumentos enviados Un mtodo que permita presentar en pantalla la informacin Mtodos de consulta y modificadores Una segunda clase que permita almacenar el nombre de un libro en una clase Un constructor que inicialice su atributo con Vacio. As como los atributos de la clase padre con Nadie y ooo Un constructor que inicialice su atributo y los de la clase padre a partir de argumentos enviados Un mtodo que permita presentar en pantalla la informacin Un mtodo de consulta Un mtodo que permita asignar el libro a un nuevo usuario Un mtodo que permita saber a partir de un grupo de libros si uno de ellos se encuentra o no asignado a un usuario En la clase principal el usuario definir con cuantos libros empieza el programa as como s los libros nombres de los libros nombres de los libros y si se encuentran o no asignados. Adems deber permitir al usuario seleccionar un libro y que se presente en pantalla el nombre del libro y los datos del usuario si existiese.

65

Ayudas al usuarioEjercicio 1. public class Herramientas { public Persona[] inicalizarArreglo(int dimension) { Persona[] aux = new Persona[dimension]; for (int i = 0; i < aux.length; i++) { aux[i] = new Persona(new EntradaSalida().leerString("ingrese nombre"), new EntradaSalida().leerString("ingrese ao"), new EntradaSalida().leerInt("leer ID")); } return (aux); } public Persona[] fechaComun(Persona[] estudiantes, String ao) { int i, acum = 0; Persona aux[]; for (i = 0; i < estudiantes.length; i++) { if (estudiantes[i].getFecha().compareTo(ao)==0) { acum = acum + 1; } } aux = new Persona[acum]; acum = 0; for (i = 0; i < estudiantes.length; i++) { if (estudiantes[i].getFecha().equals(ao)) { aux[acum] = estudiantes[i]; acum = acum + 1; }66

} return (aux); } public void imprimeArreglo(Persona [] estudiantes){ int i; for(i=0;i= '0' && c =temp) transistor.setIC(temp); temp = transistor.getIC().getValor(); resistencias[1].setCorriente(temp);

temp = fuente.getValor()-resistencias[1].getVoltaje(); transistor.setVC(temp); transistor.setVE(0); System.out.println("\n\nResultados:"); if (transistor.getvB().getValor()