domingo, 21 de noviembre de 2010

LENGUAJES ORIENTADOS A OBJETOS - Reporte 8

Lenguajes de Programación - Semana 14 - Reporte 8

C++


Este programa que hice en C++ genera un buen amigo que se preocupa por ti :), llamado "Fulanito", fulanito es un objeto, los objetos de su clase tienen lo que yo llame "memoria", la memoria se divide en tres atributos, un string que almacena tu nombre y 2 enteros que almacenan las 2 respuestas que des a las 2 preguntas que te hará nuestro amigo. A su vez se implementan 3 métodos, uno de presentación y los otros 2 son cuando fulanito te formula las 2 preguntas.
#include <iostream>
#include <string>
using namespace std;

class Amigo {
  string nombre;
  int pre1, pre2;
public:
  void presentacion();
  int pregunta1();
  void pregunta2();
};

void Amigo::presentacion() {
  cout << "\nHola, me llamo Fulanito :), Como te llamas?" << endl;
  getline(cin, nombre);
  cout << "\nHola " << nombre << ", mucho gusto!!" << endl;
  return;
}

int Amigo::pregunta1() {
  cout << "\nY como has estado" << endl;
  cout << "\n\t1. Bien :)\t\t2. Mal :(" << endl;
  cin >> pre1;
  if (pre1 == 1) {
    cout << "\nQue bueno, yo tambien estoy muy bien :)" << endl;
    return pre1;
  } else
    return pre1;
}

void Amigo::pregunta2 () {
  cout << ":( cuentame porque estas mal... " << endl;
  cout << "\n1. Estoy triste\t\t2. Estoy enfermo" << endl;
  cin >> pre2;
  if (pre2 == 1)
    cout << "No estes triste, hoy es un lindo dia, vamos a pasear :)" << endl;
  else if (pre2 == 2) 
    cout << "Bueno, deberias ir a ver al medico y descansar todo el dia :)" << endl;
  else
    return;
}

int main(int argc, char** args) {
  Amigo fulanito;
  int x;
  fulanito.presentacion();
  x = fulanito.pregunta1();
  if (x == 2) {
    fulanito.pregunta2();
  }
  return 0;
}

DESCARGA: amigo.cpp
Para compilar: g++ -o amigo amigo.cpp
Para ejecutar: ./amigo

EJECUCIÓN


Python


Para mi programa en Python decidí practicar la herencia múltiple, una caracteristica de la Programacion Orientada a Objetos de este lenguaje.
Declare muchas clases, cada una parecida pero diferente a las demás, y despues declare otras mas cuyo fin es heredar los atributos de las anteriores para asi generar un solo mensaje concatenado.
#!/usr/bin/python

class Mamifero:
    def tipo (self):
        print "Es mamifero, tiene pelo y es viviparo."

class Reptil:
    def tipo (self):
        print "Es reptil, tiene sangre fria y es oviparo."

class Ave:
    def tipo (self):
        print "Es un ave, tiene plumas y alas por lo que puede volar."

class Insecto:
    def tipo (self):
        print "En un insecto, come hojas, tiene antenas, tres pares de patas y exoesqueleto."

class Pez:
    def tipo(self):
        print "Es un pez, tiene escamas, es oviparo y respira por sus branquias."

class Acuatico:
    def desplazar (self):
        print "Como vive en el agua este animal nada y no se como duermen :p."

class Terrestre:
    def desplazar (self):
        print "Como vive en la tierra este animal camina sobre sus patas."

class Perro(Mamifero, Terrestre):
    def caracteristicas(self):
        print "\nEl perro come todo lo que le den y tiene 4 patas."

class Cocodrilo(Reptil, Terrestre):
    def caracteristicas(self):
        print "\nEl cocodrilo se come a otros animales y tiene 4 patas"

class Aguila(Ave):
    def caracteristicas(self):
        print "\nLas aguilas son carnivoras, cazan a sus presas."

class Hormiga(Insecto, Terrestre):
    def caracteristicas(self):
        print "\nLas hormigas cavan sus hogares bajo la tierra."

class Salmon(Pez, Acuatico):
    def caracteristicas(self):
        print "\nEl salmon es un pez espectacular, come otros peces mas pequenos que el y crustaceos, hacen el viaje mas impresionante del reino animal al regresar al lugar donde nacieron."

def main():
    print "\n1. Perro\t\t2. Cocodrilo"
    print "3. Aguila\t\t4. Hormiga"
    print "5. Salmon"
    x = input("Elige uno ->")
    if x == 1:
        obj = Perro()
        obj.caracteristicas()
        obj.desplazar()
        obj.tipo()
    elif x == 2:
        obj = Cocodrilo()
        obj.caracteristicas()
        obj.desplazar()
        obj.tipo()
    elif x == 3:
        obj = Aguila()
        obj.caracteristicas()
        obj.tipo()
    elif x == 4:
        obj = Hormiga()
        obj.caracteristicas()
        obj.desplazar()
        obj.tipo()
    elif x == 5:
        obj = Salmon()
        obj.caracteristicas()
        obj.desplazar()
        obj.tipo()
    else:
        print "\nOpcion no valida"

if __name__ == "__main__" :
    main()

DESCARGA: animales.py
Para modificar permisos: chmod u+x animales.py
Para interpretar: ./animales.py

EJECUCIÓN


Java


Por último en Java, decidí implementar una calculadora super sencilla, con varios errores porque no he implementado las condiciones para los números negativos, pero funciona con números positivos. Toda la visualizacion es dentro de una ventana generada con las librerias de Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Calculadora extends JFrame {

    JTextField pantalla;
    double resultado;
    String operacion;
    JPanel numeros, operaciones;
    boolean nuevaOperacion = true;

    public Calculadora() {
        super();
        setSize(200, 250);
        setTitle("Calculadora");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setResizable(false);

        JPanel panel = (JPanel) this.getContentPane();
        panel.setLayout(new BorderLayout());

        pantalla = new JTextField("0", 20);
        pantalla.setHorizontalAlignment(JTextField.RIGHT);
        pantalla.setEditable(false);
        pantalla.setBackground(Color.WHITE);
        panel.add("North", pantalla);

        numeros = new JPanel();
        numeros.setLayout(new GridLayout(4, 3));

        for (int n = 9; n >= 0; n--) {
            BotonNumero("" + n);
        }
        BotonNumero(".");

        panel.add("Center", numeros);

        operaciones = new JPanel();
        operaciones.setLayout(new GridLayout(6, 1));

        BotonOperacion("C");
        BotonOperacion("+");
        BotonOperacion("-");
        BotonOperacion("X");
        BotonOperacion("/");
        BotonOperacion("=");

        panel.add("East", operaciones);
    }

    private void BotonNumero(String digito) {
 JButton b = new JButton();
 b.setText(digito);
 b.addMouseListener(new MouseAdapter() {
  
  @Override
      public void mouseReleased(MouseEvent e) {
      JButton b = (JButton) e.getSource();
      numpresionado(b.getText());
  }
     });
 numeros.add(b); 
    }

    private void BotonOperacion(String operacion) {
        JButton b = new JButton(operacion);
        b.setForeground(Color.BLACK);
        b.addMouseListener(new MouseAdapter() {
      
  @Override
      public void mouseReleased(MouseEvent e) {
      JButton b = (JButton) e.getSource();
      operpresionado(b.getText());
  }
     }); 
        operaciones.add(b);
    }

    private void numpresionado(String digito) {
        if (pantalla.getText().equals("0") || nuevaOperacion) {
            pantalla.setText(digito);
        } else {
            pantalla.setText(pantalla.getText() + digito);
        }
        nuevaOperacion = false;
    }

    private void operpresionado(String tecla) {
        if (tecla.equals("=")) {
            calcular();
        } else if(tecla.equals("C")) {
            resultado = 0;
            pantalla.setText("");
            nuevaOperacion = true;
        } else {
            operacion = tecla;
            if((resultado > 0) && !nuevaOperacion) {
                calcular();
            } else {
                resultado = new Double(pantalla.getText());
            }
        }
        nuevaOperacion = true;
    }

    private void calcular() {
        if (operacion.equals("+")) {
            resultado += new Double(pantalla.getText());
        } else if (operacion.equals("-")) {
            resultado -= new Double(pantalla.getText());
        } else if (operacion.equals("/")) {
            resultado /= new Double(pantalla.getText());
        } else if (operacion.equals("X")) {
            resultado *= new Double(pantalla.getText());
        }
        pantalla.setText("" + resultado);
        operacion = "";
    }

    public static void main(String[] args) {
        Calculadora c = new Calculadora();
        c.setVisible(true);
    }
}

DESCARGA: Calculadora.java
Para compilar: javac Calculadora.java
Para ejecutar: java Calculadora

EJECUCIÓN

1 comentario: