Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF...

26
Introducción a java 1 Aurelio López Ovando UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java Creado por Sun Microsystems Inc. en 1990, como un proyecto para desarrollar un sistema que controlara electrodomésticos. Se pretendía crear un hardware polivalente, con un Sistema Operativo eficiente (SunOS) y un lenguaje de desarrollo denominado Oak (roble), el proyecto finalizó en 1992 y debido a su alto costo en relación a otros proyectos del mismo tipo que ya existían, fue declarado como un fracaso. En 1995 el proyecto fue retomado y gracias a una acertada decisión de distribuir libremente el lenguaje por Internet, se popularizó lográndose que una gran cantidad de programadores lo depuraran y terminaran perfilar según lo que ellos necesitaban, se añadieron numerosas clases. El nombre del lenguaje tuvo que ser cambiado ya que existía otro lenguaje llamado Oak. Se buscaban un nombre que evocara la esencia de la tecnología (viveza, animación, rapidez, interactividad…). Java fue elegido de entre muchísimas propuestas. No es un acrónimo, sino mas bien un nombre inspirado en lago que a muchos programadores les gusta beber en grandes cantidades: una taza de café (Java en argot Inglés americano). De esta forma, Sun lanzó las primeras versiones de Java a principios de 1995. Debido a la explosión tecnológica de estos últimos años Java ha desarrollado soluciones personalizadas para cada ámbito tecnológico, agrupando cada uno de esos ámbitos en una edición distinta: o J2SE (Java 2 Stantard Edition) o J2EE (Java 2 Enterprise Edition) o J2ME (Java 2 Micro Edition) Funcionamiento de Java Fuente Java : archivo .java o Archivo utilizado durante la fase de programación. o El único archivo realmente inteligible para el programador. Byte-Code Java : archivo .class o Código objeto destinado a ser ejecutado en toda Maquina Virtual de Java o Procede de la compilación del código fuente Maquina Virtual Java o Interprete de java convirtiendo el código a un lenguaje entendible para la máquina, ejecuta el Byte- Code Java. Visión general y elementos básicos del lenguaje En Java, prácticamente todo son clases (objetos). El lenguaje obliga a la programación orientada a objetos y no permite la posibilidad de programar mediante ninguna otra técnica que no sea ésta. Por esta razón, un programa estará formado por uno o varios archivos fuente y en cada uno de ellos tendrá definida una o varias clases. El lenguaje Java, distingue entre mayúsculas y minúsculas, por lo que es importante transcribirlo literalmente. También hay que comentar que en el nombre del archivo fuente también se hace distinción entre mayúsculas y minúsculas a la hora de compilarlo, aunque el sistema operativo empleado no haga esta distinción. La extensión del mismo debe ser .java

Transcript of Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF...

Page 1: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

1 Aurelio López Ovando

UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java Creado por Sun Microsystems Inc. en 1990, como un proyecto para desarrollar un sistema que controlara

electrodomésticos. Se pretendía crear un hardware polivalente, con un Sistema Operativo eficiente (SunOS) y un

lenguaje de desarrollo denominado Oak (roble), el proyecto finalizó en 1992 y debido a su alto costo en relación a

otros proyectos del mismo tipo que ya existían, fue declarado como un fracaso.

En 1995 el proyecto fue retomado y gracias a una acertada decisión de distribuir libremente el lenguaje por

Internet, se popularizó lográndose que una gran cantidad de programadores lo depuraran y terminaran perfilar

según lo que ellos necesitaban, se añadieron numerosas clases.

El nombre del lenguaje tuvo que ser cambiado ya que existía otro lenguaje llamado Oak. Se buscaban un nombre

que evocara la esencia de la tecnología (viveza, animación, rapidez, interactividad…). Java fue elegido de entre

muchísimas propuestas. No es un acrónimo, sino mas bien un nombre inspirado en lago que a muchos

programadores les gusta beber en grandes cantidades: una taza de café (Java en argot Inglés americano). De esta

forma, Sun lanzó las primeras versiones de Java a principios de 1995.

Debido a la explosión tecnológica de estos últimos años Java ha desarrollado soluciones personalizadas para cada

ámbito tecnológico, agrupando cada uno de esos ámbitos en una edición distinta:

o J2SE (Java 2 Stantard Edition)

o J2EE (Java 2 Enterprise Edition)

o J2ME (Java 2 Micro Edition)

Funcionamiento de Java Fuente Java : archivo .java

o Archivo utilizado durante la fase de programación. o El único archivo realmente inteligible para el programador.

Byte-Code Java : archivo .class o Código objeto destinado a ser ejecutado en toda Maquina Virtual de Java o Procede de la compilación del código fuente

Maquina Virtual Java o Interprete de java convirtiendo el código a un lenguaje entendible para la máquina, ejecuta el Byte-

Code Java.

Visión general y elementos básicos del lenguaje

En Java, prácticamente todo son clases (objetos). El lenguaje obliga a la programación orientada a objetos y no

permite la posibilidad de programar mediante ninguna otra técnica que no sea ésta. Por esta razón, un

programa estará formado por uno o varios archivos fuente y en cada uno de ellos tendrá definida una o varias

clases.

El lenguaje Java, distingue entre mayúsculas y minúsculas, por lo que es importante transcribirlo literalmente.

También hay que comentar que en el nombre del archivo fuente también se hace distinción entre mayúsculas

y minúsculas a la hora de compilarlo, aunque el sistema operativo empleado no haga esta distinción. La

extensión del mismo debe ser .java

Page 2: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

2 Aurelio López Ovando

1.- Programa que imprime el mensaje "Hola mundo" en pantalla. Objetivo: Comenzar a familiarizarse con el entorno de java

Como guardarlo.

Como compilar y ejecutar.

Función principal main

Comentarios

Un archivo fuente puede contener más de una clase, pero sólo una puede ser public. El nombre del archivo fuente

debe coincidir con el de la clase public. Una aplicación está constituida por varias clases, cada una realiza funciones

particulares, permitiendo construir aplicaciones con gran modularidad e independencia entre clases. La aplicación se

ejecuta por medio del nombre de la clase que contiene la función main().

2.- Programa que muestra un mensaje en pantalla utilizando una clase diferente.

Objetivo: Familiarizarse con la declaración de otras clases.

Definir una clase.

Crear una clase.

Invocar una clase.

3.- Declarar una clase que imprima los datos del curso: Escuela, nombre del curso, nombre del instructor.

class hola { public static void main(String arg[]) { System.out.println("Hola mundo"); } }

class saludo { public void saludar() { System.out.println("Hola mundo..."); } } class hola_2 { public static void main(String arg[]) { saludo x = new saludo(); x.saludar(); } }

import java.io.*; class curso { public void imprime_datos() { System.out.println("CURSO: Java "); System.out.println("INSTITUCION: ITESSCAM"); System.out.println("INSTRUCTOR: Aurelio Lopez Ovando"); } } class datos_curso { public static void main(String arg[])throws IOException { curso Curso = new curso(); Curso.imprime_datos(); } }

Page 3: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

3 Aurelio López Ovando

Tipos de datos Tipos de dato simples: Pueden utilizarse directamente en un programa, sin necesidad del uso de clases (POO).

Tipos de datos referenciales: Son las clases, en las que se basa la programación orientada a objetos. Se les

llama referencias porque en realidad lo que se almacena en los mismos son punteros a zonas de memoria

donde se encuentran almacenadas las estructuras de datos que los soportan. Dentro de este grupo se

encuentran las clases (objetos) y también se incluyen las interfaces, los vectores y los Strings.

Declaración de variables

La declaración de una variable contiene el nombre (identificador de la variable) y el tipo de dato al que pertenece. El ámbito de la variable depende de la localización en el programa donde es declarada. Las variables pueden ser inicializadas en el momento de su declaración, siempre que el valor que se les asigne coincida con el tipo de dato de la variable.

Identificadores

Los identificadores son los nombres que se les da a las variables, clases, interfaces, atributos y métodos de un programa.

Reglas para la creación de identificadores:

1. Java hace distinción entre mayúsculas y minúsculas, por lo tanto, nombres o identificadores como var1, Var1 y

VAR1 son distintos.

2. Pueden estar formados por cualquiera de los caracteres del código Unicode, por lo tanto, se pueden declarar

variables con el nombre: añoDeCreación, raïm, etc. (se acabó la época de los nombres de variable como

ano_de_creacion), aunque eso sí, el primer carácter no puede ser un dígito numérico y no pueden utilizarse

espacios en blanco ni símbolos coincidentes con operadores.

3. La longitud máxima de los identificadores es prácticamente ilimitada.

4. No puede ser una palabra reservada del lenguaje ni los valores lógicos true o false.

5. No pueden ser iguales a otro identificador declarado en el mismo ámbito.

6. Por convenio, los nombres de las variables y los métodos deberían empezar por una letra minúscula y los de

las clases por mayúscula. Además, si el identificador está formado por varias palabras la primera se escribe en

minúsculas (excepto para las clases) y el resto de palabras se hace empezar por mayúscula (por ejemplo:

añoDeCreación). Estas reglas no son obligatorias, pero son convenientes ya que ayudan al proceso de

codificación de un programa, así como a su legibilidad. Es más sencillo distinguir entre clases y métodos o

variables.

TIPO DESCRIPCIÓN LONG. RANGO

byte byte 1 byte - 128 … 127

short entero corto 2 bytes - 32.768 … 32.767

int entero 4 bytes - 2.147.483.648 … 2.147.483.647

long entero largo 8 bytes

-9.223.372.036.854.775.808… 9.223.372.036.854.775.807

float

real en coma flotante

32 bits 3,4*10-38 … 3,4*1038

double

real en coma flotante

64 bits 1,7*10-308 … 1,7*10308

char carácter 2 bytes 0 … 65.535

boolean lógico 1 bit true / false

Page 4: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

4 Aurelio López Ovando

4.- Declarar dos variables numéricas y mostrar la suma de estas dos variables

Objetivo: Empezar a declarar variables.

Utilizar los tipos de datos conscientemente.

Inicializar variables.

Alcance de las variables.

Imprimir el contenido de una variable.

Operadores aritméticos:

Operador Formato Descripción

- op1 - op2 -op1

Resta aritmética de dos operandos. Cambio de signo

* op1 * op2 Multiplicación de dos operandos.

% op1 % op2 Resto de la división entera ( o módulo)

++ op1++ ++op1

Incremento unitario

-- op1-- -- op1

Decremento unitario

/ op1 / op2 División entera de dos operandos.

+ op1 + op2 Suma aritmética de dos operandos.

Operadores relacionales:

Operador Formato Descripción

> op1 > op2 Devuelve true (cierto) si op1 es mayor que op2

< op1 < op2 Devuelve true (cierto) si op1 es menor que op2

>= op1 >= op2 Devuelve true (cierto) si op1 es mayor o igual que op2

<= op1<= op2 Devuelve true (cierto) si op1 es menor o igual que op2

== op1 == op2 Devuelve true (cierto) si op1 es igual a op2

!= op1 != op2 Devuelve true (cierto) si op1 es distinto de op2

Operadores lógicos:

Operador Formato Descripción

&& op1 && op2 Y lógico. Devuelve true (cierto) si son ciertos op1 y op2

|| op1 || op2 O lógico. Devuelve true (cierto) si son ciertos op1 o op2

! ! op1 Negación lógica. Devuelve true (cierto) si es false op1.

class operaciones { public void resultado() { int n1=8, n2=10; int s = n1+n2; System.out.println("La suma es: " + s); } } class suma { public static void main(String arg[]) { operaciones x = new operaciones(); x.resultado(); } }

Page 5: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

5 Aurelio López Ovando

Operadores de asignación: El operador de asignación es el símbolo igual ( = ).

op1 = Expresión

Asigna el resultado de evaluar la expresión de la derecha a op1.

Además del operador de asignación existen unas abreviaturas cuando el operando que aparece a la izquierda del

símbolo de asignación también aparece a la derecha del mismo:

