jueves, 6 de mayo de 2010

Problemas de Recursion en java (02.07.02)

Realize los siguientes ejercicios aplicacion recursion
1 Maximo Comun Divisor
El máximo común divisor de dos números por el algoritmo de Euclides es:
mcd(a, b) = mcd(b, a) si a < b
mcd(a, b) = mcd(a - b, b) si a > b
mcd(a, b) = a si a = b
Cree un metodo para esta funcion

2 Función de Morris
Se define de la siguiente manera:
morris(m, n) = m + 1 si m = n
morris(m, n) = morris (n , morris ( n-1, m + 1) ) si m <> n
Cree un metodo para esta funcion

3 Función de Hermite
Se define de la siguiente manera:
hermite(x, n) = 1 si n = 0
hermite(x, n) = 2*x si n = 1
hermite(x, n) = 2*x*hermite(x, n-1) - 2*(n-1)*hermite(x, n-2) si n > 1
Cree un metodo para esta funcion

4. Sumandos
Implemente el método void descomposición Sumandos(int n) que muestre en la pantalla todas las formas posibles de descomponer el número n en sumandos. Por ejemplo, para n=5, el la pantalla se muestra:
1+1+1+1+1
2+1+1+1
1+2+1+1
3+1+1
1+1+2+1
2+2+1
1+3+1
4+1
1+1+1+2
2+1+2
1+2+2
3+2
1+1+3
2+3
1+4
5
Compartir:

Ejercicio sobre atributos en java (02.07.01)

1. Cree la clase Cliente con los atributos código, nombre, dirección, teléfono, encapsulados (métodos set y get).

2. Agregue a la clase Cliente el método toString que retorne todos los atributos de la clase Cliente.

3. Cree la clase Pelicula con los atributos privados código, titulo, tipo, precio de alquiler. Incluya el método toString, get y set.

4. Cree un programa como TacoraFilms.java y cree como objetos a dos clientes con datos de sus familiares. (cliente1 y cliente2)

5. Agregue al programa principal objetos de dos películas que haya visto recientemente. (pelicula1, pelicula2)

6. Al final del programa coloque lo siguiente:
System.out.println(cliente1.toString());
System.out.println(cliente2);
System.out.println(pelicula1.toString());
System.out.println(pelicula2);

Que muestra el programa?
Compartir:

Paso de variables a métodos en java (02.06.01)

1. Cuando el argumento es una primitva, se genera una copia de la variable para el método.
Laboratorio
TestPrimitivas.java
public class TestPrimitivas {


public static void main (String[] args)


{


int numero = 150;


unMetodo(numero);


System.out.println(numero);


}


private static void unMetodo(int numero) {


numero = 0;


System.out.println(numero);


}


}
Que valores muestra el programa anterior?

2. Cuando se pasa como argumento un objeto referencia, no se genera copia. El argumento referencia al objeto original.

Laboratorio
TestReferencias.java
public class TestReferencias {


public static void main (String[] args)


{


Pelicula pelicula1 = new Pelicula();


pelicula1.setTitulo("El Resplandor");


pelicula1.setTipo("Drama");


unMetodo(pelicula1);


System.out.println(pelicula1.getTipo());


}


public static void unMetodo(Pelicula referencia) {


referencia.setTipo("Terror");


}


}
Que muestra el programa?
Compartir:

Paquetes en java (02.05.04)

Un paquete es un contenedor (agrupador) de clases que estan relacionadas lógicamente.
Un paquete tiene sus clases en un mismo directorio
Varias clases pueden tener el mismo nombre pero en diferente paquete.

Para el problema de los alquileres se encuentran las clases: 

      Clase Pelicula 

      Clase Contrato 

      Clase Cliente 

Paquete:  

        pe.edu.univ


Clases:   

       alquiler.Película 

       alquiler.Contrato 

       alquiler.Cliente 

Directorio:  

      C:/pe/edu/univ/ 

Archivos en C:/ pe/edu/univ/ 

      Película.java 

      Contrato.java 

      Cliente.java 
Compartir:

Modificadores de acceso en java (02.05.03)

Java controla el acceso a las variables y métodos a través de modificadores de acceso como: private, public y protected
Un elemento publico puede invocarse en cualquier clase.
Un elemento sin modificador solo se puede invocar desde la misma clase.
Un elemento protegido solo se invocar en clases heredadas
Un elemento privado no puede ser invocado por otra clase.


Paquete alquiler

Paquete almacen



Frame5
Compartir:

Encapsulamiento en java (02.05.01)

1. Las variables de instancia de una clase deberían ser declaradas como privadas
Solo un método debería acceder a las variables privadas.
No se debe acceder a las variables de instancia directamente, sino a través de un método.
Pelicula pelicula1 = new Pelicula();
if (pelicula1.titulo.equals("Los doce del patibulo")) {

pelicula1.setTipo("Accion");


}
Cual de estas líneas no cumple con el encapsulamiento?

Código de una clase en java (02.05.02)
Laboratorio
Pelicula.java
public class Pelicula {


private String titulo;


private String tipo;


public void setTitulo (String nuevoTitulo) {


titulo = nuevoTitulo;


}


public void setTipo (String nuevoTipo) {


tipo = nuevoTipo;


}


public String getTitulo () {


return titulo;


}


public String getTipo () {


return tipo;


}


public String toString () {


return "titulo "+titulo+" tipo "+tipo;


}

}
Compartir:

Invocando métodos en java (02.04.01)

Se utiliza el operador punto para invocar el método de una clase, si el método es de la misma clase, no se requiere el calificador de la clase.
Laboratorio
Pelicula.java


public class Pelicula {


private String titulo,tipo;


//...


public String getTipo () {


return tipo;


}


public void setTipo (String nuevoTipo) {


tipo = nuevoTipo;


}


}



PruebaPeliculas.java


public class PruebaPeliculas {


public static void main (String[] args) {


Pelicula pelicula1 = new Pelicula();


pelicula1.setTipo("Comedia");


if (pelicula1.getTipo().equals("Drama")) {


System.out.println("La pelicula es un drama");


}


else {


System.out.println("La pelicula no es un drama");


}


}


}

Compartir:

Funcion Ackerman en java (02.03.06)

La fusión de Ackerman se define como:
Ackerman(m, n) = n + 1 si m = 0
Ackerman(m, n) = Ackerman(m - 1, 1) si m > 0 y n = 0
Ackerman(m, n) = Ackerman(m - 1, Ackerman(m, n - 1)) si m > 0 y n > 0
Con ello se tiene que Ackermann(1, 2) = 4 y Ackermann(3, 2) = 29

//
public static long ackerman (int n, int m) {

if (n == 0)


return ( m+1 );


else if ( m == 0 )


return ackerman ( n-1, 1);


else


return ackerman ( n-1, ackerman ( n, m-1 ));

}
Compartir:

Fibonaci en java (02.03.05)

La función Fibonaci se define como:
Fibonaci (0) = 1
Fibonaci (1) = 1
Fibonaci (N) = Fibonaci (N - 1) + Fibonaci (N - 2) // si N > 1

//
public static long fibonaci (int n) {

if (n == 0)


return 1 ;


else if ( n == 1 )


return 1 ;


else


return ( fibonaci ( n-1) + fibonaci ( n-2 ) );

}
Compartir:

Recursividad en java (02.03.04)

Un método recursivo es aquel que directa o indirectamente se llama a si mismo.
Como ejemplo útil se puede presentar el cálculo de factorial y sumatorias
Factorial de 0 = 1
Factorial de N = N * Factorial de N - 1
Sumatoria de 0 = 0
Sumatoria de N = N + Sumatoria de N - 1
Un método recursivo debe tener al menos un caso no recursivo y otros casos recursivos que se aproximen al caso no recursivo para evitar la recursion infinita.
Recursion.java
public class Recursion {


public static void main (String[] args) {


System.out.println( factorial(5) );


System.out.println( sumatoria(5) );


}


public static int factorial (int numero) {


if (numero == 0)


return 1;


if (numero > 0 )


return ( numero * factorial (numero – 1) );


return 0;


}


public static int sumatoria (int numero) {


if (numero == 0)


return 0;


if (numero > 0 )


return ( numero + sumatoria (numero – 1) );


return 0;


}


}
Compartir:

Argumentos en metodos en java (02.03.02)

En la definición del método se indica el tipo y el nombre de los argumentos del método.
public void setTipo (String nuevoTipo) {


tipo = nuevoTipo;


}
Si el método tiene varios argumentos, estos se separan por comas.
public void setDatos (String nuevoTitulo, String nuevoTipo) {


tipo = nuevoTipo;


titulo = nuevoTitulo;


}
Si el método no tiene argumentos, se deja solo los paréntesis
public void mostrarDetalles() {


System.out.println("El titulo es "+titulo);


System.out.println("El tipo es "+tipo);

}
Compartir:

Laboratorio. Uso de Objetos en java (02.02.08)

Complete y realice el siguiente programa.
Pelicula.java
public class Pelicula {

public String titulo;


public String tipo;


}

PruebaPeliculas.java
public class PruebaPeliculas {


public static void main (String[] args) {


Pelicula pelicula1, pelicula2;


...


pelicula1.titulo = "Los sueños de Akira Kurosawa";


pelicula2.titulo = "Día de entrenamiento";


System.out.println("La pelicula 1 es "+ ...);


System.out.println("La pelicula 2 es "+ ...);


pelicula2 = pelicula1;


pelicula2.titulo = "Plan de Vuelo";


System.out.println("La pelicula 1 es "+ ...);


System.out.println("La pelicula 2 es "+ ...);


}

}
Compartir:

Acciones del new en java (02.02.03)

El operador new realiza las siguientes acciones:
- Separa memoria para el nuevo objeto
- Invoca el método de inicio de la clase llamado constructor.
- Retorna la referencia a un nuevo objeto.



Pelicula pelicula1 =

new Pelicula();





pelicula1













Las variables primitivas almacenan valores.

Los objetos almacenan referencias


int i;


i








Pelicula pelicula1;




pelicula1











null

int j=3;

j




Pelicula pelicula2 =

new Pelicula();


pelicula2










Compartir:

Polimorfismo y clases

Polimorfismo (02.01.08)

Significa que la misma operación se realiza en las clases de diferente forma.
Estas operaciones tienen el mismo significado, comportamiento.
Internamente cada operación se realiza de diferente forma.


Abordar pasajeros



Barco


Tren



Helicóptero

Ejemplos

Enviar calcularIntereses a objetos como: Cuenta de Ahorros, Cuenta CTS, Cuenta Corriente.
En java se representa como: cuenta.calcularIntereses();

Ejercicio sobre clases, métodos, atributos (02.01.09)

Determine las clases, métodos, atributos y asociaciones del siguiente problema. Puede aplicar herencia o polimorfismo?

Tacora Films esta en el negocio de alquiler de películas a sus clientes. Y ahora esta automatizando el proceso de alquiler. El cliente escoge las películas en la tienda y las lleva a la caja para proceder con el alquiler. El empleado de la tienda solicita la TacoraCard al cliente para identificarlo y escanea el código de barras de cada película que esta alquilando.
Los clientes tienen que ser socios de Tacora Film Club para poder alquilar películas. Al suscribirse al club entregan datos como nombre, dirección, teléfono. TacoraCard tiene un único numero impreso que identifica al cliente.
Cada alquiler tiene un numero único para identificarlo y en el acuerdo se indica la fecha de inicio del alquiler y la lista de películas que se están alquilando. No se puede alquilar mas de 10 películas. No se sabe cuando exactamente el cliente devolverá la película.
El gerente de Tacora esta considerando emplear el mismo programa para alquilar otros artículos como libros, reproductores de VHS y de DVD, CDs de juegos.
Cada articulo tiene un precio de alquiler, numero de días que puede ser alquilado, el titulo de la película, una descripción breve, el tipo de película (Familiar, Acción, Comedia...)
Compartir:

La Herencia de clases (02.01.07)

Entre diferentes clases pueden haber similitudes
La herencia es una relación entre clases donde una es padre de otra.
Las propiedades comunes definen la superclase. Clase padre.
Las subclases heredan estas propiedades. Clase hijo.
Un objeto hijo es un-tipo-de una superclase.
Un Helicóptero es un tipo de Nave Aérea.





Nave Aérea







Jumbo



Helicóptero



Globo





Dirigible



Ejercicio
Indique que propiedades tiene la clase Nave Aérea.
Compartir:

Identificación de clases (02.01.06)

Reconocer una estructura y comportamiento comunes entre varios objetos.

Objeto

Operaciones

Atributos



Lapicero rojo

Escribir

Recargar

Cantidad de tinta

Color de tinta



Pluma y tinta

Escribir

Recargar

Cantidad de tinta

Color de tinta

Ejercicio
A que clase pertenecen estos dos objetos?


Clases y Objetos.
Las clases son definiciones estáticas que nos permite entender todos los objetos de esa clase.
Los objetos son entidades dinámicas que existen en el mundo real y en simulaciones del mundo real.

Ejercicio
Mencione dos clases y dos objetos sobre:
1.Geografia
2.Matematicas
3.Cine
4.Biología
5.Internet
Compartir:

Clases y objetos (02.01.05)

Una clase es una molde para crear objetos.
Para definir una clase se tiene que indicar las operaciones y atributos
Los objetos son instancias de la clase.
Cuando se cree un cajero automático P3 no se requiere indicar sus operaciones y atributos.
Solo se requiere indicar a que clase pertenece.



Clase 

Atributos 

Métodos 




Cliente 

int edad 

String nombre 

String dirección 

cambiarDireccion() 




Película 

String titulo 

double precio 

String categoria 

cambiarPrecio() 


Compartir:

Composición de objetos (02.01.04)

Los objetos están compuestos de otros objetos.
Los objetos son partes de otros objetos.
Esta relación entre objetos se conoce como Agregación

El Banco de la Nación es un objeto 

El cajero automático P5 es un objeto. 

El cajero es del Banco de la Nación. 



El cajero automático P5 esta compuesto por objetos como: 

El teclado 

El dispensador de billetes 

El lector de la tarjeta 
Compartir:

Relaciones entre objetos (02.01.03)

Mensajes entre objetos.
Los objetos se comunican unos con otros enviando mensajes.
El trasmisor del mensaje pide que el receptor realice una operación.
El receptor ejecuta el método correspondiente.
En programación estructurada se invocan funciones o procedimientos.
En OO se envía un mensaje a un objeto antes que invocarse un procedimiento.
Los métodos presentan polimorfismo.






Cliente 



Transmisor 





Mensaje 


getEdad() 


Persona 

getEdad 

getNombre
getDireccion
setEdad
setNombre
setDireccion 




Edad 

Nombre 

Direccion 


Asociación entre objetos
Para que un objeto envíe un mensaje a otro, el receptor debe ser visible para el transmisor.
Esta visibilidad se da a través de enlaces.
Un objeto envía mensajes a otro invocando sus métodos.



Radar
en Tierra




Nueva posición Cambio de orbita



Monitorear



Satélite


Ejemplos:


El radar en tierra monitorea el satélite. El satélite es monitoreado por el radar en tierra.
Un cliente tiene una cuenta de ahorros. La cuenta de ahorros pertenece a un cliente.
Compartir:

Operaciones y Atributos (02.01.02)

El encapsulamiento (02.01.02)

El encapsulamiento oculta como las cosas funcionan dentro de un objeto
Solo nos comunicamos con el objeto a través sus métodos
Los métodos son una interfaz que permite ignorar como están implementados.
No es posible evadir el encapsulamiento en OO
El cajero automático P5 es un objeto que entrega dinero.
El cajero encapsula todas las operaciones a los tarjetahabientes.
Evadir este encapsulamiento es un robo al cajero.

Ejercicio

Complete con operaciones y atributos lo siguiente:


Objeto 

Operaciones 

Atributos 

Cajero automático P5 





Universidad 





Computadora 





Auto de carreras 





DVD 





Satélite 




Compartir:

Definicion de objeto (02.01.01)

OO es un paradigma de diseño y programación
OO se basa en modelar objetos del mundo real
OO crea programas reusables
Los objetos contienen en si mismo información y comportamiento.

Que es un objeto?
Definición filosófica: Es una entidad que se puede reconocer.
Para la tecnología de objetos : Es una abstracción de un objeto del mundo real.
En términos de negocios: Es una entidad relevante al dominio del negocio.
En términos de software: Es una estructura que asocia datos y funciones.

Algunos ejemplos de objetos en POO son: Cliente, Factura, Contrato, Película. Un Cliente tiene un nombre, dirección, crédito. Un Cliente podría alquilar una película, pagar una factura, devolver una película.

Los objetos realizan operaciones.
Un objeto es útil si tiene alguna función o comportamiento en el sistema.
Cada comportamiento se denomina operación.

Objeto: Mi lapicero azul
Operación: Escribir

Objeto: El cajero automático P5
Operación: Entregar dinero.

Los objetos tiene valores.
Los objetos conocen cual es su estado actual.
Cada conocimiento del objeto se denomina atributo.

Objeto: Mi lapicero azul
Atributo: Cantidad de tinta

Objeto: El cajero automático P5
Atributo: Disponible en soles.

Los objetos son una abstracción
Todo depende del contexto.

Cuando se modela un objeto, solo se requiere modelar las operaciones y atributos que son relevantes para el problema

Objeto: Mi lapicero azul
Operación: Apuntar una pizarra.
Atributos: Longitud, Marca.
Compartir:

Laboratorio sobre clases en java (03.08.01)

Cree la clase Vendedor con los siguientes atributos nombre, edad, ventas, sueldoFijo. La clase también contara con un atributo estático para contar la cantidad de vendedores que se vayan creando. La clase cuenta con un constructor que recibe nombre, edad, ventas, sueldoFijo como argumentos. En este constructor se incrementara el contador de vendedores creados.
Contara con un método estático que retornara la cantidad actual de vendedores creados getCantidad(). Otro método retornara el sueldo del vendedor getSueldo(). El sueldo es el 5% de las ventas mas el sueldo fijo.
Agregue otro constructor con dos argumentos como nombre y ventas únicamente.
En el programa AplicacionVendedor.java se encuentra lo siguiente:
...
Vendedor vendedorHari = new Vendedor("Hari Seldon",8000);
Vendedor vendedorSalvor= new Vendedor("Salvor Hardin",30,5000,1300);
System.out.println(Vendedor.getCantidad());
System.out.println(vendedorHari.getSueldo());
System.out.println(vendedorSalvor.getSueldo());
...
Compartir:

Ejercicio sobre Clases en java (03.07.01)

Cree la clase Cliente que tendrá los siguiente datos id (int) nombre, dirección, teléfono (String)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el código (que inicia en 2000).
Otro que aceptara los datos nombre, dirección, teléfono.
El código del cliente debe ser automático e incrementarse en uno cada vez que se cree una instancia. Los códigos inician en 2001
Agregue los métodos set y get para estos atributos.
También agregue el método toString() para mostrar los datos del cliente asi como el código creado automáticamente.

Cree la clase Pelicula con los siguientes datos: id (int) titulo, tipo (String) precio (float)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el código (que inicia en 9000).
Otro que aceptara los datos titulo, tipo, precio .
El código de la pelicula debe ser automático e incrementarse en uno cada vez que se cree una instancia. Los codigos inician en 9001
Agregue los métodos set y get para estos atributos.
También agregue el método toString() para mostrar los datos de la pelicula incluido el código autogenerado.

Defina la clase BaseDeDatos donde creara 4 clientes (nombres familiares) y 6 películas (que haya visto en cine o televisión).

Finalmente cree el programa TestClases que muestre toda la base de datos (haciendo uso de la ventaja del método toString() ). También muestre el ultimo código autogenerado tanto en clientes como en películas que deberá obtener directamente de sus clases.


Cliente.java
public class Cliente {

private int id;
//...
private static int ultimoId = 2000;
//...
public Cliente() {
this.id = ...
ultimoId++;
}
public Cliente(String nombre...) {
this();
this.nombre = ...
}

\
}

Pelicula.java
public class Pelicula {

private int id;
//...
private static int ultimoId = 9000;
//...
public static int getUltimoId() {
return ultimoId;
}

}

BaseDeDatos.java
public class BaseDeDatos {

Cliente cliente1 = new Cliente("Daneel Olivaw","Solaria4","11-2542");
//...
Pelicula pelicula1 = new Cliente("El Padrino","Drama",5.30f);
//...

}

TestClases.java
public class TestClases {

public static void main (String[] args) {

BaseDeDatos bd = new BaseDeDatos();
System.out.println(bd.cliente1);
System.out.println(bd.cliente2);
//...
System.out.println(bd.pelicula1);
System.out.println(bd.pelicula2);
//...
System.out.println(Cliente.getUltimoId());
System.out.println(Pelicula.getUltimoId());
}

}
Compartir:

Métodos de clase en java (03.06.01)

Estos métodos son compartidos por todas las instancias.
Se usan estos métodos principalmente en manipular variables de instancia.
Se les declara con el calificador static
Se invoca a este método de clase con el nombre de la clase o con el nombre de una instancia.

Laboratorio
Pelicula.java
public class Pelicula {

private static float precio = 3.50f;
private String titulo;

public Pelicula(String titulo) {
this.titulo = titulo;
}
public String getTitulo() {
return titulo;
}
public static void setPrecio(float nuevoPrecio) {
precio = nuevoPrecio;
}
public static float getPrecio() {
return precio;
}

}
TestStatic2.java
public class TestStatic2 {

public static void main (String[] args) {

Pelicula.setPrecio(3.98f);
Pelicula oscar = new Pelicula("Ben Hur");
System.out.println(oscar.getPrecio());
oscar.setPrecio(4.98f);
System.out.println(Pelicula.getPrecio());
Pelicula terror = new Pelicula("El resplandor");
terror.setPrecio(1.98f);
System.out.println(oscar.getPrecio());
System.out.println(terror.getPrecio());
System.out.println(Pelicula.getPrecio());
Pelicula.setPrecio(0.98f);
System.out.println(oscar.getPrecio());
System.out.println(terror.getPrecio());
System.out.println(Pelicula.getPrecio());

}

}

Que resultados se obtienen?
Compartir:

Variables de clase en java (03.05.01)

Las variables de clase comparte un único valor entre todos las instancias de la clase.
Se declaran con el calificador static.

public Class Pelicula {
// iniciación por defecto
private static double precioMinimo;
private String titulo, tipo;
}

Las variables de clase se pueden iniciar en la declaración.
La iniciación ocurre cuando se carga la clase en memoria.
Para una iniciación compleja se usara un bloque static

public Class Pelicula {
// iniciación explicita
private static double precioMinimo = 3.29;
}

Laboratorio
Pelicula.java
import java.util.*;
public class Pelicula {

private static int numeroDias = 3;
// iniciación compleja
private static double precioMinimo;
static {
Date hoy = new Date();
if (hoy.getDay() == 0) //si es Domingo
precioMinimo = 5.10;
else
precioMinimo = 3.29;
}
public int getNumeroDias() {
return numeroDias;
}
public double getPrecioMinimo() {
return precioMinimo;
}

}

TestStatic.java
public class TestStatic {

public static void main (String[] args) {
Pelicula pelicula = new Pelicula();
System.out.println(pelicula.getNumeroDias());
System.out.println(pelicula.getPrecioMinimo());
}
}
Compartir:

La referencia this en java (03.04.01)

Los métodos de instancia reciben el argumento this implícitamente que se refiere al mismo objeto.

public class Pelicula {
private String titulo;
public void setTitulo(String titulo) {
this.titulo = titulo;

}
}

Se puede compartir código entre constructores usando la referencia this. Un constructor invoca a otro pasandole los argumento que requiere.

Laboratorio
Pelicula.java
public class Pelicula {

private String titulo;
private String tipo;

public Pelicula()
{
this("Pelicula sin definir");
}
public Pelicula (String titulo) {
this.titulo = titulo;
}
public String getTitulo() {
return titulo;
}
}

TestThis.java
public class TestThis {

public static void main (String[] args) {
Pelicula pelicula1 = new Pelicula();
Pelicula pelicula2 = new Pelicula("Todo sobre mi madre");
System.out.println(pelicula1.getTitulo());
System.out.println(pelicula2.getTitulo());
}
}
Compartir:

Constructores en java (03.03.01)

Para una adecuada iniciación de variables de instancia, la clase debe tener un constructor.
Un constructor se invoca automáticamente cuando se crea un objeto.
Se declaran de forma pública.
Tiene el mismo nombre que la clase.
No retorna ningún valor.
Si no se codifica un constructor, el compilador crea uno por defecto sin argumentos que solo inicia las variables de instancia.

Laboratorio
Pelicula.java
public class Pelicula {
private String titulo;
private String tipo = "Drama";

public Pelicula() {
titulo = "Pelicula sin definir.";
}


public Pelicula(String nuevoTitulo) {
titulo = nuevoTitulo;
}
public Pelicula(String nuevoTitulo, String nuevoTipo) {
titulo = nuevoTitulo;
tipo = nuevoTipo;

}
public String getTitulo() {
return titulo;
}
public String getTipo() {
return tipo;
}
}

TestConstructores.java
public class TestConstructores {

public static void main (String[] args) {
Pelicula pelicula1 = new Pelicula();
Pelicula pelicula2 = new Pelicula("La lista de Schindler.");
Pelicula pelicula3 = new Pelicula("El dormilon.","Comedia");
System.out.println(pelicula1.getTitulo()+pelicula1.getTipo());
System.out.println(pelicula2.getTitulo()+pelicula2.getTipo());
System.out.println(pelicula3.getTitulo()+pelicula3.getTipo());

}

}

Que muestra el programa?
Compartir:

Iniciación de variables de instancia en java (03.02.01)

Las variables de instancia se pueden iniciar en la declaración.
Esta iniciación ocurre cuando se crea un objeto.

public class Pelicula {
private String titulo; // implicito
private String tipo = "Drama"; // explicito
private int numeroDeOscares; // implicito

}

Las primitivas se inician implícitamente como:


char

byte, short, int, long

boolean

float, double

Referencia a Objeto

'0'

0

false

0.0

null

En forma explicita se puede indicar un valor inicial.
private String tipo = "Drama";

Un constructor provee una iniciación de variables de instancia mas compleja.
Compartir:

Sobrecarga de métodos en java (03.01.01)

El encapsulamiento se basa en los métodos de instancia.
La sobrecarga de métodos nos brinda una interfase mas legible.
Los constructores aseguran una consistente creación de objetos
El Garbage Collector libera espacio en memoria.

Algunos métodos en una clase pueden tener el mismo nombre.
Estos métodos deben contar con diferentes argumentos.
El compilador decide que método invocar comparando los argumentos.
Se generara un error si los métodos solo varian en el tipo de retorno.

public class Pelicula {
private float precio;
public void setPrecio() {
precio = 3.50;
}
public void setPrecio(float nuevoPrecio) {
precio = nuevoPrecio;
}

}
Compartir:

martes, 27 de abril de 2010

martes, 20 de abril de 2010

lunes, 19 de abril de 2010

Lenguajes mas usados

Lenguajes de programacion mas usados.


Posicion

Lenguaje de Programacion

Porcentaje

1

C

18.058%

2

Java

18.051%

3

C++

9.707%

4

PHP

9.662%

5

(Visual) Basic

6.392%

6

C#

4.435%

7

Python

4.205%

8

Perl

3.553%

9

Delphi

2.715%

10

JavaScript

2.469%

11

Objective-C

2.288%

12

Ruby

2.221%

13

SAS

0.717%

14

PL/SQL

0.710%

15

Go

0.710%

16

Pascal

0.648%

17

ABAP

0.625%

18

MATLAB

0.616%

19

ActionScript

0.545%

20

Lua

0.521%

Fuente: http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Compartir:

miércoles, 17 de marzo de 2010

Laboratorio sobre cadenas y arreglos en Java, Segunda parte (04.07.02)

Segunda parte

Modifique la clase Pelicula y agregue el atributo: cliente (Cliente) que sera quien alquile la pelicula, implemente el método set y get correspondientes.
Modifique la clase Cliente y agregue el atributo: importeAlquiler (float) implemente su métodos set y get correspondiente.
Modifique la clase BaseDeDatos y agregue un método que permite calcular el importe de alquiler de un cliente. La aplicación debe permitir realizar el alquiler de 3 películas al cliente 2002 y muestre su costo.

Pelicula.java
package tacora;
public class Pelicula {
         private Cliente cliente;
        //...
          public void setCliente(Cliente alquiladoPor) {
        cliente = alquiladoPor;
         }
}

Cliente.java
package tacora;
public class Cliente {

private float importeAlquiler;
//...
}
BaseDeDatos.java
package tacora;
public class BaseDeDatos {
//...
public static float getImporte(Cliente cliente) {

Pelicula pelicula = null;
float importe = 0;
for (int i = 0;...) {
if (pelicula[i].getCliente().getId() == cliente.getId()) {
importe += pelicula[i].getPrecio();
}
}
return importe;
}
}

TacoraArreglos.java
package tacora;
public class TacoraArreglos {

public static void main (String[] args) {

int clienteId;
int peliculaId1;
int peliculaId2;
int peliculaId3;

if (args.length != 4)
System.out.println("java TacoraArreglos 2002 9001 9002 9003");
else {
clienteId = args[0];
peliculaId1= args[1];
peliculaId2= args[2];
peliculaId3= args[3];
}
BaseDeDatos bd = new BaseDeDatos();

Cliente cliente = bd.getCliente(clienteId);
Pelicula pelicula1 = bd.getPelicula(peliculaId1);
pelicula1.setCliente(cliente);
Pelicula pelicula2 = bd.getPelicula(peliculaId2);
pelicula2.setCliente(cliente);
bd.getPelicula(peliculaId3).setCliente(cliente);

System.out.println(cliente);

System.out.println(pelicula1);
System.out.println(pelicula2);
System.out.println(bd.getPelicula(peliculaId3));

System.out.println(bd.getImporte(cliente));
}
}
Compartir:

Laboratorio sobre cadenas/String y arreglos/array en Java. (04.07.01)

Primera Parte

Cree la clase Cliente que tendrá los siguiente datos id (int) nombre, direccion, telefono (String)
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el id (que inicia en cero).
Otro que aceptara los datos nombre, dirección, teléfono.
El código del cliente debe ser automático e incrementarse en uno cada vez que se cree una instancia. Los códigos inician en 2001
Opcionalmente agregue los métodos set y get para estos atributos.
También agregue el método toString() para mostrar los datos del cliente así como el código creado automáticamente.

Cree la clase Pelicula con los siguientes datos: id (int) titulo, tipo (String) precio (float),
La clase debe contar con dos constructores.
Uno sin argumentos para autogenerar el id (que inicia en 1).
Otro que aceptara los datos titulo, tipo, precio .
El código de la Pelicula debe ser automático e incrementarse en uno cada vez que se cree una instancia. Los códigos inician en 9001
Opcionalmente agregue los métodos set y get para estos atributos.
También agregue el método toString() para mostrar los datos de la pelicula incluido el código autogenerado.

Cliente.java
public class Cliente {

private int id;
private static int ultimoId=2000;
private String nombre;
private String direccion;
private String telefono;

public Cliente() {
this.id = ultimoId;
ultimoId++;
}

public Cliente(String nombre, String nuevaDireccion, String nuevoTelefono) {
this();
this.nombre = nombre;
this.direccion = nuevaDireccion;
this.telefono = nuevoTelefono;
}
public void setNombre(String nuevoNombre) {
nombre = nuevoNombre;

}
public void setDireccion(String nuevoDireccion) {
direccion = nuevoDireccion;
}
public void setTelefono(String nuevoTelefono) {
telefono = nuevoTelefono;
}
public int getId() {
return id;
}
public static int getUltimoId() {
return ultimoId;
}
public String getNombre() {
return nombre;
}
public String getDireccion() {
return direccion;
}
public String getTelefono() {
return telefono;
}
public String toString(){
return ("Codigo : "+id+" "+nombre+" "+direccion+" "+telefono);
}
}
//...
Pelicula.java
public class Pelicula {

private int id;
private static int ultimoId=9000;
private String titulo;
private String tipo;
private float precio;

public Pelicula() {
this.id = ultimoId;
ultimoId++;
}
public Pelicula(String nuevoTitulo,String nuevoTipo) {
this();
this.titulo = nuevoTitulo;
this.tipo = nuevoTipo;
}
public void setTitulo(String nuevoTitulo) {
titulo = nuevoTitulo;
}
public void setTipo(String nuevoTipo) {
tipo = nuevoTipo;
}
public void setPrecio(float nuevoPrecio) {
precio = nuevoPrecio;
}
public String getTitulo() {
return titulo;
}
public String getTipo() {
return tipo;
}
public int getId() {
return id;
}
public float getPrecio() {
return id;
}
public static int getUltimoId() {
return ultimoId;
}
public String toString() {
return ("Codigo : "+id+" "+titulo+" "+tipo);
}
}

Defina la clase BaseDeDatos con tres métodos: en el primero creara 4 clientes (nombres familiares) y 6 peliculas (que haya visto en cine o televisión). Los clientes y las películas se encontraran en un arreglo. El segundo devolvera el objeto cliente ingresando el id del cliente. El tercero realizara lo mismo con el id de una pelicula.

BaseDeDatos.java
package tacora;
public class BaseDeDatos {

private static Cliente[] cliente = new Cliente[4];
private static Pelicula[] pelicula = new Pelicula[6];

public BaseDeDatos() {
cliente[0] = new Cliente("Daneel Olivaw","Solaria 4", "511-711-2542");
//...
pelicula[0] = new Pelicula("Neverland","Drama",10.0f);
//...
}

public static Cliente getCliente(int id) {
for (...) {
break;
}
return cliente[];
}
public static Pelicula getPelicula(int id) ...

}

Cree la aplicación Arreglos que permita Cargar la base de datos y mostrar los datos del cliente con codigo 2002 y la pelicula con codigo 9003

TacoraArreglos.java
package tacora;
public class TacoraArreglos {

public static void main (String[] args) {

int clienteId;
int peliculaId;

if (args.length != 2)
System.out.println("java TacoraArreglos 2002 9003");
else {
clienteId = Integer.parseInt(args[0]);
peliculaId = Integer.parseInt(args[1]);
}
BaseDeDatos bd = new BaseDeDatos();
System.out.println(BaseDeDatos.getCliente(clienteId ));
System.out.println(BaseDeDatos.getPelicula(peliculaId));
}

}
Compartir:

El metodo main en Java (04.06.02)

main() cuenta con un único parámetro que es un arreglo de cadenas.
Este arreglo de cadenas son los parámetros de la linea de comandos.

C:\> java Eco Hola Mundo
// Eco.java
package ejercicios;
public class Eco {

public static void main (String [] args) {

if (args.length != 2)
System.out.println("Uso: java Eco Arg1 Arg2");
else
System.out.println(args[0] + " " + args[1]);

}

}
Compartir: