martes, 1 de diciembre de 2009

Suma con botones

Main. ClaseMatriz

public class Matriz {
public int numerofilas;
public int numerocolumnas;
public double [][]matriz;

public Matriz(){
}

public Matriz(int nf, int nc){
numerofilas = nf;
numerofolumnas = nc;
matriz = new double [numerofilas][numerocolumnas];

for(int i=0; i < numerofilas; i++)
for(int j=0; j < numerocolumnas; j++)
matriz[i][j]=0;
}

public Matriz suma(Matriz b){
Matriz resultado;

if((this.numerofilas == b.numerofilas)&& (this.numerocolumnas == b.numerocolumnas)){
resultado = new Matriz(this.numerofilas, this.numerocolumnas);
for(int i=0; i < this.numerofilas; i++)
for(int j=0; j < this.numerocolumnas; j++)
resultado.matriz[i][j] = this.matriz[i][j]+ b.matriz[i][j];
return resultado;
}
else
System.out.println("Error en las dimensiones de las matrices");
resultado=null;
return resultado;
}

public Matriz multiplicacion(Matriz b){
Matriz resultado;
if(this.numerofilas == b.numerocolumnas){
resultado=new Matriz(this.numerofilas,b.numerocolumnas);
for(int i=0; i < this.numerofilas; i++){
for(int j=0; j < b.numerocolumnas; j++){
for(int k=0; k < this.numerofilas; k++)
resultado.matriz[i][j] += (this.matriz[i][k]*b.matriz[k][j]);
}
}
return resultado;
}
else
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}
public void leer(){
String aux;
for(int i=0; i < this.numerofilas; i++){
for(int j=0; j < this.numerocolumnas; j++){
aux = JOptionPane.showInputDialog(null,"Ingreso de valores","Ingrese el valor: "+(i+1)+","+(j+1),JOptionPane.DEFAULT_OPTION);
this.matriz[i][j]=Double.parseDouble(aux);
}
}
}

public String toString(){
String aux="\n[\n";
for(int i=0; i < numerofilas; i++){
for(int j=0; j < numerocolumnas; j++){
aux += matriz[i][j]+" ";
}
aux+="\n";
}
aux+= "]";
return aux;
}
}

Main.JavaApplet

public class NewJApplet extends javax.swing.JApplet {

/** Initializes the applet NewJApplet */
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
}
}

/** This method is called from within the init() method to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
//
private void initComponents() {

jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jTextField2 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jLabel4 = new javax.swing.JLabel();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jButton4 = new javax.swing.JButton();

jLabel1.setBackground(new java.awt.Color(255, 0, 255));
jLabel1.setFont(new java.awt.Font("Bradley Hand ITC", 3, 24));
jLabel1.setForeground(new java.awt.Color(255, 102, 204));
jLabel1.setText("CLASE MATRIZ");

jLabel2.setBackground(new java.awt.Color(255, 51, 51));
jLabel2.setText("Numero de filas");

jLabel3.setText("Numero de columnas");

jButton1.setText("leer matriz 1");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});

jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);

jLabel4.setText("resultados");

jButton2.setText("imprimir");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});

jButton3.setText("leer matriz 2");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});

jButton4.setText("sumar");
jButton4.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton4ActionPerformed(evt);
}
});

javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap(108, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(112, 112, 112))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(23, 23, 23)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel2)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1)
.addComponent(jButton4)
.addComponent(jButton3)
.addComponent(jButton2))
.addGap(53, 53, 53)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jTextField2, javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 89, Short.MAX_VALUE))
.addComponent(jLabel4))
.addContainerGap(77, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 83, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(14, 14, 14)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addGap(21, 21, 21)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jButton1)
.addComponent(jLabel4))
.addGap(11, 11, 11)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2)))
.addContainerGap(31, Short.MAX_VALUE))
);

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
}//

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String aux = jTextField1.getText();
nf = Integer.parseInt(aux);
aux = jTextField2.getText();
nc = Integer.parseInt(aux);//metodo para cambiar de string a entero
m = new Matriz(nf,nc);
}

private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
jTextArea1.setText(m.toString());
jTextArea1.setText(n.toString());
jTextArea1.setText(r.toString());
}

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
String aux = jTextField1.getText();
nf = Integer.parseInt(aux);
aux = jTextField2.getText();
nc = Integer.parseInt(aux);//metodo para cambiar de string a entero
n = new Matriz(nf,nc);
n.leer();
}

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
r = new Matriz(nf,nc);
r = m.suma(n);
}


// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JButton jButton4;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
public int nf;
public int nc;
public Matriz m;
public Matriz n;
public Matriz r;
}

domingo, 29 de noviembre de 2009

Calculo del Movimiento Rectilíneo Uniformemente Variado (MRUV)

Se va a usar el mismo programa que para Vectores 3D
Main. ClaseMatriz

public class Matriz {
public int numerofilas;
public int numerocolumnas;
public double [][]matriz;

public Matriz(){
}

public Matriz(int nf, int nc){
numerofilas = nf;
numerofolumnas = nc;
matriz = new double [numerofilas][numerocolumnas];

for(int i=0; i < numerofilas; i++)
for(int j=0; j < numerocolumnas; j++)
matriz[i][j]=0;
}

public Matriz suma(Matriz b){
Matriz resultado;

if((this.numerofilas == b.numerofilas)&& (this.numerocolumnas == b.numerocolumnas)){
resultado = new Matriz(this.numerofilas, this.numerocolumnas);
for(int i=0; i < this.numerofilas; i++)
for(int j=0; j < this.numerocolumnas; j++)
resultado.matriz[i][j] = this.matriz[i][j]+ b.matriz[i][j];
return resultado;
}
else
System.out.println("Error en las dimensiones de las matrices");
resultado=null;
return resultado;
}

public Matriz multiplicacion(Matriz b){
Matriz resultado;
if(this.numerofilas == b.numerocolumnas){
resultado=new Matriz(this.numerofilas,b.numerocolumnas);
for(int i=0; i < this.numerofilas; i++){
for(int j=0; j < b.numerocolumnas; j++){
for(int k=0; k < this.numerofilas; k++)
resultado.matriz[i][j] += (this.matriz[i][k]*b.matriz[k][j]);
}
}
return resultado;
}
else
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}

public String toString(){
String aux="\n[\n";
for(int i=0; i < numeroFilas; i++){
for(int j=0; j < numeroColumnas; j++){
aux += matriz[i][j]+" ";
}
aux+="\n";
}
aux+= "]";
return aux;
}
}

Main.ClaseVector
public class Vector3D extends Matriz{
double coorX;
double coorY;
double coorZ;

public Vector3D(){
super(1,3);
}

public Vector3D(double x, double y, double z){
super(1,3);
this.matriz[0][0] = x;
this.matriz[0][1] = y;
this.matriz[0][2] = z;
coordenadaX = x;
coordenadaY = y;
coordenadaZ = z;
}

public double magnitud(){
double resultado = 0;
for(int i=0; i < 3; i++){
resultado + = this.matriz[0][i]*this.matriz[0][i];
}
resultado = Math.sqrt(resultado);
return resultado;
}

public double magnitud1(){
double resultado;
resultado = this.coorX*this.coorX+this.coorY*this.coorY+this.coorZ*this.coorZ;
resultado = Math.sqrt(resultado);
return resultado;
}

//Otra forma de calcular la magnitud
public double magnitud2(){
double resultado;
resultado = Math.pow(this.coorX, 2)+Math.pow(this.coorY, 2)+Math.pow(this.coorZ, 2);
resultado = Math.sqrt(resultado);
return resultado;
}

//Calculo del unitario
public Vector3D uni(){
Vector3D uni = new Vector3D();
for(int i=0; i < 3; i++)
uni.matriz[0][i] = this.matriz[0][i]/this.magnitud2();
return uni;
}

public double productoEscalar(Vector3D v){
double resultado = 0;
for(int i=0; i < 3; i++)
resultado += this.matriz[0][i]*v.matriz[0][i];
return resultado;
}

public Vector3D productoCruz(Vector3D v){
Vector3D resultado;
resultado = new Vector3D();
resultado.matriz[0][0] = this.matriz[0][1]*v.matriz[0][2]-this.matriz[0][2]*v.matriz[0][1];
resultado.matriz[0][1] = this.matriz[0][2]*v.matriz[0][0]-this.matriz[0][0]*v.matriz[0][2];
resultado.matriz[0][2] = this.matriz[0][0]*v.matriz[0][1]-this.matriz[0][1]*v.matriz[0][0];
return resultado;
}


public static void main(String args[]){
Vector3D v1 = new Vector3D(3,2,-1);
Vector3D v2 = new Vector3D(1,2,2);
System.out.println(v1+"\n"+v2);
System.out.println("La coordenada en x es: "+v1.coordenadaX);
System.out.println("\nLa suma de los vectores es: "+(v1.suma(v2)));
System.out.println("\nLa magnitud del vector es: "+v1.magnitud());
System.out.println("\nLa magnitud del vector es: "+v1.magnitud1());
System.out.println("\nLa magnitud del vector es: "+v1.magnitud2());
System.out.println("\nEl vector unitario es: "+v1.unitario());
System.out.println("\nEl producto escalar entre los vectores es: "+v1.productoEscalar(v2));
System.out.println("\nEl producto cruz entre los vectores es: "+v1.productoCruz(v2));
}
}



Main.ClaseMRUV
public class MRUV extends Vector3D{
Matriz posicion;
Matriz velocidad;
Matriz aceleracion;
Matriz desplazamiento;
Matriz velocidad2;

public MRUV(){
}

public MRUV (Vector3D pos, Vector3D veli, Vector3D ace, Vector3D des){
posicion = pos;
velocidad = veli;
aceleracion = ace;
desplazamiento = des;
}

public void calcularPosicion(Vector3D ri, Vector3D veli, Vector3D ace, double t){
posicion = ri.suma((vel0.productoEscalarVector(t)).suma((ace.productoEscalarVector(Math.pow(t,2))).productoEscalarVector(1/2)));
}

public void calcularVelocidad(Vector3D veli, double t, Vector3D ace){
velocidad = veli.suma(ace.productoEscalarVector(t));
}

public void calcularDesplazamiento(Vector3D veli, double t, Vector3D ace){
desplazamiento = (veli.productoEscalarVector(t)).suma((ace.productoEscalarVector(Math.pow(t, 2))).productoEscalarVector(1/2));
}

/*public void calcularVelocidad2(Vector3D veli, Vector3D ace, Vector3D des){
velocidad2 = (Math.pow(vel0, 2)).suma((ace.productoCruz(desplazamiento)).productoEscalarVectorial(2));
}*/

public static void main(String args[]){
MRUV m = new MRUV();
Vector3D ri = new Vector3D (2,1,-1);
Vector3D veli = new Vector3D (0,1,6);
Vector3D ace = new Vector3D (3,-10,4);
double t = 3;
System.out.println("La posicion cuando: t = 3s; ri = 2i+j-k; vi = j+6k; a = 3i-10j+4k es: \n" +m.calcularPosicion(ri, veli, ace, t));
System.out.println("La velocidad cuando: t = 3s; vi = j+6k; a = 3i-10j+4k; es: \n" +m.calcularVelocidad(veli, t, ace));
System.out.println("El desplazamiento cuando: t = 3s; vi = j+6k; a = 3i-10j+4k es: \n" +m.calcularDesplazamiento(veli, t, ace));
}

}

martes, 24 de noviembre de 2009

Applet

Un applet es un componente de una aplicación que se ejecuta en el contexto de otro programa, por ejemplo un navegador web. El applet debe ejecutarse en un contenedor, que lo proporciona un programa anfitrión, mediante un plugin, o en aplicaciones como teléfonos móviles que soportan el modelo de programación por applets.
A diferencia de un programa, un applet no puede ejecutarse de manera independiente, ofrece información gráfica y a veces interactúa con el usuario, típicamente carece de sesión y tiene privilegios de seguridad restringidos. Un applet normalmente lleva a cabo una función muy específica que carece de uso independiente.
Ejemplos comunes de applets son las Java applets y las animaciones Flash. Otro ejemplo es el Windows Media Player utilizado para desplegar archivos de video incrustados en los navegadores como el Internet Explorer. Otros plugins permiten mostrar modelos 3D que funcionan con una applet.
Un Java applet es un código JAVA que carece de un método main, por eso se utiliza principalmente para el trabajo de páginas web, ya que es un pequeño programa que es utilizado en una página HTML y representado por una pequeña pantalla gráfica dentro de ésta.
Applet Java
Un applet Java es un applet escrito en el lenguaje de programación Java. Los applets de Java pueden correr en un navegador web utilizando la Java Virtual Machine (JVM), o en el AppletViewer de Sun.
Entre sus características podemos mencionar un esquema de seguridad que permite que los applets que se ejecutan en el equipo no tengan acceso a partes sensibles (por ej. no pueden escribir archivos), a menos que uno mismo le dé los permisos necesarios en el sistema; la desventaja de este enfoque es que la entrega de permisos es engorrosa para el usuario común, lo cual juega en contra de uno de los objetivos de los Java applets: proporcionar una forma fácil de ejecutar aplicaciones desde el navegador web.
En Java un applet (Subprograma), es un programa que puede incrustarse en un documento HTML; es decir en una página Web. Cuando un Navegador carga una página Web que contiene un Applet, éste se descarga en el navegador Web y comienza a ejecutarse. Esto nos permite crear programas que cualquier usuario puede ejecutar con tan solo cargar la página Web en su navegador.
El Navegador que carga y ejecuta el applet se conoce en términos genéricos como el contenedor de Applets. El kit de desarrollo de Software para java 2 (J2SDK) 1.4.1 incluye el contenedor de Applets, llamado appletviewer, para probar los applets antes de incrustarlos en una página Web.

Bibliografia

http://es.wikipedia.org/wiki/Applet_Java
http://es.wikipedia.org/wiki/Applet

sábado, 14 de noviembre de 2009

Vectores en tres dimensiones

Main. ClaseMatriz

public class Matriz {
public int numerofilas;
public int numerocolumnas;
public double [][]matriz;

public Matriz(){
}

public Matriz(int nf, int nc){
numerofilas = nf;
numerofolumnas = nc;
matriz = new double [numerofilas][numerocolumnas];

for(int i=0; i < numerofilas; i++)
for(int j=0; j < numerocolumnas; j++)
matriz[i][j]=0;
}

public Matriz suma(Matriz b){
Matriz resultado;

if((this.numerofilas == b.numerofilas)&& (this.numerocolumnas == b.numerocolumnas)){
resultado = new Matriz(this.numerofilas, this.numerocolumnas);
for(int i=0; i < this.numerofilas; i++)
for(int j=0; j < this.numerocolumnas; j++)
resultado.matriz[i][j] = this.matriz[i][j]+ b.matriz[i][j];
return resultado;
}
else
System.out.println("Error en las dimensiones de las matrices");
resultado=null;
return resultado;
}

public Matriz multiplicacion(Matriz b){
Matriz resultado;
if(this.numerofilas == b.numerocolumnas){
resultado=new Matriz(this.numerofilas,b.numerocolumnas);
for(int i=0; i < this.numerofilas; i++){
for(int j=0; j < b.numerocolumnas; j++){
for(int k=0; k < this.numerofilas; k++)
resultado.matriz[i][j] += (this.matriz[i][k]*b.matriz[k][j]);
}
}
return resultado;
}
else
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}

public String toString(){
String aux="\n[\n";
for(int i=0; i < numerofilas; i++){
for(int j=0; j < numerocolumnas; j++){
aux += matriz[i][j]+" ";
}
aux+="\n";
}
aux+= "]";
return aux;
}
}

Main.ClaseVector
public class Vector3D extends Matriz{
double coorX;
double coorY;
double coorZ;

public Vector3D(){
super(1,3);
}

public Vector3D(double x, double y, double z){
super(1,3);
this.matriz[0][0] = x;
this.matriz[0][1] = y;
this.matriz[0][2] = z;
coordenadaX = x;
coordenadaY = y;
coordenadaZ = z;
}

public double magnitud(){
double resultado = 0;
for(int i=0; i < 3; i++){
resultado + = this.matriz[0][i]*this.matriz[0][i];
}
resultado = Math.sqrt(resultado);
return resultado;
}

public double magnitud1(){
double resultado;
resultado = this.coorX*this.coorX+this.coorY*this.coorY+this.coorZ*this.coorZ;
resultado = Math.sqrt(resultado);
return resultado;
}

//Otra forma de calcular la magnitud
public double magnitud2(){
double resultado;
resultado = Math.pow(this.coorX, 2)+Math.pow(this.coorY, 2)+Math.pow(this.coorZ, 2);
resultado = Math.sqrt(resultado);
return resultado;
}

//Calculo del unitario
public Vector3D uni(){
Vector3D uni = new Vector3D();
for(int i=0; i < 3; i++)
uni.matriz[0][i] = this.matriz[0][i]/this.magnitud2();
return uni;
}

public double productoEscalar(Vector3D v){
double resultado = 0;
for(int i=0; i < 3; i++)
resultado += this.matriz[0][i]*v.matriz[0][i];
return resultado;
}

public Vector3D productoCruz(Vector3D v){
Vector3D resultado;
resultado = new Vector3D();
resultado.matriz[0][0] = this.matriz[0][1]*v.matriz[0][2]-this.matriz[0][2]*v.matriz[0][1];
resultado.matriz[0][1] = this.matriz[0][2]*v.matriz[0][0]-this.matriz[0][0]*v.matriz[0][2];
resultado.matriz[0][2] = this.matriz[0][0]*v.matriz[0][1]-this.matriz[0][1]*v.matriz[0][0];
return resultado;
}


public static void main(String args[]){
Vector3D v1 = new Vector3D(3,2,-1);
Vector3D v2 = new Vector3D(1,2,2);
System.out.println(v1+"\n"+v2);
System.out.println("La coordenada en x es: "+v1.coordenadaX);
System.out.println("\nLa suma de los vectores es: "+(v1.suma(v2)));
System.out.println("\nLa magnitud del vector es: "+v1.magnitud());
System.out.println("\nLa magnitud del vector es: "+v1.magnitud1());
System.out.println("\nLa magnitud del vector es: "+v1.magnitud2());
System.out.println("\nEl vector unitario es: "+v1.unitario());
System.out.println("\nEl producto escalar entre los vectores es: "+v1.productoEscalar(v2));
System.out.println("\nEl producto cruz entre los vectores es: "+v1.productoCruz(v2));
}
}

miércoles, 28 de octubre de 2009

Prueba de programación

Matrices.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Christian Arias
*/
public class Matrices {
public int numeroFilas;
public int numeroColumnas;
public double [][] matriz;

public Matrices(){

}
public Matrices (int nf, int nc){

numeroFilas = nf;
numeroColumnas = nc;
matriz = new double[numeroFilas][numeroColumnas];

for(int i=0; i < numeroFilas; i++)
for (int j=0; j < numeroColumnas; j++)
matriz[i][j]=0;
}
public Matrices transpuesta(){
Matrices resultado;
resultado= new Matrices(this.numeroColumnas, this.numeroFilas);
for (int i=0; i < this.numeroFilas;i++)
for(int j=0; j < this.numeroColumnas;j++)
resultado.matriz[j][i]=this.matriz[i][j];
return resultado;
}
public Matrices multiplicacion(Matrices b){
Matrices resultado;
if(this.numeroColumnas == b.numeroFilas){
resultado= new Matrices(this.numeroFilas, b.numeroColumnas);

for(int i=0; i < this.numeroFilas; i++){
for(int j=0; j < b.numeroColumnas; j++){
for(int k=0; k < this.numeroColumnas; k++)
resultado.matriz[i][j]+= (this.matriz[i][k]* b.matriz[k][j]);
}
}
return resultado;
}
else
System.out.println("ERROR EN DIMENSIONES DE LAS MATRICES");
resultado=null;
return resultado;

}


public String toString(){
String aux="[";
for (int i=0; i < numeroFilas; i++){
for (int j=0; j < numeroColumnas; j++ ){
aux+= matriz[i][j]+" ";
}
aux += "\n";
}
aux+="]";
return aux;
}


}

PruebaMatriz.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author Christian Arias
*/
public class PruebaMatriz {
public static void main(String args[]){
Matrices a= new Matrices(1, 5);
a.matriz[0][0]= 1; a.matriz[0][1]=-1; a.matriz[0][2]=0;
a.matriz[0][3]= 1; a.matriz[0][4]=1;
System.out.println(a.toString());

Matrices b= new Matrices(5, 3);
b.matriz[0][0]= 6; b.matriz[0][1]=-2; b.matriz[0][2]=5;
b.matriz[1][0]= 4; b.matriz[1][1]=2; b.matriz[1][2]=-1;
b.matriz[2][0]= 0; b.matriz[2][1]=1; b.matriz[2][2]=1;
b.matriz[3][0]= -2; b.matriz[3][1]=-2; b.matriz[3][2]=0;
b.matriz[4][0]= 1; b.matriz[4][1]=0; b.matriz[4][2]=-1;
System.out.println(b.toString());

Matrices c= new Matrices(2, 3);
c.matriz[0][0]= 2; c.matriz[0][1]=2; c.matriz[0][2]=1;
c.matriz[1][0]= 3; c.matriz[1][1]=-1;c.matriz[1][2]=0;
System.out.println(c.toString());


Matrices e= new Matrices (3,3);
e.matriz[0][0]= -1; e.matriz[0][1]=0; e.matriz[0][2]=-1;
e.matriz[1][0]= 1; e.matriz[1][1]=0; e.matriz[1][2]=1;
e.matriz[2][0]= -1; e.matriz[2][1]=1; e.matriz[2][2]=-1;
System.out.println(e.toString());



Matrices f;
f= b.transpuesta();
System.out.println(f.toString());


Matrices h;
h= a.transpuesta();
System.out.println(h.toString());

Matrices n;
n=a.multiplicacion(b);
System.out.println(n.toString());

Matrices g;
g= c.multiplicacion(e);
System.out.println(g.toString());


Matrices i;
i= e.multiplicacion(f);
System.out.println(i.toString());

Matrices m;
m= c.multiplicacion(e);
System.out.println(m.toString());

Matrices r;
r= g.multiplicacion(f);
System.out.println("Multiplicacion de C*E*Bt=\n"+r.toString());

r= n.multiplicacion(e);
System.out.println("Multiplicacion de A*B*E=\n"+r.toString());

r= i.multiplicacion(h);
System.out.println("Multiplicacion de E*Bt*At=\n"+r.toString());

}




}

Resultados de las operaciones

Multiplicacion de C*E*Bt=
[-13.0 -1.0 0.0 0.0 0.0
-44.0 -12.0 -4.0 8.0 0.0
]
Multiplicacion de A*B*E=
[-12.0 5.0 -12.0
]
Multiplicacion de E*Bt*At=
[-6.0
6.0
-12.0
]

sábado, 24 de octubre de 2009

Figuras

Este programa calcula el lado de un cuadrado por medio de sus coordenadas, y la altura de un triangulo por medio de sus coordenadas

Main.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package debercuadrado;

/**
*
* @author usuario
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}

}

Cuadrado.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class Cuadrado {

private double CoorX;
private double CoorY;

public Cuadrado(){
setCuadrado (0,0);
}

public Cuadrado(double x, double y){
setCuadrado(x,y);
}

public void setCuadrado(double x, double y){
CoorX = x;
CoorY = y;
}

public double getCoorX(){
return CoorX;
}
public double getCoorY(){
return CoorY;
}

public String toString(){
return "Punto coordenadas: "+"["+CoorX+","+CoorY+"]";
}
public static void main (String args[] ){
Cuadrado p1 = new Cuadrado (0,0);
Cuadrado p2 = new Cuadrado (1,0);
Cuadrado p3 = new Cuadrado (1,1);
Cuadrado p4 = new Cuadrado (0,1);

System.out.println(p1.toString());
System.out.println(p2.toString());
System.out.println(p3.toString());
System.out.println(p4.toString());

System.out.println("Coordenada x = " +p1.getCoorX()+5);
System.out.println("Coordenada y = " +p1.getCoorY());
System.out.println(p1.toString());
p1.setCuadrado(p1.getCoorX()+5,p1.getCoorY());
System.out.println(p1.toString());
}

}

Triangulo.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class Triangulo {

private double CoorX;
private double CoorY;

public Triangulo(){
setTriangulo (0,0);
}

public Triangulo(double x, double y){
setTriangulo(x,y);
}

public void setTriangulo(double x, double y){
CoorX = x;
CoorY = y;
}

public double getCoorX(){
return CoorX;
}
public double getCoorY(){
return CoorY;
}

public String toString(){
return "Punto de coordenadas:"+"["+CoorX+","+CoorY+"]";
}
public static void main (String args[] ){
Triangulo p1 = new Triangulo (2,0);
Triangulo p2 = new Triangulo (8,1);
Triangulo p3 = new Triangulo (6.3,9);


System.out.println(p1.toString());
System.out.println(p2.toString());
System.out.println(p3.toString());


System.out.println("Coordenada x " +p1.getCoorX()+5);
System.out.println("Coordenada y " +p1.getCoorY());
System.out.println(p1.toString());
p1.setTriangulo(p1.getCoorX()+5,p1.getCoorY());
System.out.println(p1.toString());
}
}

Figura.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class Figura extends Cuadrado{

private double ld;


public Figura(){
setLd(0);

}

public Figura(double x, double y, double l){
super(x,y);
setLd(l);
}
public void setLd(double l){
ld = l;
}
public double getLd(){
return ld;
}

public String toStrig(){
return this.toStrig()+"\nLado ="+ld;
}
public static void main(String args[]){
Figura c1 = new Figura(6,3,7);
Cuadrado p1 = new Cuadrado(6,3);

System.out.println(p1.toString());
System.out.println(c1.toString());
System.out.println("Lado = "+c1.getLd());
System.out.println("Coordenada x: "+c1.getCoorX());
System.out.println(p1.toString());
}

}

FiguraDos.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class FiguraDos extends Triangulo {
private double Al;


public FiguraDos(){
setAl(0);

}

public FiguraDos(double x, double y, double a){
super(x,y);
setAl(a);
}
public void setAl(double a){
Al = a;
}
public double getAl(){
return Al;
}

public String toStrig(){
return this.toStrig()+"\nAltura ="+Al;
}
public static void main(String args[]){
FiguraDos c1 = new FiguraDos(6,3,7);
Triangulo p1 = new Triangulo(6,3);

System.out.println(p1.toString());
System.out.println(c1.toString());
System.out.println("Altura = "+c1.getAl());
System.out.println("Coordenada x: "+c1.getCoorX());
System.out.println(p1.toString());
}

}

Seno, Coseno y valor de e

Este programa calcula el seno, coseno y el valor de e

Main.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package deberfunciones;

/**
*
* @author usuario
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}

}

TablaFunciones.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class TablaFunciones {
public static void main(String args []) {
double x;
double ep;
double y;
double m=0.0;
while(m < 10){
System.out.println("m = "+m);
m+=0.1;
x = Math.sin(m);
System.out.println(" sin ="+x);
x=Math.cos(m);
System.out.println(" cos ="+x);
ep=2.7183;
for(y = 0; y <= 10;y = y+0.1){
System.out.println((Math.pow(ep,y))*(Math.cos(y)));

}
}
}
}

Potencia, Raíz y Ecuación en Java

Este programa calcula la potencia, la raíz y la ecuación = x + √x

Main.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package operaciones;

/**
*
* @author usuario
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}

}

Potencia.java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

/**
*
* @author usuario
*/
public class Potencia{

public static void main(String args []) {
int x = 25;
double y;
double z;

if (x > 0){
System.out.println("Potencia = "+(x*x));
y= (double) x*x;
}
else{
System.out.println("El valor es incorrecto (debe ser mayor a cero)");
}
if (x >= 0){
y = Math.sqrt(x);
System.out.println("Raiz = "+(y));
}
else{
System.out.println("El valor debe ser menor o igual a cero");

}

if (x>=1){
y = Math.sqrt(x);
z = (double) x;
System.out.println("Ecuacion = "+(y+z));
}
else{
System.out.println("El valor debe ser mayor o igual que uno");

}

}

}

domingo, 18 de octubre de 2009

Programa java

Este programa realiza la suma, resta, multiplicación y traspuesta de matrices

Main.java

/*
* To change this template, choose Tools Templates
* and open the template in the editor.
*/
package matematica;
/**
*
* @author program
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
}

}

Matriz.java

/*
* To change this template, choose Tools Templates
* and open the template in the editor.
*/

/**
*
* @author program
*/

/**
* Constructor sin parametros
* @author program
*/
public class Matriz {
public int numeroFilas;
public int numeroColumnas;
public double [][] matriz;

public Matriz(){

}

/**
* Constructor con parametros
* @param nf numero de filas
* @param nc numeros de columnas
*/
public Matriz (int nf, int nc){

numeroFilas = nf;
numeroColumnas = nc;
matriz = new double[numeroFilas][numeroColumnas];
for(int i=0; i< numeroFilas; i++)
for (int j=0; j< numeroColumnas; j++)
matriz[i][j]=0;
}
/**
* Metodo de suma de matriz
* @param b primer sumando
* @return Matriz resultado de suma
*/

public Matriz suma(Matriz b){
Matriz resultado;
if((this.numeroFilas == b.numeroFilas) & (this.numeroColumnas ==
b.numeroColumnas)){
resultado = new Matriz(this.numeroFilas,this.numeroFilas);
for (int i=0; i< this.numeroFilas; i++)
for(int j=0; j< this.numeroColumnas; j++)
resultado.matriz[i][j]= this.matriz[i][j] + b.matriz[i][j];
return resultado;
}
else {
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}
}

/**
* Metodo de resta de matrices
* @param b primer sustraendo
* @return resta de matrices
*/
public Matriz resta(Matriz b){
Matriz resultado;
if((this.numeroFilas == b.numeroFilas) & (this.numeroColumnas ==
b.numeroColumnas)){
resultado = new Matriz(this.numeroFilas,this.numeroFilas);
for (int i=0; i< this.numeroFilas; i++)
for(int j=0; j< this.numeroColumnas; j++)
resultado.matriz[i][j]= this.matriz[i][j] - b.matriz[i][j];
return resultado;
}
else {
System.out.println("Error en dimensiones de las matrices");
resultado = null;
return resultado;
}
}

/**
* Metodo para transponer matrices
* @return Transpuesta de la matriz
*/

public Matriz transpuesta(){
Matriz resultado;
resultado= new Matriz(this.numeroColumnas, this.numeroFilas);
for (int i=0; i< this.numeroFilas;i++)
for(int j=0; j< this.numeroColumnas;j++)
resultado.matriz[j][i]=this.matriz[i][j];
return resultado;
}

/**
* Metodo multiplicar matrices
* @param b
* @return
*/

public Matriz multiplicacion(Matriz b){
Matriz resultado;
resultado= new Matriz(this.numeroFilas, this.numeroColumnas);
if((this.numeroFilas == b.numeroColumnas) && (this.numeroColumnas ==
b.numeroFilas)){
for(int i=0; i< this.numeroFilas; i++){
for(int j=0; j< this.numeroColumnas; j++){
for(int k=0; k< b.numeroFilas; k++){
resultado.matriz[i][j]= resultado.matriz[i][j]+
this.matriz[i][k]*b.matriz[k][j];
}
}
}
else{
System.out.println("Las dimensiones de las matrices no son correctas");
}
}
return resultado;
}

/**
* Devuelve el objeto matriz en texto
* @return
*/

public String toString(){
String aux="[";
for (int i=0; i< numeroFilas; i++){
for (int j=0; j< numeroColumnas; j++ ){
aux+= matriz[i][j]+" ";
}
aux += "\n";
}
aux+="]";
return aux;
}

}

PruebaMatriz .java

/*
* To change this template, choose Tools Templates
* and open the template in the editor.
*/

/**
*
* @author program
*/
public class PruebaMatriz {
public static void main(String args[]){
Matriz a= new Matriz(2, 2);
a.matriz[0][0]= 1; a.matriz[0][1]=2;
a.matriz[1][0]= 3; a.matriz[1][1]=4;
System.out.println(a.toString());

Matriz b= new Matriz(2, 2);
b.matriz[0][0]= 5; b.matriz[0][1]=6;
b.matriz[1][0]= 7; b.matriz[1][1]=8;
System.out.println(b.toString());

Matriz c;
c= a.suma(b);
System.out.println(c.toString());

Matriz d;
d= a.resta(b);
System.out.println(d.toString());

c=a.transpuesta();
System.out.println("Transpuesta de a\n"+c.toString());

c=a.multiplicacion(b);
System.out.println(c.toString());

}

}

domingo, 11 de octubre de 2009

Elementos de un Universo

Con este programa podemos asignar valores a una variable y crear elementos de un universo que previamente hemos declarado.

aquí les dejo el codigo de mis dos programas:

Main.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package deberclases;

/**

*

* @author usuario

*/

public class Main {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

}

}

Automovil.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author usuario

*/

public class Automovil {

public String color;

public String marca;

public String ubicacion;

public Automovil(){

}

public Automovil(String col, String mar, String ubi ){

color = col;

marca = mar;

ubicacion= ubi;

}

}

UsoAutomovil.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author usuario

*/

public class UsoAutomovil {

public static void main(String args[]){

Automovil a1= new Automovil ();

a1.marca = "Chevrolet";

a1.color = "Negro";

a1.ubicacion = "Quito";

System.out.println("Marca:"+a1.marca+"\nColor:"+a1.color+"\nUbicacion:"+a1.ubicacion);

Automovil a2= new Automovil("Mazda", "Rojo", "Cuenca");

System.out.println("\nMarca:"+a2.marca+"\nColor:"+a2.color+"\nUbicacion:"+a2.ubicacion);

Automovil a3= new Automovil("Hyundai", "Plateado", "Guayaquil");

System.out.println("\nMarca:"+a3.marca+"\nColor:"+a3.color+"\nUbicacion:"+a3.ubicacion);

}

}


Segundo ejemplo

Main.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

package deberclases2;

/**

*

* @author usuario

*/

public class Main {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

}

Universidad.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author usuario

*/

public class Universidad {

public String nombre;

public String ciudad;

public double costoMatricula ;

public Universidad(){

}

public Universidad(String nom, String ciu, double cost ){

nombre = nom;

ciudad = ciu;

costoMatricula = cost;

}

public void asignarCostoMatricula(double cost){

costoMatricula = cost;

}

}

UsoUniversidad.java

/*

* To change this template, choose Tools | Templates

* and open the template in the editor.

*/

/**

*

* @author usuario

*/

public class UsoUniversidad {

public static void main(String args[]){

Universidad u1= new Universidad ();

u1.nombre = "Universidad Tecnologica Equinoccial";

u1.ciudad = "Quito";

u1.asignarCostoMatricula(220.0);

System.out.println("Nombre:"+u1.nombre+"\nCiudad:"+u1.ciudad+"\nCosto de matricula:"+u1.costoMatricula);

Universidad u2= new Universidad("Universidad Espiritu Santo", "Guayaquil", 800.0);

System.out.println("\nNombre:"+u2.nombre+"\nCiudad:"+u2.ciudad+"\nCosto de matricula:"+u2.costoMatricula);

Universidad u3= new Universidad("Universidad de Loja", "Loja", 150.0);

System.out.println("\nNombre:"+u3.nombre+"\nCiudad:"+u3.ciudad+"\nCosto de matricula:"+u3.costoMatricula);

}

}

domingo, 4 de octubre de 2009

Programación Orientada a Objetos

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990.

Antes de hablar de la programación orientada a objetos hay que definir que es un objeto dentro de la programación.

Definición de Objeto

En filosofía un objeto es aquello que puede ser observado, estudiado y aprendido, en contraposición a la representación abstracta de ese objeto que se crea en la mente a través del proceso de generalización. Un objeto en POO representa alguna entidad de la vida real, es decir, alguno de los objetos que pertenecen al negocio con que estamos trabajando o al problema con el que nos estamos enfrentando, y con los que podemos interactuar. A través del estudio de ellos se adquiere el conocimiento necesario para, mediante la abstracción y la generalización, agruparlos según sus características en conjuntos, estos conjuntos determinan las clases de objetos con las que estamos trabajando. Primero existen los objetos, luego aparecen las clases en función de la solución que estemos buscando. Ésta es la forma más común de adquirir conocimiento aunque no es la única. En ocasiones cuando el observador es un experto del negocio (o del problema), el proceso puede ser a la inversa y comenzar el análisis en una base teórica abstracta, sustentada por el conocimiento previo que da lugar primeramente a clases de objetos que satisfagan las necesidades de la solución.

Estos conceptos son parte de la base teórica de la idea de objeto y clase utilizados en la POO. Los objetos tienen características fundamentales que nos permiten conocerlos mediante la observación, identificación y el estudio posterior de su comportamiento; estas características son:

Identidad

Comportamiento

Estado

En las ramas de las ciencias de la computación más estrictamente matemáticas, el término objeto es usado en sentido puramente matemático para referirse a cualquier "cosa". Esta interpretación resulta útil para discutir sobre teorías abstractas, pero no es suficientemente concreta para servir como definición de un tipo primitivo en discusiones de ramas más específicas como en la programación, que está más cerca de cálculos reales y el procesamiento de información.

Características de la POO

Hay un cierto acuerdo sobre exactamente qué características de un método de programación o lenguaje le definen como "orientado a objetos", pero hay un consenso general en que las características siguientes son las más importantes:

Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesion de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.

Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

Recolección de basura: la Recolección de basura o Garbage Collection es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente.

Bibliografía

http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos

http://es.wikipedia.org/wiki/Objeto_(programaci%C3%B3n)

martes, 22 de septiembre de 2009

JAVA

Java Runtime Environment
También conocido como JRE, es un conjunto de utilidades que permite la ejecución de programas java.
Componentes
En su forma más simple, el entorno en tiempo de ejecución de Java está conformado por una Máquina Virtual de Java o JVM, un conjunto de bibliotecas Java y otros componentes necesarios para que una aplicación escrita en lenguaje Java pueda ser ejecutada. El JRE actúa como un "intermediario" entre el sistema operativo y Java.
La JVM es el programa que interpreta el código Java mientras que las librerías de clases estándar son las que implementan el API de Java. Ambas JVM y API deben ser consistentes entre sí, de ahí que sean distribuidas de modo conjunto.
Un usuario sólo necesita el JRE para ejecutar las aplicaciones desarrolladas en lenguaje Java, mientras que para desarrollar nuevas aplicaciones en dicho lenguaje es necesario un entorno de desarrollo, denominado JDK, que además del JRE (mínimo imprescindible) incluye, entre otros, un compilador para Java.
Java Development Kit (JDK)
El Java Development Kit o (JDK), es un software que provee herramientas de desarrollo para la creación de programas en java. Puede instalarse en una computadora local o en una unidad de red.
En la unidad de red se puede tener la aplicación distribuida en varias computadoras y trabajar como una sola aplicación.
Java Virtual Machine (JVM)
Una Máquina virtual Java (JVM) es un programa nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un código binario especial (el Java bytecode), el cual es generado por el compilador del lenguaje Java.
El código binario de Java no es un lenguaje de alto nivel, sino un verdadero código máquina de bajo nivel, viable incluso como lenguaje de entrada para un microprocesador físico. Como todas las piezas del rompecabezas Java, fue desarrollado originalmente por Sun Microsystems.
La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje de manera que desde Sun Microsystems se han creado diferentes máquinas virtuales java para diferentes arquitecturas y así un programa .class escrito en un Windows puede ser interpretado en un entorno Linux. Tan solo es necesario disponer de dicha máquina virtual para dichos entornos. De ahí el famoso axioma que sigue a Java, "escríbelo una vez, ejecútalo en cualquier parte", o "Write once, run anywhere".
La máquina virtual de Java puede estar implementada en software, hardware, una herramienta de desarrollo o un Web browser; lee y ejecuta código pre compilado bytecode que es independiente de la plataforma multiplataforma. La JVM provee definiciones para un conjunto de instrucciones, un conjunto de registros, un formato para archivos de clases, la pila, un heap con recolector de basura y un área de memoria. Cualquier implementación de la JVM que sea aprobada por SUN debe ser capaz de ejecutar cualquier clase que cumpla con la especificación.
Entorno de ejecución
Para poder ejecutar una aplicación en una Máquina Virtual de Java, el programa código debe compilarse de acuerdo a un formato binario portable estandarizado, normalmente en forma de ficheros con extensión .class. Un programa puede componerse de múltiples clases, en cuyo caso cada clase tendrá asociada su propio archivo .class. Para facilitar la distribución de aplicaciones, los archivos de clase pueden empaquetarse juntos en un archivo con formato jar. Esta idea apareció en la época de los primeros applets de Java. Estas aplicaciones pueden descargar aquellos archivos de clase que necesitan en tiempo de ejecución, lo que suponía una sobrecarga considerable para la red en una época donde la velocidad suponía un problema. El empaquetado evita la sobrecarga por la continua apertura y cierre de conexiones para cada uno de los fragmentos necesarios.
Bytecodes
La JVM tiene instrucciones para los siguientes grupos de tareas:
  • Carga y Almacenamiento
  • Aritméticas
  • Conversión de tipos
  • Creación y manipulación de objetos
  • Gestión de pilas (push / pop)
  • Transferencias de Control (branching)
  • Invocación y retorno a Métodos
  • Lanzar excepciones

La clave es la compatibilidad binaria. Cada sistema operativo de un host particular necesita su propia implementación de JVM y runtime. Estas JVMs interpretan el byte code semánticamente de la misma manera, pero la implementación actual puede variar. Más complicado que solo la emulación de bytecode es la implementación compatible y eficiente de las APIs java las cuales tienen que ser mapeadas para cada sistema operativo de host.

La información publicada en este blog fue obtenida de las siguientes páginas:
http://es.wikipedia.org/wiki/JDK
http://es.wikipedia.org/wiki/JVM
http://es.wikipedia.org/wiki/Java_Runtime_Environment

También puedes visitar las siguientes páginas para tener mayor información sobre el entorno JAVA y todos sus componentes.
http://pisuerga.inf.ubu.es/lsi/Invest/Java/Tuto/A_I.htm
http://www.deltaasesores.com
http://www.osmosislatina.com/java/componentes.htm