Operador Formato Equivalencia

+= op1 += op2 op1 = op1 + op2

-= op1 -= op2 op1 = op1 - op2

*= op1 *= op2 op1 = op1 * op2

/= op1 /= op2 op1 = op1 / op2

%= op1 %= op2 op1 = op1 % op2

Precedencia de operadores:

5.- Programa que pida el nombre de una persona y lo salude por su nombre.

Objetivo: Aprender a introducir datos

desde el teclado.

Como incluir una biblioteca

Biblioteca io.

Como leer datos desde el

teclado.

El operador de asignación =

Manejo de errores.

Modificar el programa para

que lea datos de

distintos tipos.

El método String readLine() perteneciente a BufferReader lee todos los caracteres hasta encontrar un '\n' o '\r' y los

devuelve como un String (sin incluir '\n' ni '\r'). Este método también puede lanzar java.io.IOException.System.in es

un objeto de la clase InputStream. BufferedReader pide un Reader en el constructor. El puente de unión necesario lo

dará InputStreamReader, que acepta un InputStream como argumento del constructor y es una clase derivada de

Reader.

Operadores postfijos [] . (paréntesis)

Operadores unarios ++expr --expr -expr

Creación o conversión de tipo new (tipo)expr

Multiplicación y división * / %

Suma y resta + -

Relacionales < > <= >=

Igualdad y desigualdad == !=

AND lógico &&

OR lógico ||

Asignación = += -= *= /= %=

import java.io.*; class persona { public void get_name()throws IOException { String nombre; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Como te llamas? "); nombre = in.readLine(); System.out.println("Hola " + nombre); } } class pide_datos { public static void main(String arg[])throws IOException { persona x = new persona(); x.get_name(); } }

Page 6: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

6 Aurelio López Ovando

6.- Preguntar los datos de una persona (nombre, edad, estatura).

Leer diferentes tipos de datos.

Conversores con String.

Imprimir los datos en pantalla.

7.- Programa que pida un número y determine si es par o impar

Objetivo: Entender el uso de condiciones.

Una condición evalúa una expresión como verdadero o falsa. Puede contener o no un bloque de código

dependiendo del número de líneas que tenga.

Explicar el operador %

import java.io.*; class persona { public void get_name()throws IOException { String nombre; int edad; float estatura; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Como te llamas? "); nombre = in.readLine(); System.out.println("Hola " + nombre); System.out.print("Que edad tiene? "); edad = Integer.parseInt(in.readLine()); System.out.print("Tu estatura? "); estatura = Float.parseFloat(in.readLine()); System.out.println("Edad: " + edad); System.out.println("Estatura: " + estatura); System.out.println("Adios " + nombre); } } class pide_datos { public static void main(String arg[])throws IOException { persona x = new persona(); x.get_name(); }

import java.io.*; class test_par { public void is_par()throws IOException { int nume; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Teclea un numero: "); nume = Integer.parseInt(in.readLine()); if(nume % 2 ==0) System.out.println("Es par..."); else System.out.println("No es par"); } } class par { public static void main(String arg[])throws IOException { test_par x = new test_par(); x.is_par(); } }

Page 7: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

7 Aurelio López Ovando

8 .- Determinar en base a un promedio se un alumno es acreedor de una beca, para ser acreedor de una beca se debe cumplir con un promedio general mayor de 9.0 y no haber tenido ninguna falta durante el ciclo escolar.

Condiciones anidadas

Operadores lógicos

Bloques de código

CONVERSIONES En muchas ocasiones hay que transformar una variable de un tipo a otro, por ejemplo de int a double, o de float a

long. La conversión entre tipos primitivos se realiza de modo automático (conversiones implícitas), estas conversiones

se hacen al mezclar variables de distintos tipos en expresiones matemáticas o al ejecutar sentencias de asignación en

las que el miembro izquierdo tiene un tipo distinto (más amplio) que el resultado de evaluar el miembro derecho.

Las conversiones de un tipo de mayor a otro de menor precisión requieren una orden explícita del programador, pues

son conversiones inseguras que pueden dar lugar a errores (por ejemplo, para pasar a short un número almacenado

como int, hay que estar seguro de que puede ser representado con el número de cifras binarias de short). A estas

conversiones explícitas de tipo se les llama cast. El cast se hace poniendo el tipo al que se desea transformar entre

paréntesis, por ejemplo, long result;

result = (long) (a/(b+c));

import java.io.*; class becado { public void becalo()throws IOException { float prom; int faltas; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Promedio del alumno: "); prom = Float.parseFloat(in.readLine()); System.out.print("Numero de faltas en el ciclo escolar: "); faltas = Integer.parseInt(in.readLine()); if(prom > 9.0 && faltas == 0) { System.out.println("El alumnos puede ser becado"); System.out.println("Favor de iniciar los trámites correspondientes."); } else { System.out.println("El alumno no puede ser becado"); if(prom<=9.0) System.out.println("El promedio no es suficiente..."); if(faltas>0) System.out.println("Ha tenido faltas..."); } } } class beca { public static void main(String arg[])throws IOException { becado x = new becado(); x.becalo(); } }

Page 8: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

8 Aurelio López Ovando

9.- A un trabajador se le paga 80.00 por hora de trabajo, su jornada normal de trabajo a la semana debe ser de 40 horas, si hace mas de ese número cada hora extra se le pagará una bonificación de $20.00 por cada hora extra, hacer un programa que en base al número de horas trabajadas determine cuanto se le debe pagar a un trabajador.

Mostrar las conversiones implícitas y explicitas

Ciclos

Son estructuras de repetición. Bloques de instrucciones que se repiten un número de veces mientras se cumpla una

condición o hasta que se cumpla una condición.

Existen tres construcciones para estas estructuras de repetición:

Bucle for.

Bucle do-while.

Bucle while.

Ciclo for

Como regla general puede decirse que se utilizará el ciclo for cuando se conozca de antemano el número exacto de

veces que ha de repetirse un determinado bloque de instrucciones.

for (inicialización ; condición ; incremento)

bloque instrucciones

Ciclo do … while

Se utilizará el ciclo do-while cuando no se conoce exactamente el número de veces que se ejecutará el bucle pero se

sabe que por lo menos se ha de ejecutar una.

Ciclo do-while.

do

bloque instrucciones

while (Expresión);

import java.io.*; class salario { public void calcular()throws IOException { int ht,he=0; float the,th,tp; BufferedReader dat = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Horas trabajadas: "); ht = Integer.parseInt(dat.readLine()); if(ht>40) he = ht - 40; th = (float)(ht * 80.00); the = (float)(he * 20.00); tp = th + the; System.out.println("Total a pagar: " + tp); } } class jornada_trabajo { public static void main(String arg[])throws IOException { salario Salario = new salario(); Salario.calcular(); } }

Page 9: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

9 Aurelio López Ovando

Ciclo while

Se utilizará el bucle while-do cuando es posible que no deba ejecutarse ninguna vez.

while (Expresión)

bloque instrucciones

8.- Mostrar los primeros 50 números naturales Ciclo for

Objetivo: Aprender a utilizar los ciclos

Explicar las 3 partes del ciclo for

El ciclo for es finito

Puede tener un bloque de código.

El ciclo for también puede ser decreciente

Ciclo do…while

Entra por lo menos una vez al ciclo

Después de entrar al ciclo examina la condición.

El usuario puede controlar la condición

class ciclo_1 { public void muestra() { int i; for(i=0;i<=50;i++) System.out.println(i); } } class muestra_50 { public static void main(String arg[]) { ciclo_1 x = new ciclo_1(); System.out.println("Los primeros 50 numeros son: "); x.muestra(); } }

public void muestra() { int i; for(i=50;i>0;i--) System.out.println(i); } }

class ciclo_1 { public void muestra() { int i=0; do { System.out.println(i); i++; } while(i<=50); } } class muestra_50dw { public static void main(String arg[]) { ciclo_1 x = new ciclo_1(); System.out.println("Los primeros 50 numeros son: "); x.muestra(); } }

Page 10: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

10 Aurelio López Ovando

Ciclo while

Es controlado por una condición.

Antes de entrar al ciclo examinan la condición.

El usuario puede controlar la condición.

class ciclo_1 { public void muestra() { int i=0; while(i<=50) { System.out.println(i); i++; } } } class muestra_50w { public static void main(String arg[]) { ciclo_1 x = new ciclo_1(); System.out.println("Los primeros 50 numeros son: "); x.muestra(); } }

Page 11: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

11 Aurelio López Ovando

Ejercicios propuestos:

A) Se necesita saber el promedio de un alumno en una materia en la que se califican tres cosas:

1. Examen escrito. 2. Entrega de proyecto. 3. Participación en clase.

Se debe pedir el valor correspondiente a cada calificación y dar como salida el promedio de estas calificaciones.

B) En un casa de apuestas los jugadores tienen acciones las cuales pueden apostar, cada acción se cotiza en $10,000, en una jornada participan 5 jugadores, cada uno de ellos puede apostar una determinada cantidad de acciones, al finalizar la jornada se debe saber quien apostó mas y quien apostó menos. Como dato de entrada se pide el número de acciones que apuesta cada jugador.

C) Los usuarios de una página web, al momento de registrarse, se les pide registrar también una clave numérica para poder ingresar posteriormente a la página. La clave de acceso debe tener exactamente tres cifras. Hacer un programa que valide que la clave que teclea el usuario realmente tenga tres cifras, si el número tecleado no es de tres cifras marcar el error y volver a pedirlo hasta que tenga tres cifras.

D) Modificar el anterior de tal manera que después de leer la clave, determine si el número es capicúa, es decir, que tenga el mismo valor leído al revés. Por ejemplo: 656, 333, 121…

E) Escribir un programa que permita el ingreso de un número natural n y que calcule n! exhibiendo el resultado. Por ejemplo: 5! = 5 x 4 x 3 x 2 = 120

F) Lo mismo pero para la sucesión de Fibonacci. Por ejemplo: Serie Fibonacci de 7 = 1, 1, 2, 3, 5, 8, 13 (Es decir la sucesión tiene 7 números)

G) Contar los números enteros positivos introducidos por teclado. El algoritmo debe terminar cuando se

lea un número negativo o cero.

Page 12: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

12 Aurelio López Ovando

UNIDAD 2.- ATRIBUTOS Y MÉTODOS Clases Una clase es una representación de un objeto de la vida real, está definida mediante código que determinan sus

características y las operaciones que puede realizar, a las características se llaman atributos y a las operaciones

métodos.

Por ejemplo: Si pensamos en una persona y pretendemos definir una clase, debemos pensar que una persona tiene

muchas características: color de cabello, estatura, nombre, edad, etc., y que las acciones que puede hacer esta

personas son variadas, se debe elegir cuidadosamente, dependiendo de lo que el programa necesite, las

características que definirán en una clase,

Ejemplo de una clase llamada persona

Atributos Los atributos sirven, en principio, para almacenar valores de los objetos que se instancian a partir de una clase. La sintaxis general es la siguiente: [modificador de ámbito] [static] [final] tipo nombreAtributo

Modificador de ámbito: Especifican la forma en que puede accederse a los mismos desde otras clases.

o Prívate.- El modificador de ámbito private es el más restrictivo de todos. Todo atributo private es visible

únicamente dentro de la clase en la que se declara. No existe ninguna forma de acceder al mismo si no es

a través de algún método (no private) que devuelva o modifique su valor.

o public.- El modificador de ámbito public es el menos restrictivo de todos. Un atributo public será visible en

cualquier clase que desee acceder a él, simplemente anteponiendo el nombre de la clase.

o protected.- Los atributos protected pueden ser accedidos por las clases del mismo paquete (package) y

por las subclases del mismo paquete, pero no pueden ser accedidas por subclases de otro paquete,

aunque sí pueden ser accedidas las variables protected heredadas de la primera clase.

o El ámbito por defecto.- Los atributos que no llevan ningún modificador de ámbito pueden ser accedidos

desde las clases del mismo paquete, pero no desde otros paquetes.

Atributos:

Nombre

Edad

Estatura

peso

Métodos:

Correr

Hablar

Dormir

Pensar

Page 13: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

13 Aurelio López Ovando

1.- Programa que declare una clase que guarde los datos de un alumno de un curso de java.

Objetivo: Aprender a definir atributos utilizando modificadores de ámbito.

Intentar leer os atributos desde main.

Modificar los atributos a public y leerlos desde main.

Que modificador de ámbito es mas recomendable

2.- Programa que calcule el total a pagar de la compra de artículo menos un 10% de descuento.

import java.io.*; class Alumno { private String matricula, nombre, carr; public void leer_datos()throws IOException { BufferedReader dat = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Matricula: "); matricula = dat.readLine(); System.out.print("Nombre: "); nombre = dat.readLine(); System.out.print("Carrera: "); carr = dat.readLine(); } } class curso_java { public static void main(String arg[])throws IOException { Alumno al = new Alumno(); al.leer_datos(); } }

import java.io.*; class Articulo { private String articulo; private float precio, subtotal, total, descuento=0f; private int cantidad; public void vender()throws IOException { BufferedReader dat = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Articulo: "); articulo = dat.readLine(); System.out.print("Precio: "); precio = Float.parseFloat(dat.readLine()); System.out.print("Cantidad: "); cantidad = Integer.parseInt(dat.readLine()); subtotal = precio * cantidad; descuento = (float)(subtotal * 0.10); total = subtotal - descuento; System.out.println("Subtotal: " + subtotal); System.out.println("Descuento: " + descuento); System.out.println("Total a pagar: " + total); } }

class venta { public static void main(String arg[])throws IOException { Articulo articulo = new Articulo(); articulo.vender(); } }

Page 14: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

14 Aurelio López Ovando

Atributos final La palabra reservada final calificando a un atributo o variable sirve para declarar constantes, no se permite la

modificación de su valor. El valor de un atributo final debe ser asignado en la declaración del mismo, cualquier intento

de modificar su valor generará error por parte del compilador.

Modificando el programa anterior utilizando un atributo final, podemos utilizar el descuento del 10% como un valor

constante.

Intentar leer o modificar de algún modo el valor de desc

Atributos static Llamados también atributos de clase, son variables miembro únicas para toda la clase y que existen aunque no se haya

creado ningún objeto de la clase, suelen utilizarse para definir variables que sólo tienen sentido para toda la clase (por

ejemplo, un contador de objetos creados).

Las variables de clase son lo más parecido que Java tiene a las variables globales, existe una sola copia de la variable

para todos los objetos de su clase, si no se les da valor en la declaración, las variables miembro static se inicializan con

los valores por defecto para los tipos primitivos (false para boolean, el carácter nulo para char y cero para los tipos

numéricos), y con null si es una referencia.

import java.io.*; class Articulo { private String articulo; private float precio, subtotal, total, descuento=0f; private int cantidad; private final double desc = 0.10; public void vender()throws IOException { BufferedReader dat = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Articulo: "); articulo = dat.readLine(); System.out.print("Precio: "); precio = Float.parseFloat(dat.readLine()); System.out.print("Cantidad: "); cantidad = Integer.parseInt(dat.readLine()); subtotal = precio * cantidad; descuento = (float)(subtotal * desc); total = subtotal - descuento; System.out.println("Subtotal: " + subtotal); System.out.println("Descuento: " + descuento); System.out.println("Total a pagar: " + total); } } class Venta_final { public static void main(String arg[])throws IOException { Articulo articulo = new Articulo(); articulo.vender(); } }

Page 15: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

15 Aurelio López Ovando

Modificando el programa anterior, agregamos una propiedad que controle el número de venta (Una especie de folio),

las ventas estarán controladas por un ciclo.

Lo interesante de este programa es observar como la variable num_venta es común para cada ocasión que la clase es creada, para ser mas claro, al crear una clase todos los atributos pierden su valor, se vuelven a inicializar, a excepción num_venta que al ser static siempre conserva su valor, no importa cuantas instancias de esta clase se creen.

import java.io.*; class Articulo { private String articulo; private float precio, subtotal, total, descuento=0f; private int cantidad; final double desc = 0.10; static int num_venta = 0; public void vender()throws IOException { BufferedReader dat = new BufferedReader(new InputStreamReader(System.in)); num_venta++; System.out.println("Numero de venta: " + num_venta); System.out.print("Articulo: "); articulo = dat.readLine(); System.out.print("Precio: "); precio = Float.parseFloat(dat.readLine()); System.out.print("Cantidad: "); cantidad = Integer.parseInt(dat.readLine()); subtotal = precio * cantidad; descuento = (float)(subtotal * desc); total = subtotal - descuento; System.out.println("Subtotal: " + subtotal); System.out.println("Descuento: " + descuento); System.out.println("Total a pagar: " + total); } } class Venta_static { public static void main(String arg[])throws IOException { int resp=0; BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); do { Articulo articulo = new Articulo(); articulo.vender(); System.out.print("Si desea realizar otra venta presiones 0 "); resp = Integer.parseInt(in.readLine()); } while(resp==0); } }

Page 16: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

16 Aurelio López Ovando

Métodos Los métodos son funciones definidas dentro de una clase. Indican acciones u operaciones a realizar en la clase.

La sintaxis general para crear un método es la siguiente:

Modificador de ámbito Valor devuelto Nombre del método ( Lista de parámetros)

Cuerpo del método Sintaxis general de los métodos:

Declaración de método

{

Cuerpo del método

}

El cuerpo del método contiene la implementación del mismo y se codifica entre llaves. Dentro del mismo pueden

declararse variables locales.

Modificadores de ámbito Funcionan exactamente igual que para los atributos, pueden ser public, private, protect o por defecto.

Valor devuelto Un método es una función, y como tal debe retornar un valor, el valor de retorno puede ser un valor de un tipo

primitivo o una referencia, en cualquier caso no puede haber más que un único valor de retorno (que puede ser un

objeto o un array). El valor devuelto se especifica por medio de la palabra reservada return, si el tipo de dato devuelto

del método ha sido declarado void, entonces únicamente se sale del cuerpo del método mediante sin la instrucción

return; Si en la declaración de la cabecera del método se ha declarado un tipo de dato devuelto por el mismo,

entonces se devolverá el valor correspondiente al método mediante return seguido de una expresión cuyo resultado

es del mismo tipo que el declarado.

Referencia a atributos de método ante la ambigüedad: Si existen en un método variables locales o parámetros con el mismo nombre de atributos de la clase, éstos

últimos quedan ocultados dentro del cuerpo del método. Para hacer referencia a los atributos del método en

lugar de las variables locales o parámetros, se les antepone la palabra reservada this seguida de un punto (.),

que identifica al objeto actual.

Page 17: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

17 Aurelio López Ovando

Modificando nuevamente el programa de la venta, utilizaremos ahora dos métodos, uno público y uno privado

Explicar: o Porque se declara público o

privado.

o Valor de retorno

Lista de parámetros La lista de parámetros consiste en una serie de variables, separadas por comas y declarando el tipo al que pertenecen.

Aunque existan varios parámetros pertenecientes al mismo tipo o clase, no pueden declararse abreviadamente, como

ocurre con las variables locales y los atributos, indicando el tipo y a continuación la lista de parámetros separados por

comas. La declaración de un parámetro puede ir antecedida, como ocurre con las variables locales, por la palabra

reservada final. En ese caso, el valor de dicho parámetro no podrá ser modificado en el cuerpo del método.

Los parámetros de un método pueden ser de dos tipos:

import java.io.*; class Articulo { private String articulo; private float precio, subtotal, total, descuento=0f; private int cantidad; private void imprimir_nota() { System.out.println("Subtotal: " + subtotal); System.out.println("Descuento: " + descuento); System.out.println("Total a pagar: " + total_pagar()); } private float total_pagar() { total = subtotal - descuento; return total; } public void vender()throws IOException { BufferedReader dat = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Articulo: "); articulo = dat.readLine(); System.out.print("Precio: "); precio = Float.parseFloat(dat.readLine()); System.out.print("Cantidad: "); cantidad = Integer.parseInt(dat.readLine()); subtotal = precio * cantidad; descuento = (float)(subtotal * 0.10); imprimir_nota(); } } class Metodos_venta { public static void main(String arg[])throws IOException { Articulo articulo = new Articulo(); articulo.vender(); } }

Page 18: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

18 Aurelio López Ovando

o Variables de tipo simple de datos: En este caso, el paso de parámetros se realiza siempre por valor. Es

decir, el valor del parámetro de llamada no puede ser modificado en el cuerpo del método (El método

trabaja con una copia del valor utilizado en la llamada).

o Variables de tipo objeto (referencias): En este caso, lo que realmente se pasa al método es un puntero al

objeto y, por lo tanto, el valor del parámetro de llamada sí que puede ser modificado dentro del método

(El método trabaja directamente con el valor utilizado en la llamada), a no ser que se anteponga la

palabra reservada final.

Una vez más modificando el programa

de la venta podemos utilizar métodos

con parámetros.

Argume

ntos A un programa escrito en Java también se le pueden pasar parámetros en la línea de comandos. Estos parámetros se

especifican en el método main() del programa, donde siempre hay que declarar un vector de Strings.

import java.io.*; class Articulo { private String articulo; private float precio, subtotal, total, descuento=0f; private int cantidad; private void imprimir_nota(float st, float desc) { System.out.println("Subtotal: " + st); System.out.println("Descuento: " + desc); System.out.println("Total a pagar: " + total_pagar(st,desc)); } private float total_pagar(float st, float desc) { total = st - desc; return total; } public void vender()throws IOException { BufferedReader dat = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Articulo: "); articulo = dat.readLine(); System.out.print("Precio: "); precio = Float.parseFloat(dat.readLine()); System.out.print("Cantidad: "); cantidad = Integer.parseInt(dat.readLine()); subtotal = precio * cantidad; descuento = (float)(subtotal * 0.10); imprimir_nota(subtotal,descuento); } }

class Param_venta { public static void main(String arg[])throws IOException { Articulo articulo = new Articulo(); articulo.vender(); } }

Page 19: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

19 Aurelio López Ovando

En Java, los vectores son objetos, con todas las ventajas que ello implica. Así, se puede acceder en tiempo de ejecución

al número de elementos del vector (número de argumentos) mediante el atributo público length. Si se intenta acceder

a un elemento del vector más allá del límite, se genera una excepción.

2.- Programa que desde la línea de comandos se le envíe un nombre, el programa debe saludar ofrecer un saludo al

nombre de la persona enviado.

o El programa al momento de ejecutarse debe ser de esta forma:

Java Saludar aureliux

o El resultado de salida debe ser esto:

Hola aureliux

String arg[]

Es un arreglo de Strings que puede recibir como parámetros el

programa, se le pueden enviar muchos parámetros y se irán

almacenando a partir de la posición 0.

Si necesitamos enviarle como parámetro un nombre que esté muy largo, se debe enviar entre comillas, por ejemplo: si necesitas enviarle el nombre Aurelio López Ovando, lo tomaría como 3 parámetros diferentes, es decir:

arg[0] = Aurelio arg[1] = López arg[2] = Ovando

Para corregir esto y que todo el nombre sea un solo parámetro debemos enviarlo: “Aurelio López Ovando”, así sólo

arg[0]=Aurelio López Ovando.

arg es un vector de Strings, así que todo lo que reciba será tratado como cadenas, el problema de esto viene cuando

necesitamos hacer operaciones matemáticas, ya que sobre un string no es posible hacerlo, entonces debemos antes

que nada hacer las operaciones de conversión.

Integer.parseInt() convierte de cadena a entero Float.parseFloatI() convierte de cadena a flotante

Y auxiliarnos en las demás instrucciones de conversión que nos brinda java.

Si necesitamos saber cuantos parámetros se están enviando podemos utilizar la instrucción length que devuelve el

número de elementos guardados en el vector y de esta forma validar que no se genere ninguna excepción, si se desea

utilizar mas elementos de los que se enviaron también se genera otra excepción, es decir si yo envío tres parámetros y

pretendo leer un cuarto que no existe, el compilador genera este error.

3.- Programa que reciba como parámetro 3 números y devuelva el promedio de ellos.

class SaludaPersona { public void saludar(String nombre) { System.out.println("Hola " + nombre); } } class Saludar { public static void main(String arg[]) { SaludaPersona saludo = new SaludaPersona(); saludo.saludar(arg[0]); } }

Page 20: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

20 Aurelio López Ovando

Antes de empezar se valida que se hayan enviado los tres parámetros que se necesitan. Primero se hacen las conversiones y después se envían los parámetros. Pero también se puede hacer un solo paso sin necesidad de declarar variables.

Se podría hacer las conversiones de manera directa, para no hacerlo por separado…

Ejercicios propuestos

class Promedio { public void prom(int n1,int n2,int n3) { System.out.println("El promedio es: " + (n1+n2+n3)/3); } } class PromedioArg { public static void main(String arg[]) { int n1,n2,n3; if(arg.length==3) { Promedio promedio = new Promedio(); n1=Integer.parseInt(arg[0]); n2=Integer.parseInt(arg[1]); n3=Integer.parseInt(arg[2]); promedio.prom(n1,n2,n3); } else System.out.pintln(“ERROR en numero de parámetros”); } }

promedio.prom(Integer.parseInt(arg[0]),Integer.parseInt(arg[1]),Integer.parseInt(arg[2]));

Page 21: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

21 Aurelio López Ovando

A. Algoritmo de Euclides

Euclides, muchos siglos atrás, pensó un algoritmo para hallar el m.c.d. entre dos números enteros, basándose

en una simple observación:

Ejemplo:

(Cada uno de los términos es el resto de dividir entre sí los dos anteriores y seleccionar el mayor y el

menor)

Escribir un programa, que dados dos números enteros m y n, halle el m.c.d entre m y n.

B. Ordenar fracciones

Escribir un programa que admita como entrada un entero n positivo y luego n fracciones y que permita

resolver los problemas siguientes exhibiendo los correspondientes resultados:

o Ordenar de mayor a menor las fracciones ingresadas.

o Calcular la suma de las n fracciones, expresándola como una fracción irreducible.

UNIDAD 3.- CONSTRUCTORES Y DESTRUCTORES

m=5, n=9 m=12, n=8 m=9, n=32 9 – 5 = 4

5 – 4 = 1

4 – 1 = 3

3 – 1 = 2

2 – 1 = 1

12 – 8 = 4

8 – 4 = 4

32 – 9 = 23

23 – 9 = 14

14 – 9 = 5

9 – 5 = 4

5 – 4 = 1

4 – 1 = 3

3 – 1 = 2

2 – 1 = 1

Page 22: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

22 Aurelio López Ovando

Constructor Un punto clave de la Programación Orientada Objetos es el evitar información incorrecta por no haber sido

correctamente inicializadas las variables, java no permite variables miembro que no estén inicializadas, las inicializa

siempre con valores por defecto.

El segundo paso en la inicialización correcta de objetos es el uso de constructores. Un constructor es un método que

se llama automáticamente cada vez que se crea un objeto de una clase. La principal misión del constructor es reservar

memoria e inicializar las variables miembro de la clase, los constructores no tienen valor de retorno (ni siquiera void) y

su nombre es el mismo que el de la clase, su argumento implícito es el objeto que se está creando.

Constructor por defecto

Hasta ahora hemos utilizado constructores por defecto, se dan cuando

creamos la clase sin establecer explícitamente un constructor, java

inicializa a todos los atributos con valores por defecto.

En todos los ejemplos anteriores a esta unidad se han creado clases sin

establecer constructores explícitos.

Constructor sin argumentos

Se llama constructor sin argumentos al constructor que no tiene argumentos. El programador debe proporcionar en el

código valores iniciales adecuados para todas las variables miembro, no se le envía parámetros para incializar los

atributos

Creamos a una persona con datos determinados, pero al crear a otras

personas estas también van a tener los mismos datos, asi que el

constructor por defecto no siempre puede funcionar.

Constructor con argumentos

class Persona { public Persona() { System.out.println("Persona creada"); } } class Constructores1 { public static void main(String arg[]) { Persona persona = new Persona(); } }

class Persona { private String nombre, sexo; private float estatura; private int edad; public Persona() { nombre="Aureliux"; estatura = 1.60f; edad=29; sexo=”Masculino”; } } class Constructores1 { public static void main(String arg[]) { Persona persona = new Persona(); } }

nombre: Aureliux estatura: 1.60

edad: 29 sexo: Masculino

Page 23: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

23 Aurelio López Ovando

Son constructores que reciben parámetros que se utilizarán para inicializar los atributos de la clase, cuando se cree la

clase se puede enviar los valores, asi cada vez que creemos una clase nueva se le puede enviar valores diferentes.

Si al constructor le enviamos parámetros,

tenemos la opción de inicializar con nuevos datos

los atributos de la nueva clase.

En este

Al igual que los demás métodos de una clase, los constructores pueden tener también los modificadores de acceso

public, private, protected y package. Si un constructor es private, ninguna otra clase puede crear un objeto de esa

clase. En este caso, puede haber métodos public y static (factory methods) que llamen al constructor y devuelvan un

objeto de esa clase.

Constructor múltiple o sobrecargado

Ofrece la posibilidad de inicializar la clase de diferentes maneras, se puede declarar varias veces el mismo constructor

con parámetros diferentes, a esto se le llama sobrecarga.

1.- En una civilización muy avanzada en el futuro, se pude seleccionar las características de los hijos que una pareja

quiere tener, se tienen tres paquetes de diferentes precios:

a) Color de piel, ojos, tipo de cabello.

b) Las mismas que las anteriores y le aumentamos una habilidad deportiva.

c) Todas las anteriores y aumentamos una habilidad cultural.

Hacer un programa que permita a una pareja mostrar los paquetes disponibles con ejemplos de características de los

niños, cuando la clase se cree avisar que se ha creado.

class Persona { private String nombre,sexo; private float estatura; private int edad; public Persona(String nomb, float est, int ed, String sex) { nombre=nomb; estatura = est; edad=ed; sexo=sex; System.out.println("Hemos creado a " + nombre); } } class Constructores1 { public static void main(String arg[]) { Persona persona = new Persona("Aureliux",1.60f,29,"Masculino"); Persona persona2 = new Persona("Pucca",1.58f,25,"Femenino"); } }

nombre: Pucca estatura: 1.58

edad: 25 sexo: Femenino

nombre: Aureliux estatura: 1.60

edad: 29 sexo: Masculino

Page 24: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

24 Aurelio López Ovando

Se tiene 3 constructores, cada uno

recibe diferente cantidad de

parámetros lo cual hace diferente

uno de otro.

No es necesario utilizar todos los

constructores, se pueden

declarar, pero si no hay necesidad

de utilizarlos no estamos

obliglados a hecerlo

En este ejemplo se crearon tres

objetos diferentes, cada uno

inicializado con constructores

diferentes.

Destructores

En Java no hay destructores, el sistema se ocupa automáticamente de liberar la memoria de los objetos que ya han

perdido la referencia, esto es, objetos que ya no tienen ningún nombre que permita acceder a ellos. A esta

característica de Java se le llama garbage collection (recogida de basura), que se ejecuta regularmente para liberar la

memoria asignada a objetos que ya no se necesitan. A pesar de ello hay que declarar un método de la siguiente forma:

import java.io.*;

class Paquete

{

private String ojos, piel, cabello, deporte, cultura;

public Paquete(String o, String p, String c)

{

ojos=o;

piel=p;

cabello=c;

System.out.println("Creado el paquete a...");

}

public Paquete(String o, String p, String c, String d)

{

ojos=o;

piel=p;

cabello=c;

deporte=d;

System.out.println("Creado el paquete b...");

}

public Paquete(String o, String p, String c, String d, String cu)

{

ojos=o;

piel=p;

cabello=c;

deporte=d;

cultura=cu;

System.out.println("Creado el paquete c...");

}

}

class Hijos

{

public static void main(String arg[])throws IOException

{

int opcion;

System.out.println("Tenemos tres paquetes de muestra: ");

Paquete paqueteA=new Paquete("Negros","Morena","Rizado");

Paquete paqueteB=new Paquete("Rubio","Moren claro","Lacio","Futbol");

Paquete paqueteC=new Paquete("Castaño","Blanca","Lacio","Atletismol","Musica");

}

}

Page 25: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

25 Aurelio López Ovando

protected void finalize()

{

}

Se trata de un finalizador el cual es un método que se llama automáticamente cuando se va a destruir un objeto

(antes de que la memoria sea liberada de modo automático por el sistema), se utilizan para ciertas operaciones de

terminación distintas de liberar memoria. Es un método de objeto (no static), sin valor de retorno (void), sin

argumentos y que siempre se llama finalize().

En Java es normal que varias variables de tipo referencia apunten al mismo objeto. java lleva internamente un

contador de cuántas referencias hay sobre cada objeto. El objeto podrá ser borrado cuando el número de referencias

sea cero, una forma de hacer que un objeto quede sin referencia es cambiar ésta a null, haciendo por ejemplo:

ObjetoRef = null;

En Java no se sabe exactamente cuándo se va a activar el garbage collector. Si no falta memoria es posible que no se

llegue a activar en ningún momento. No es pues conveniente confiar en él para la realización de otras tareas más

críticas. Se puede llamar explícitamente al garbage collector con el método System.gc().

2.- Programa que cree a una persona y al terminar que la memoria utilizada para esta operación sea liberada (destruir los datos de la persona)

Este programa maneja las tres operaciones

básicas:

1.- Crear el objeto mediante un constructor.

2.- Eliminar las referencias del objeto agregándole

el valor null.

3.- Destruir el objeto creado para liberar la

memoria, invocando al método finalize.

class Persona { private String nombre,sexo; private float estatura; private int edad; public Persona(String nomb, float est, int ed, String sex) { nombre=nomb; estatura = est; edad=ed; sexo=sex; System.out.println("Hemos creado a " + nombre); } protected void finalize() { System.out.println("Hemos destruido a " + nombre); } } class Destructor { public static void main(String arg[]) { Persona persona = new Persona("Aureliux",1.60f,29,"Masculino"); persona = null; System.gc(); } }

Page 26: Introducción a java UNIDAD 1.- INTRODUCCIÓN A JAVA Historia de java · PDF fileIntroducción a java 3 Aurelio López Ovando Tipos de datos Tipos de dato simples: Pueden utilizarse

Introducción a java

26 Aurelio López Ovando

Ejercicios propuestos

Importante en cada uno utilizar constructores y destructores.

A) Crear una clase que desde la línea de comandos pueda inicializarse, la clase corresponde a un coche,

al comprador le interesa definir:

o Marca o Color o Numero de puertas

La clase debe registrar en un método aparte el proceso de la venta donde se debe establecer cuando se dio de

enganche y cuanto se resta por el coche, al finalizar la venta se debe liberar la memoria de los datos utilizados.

B) Un autobús de la línea ATS realiza su recorrido de Calkiní a Campeche, en el trayecto sólo hace paradas en las

terminales de Hecelchakán y Tenabo, cuando sube un pasajero el conductor debe emitir su boleto el cual debe

tener los siguientes datos:

o Origen

o Destino

o Tipo

o Precio

Cada lugar tiene una clave de tres dígitos: Calikini = 120, Hechechakan=130, Tenabo=140, Campeche=150, la

tarifa de boleto es: Calkiní – Campeche = 30.00 (esta es la ruta mas larga), el precio por cada poblado es de

$10.00.

Hacer un programa que emita los boletos a los pasajeros mientras el autobús esté viajando.