domingo, 21 de noviembre de 2010

Lenguajes orientados a objetos Reporte

C++
En este lenguaje cree una clase a la que llamé Áreas y esta contiene varios métodos para obtener las áreas de un cuadrado, rectángulo, circulo y triángulo. Todos los métodos y atributos los declaré público. La manera de definir los métodos se hace con el nombreclase::nombremetodos la forma de llamarlos es escribiendo simplemente el nombre del método.

#include <iostream>

using std::cout;
using std::endl;
using std::cin;

// Esto crea la clase Areas
class Areas {
public:
float resultado;
void triangulos(float largo, float ancho);
void cuadrado(float lados);
void circulo(float radio);
void rectangulo(float largo, float ancho);
};


/* implementar trangulos() */
void Areas :: triangulos(float x, float y)
{
resultado = (x * y)/2;
cout << "El area del triangulo es:" << endl;
cout << resultado << endl;
return;
}


/* implementar cuadrado() */
void Areas :: cuadrado(float lados)
{
resultado = lados * lados;
cout << "El area del cuadrado es:" << endl;
cout << resultado << endl;
return;
}

void Areas :: rectangulo(float x, float y)
{
resultado = x * y;
cout << "El area del rectangulo es:" << endl;
cout << resultado << endl;
return;
}

void Areas :: circulo(float radio)
{
resultado = 3.1416 * radio * radio;
cout << "El area del circulo es:" << endl;
cout << resultado << endl;
return;
}


int main (int argc, char** args)
{
// crear 2 objetos CRender
Areas area1;
int opcion;
float lados, x, y, radio;
cout << "Elige una opción" << endl;
cout << "1.-Area cuadrado" << endl;
cout << "2.-Area circulo" << endl;
cout << "3.-Area triangulo" << endl;
cout << "4.-Area rectangulo" << endl;
cin >> opcion;

switch (opcion)
{
case 1: cout << "Cual es el lado del cuadrado" << endl;
cin >> lados;
area1.cuadrado(lados);
break;
case 2: cout << "Cual es el radio del circulo" << endl;
cin >> radio;
area1.circulo(radio);
break;
case 3: cout << "Cual es la base del triangulo" << endl;
cin >> x;
cout << "Cual es la altura del triangulo" << endl;
cin >> y;
area1.triangulos(x, y);
break;
case 4: cout << "Cual es la base del rectangulo" << endl;
cin >> x;
cout << "Cual es la altura del rectangulo"<< endl;
cin >> y;
area1.rectangulo(x, y);
break;

default: cout << "Elija una opcion entre 1 y 4";
}

return (0);
}


Ejecución


Python
En python cree una ventanita con un botón y una programa parecido al que hicimos en clase, tiene una clase a la que llamé Ciudad, esta clase tiene nombre de ciudad y numero de habitantes, hicé uso de self.
Ventanita:


#!/usr/bin/env python
import pygtk
pygtk.require("2.0")
import gtk

class VentanaBoton:

def __init__(self):
self.window=gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.set_border_width(50)
self.button = gtk.Button("Botoncito")
self.window.add(self.button)
self.button.show()
self.window.show()



def main(self):
gtk.main()

if __name__ == "__main__":
ventanita = VentanaBoton()
ventanita.main()

Ejecución:


Y programa con la clase ciudad:

#!/usr/bin/env python
class Ciudad:
def __init__(self, nombre, numhabitantes):
# Asignamos valores a los atributos
self.nombrec = nombre
self.habitantes = numhabitantes
def getNombre(self):
return self.nombrec

def getNumeroHabitantes(self):
return self.habitantes


def main():
ciudad1 = Ciudad("NY", 100000)
ciudad2 = Ciudad("PARIS", 400000)


print ciudad1.getNombre()
print ciudad1.getNumeroHabitantes()
print ciudad2.getNombre()
print ciudad2.getNumeroHabitantes()

main()

Ejecución:


Y en java
Este lenguaje en su caracteristica de orientado a objetos ya lo conocía, no como python y C++ que son totalmente nuevos para mí, sin embargo si tuvé que volver a leer sobre algunas funciones que ya no recordaba exactamente que hacian, bueno el primer programita que hice en java es una ventana que tiene dos botones:


import javax.swing.*;
import java.awt.*;
class Programita extends JFrame {
JButton uno = new JButton("Primero");
JButton dos = new JButton("Anterior");

Programita(){
//Añadimos el formato de FlowLayout al JFrame
this.setLayout(new FlowLayout());
//Añadimos componentes
add(uno);
add(dos);
setTitle("Ejemplos simple java");
setSize(200,200);
setVisible(true);
}

public static void main (String []args){
new Programita();
}

}


Ejecución:


Y uno más que detecta el movimiento del ratón en la ventana y escribe en el terminal las coordenadas.


// componentes GUI
import javax.swing.*;
import java.awt.*;


// eventos
import java.awt.event.*;


public class Prueba extends JPanel // es un panel (para dibujo)
implements MouseListener, // escucha eventos de raton
MouseMotionListener, // de movimiento del cursos
ActionListener { // de botones
protected double px, py;
public Prueba(){
super(); // siempre llamar primero a super si extends
super.setBackground(Color.BLACK); // color de fondo
this.addMouseListener(this); // registrar escuchadores
this.addMouseMotionListener(this);
}


public void actionPerformed(ActionEvent e){
// que fue solicitado
String cmd = e.getActionCommand();

if (cmd.equals("EXIT")) { // si quieren salir
System.exit(1); // salir del programa
}
return;
}

public void mouseClicked(MouseEvent e){

return;
}

public void mouseEntered(MouseEvent e){

return;
}

public void mouseExited(MouseEvent e){

return;
}

public void mousePressed(MouseEvent e){

return;
}

public void mouseReleased(MouseEvent e){

return;
}

public void mouseDragged(MouseEvent e){

return;
}

public void mouseMoved(MouseEvent e){
this.px = e.getX();
this.py = e.getY();
System.out.println("Movieron " + px + " , " + py);

return;
}

public static void main(String args[]){
JFrame v = new JFrame(); // ventana
v.setTitle("Mueves el mousee!!!");
v.setLocation(250, 250); // posicionar
v.setSize(500, 300); // ajustar tamano
v.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel auxi = new JPanel(); // panel auxiliar
auxi.setLayout(new BorderLayout()); // acomodo
auxi.setBackground(Color.WHITE); // debug

Prueba o = new Prueba(); // el panel principal de dibujo

// poner los botones en otros paneles auxiliares

// para salir
JButton b = new JButton("Salir");
b.addActionListener(o);
b.setActionCommand("EXIT");
JPanel p = new JPanel();
p.add(b);
auxi.add(p, BorderLayout.SOUTH);
// poner todo el contenido a la ventana
auxi.add(o, BorderLayout.CENTER);
v.setContentPane(auxi);
v.setVisible(true);
return;
} // termina main(...)


}



Ejecución:

1 comentario: