Climtico
FACULTAD
: INGENIERIA INDUSTRIAL, SISTEMAS E
INFORMATICA
EAP
: INGENIERIA INFORMTICA
GRUPO
: CUATRO
: III
TEMA
PROFESOR
Lenguaje de Programacin II
2014
II.INDICE
III. RESUMEN
IV. INTRODUCCION
V. PROBLEMA PLANTEADO
1.- ENUNCIADO
2.- DESCRIPCION DE LA SOLUCION PROPUESTA
3.- DISEO DE LA SOLUCION
3.1.- DIAGRAMA DE PAQUETES
3.2.- DIAGRAMA DE CLASES
3.3.- GRAFICA DE ESTRUCTURA DE DATOS
4.- DESARROLLO DE LA SOLUCION
VI. CONCLUSIONES
VII. RECOMENDACIONES
VIII. BIBLIOGRAFIA
Lenguaje de Programacin II
III. RESUMEN
El tema central de la presente monografa es arreglo de objetos con archivos y
pdf pero es muy conveniente hablar un poco sobre la tcnica que se a usado
que es la programacin orientada a objetos (POO) actualmente se ha
diversificado mucho el uso de la programacin orientada a objetos que viene a
ser el equilibrio de los lenguajes de programacin cuidando tanto los procesos
como los datos por igual son tan importantes los unos como los otros y lo que
viene a traer son los mximos beneficios de las cotas de abstraccin,
encapsulacin, modularizacin, jerarquizacin cosas que venan ya existiendo
pero con la programacin orientada a objetos se mejoran mas eso desde mi
punto de vista personal es la esencia de lo que es la programacin orientada a
objetos. Un nuevo equilibrio entre datos y procesos para mejorar la expresin y
el mantenimiento de los programas, por ejemplo la red del metro de Nueva
York la tenan programada en C desde hace muchos aos y ocupaba
aproximadamente un milln de lneas pues es un sistema en tiempo real y de
lgica compleja, hicieron el experimento de reprogramarlo en C++ queran
contrastar la programacin tradicional orientada a procesos con la orientacin a
objetos de C++ que es otro de los lenguajes orientado a objetos esto le hicieron
para demostrar que no era ms lento porque al principio a la programacin
orientada a objetos se le achacaba que era muy lento desde el punto de vista
de ejecucin (rendimiento), en esos tiempos el rendimiento era todo un drama
porque no haba las cantidades de memoria virtual que hay ahora,
curiosamente obtuvieron otro resultado la aplicacin que en C haba ocupado
aproximadamente un milln de lneas cuando la reprogramaron en C++ ocupo
300 mil lneas paso que el tamao de la aplicacin se redujo a la tercera parte
y hacia lo mismo y era ms liviano con menos cdigo, al hacer piezas y piezas
que se combinan y se resan muchas veces tu escribes en contra de los
lenguajes tradicionales la tercera parte del cdigo documentas la tercera parte
del cdigo y se comprende muy bien el programa, todo est en que pienses
cmo funciona el mundo real y as organizas tus ideas a la hora de programar.
Lenguaje de Programacin II
IV. ABSTRACT
The focus of this paper is arranging objects and pdf files but it is very convenient to talk
a bit about the technique that is used to object-oriented programming (OOP) has
greatly diversified currently using oriented programming object which comes to balance
caring programming languages both processes and data are equally as important as
the other and what comes to bring are the greatest benefits of levels of abstraction,
encapsulation , modularity , nesting things that were already there but with the OOP
are improved over that from my point of view is the essence of what object-oriented
programming. A new balance between data and processes to enhance the expression
and maintenance of programs , for example the subway in New York were programmed
in C for many years and occupied approximately one million lines it is a real-time
system and complex logic , made the experiment reprogram it in C ++ wanted to
contrast the traditional programming oriented processes with object oriented C ++ is
another object-oriented languages that made him to prove it was no slower because at
first object-oriented programming is blamed it was very slow from the point of view of
execution (performance) , at that time the performance was quite a drama because
there were quantities of virtual memory that is now curiously obtained another result
the application that C had occupied about one million lines when reprogrammed in C +
+ I occupy 300,000 lines step the application size was reduced to one-third and did the
same and was lighter with less code , by making parts and pieces are combined and
are reused many times you write against traditional languages third of the code you
document the third part of the code and the program is easy to understand , everything
is to think how the real world works and so organize your ideas when programming .
Lenguaje de Programacin II
IV. INTRODUCCIN
Java no naci como un lenguaje de orientacin a objetos pero poco a poco fue
absorbido por la programacin orientada a objetos. La programacin orientada a
objetos no es usar objetos al programar sino es pensar en cmo funcionan los objetos
en el mundo real y programar en esa lgica. La gracia de trabajar con ARREGLO DE
OBJETOS es que se hace que los problemas sean ms sencillos de programar, al
permitir dividir el problema en piezas. Est divisin se hace en arreglo de objetos, de
forma que cada pedazo de cdigo pueda ser reutilizado. Un arreglo de objeto es un
elemento del programa que posee sus propios datos y su propio funcionamiento. Es
decir un arreglo de objeto est formado por datos (propiedades) clases con sus
atributos, mtodos y funciones que es capaz de realizarse gracias a la programacin
orientada a objetos.
Antes de poder utilizar un objeto, se debe definir su clase. La clase es la definicin de
un tipo de objeto. Al definir una clase lo que se hace es indicar como funciona un
determinado tipo de objeto. Luego, a partir de la clase, podremos crear un arreglo de
objetos de esa clase. Por ejemplo, si quisiramos crear el juego del parchs en Java,
una clase sera la casilla, otra las fichas, otra el dado, etc., etc. En el caso de la casilla,
se definira la clase para indicar su funcionamiento y sus propiedades, y luego se
creara tantos objetos casilla como casillas tenga el juego. Lo mismo ocurrira con las
fichas, la clase ficha definira las propiedades de la ficha (color y posicin por ejemplo)
y su funcionamiento mediante sus mtodos (por ejemplo un mtodo sera mover, otro
llegar a la meta, etc., etc..,), luego se crearan tantos arreglos de objetos ficha, como
fichas tenga el juego.
En esta ocasin vamos a desarrollar una aplicacin aplicando el concepto de arreglo
de objetos en java cumpliendo con las condiciones que nos da el enunciado N 4
alcanzados por el docente del curso.
Usaremos la librera iText-5.0.5 que nos va permitir el manejo de los pdf en java y el
IDE Netbeans la versin 8.1 en espaol.
Lenguaje de Programacin II
ARREGLO DE OBJETOS
Definicin: En Java no se emplea el trmino "registro" sino el de objeto que se
comportan similar al mundo real. Los arreglos de objetos son arreglos que en vez de
contener elementos de datos contienen referencias a objetos de un tipo de clase en
especial. Dicha clase contiene variables (atributos) de diferente tipo y mtodos con
los cuales se manipulan dichas variables. Cada variable se referencia empleando un
nombre de campo los cuales son realmente el nombre de las instancias de las
variables. Los elementos de un arreglo de objetos estn numerados y para referirnos
a un elemento concreto, utilizaremos su nmero de posicin denominado ndice.
En Java, los elementos de un arreglo de objetos se empiezan a numerar desde cero.
Esto es el ndice del primer elemento de la serie es 0. Si la longitud de la serie es N, el
ndice del ltimo elemento del arreglo de objetos ser n-1. Los arreglos de objetos se
crean usando el operador new.
V. PROBLEMA PLANTEADO
1.- ENUNCIADO N 4
Desarrolle una solucin que permita almacenar el DNI, el nombre, el email y la edad
de todas las personas de una localidad, adems desarrolle un mtodo que muestre a
las personas que son menores de edad y cuantos aos les falta para ser mayores de
edad, desarrolle tambin un mtodo para almacenar los datos ingresados en un
archivo de texto y un mtodo para exportar en PDF los datos ingresados adems
desarrolle con 3 paquetes VMC y todos los mtodos necesarios para manejar y
controlar los datos.
Lenguaje de Programacin II
2.DESCRIPCION
PROPUESTA.
DE
LA
SOLUCION
El enunciado N 4 nos pide una solucin que permita almacenar el DNI, el nombre, el
email, la edad, es lgico que se trata sobre el manejo de los datos de las personas que
viven en una localidad la aplicacin adems debe servir para ver cuantos menores de
edad viven en dicha localidad y cuantos aos les falta para ser mayores de edad.
Vamos a resolver el problema planteado haciendo uso de la programacin
ORIENTADA A OBJETO utilizando tres paquetes el primer paquete es la vista donde
vamos a programar la GUI (Interfaz Grfica de Usuario) con dos clases GuiPersona y
la Clase principal llamada clase usuario donde escribiremos a main el otro paquete es
controlador con la clase Arreglo Persona con los mtodos necesarios para el manejo
de datos y el tercer paquete llamado modelo donde ubicaremos la clase Persona que
es donde van los atributos y 2 mtodos constructores uno simple y otro sobrecargado
y sus mtodos get y set que permitirn acceder y modificar los atributos de la clase
persona , optimizando el condigo para ahorrar recursos del sistema en el momento de
ejecutar la aplicacin.
Lenguaje de Programacin II
Lenguaje de Programacin II
3.2.DIAGRAMA
DE CLASES
3.3.GRAFICA DE
ESTRUCTURA DE DATOS
Lenguaje de Programacin II
numPer
int
Persona
s
Lenguaje de Programacin II
package modelo;
public class Persona {
private long dni;
11 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
Lenguaje de Programacin II
package vista;
import
import
import
import
import
import
import
import
import
biblioteca.LE;
java.awt.Color;
java.awt.Toolkit;
java.awt.event.ActionEvent;
java.awt.event.ActionListener;
java.io.File;
java.io.IOException;
java.io.RandomAccessFile;
javax.swing.*;
Lenguaje de Programacin II
Lenguaje de Programacin II
Lenguaje de Programacin II
package vista;
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
java.awt.Color;
java.awt.Toolkit;
java.awt.event.ActionEvent;
java.awt.event.ActionListener;
javax.swing.ImageIcon;
javax.swing.JButton;
javax.swing.JFrame;
javax.swing.JLabel;
javax.swing.JOptionPane;
javax.swing.JScrollPane;
javax.swing.JTable;
javax.swing.JTextArea;
javax.swing.JTextField;
javax.swing.SwingConstants;
javax.swing.table.DefaultTableModel;
sun.swing.SwingAccessor;
controlador.ArregloDePersonas;
Lenguaje de Programacin II
Lenguaje de Programacin II
cancelar = new
ImageIcon(getClass().getResource("/Iconos/cancelar.png"));
modificar = new
ImageIcon(getClass().getResource("/Iconos/modificar.png"));
salir = new
ImageIcon(getClass().getResource("/Iconos/salir.png"));
mostrarDatos = new
ImageIcon(getClass().getResource("/Iconos/mostrarDatos.png"
));
votantes = new
ImageIcon(getClass().getResource("/Iconos/votantes.png"));
lblDni = new JLabel("DNI:");
lblDni.setBounds(15, 15, 110, 25);
getContentPane().add(lblDni);
lblNombre = new JLabel("Nombre");
lblNombre.setBounds(15, 50, 110, 25);
lblNombre.setForeground(Color.red);
getContentPane().add(lblNombre);
lblEmail = new JLabel("Correo Electronico");
lblEmail.setBounds(15, 85, 110, 25);
lblEmail.setForeground(Color.red);
getContentPane().add(lblEmail);
lbledad = new JLabel("Edad");
lbledad.setBounds(15, 120, 110, 25);
lbledad.setForeground(Color.red);
getContentPane().add(lbledad);
txtDni = new JTextField("");
txtDni.setBounds(175, 15, 110, 25);
getContentPane().add(txtDni);
txtNombre = new JTextField();
txtNombre.setBounds(175, 50, 110, 25);
getContentPane().add(txtNombre);
18 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
Lenguaje de Programacin II
Lenguaje de Programacin II
//
//
//
Toolkit.getDefaultToolkit().beep();
if (rpta == 0) {
txtMensaje.setText("Los datos fueron grabados en "
+ salon.getRutaArchivo());
} else {
txtMensaje.setText("Los datos no fueron grabados
en " + salon.getRutaArchivo() + ". Verifique!");
}
}
if (e.getSource() == btnArchivar) {
int rpta = salon.generarPDF();
Toolkit.getDefaultToolkit().beep();
if (rpta == 0) {
txtMensaje.setText("El archivo PDF fue generado
exitosamente");
} else {
txtMensaje.setText("El archivo PDF no pudo ser
generado.., verifique!");
}
}
if (e.getSource() == btnVotantes) {
21 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
mostrar();
}
//
//
//
//
//
if (e.getSource() == btnVotantes) {
totalPersonasvotantes();
}
if (e.getSource() == btnsalir) {
//
//
eliminarArchivo();
grabarDatos();
dispose();
}
snombre = txtNombre.getText().trim();
sDni = txtDni.getText().trim();
sEmail = txtEmail.getText().trim();
sedad = txtedad.getText().trim();
if (snombre.equals("") || sDni.equals("") ||
sEmail.equals("") || sedad.equals("")) {
txtDni.requestFocus();
Toolkit.getDefaultToolkit().beep();
txtMensaje.setText("Faltan datos.., verifique");
} else {
try {
long dni = Long.parseLong(sDni);
int edad = Integer.parseInt(sedad);
22 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
if (salon.buscarCodigo(dni) != -1) {
Toolkit.getDefaultToolkit().beep();
txtDni.requestFocus();
txtMensaje.setText("El cdigo ya existe..,
verifique");
} else if (!sEmail.matches("[a-z-0-9-_]+[@][a-z]+[.]
[a-z]{3}")) {
Toolkit.getDefaultToolkit().beep();
txtEmail.requestFocus();
txtMensaje.setText("el correo ingresada no es
vlida.., verifique");
} else if (sedad.length() < 0) {
Toolkit.getDefaultToolkit().beep();
txtEmail.requestFocus();
txtMensaje.setText("el correo ingresada no es
vlida.., verifique");
} else if (snombre.length() < 3) {
Toolkit.getDefaultToolkit().beep();
txtNombre.requestFocus();
txtMensaje.setText("El nombre no es vlido..,
verifique");
} else {
salon.agregarPersonasEnArreglo(dni, snombre,
sEmail, edad);
agregarAlumnoEnTabla(dni, snombre, sEmail,
edad);
limpiarCajas();
}
} catch (Exception e) {
////
Toolkit.getDefaultToolkit().beep();
23 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
////
txtMensaje.setText("Algunos de los datos son
incorrectos.., verifique");
}
}
}
public void mostrar() {
if (btnMostrarEdades.getText().equals("Mostrar")) {
int i = jtbMostrar.getSelectedRow();
if (i == -1) {
JOptionPane.showMessageDialog(null, "por Favor...
seleccione una fila");
} else {
String D = jtbMostrar.getValueAt(i, 0) + "";
String nom = jtbMostrar.getValueAt(i, 1) + "";
String em = jtbMostrar.getValueAt(i, 2) + "";
String ed = jtbMostrar.getValueAt(i, 3) + "";
String not3 = jtbMostrar.getValueAt(i, 4) + "";
//
String dis = (String) jtbMostrar.getValueAt(i, 4);
txtDni.setText(D);
txtNombre.setText(nom);
txtEmail.setText(em);
txtedad.setText(ed);
}
}
}
public void agregarAlumnosEnTabla() {
template.setRowCount(0);
for (int i = 0; i < salon.getNumAlu(); i++) {
Object[] fila = new Object[]{"" +
salon.getCodigoPorPos(i),
salon.getNombrePorPos(i),
24 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
"" + salon.getEmailPorPos(i),
+salon.getEdadPorPos(i)};
template.addRow(fila);
}
package controlador;
import
import
import
import
com.itextpdf.text.Document;
com.itextpdf.text.Element;
com.itextpdf.text.Paragraph;
com.itextpdf.text.Phrase;
Lenguaje de Programacin II
import
import
import
import
import
import
import
import
com.itextpdf.text.pdf.PdfPCell;
com.itextpdf.text.pdf.PdfPTable;
java.awt.Desktop;
java.io.File;
java.io.FileOutputStream;
java.io.IOException;
java.io.RandomAccessFile;
modelo.Persona;
static
static
static
static
static
static
static
static
String separador;
String salto;
String unidad;
String carpeta;
String nombreArchivo;
String nombrePDF;
String rutaCarpeta, rutaArchivo, rutaPDF;
File miCarpeta, miArchivo;
static {
separador = System.getProperty("file.separator");
salto = System.getProperty("line.separator");
unidad = "E:";
carpeta = "datos";
nombreArchivo = "Personas.dat";
nombrePDF = "Persona.pdf";
rutaCarpeta = unidad + separador + separador +
carpeta;
rutaArchivo = unidad + separador + separador +
carpeta + separador + nombreArchivo;
rutaPDF = unidad + separador + separador + carpeta +
separador + nombrePDF;
miCarpeta = new File(rutaCarpeta);
26 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
accessFile.seek(0);
while ((texto = accessFile.readLine()) != null) {
long codigo = Long.parseLong(texto.substring(0,
10).trim());
Lenguaje de Programacin II
agregarPersonasEnArreglo(codigo, nombre,
Email, edad);
}
accessFile.close();
} catch (IOException e) {
} catch (Exception e) {
}
} else {
System.out.println("No existen datos");
}
}
public void agregarPersonasEnArreglo(long codigo,
String nombre, String Email, int edad) {
if (numPer < datos.length) {
aumentar();
}
Persona alu = new Persona(codigo, nombre, Email,
edad);
datos[numPer] = alu;
numPer++;
}
public void aumentar() {
Persona[] datosTMP = new Persona[numPer + 10];
for (int i = 0; i < datos.length; i++) {
datosTMP[i] = datos[i];
}
datos = datosTMP;
}
28 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
5);
Lenguaje de Programacin II
Lenguaje de Programacin II
Desktop.getDesktop().open(file);
return 0;
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
public int buscarCodigo(long codigo) {
for (int i = 0; i < numPer; i++) {
if (datos[i].getDni() == codigo) {
return i;
}
}
return -1;
}
public String completar(String cadena, int total) {
int longitud = cadena.length();
String espacios = "";
String nuevaCadena = "";
if (longitud < total) {
int falta = total - longitud;
for (int i = 0; i < falta; i++) {
espacios = espacios + " ";
}
nuevaCadena = cadena + espacios;
} else {
nuevaCadena = nuevaCadena.substring(0, total);
}
return nuevaCadena;
}
public long getCodigoPorPos(int posicion) {
return datos[posicion].getDni();
}
31 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
CONCLUSIONES:
La programacin orientada a objetos permite crear aplicaciones de forma ms
parecida al pensamiento humano. De hecho se cae de maduro decirlo que simplifica el
problema dividindolo en objetos o piezas para luego juntarlos y usarlos haciendo ms
fcil la modificar y actualizar el cdigo de la la aplicacin para de esa forma eliminar la
complejidad. Cada objeto se programa de forma autnoma y esa es la principal virtud
32 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
RECOMENDACIN:
Recomendaciones del Alumno Torres Sevillano, Denis:
1.- Es necesario leer bien el enunciado y comprender que es lo que pide luego pasar
al diseo de la estructura de datos para poder definir cuantos paquetes y cuantas
clases vas a usar y que mtodos vas emplear en cada clase, el siguiente paso que
queda es programar el cdigo de la aplicacin.
2.- Es muy recomendable importar la biblioteca iText-5.0.5 siempre la ltima versin
que salga porque siempre trae novedades
3.- Es considerado como buena prctica de programacin colocar ordenadamente los
mtodos para poder hallarlos ms rpido cuando se requiera agregar o quitar
mtodos.
4.- En realidad tienes cuatro posibilidades: Trabajar directamente con JTable, usar
TableModel, usar AbstractTableModel o usar DefaultTableModel.
La de DefaultTableModel es la ms sencilla. No tienes que escribir nada de cdigo.
DefaultTableModel tiene todos los mtodos necesarios para aadir, modificar y borrar
celdas.
33 Universidad Nacional Jos Faustino Snchez Carrin
Lenguaje de Programacin II
constantemente para
evitar errores en
Lenguaje de Programacin II
BIBLIOGRAFIA:
www.google.com.pe
http://progra.usm.cl/apunte/materia/arreglos.html
http://www.desarrolloweb.com/.../programacion-orientada-objetosjava.html
http://sepwww.stanford.edu/sep/jon/family/jos/oop_es/oop1.htm
Manual Universitario - Archivos v.1.0 30.10.12.pdf
Manual Universitario Arreglo de Objetos v. 06.03.13
Manual Universitario - 2. Listas simples v. 21.08.12
Lenguaje de Programacin II