domingo, 21 de noviembre de 2010

Reporte POO

Hola! Este es mi Reporte sobre los 3 programas de diferentes lenguajes sobre la programación orientada a objetos.


Python
Para empezar voy a poner este programa que hice, que me ayudo a comprender las clases y objetos.
Un ejemplo de objeto puede ser un tinaco, en donde tendríamos atributos como la marca, el numero de mangueras conectadas, la presión etc..., el método seria cuando va a tirar agua y cuando se detiene.


En Python las clases se definen con la palabra class y luego el nombre con mayúscula al inicio después dos puntos, después de aquí va el cuerpo de la clase.

#!/usr/bin/python

class Tinaco:
    def __init__(self, agua):
        self.agua = agua
        print "Tenemos", agua, "galones de agua"
        
    def lava(self):
        if self.agua > 0:
            print "Saca agua! :)"
        else:
            print "No hay agua! :("
        
    def bana(self):
        if self.agua > 0:
            self.agua -= 1
            print "Quedan", self.agua, "galones de agua"
        else:
            print "Ya no hay :(..."
            
mi_tinaco = Tinaco(5)
print mi_tinaco.agua
mi_tinaco.lava()
mi_tinaco.bana()
mi_tinaco.bana()
mi_tinaco.bana()
mi_tinaco.bana()
mi_tinaco.bana()
mi_tinaco.lava()
print mi_tinaco.agua

El método __init__. hace que inicialice el proceso.
Para crear un nuevo objeto escribo el nombre después lo igualo a la clase y el parámetro.
Solo necesitamos un parámetro porque el otro (self) lo referencia automaticamente.


Después hago consultas hasta que el tinaco quede vació.
Captura de pantalla del programa.


Java
Este programa basado en uno que hicimos en asesorías de programación el verano pasado, se declaran 4 botones en los puntos cardinales que al momento de picarles cambia de color el BorderLayout del centro 

// librerias usadas en este programa
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Color;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

// aqui comienza nuestra clase
public class Direccion implements ActionListener {

    // todo el codigo va aqui adentro

    public void actionPerformed(ActionEvent e) {
 String cmd = e.getActionCommand();

 if (cmd.equals("NORTE")) { //si se cumple la condicion, cambia el color
     this.principal.setBackground(Color.GREEN);
 }

 if (cmd.equals("SUR")) {
     this.principal.setBackground(Color.BLUE);
 }

 if (cmd.equals("ESTE")) {
     this.principal.setBackground(Color.RED);
 }

 if (cmd.equals("OESTE")) {
     this.principal.setBackground(Color.YELLOW);
 }
 return;
    }

    private JPanel principal;
    public Direccion(JPanel p) { // constructor de Botones
 this.principal = p;
    }

    // el metodo principal
    public static void main(String[] args) {
 JFrame f = new JFrame(); // creamos la ventana nueva

 f.setSize(800, 600); // tamaño
 f.setLocation(100, 200); // posicion
 f.setTitle("Puntos cardinales"); // nombre

 // que pasa cuando lo cierro
 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 // paneles
 JPanel pBorder = new JPanel();
 JPanel p = new JPanel(); // panel del fondo
 Direccion yo = new Direccion(pBorder);
 pBorder.setLayout(new BorderLayout());
 p.setLayout(new GridLayout());
 pBorder.setBackground(Color.WHITE); //color del inicio


 JButton norte = new JButton("Norte"); //creo botones
 JButton sur = new JButton("Sur");
 JButton este = new JButton("este");
 JButton oeste = new JButton("Oeste");

 pBorder.add(norte, BorderLayout.NORTH); //los agrego al panel
 pBorder.add(sur, BorderLayout.SOUTH);
 pBorder.add(este, BorderLayout.WEST);
 pBorder.add(oeste, BorderLayout.EAST);
 pBorder.add(new JLabel("Colorsitos"), BorderLayout.CENTER);


 //agrego los listeners
 norte.addActionListener(yo);
 norte.setActionCommand("NORTE");
 sur.addActionListener(yo);
 sur.setActionCommand("SUR");
 este.addActionListener(yo);
 este.setActionCommand("ESTE");
 oeste.addActionListener(yo);
 oeste.setActionCommand("OESTE");

 //agrego el panel pBorder al principal
 p.add(pBorder);

 // hacer que este panel sea el contenido de la ventana
 f.setContentPane(p);

 // hacer que la ventana sea visible
 f.setVisible(true);

 // salir del programa
 return;
    } // termina main

} // termina la clase Direccion

Capturas de pantalla





C++
Este es un programa que tiene una clase de Cambio en donde se tienen funciones para realizar cambios en monedas, ya había realizado uno parecido pero en python sin clases, ahora este esta orientado a objetos.


#include <iostream>

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

//clase Cambio
class Cambio {
public:
 double rescambio;
 float agarrame(void);
 void dolar(float pesos);
 void euro(float pesos);
 void libras(float pesos);
};

void Cambio :: dolar(float pesos){
 rescambio = pesos / 12.95;
 cout << "El cambio a dolares es:" << endl;
 cout << rescambio << endl;
 return;
}

void Cambio :: euro(float pesos){
 rescambio = pesos / 16.44;
 cout << "El cambio a euros es:" << endl;
 cout << rescambio << endl;
 return;
}

void Cambio :: libras(float pesos){
 rescambio = pesos / 20.36;
 cout << "El cambio a libras es:" << endl;
 cout << rescambio << endl;
 return;
}

float Cambio :: agarrame(void){
 float pesos;
 cout << "Dime los pesos" << endl;
 cin >> pesos;
    return pesos;
} 

int main (int argc, char** args){
 Cambio cambiame;
 int selecciona;
 float pesos1;
 cout << "Selecciona que cambio deseas realizar:" << endl;
 cout << "1) Cambio a dolares" << endl;
 cout << "2) Cambio a euros" << endl;
 cout << "3) Cambio a libras" << endl;
 cin >> selecciona;
 
 switch (selecciona) {
  case 1:
   pesos1 = cambiame.agarrame();
   cambiame.dolar(pesos1);
   break;
   
     case 2:
   pesos1 = cambiame.agarrame();
   cambiame.euro(pesos1);
   break;
   
  case 3:
   pesos1 = cambiame.agarrame();
   cambiame.libras(pesos1);
   break;
   
 
  default:
   cout << "leea bien las intrucciones :)";
 }
 
 return 0;
}



Esto es todo de mi Reporte de programación orientada a objetos.
Espero que mi explicación les sirva, si tienen algún comentario acerca de esta entrada, espero me digan ya que estoy abierto a cualquier error.

1 comentario: