Se muestra el uso de interfaces mediante un ejemplo en la cual se tiene a un Estudiante, se le asigna Clases y para cada clase se detalle las notas.
/**
* @author chinchillal * Definición de metodos comunes entre clase */ public interface AccionHandler { /** * agrega un elmento a una estructura de almacenamiento * @param elemento elemento que se agrega */ public abstract boolean agregar(Object elemento); /** * elimina segpun el indice un elmento de la estructura de almacenamiento * @param indice posición del elmento a eliminar * @param c indica de que lista vamos a eliminar */ public abstract boolean eliminar(int indice, Class c); }
Se debe desarrollar el siguiente ejercicio: Agregar, Consultar, Editar y Eliminar Registros Arreglo dinámico
·Utilizando un arreglo dinámico el programa debe pedir información de un estudiante o un catedrático o un personal administrativo, es decir, se le debe pedir al usuario que información debe ingresar (1: Estudiante, 2: catedrático, 3: Personal Administrativo). EL usuario podrá ingresar tanta información desee, el programa le debe indicar si quiere continuar ingresando información.
·El programa debe contar con una segunda opción que sea para poder consultar la información de un Estudiante/Catedrático/Personal Administrativo y desplegarlo en pantalla.
·Si el usuario lo desea también el programa debe contar con una opción de editar la información de un Estudiante/Catadratico/Personal Administrativo.
·Además el de contar con una tercera opción para poder eliminar un registro del arreglo dinámico.
·Consideraciones:
oEl programa debe contar con un menú y las opciones de “Agregar”, “Consultar”, “Editar” y “Eliminar.”
oTanto en las operaciones de agregar, editar, consultar, eliminar el programa debe mostrar un mensaje si desea seguirrealizando la operación.
oEn la opción de eliminar se debe mostrar una advertencia si, realmente desea eliminar el registro.
PlanteamientoEjercicio 3: Programar un algoritmo recursivo que permita hacer la división por restas sucesivas. ver mas... Solución:
int division (int a, int b) { if(b > a) { return 0; } else { return division(a-b, b) + 1; } }
PlanteamientoEjercicio 4: Programar un algoritmo recursivo que permita invertir un número.Ejemplo: Entrada:123 Salida:321 Solución:
int invertir (int n) { if (n < 10) { //caso base return n; } else { return (n % 10) + invertir (n / 10) * 10; } }
PlanteamientoEjercicio 5: Programar un algoritmo recursivo que permita sumar los dígitos de un número.Ejemplo: Entrada:123 Resultado:6 Solución:
int sumar_dig (int n) { if (n == 0) { //caso base return n; } else { return sumar_dig (n / 10) + (n % 10); } }
PlanteamientoEjercicio 6: Programar un algoritmo recursivo que permita hacer una multiplicación, utilizando el método Ruso. Para mas información: aquí. Solución:
int mult_rusa(int A, int B) { if(A==1){ return (B); } if(A%2!=0){ return (B+mult_rusa( A/2 , B*2)); } else{ return(mult_rusa( A/2 , B*2)); } }
PlanteamientoEjercicio 7: Programar un algoritmo recursivo que permita sumar los elementos de un vector. Solución:
int suma_vec(int v [], int n) { if (n == 0) { return v [n]; } else { return suma_vec(v, n - 1) + v [n]; } }
PlanteamientoEjercicio 8: Programar un algoritmo recursivo que permita multiplicar los elementos de un vector. Solución:
int multiplicar (int vec [], int tam) { if (tam == 0) { return (vec [0]); } return (vec [tam] * multiplicar (vec, tam - 1)); }
PlanteamientoEjercicio 9: Programar un algoritmo recursivo que calcule el Maximo comun divisor de dos números. Solución:
int sacar_mcd(int a, int b) { if(b==0) { return a; } else { return sacar_mcd(b, a % b); } }
PlanteamientoEjercicio 10: Programar un algoritmo recursivo que determine si un número es positivo/negativo. Solución:
PlanteamientoEjercicio 12: Programar un algoritmo recursivo que permita sumar los elementos de una matriz. Solución:
int suma (int fila, int col, int orden, int mat [] []) { if (fila == 0 && col == 0) return mat [0] [0]; else if (col < 0) return suma (fila - 1, orden, orden, mat); else return mat [fila] [col] + suma (fila, col - 1, orden, mat); }
PlanteamientoEjercicio 13: Programar un algoritmo recursivo que muestre el numero menor de un vector. Solución:
int menorvec (int x [], int n, int menor) { if (n == 0) { if (menor > x [n]) { return x [0]; } else { return menor; } } else{ if (menor > x [n]) { return menorvec (x, n - 1, x [n]); } else { return menorvec (x, n - 1, menor); } } }
int mayorvec (int numeros [], int posicion) { int aux; if (posicion == 0) { return numeros [posicion]; } else { aux = mayor (numeros, posicion - 1); if (numeros [posicion] > aux){ return numeros [posicion]; } else{ return mayor (numeros, posicion - 1); } } }
Se presenta un ejemplo en donde se presenta el uso de subclases, dentro de la clase principal y fuera del ámbito de la clase principal.
La clase principal se identifica por que es la unica que se declara con la palabra reservada public.
/** * @author lchinchilla * @date 19/01/2011 * * Uso de subclases dentro de un mismo archivo *.java * * Palabras claves: public, class, package, this, método main * */ public class Subclases {
/** * definición de mi primer subclase dentro de la clase principal * Observese que la clase es estatica ya que al declararse en el metodo main se requiere */ static class MiPrimerSubclase {
//Construtor MiPrimerSubclase public MiPrimerSubclase() { System.out.println("MiPrimerSubclase: Estoy dentro de la clase principal"); } /** * nota: MiPrimerSubclase solo existe en el ambito de la clase principal, es decir, NO * podriamos hacer una instancia de esta clase dentro de la subclase MiSegundaSubclase */ }
/** * @param args the command line arguments */ public static void main(String[] args) { //Instancias de mis subclases. //sublase que esta dentro del ambito de la clase principal MiPrimerSubclase subclase1 = new MiPrimerSubclase();
//subclase que esta fuera del ambito de la clase principal MiSegundaSubclase subclase2 = new MiSegundaSubclase();
} }
/** * definición de mi primer subclase fuera de la clase principal * Notese: que ya existe una subclase MiPrimerSubclase, pero la anterios solo existe en el ambito de la clase principal. * otra diferencia es que esta no es requerido que se declare estatica */ class MiPrimerSubclase {
//Construtor MiPrimerSubclase public MiPrimerSubclase() { System.out.println("MiPrimerSubclase: Estoy fuera de la clase principal"); } }
/** * definición de mi segunda subclase fuera de la clase principal */ class MiSegundaSubclase {
//Construtor MiSegundaSubclase public MiSegundaSubclase() { System.out.println("MiSegundaSubclase: Estoy fuera de la clase principal");
//Llamando una subclase dentro de otra MiPrimerSubclase subclase3 = new MiPrimerSubclase(); } }
Se indica una lista de entradas que deben crear en su blog personal de la clase de Progravan1, deben investigar sobre cada tema que se muestra abajo y presentarlas antes de la fecha de tope.
Fecha Entrega Tope: Martes, 25 de enero 2011. 1. Investigar sobre el estándar de JAVADOC y realizar un ejemplo. (Cerrado)
Fecha Entrega Tope: Jueves, 27 de enero 2011. 1. Usando clases y subclases crear un programa para realizar las operaciones matemáticas basicas. Clase principal "OperacionesMatematicas". Subclases "Suma", "Resta", "Multiplicacion" y "Division". en el metodo main se deben hacer instancias de las subclases para realizar dicha operación. (Cerrado)
Fecha Entrega Tope: Jueves, 03 de febrero 2011. 1. Investigar sobre las palabras reservadas en Java y que significa cada una de ellas. (Cerrado)
Fecha Entrega Tope: Jueves, 03 de febrero 2011. 1. Realizar un programa que ordene un arreglo desordenado de 20 valores enteros, además contar con un par de métodos para saber cual es el valor mínimo y máximo. (Cerrado)
Fecha Entrega Tope: Lunes, 07 de febrero 2011. 1. Primer Avance del proyecto: se deben crear las clases Usuario, Estudiante, Catedrático, PersonalAdministrativo y para cada uno de ellos agregar la información requerida (ver definición del proyecto). Una vez realizado lo anterior, se pide que se haga un programa que agregue la información de 10 Estudiante, Catedráticos, PersonalAdministrativo y que se tenga una función que imprima la info, así como una función que valida la información de usuario. (Cerrado)
Fecha de Entrega Tope: Jueves, 31 de marzo 2011 Investigar sobre los controles swing: JTable y JTree. Desarrollar un ejemplo utilizando los controles.
Fecha de Entrega Tope: Lunes, 04 de abril 2011 Crear los siguientes controles personalizados: 1. Crear 5 botones: Aceptar, Cancelar, agregar, Editar, Eliminar. cada botón debe tener un icono que corresponda a su etiqueta 2. Crear un nuevo control que herede de JTextArea y que tenga un menú contextual de copiar, cortar, pegar y seleccionar todo. 3. Crear un nuevo control que herede de JTextField y que tenga un menú contextual de copiar, cortar, pegar y seleccionar todo.
Fecha de Entrega Tope: Lunes, 11 de Abril 2011 Se debe realizar el siguiente ejercicio, descargar...
Otra manera de utilizar el control JTable, es usar Binding, el cual resulta mas conveniente al momento de utilizar Base de Datos. además se muestra como ordenar las columnas y tres maneras de seleccionar filas.
Ejemplo que muestra como agregar información de una persona y verla reflejada en un JList, además de poder agregar a la lista, se puede eliminar elementos de la lista con seleccionar el elemento.
Además, al dar click sobre un elemento en la lista se muestra la información en un Panel de Detalle. Se debe notar que el Panel de Detalle, es un control personalizado.
Ejemplo en donde se muestra como crear un conexión a una Base de Datos en Sql Server (2008), y de como manipular datos dentro de ella.
Ej: crear una tabla desde java, realizar insert's a la tabla, update's, eliminar registros o la obtener información haciendo uso de la sentencia SQL. todo esto medieante el uso de las clases {java.sql.Connection, java.sql.Statement, java.sql.ResultSet, etc}
/** * Inicia una conexión a Base de Datos Microsoft SQL Server. * * @param servidor Servidor al cual se establece la conexion. * @param BD Nombre de la Base de Datos * @param usuario Usuario que inicia la conexion. * @param contrasenya Contraseña del usuario que inicia la conexion. * @param aplicacion Nombre de la aplicacion que establece la conexion a la Base de Datos * @param puerto Puerto a traves del cual se establece la conexion con la Base de Datos. * * @return El objeto que contiene la conexion a la Base de Datos. */ public Connection iniciarConexion(String servidor, String BD, String usuario, String contrasenya, String aplicacion, int puerto) throws SQLException { //Instancia Objeto Conexión Connection conBD = null; //Instancia Drivers JDBC para SQLServer SQLServerDataSource ds = new SQLServerDataSource(); //Registro de los parametros de conexión ds.setServerName(servidor); ds.setDatabaseName(BD); ds.setUser(usuario); ds.setPassword(contrasenya); ds.setApplicationName(aplicacion); ds.setPortNumber(puerto);
conBD = ds.getConnection(); if (conBD != null) { System.out.println("Se establecio la Conexión a la base de datos " + servidor + "/" + BD); } else { System.out.println("No se establecio la Conexión a la base de datos " + servidor + "/" + BD); } return conBD; }
Programa que muestra como realizar conexiones a las base de datos: SQLSERVER, MYSQL, MICROSOFT ACCESS o ORACLE.
Nota: se debe tener en cuenta que los datos de conexión (nombre usuario, contraseña, puerto, etc), difieren al momento que se prueben, recordar cambiarl la configuración de conexión a una que se ajuste a sus pruebas.