miércoles, 19 de junio de 2013

Proyecto final " login.cpp " correspondiente al Obj. 2.2 valor 15%

Hacer un programa para calcular el volumen de figuras geométricas empleando polimorfismo, basado en POO (programación orientada a objetos), para calcular el volumen correspondiente.

Indicaciones:

Escribe un programa que ofrezca un menú de opciones, mediante el cual se pueda seleccionar calcular el volumen de las figuras geométricas: cubo, cilindro, cono y esfera. Una vez seleccionada la opción, que permita solicitar y leer el nombre de la figura y los datos necesarios para calcular el volumen correspondiente, imprimir el nombre de la figura y el volumen.
Volumen de cubo = Arista3
Volumen de cilindro = π r2 h
Volumen de cono = 1 / 3 π r2 h
Volumen de esfera = 4 / 3 π r3
Debe ofrecer el siguiente menú de opciones para solicitar la opción deseada.

VOLUMENES FIGURAS GEOMÉTRICAS
1. CUBO
2. CILINDRO
3. CONO
4. ESFERA
OPCION:

La idea es que se use una superclase abstracta Figura que contendrá el dato nombre y los métodos para establecerlo y obtenerlo; además el dato volumen, un método abstracto para calcular el volumen y un método para obtenerlo e imprimirlo. De esa superclase derivar cuatro subclases: Cubo, Cilindro,Cono y Esfera; en cada una de las cuales se heredarán los datos y los métodos de la superclase Figura. Cada subclase de éstas, deberá tener sus propios datos y los métodos necesarios para establecerlos; además del método calcular el volumen de la figura correspondiente. En virtud de que calcular volumen es un método abstracto heredado de la superficie abstracta Figura, cada una de las subclases derivadas, lo deberá implementar de acuerdo con la forma que le corresponda; aplicando el polimorfismo.

Nota: Para poder ejecutar este programa deberá pedir un nombre de usuario y una contraseña, como método de seguridad.


miércoles, 22 de mayo de 2013

Lista de programas de la Unidad 3. Herencia y sobrecarga de operadores
  1. asigna.cpp   ---|
  2. arreglo.cpp       |-> programas para Práctica 15  
  3. arrebidi.cpp ---|
  4. pract16.cpp -> programa que calcula areas de figuras geometricas
  5. pract17.cpp -> programa que calcula la nómina de empleados
  6. paso.cpp
  7. devuelto.cpp
  8. puntero.cpp
  9. herencia.cpp -> Todos estos programas son tomados
  10. herenpub.cpp --->   para evaluar las practicas 18, 19 y 20
  11. herenpu2.cpp
  12. herenpri.cpp
  13. herenjer.cpp
  14. herenmul.cpp
  15. virtual.cpp
  16. sobrecar.cpp 
  17. fecha.cpp
  18. fecha2.cpp
  19. argumen.cpp
  20. suma.cpp
  21. operab.cpp
  22. operalog.cpp
  23. unario.cpp   -------> ultimo programa de sobrecarga 
  24. fsecuen.cpp --------->Manejo de ficheros (Archivos) secuencia
  25. fbinario.cpp             fichero binario escritura 
  26. fbinlec.cpp              fichero binario de lectura 
  27. faleator.cpp            fichero aleatorio 
  28. entrada.cpp --------> usando el metodo ifstream y ofstream
  29. salida.cpp
  30. login.cpp -----------> Proyecto final del objetivo 2.2 <-----------------
Práctica 17. Manejo de clases basado en POO (programación orientada a objetos)

Propósito de la práctica: Realiza un programa que maneje clases basado en POO (programación orientada a objetos) para el cálculo de nómina de empleados.

En una empresa automotriz se tienen 3 tipos de empleados: administrativos, mecanicos y vendedores. En general, para todos los empleados se tiene los datos RFC (Registro Federal de Contribuyentes), el nombre, el departamento y el puesto. En particular; para el empleado administrativo se tiene el dato sueldo mensual; para el mecánico se tiene el precio del trabajo, tantas veces como trabajos haya realizado; y para el vendedor se tiene el precio del auto, por cada auto que vendió.


El sueldo quincenal se calcula:

  • Para el administrativo, sueldo mensual entre 2.
  • Para el mecánico, el 4% del valor total.
  • Para el vendedor, el salario mínimo, mas el 2 porciento del valor de la venta realizada.

Elaborar un programa que permita procesar los empleados de la empresa e imprimir el siguiente
reporte:
Reporte de nomina quincenal
RFC         Nombre                                             Depto.               Puesto                    Sueldo Quincena
XXXXX   XXXXXXXXXXXXXXXXXXXX    XXXXXXX       XXXXXXXX         99,999.99
XXXXX   XXXXXXXXXXXXXXXXXXXX    XXXXXXX       XXXXXXXX         99,999.99
Total 999 empleados

La idea es que se use una superclase Empleado que contendrá los datos RFC, el nombre, el departamento, y el puesto; y los métodos para establecer y obtener cada uno de los datos. De esa superclase derivar tres subclases: EmpAdmvo, EmpMecánico y EmpVendedor; en cada una de las cuales se heredarán los datos y los métodos de la superclase; además, cada subclase de estas, deberán tener sus propios datos y métodos para establecer los datos necesario, calcular el sueldo quincenal correspondiente y obtenerlo para imprimirlo. Asimismo, deberá haber una clase controlador que permita leer los datos y utilice el modelo para representar y solucionar el problema.

martes, 7 de mayo de 2013

Práctica 15. Manejo de componentes del lenguaje orientados a objetos.

  1. asigna.cpp
  2. arreglo.cpp
  3. arrebidi.cpp
Práctica 16. Manejo de herencia basado en POO.

Elabore un programa que ofrezca un menú de opciones, mediante el cual se pueda escoger calcular el área de las figuras geométricas; triangulo, cuadrado, rectángulo y círculo.

Una vez seleccionada la opción, que permita solicitar y leer el nombre de la figura y los datos necesarios para calcular el área correspondiente e imprimir el nombre de la figura y el área.

Área de triangulo = (Base * Altura) / 2
Área de cuadrado = Lado²  
Área de circulo = pi * radio²
Área de rectángulo = Base * Altura

Debe ofrecer el siguiente menú de opciones, donde está solicitando la opción deseada.

ÁREAS DE FIGURAS GEOMÉTRICAS
1. TRIANGULO
2. CUADRADO
3. RECTANGULO
4. CIRCULO
5. FIN
OPCION:

lunes, 6 de mayo de 2013

Cuestionario de la Unidad 1. Desarrollo de programas orientados a objetos

Actividad: Descarga el cuestionario del objetivo 1.2 para evaluación
Aquí puedes descargar el archivo: https://www.dropbox.com/s/ovnqj9slwkb5wf7/Objetivo1.2.pdf

lunes, 29 de abril de 2013

Práctica 14.  Realizar un programa que emplee clases, basado en POO (programación orientada a objetos) para calcular el perímetro y el área de un rectángulo. Deben verificar que longitud y ancho contengan números reales  y que el valor de ancho sea menor o igual que veinte, de lo contrario mostraran el valor de cero.
El programa debe mostrar una salida en pantalla como la siguiente:

Las formulas para usar son: Área =base*altura, Perímetro =Lado+Lado+Lado+Lado.

La clase utiliza estas variables a= altura, b=ancho o base. 


class rectangulo {
      float a,b;
      float Area,Perimetro;
public:
     void area(float a,float b);
     void perimetro(float a,float b);
};




miércoles, 24 de abril de 2013

Práctica 13. Consiste en sumar y restar números complejos de la forma a(x,y) donde "x" es la parte real y "y" la parte imaginaria, ejemplo: a(1,1) y b(2,2) el resultado de la suma seria c(3,3) y de la resta c(-1,-1), utiliza función constructora, punteros, funciones miembro, clases y objetos.

Editar el programa en turbo c++ y corregir errores sin ayuda del Profesor.

#include<iostream.h>
#include<conio.h>
//SUNMA Y RESTA DE NUMEROS COMPLEJOS DE LA FORMA a(x,y)
class complejo{
  double real;
  double comp;
public:
  complejo();
  complejo(double);
  complejo(double,double);
  complejo *suma(complejo&);
  complejo *resta(complejo&);
  double getreal();
  double getcomp();
};

complejo::complejo()
{
 real=0;
 comp=0;
}

complejo::complejo(double real)
{
 this->real=real;
 comp=0;
}

complejo::complejo(double real,double comp)
{
 this->real=real;
 this->comp=comp;
}

complejo *complejo::suma(complejo &otro)
{return new complejo(this->real+otro.real,this->comp+otro.comp);}

complejo *complejo::resta(complejo &otro)
{return new complejo(this->real-otro.real,this->comp-otro.comp);}

double complejo::getreal()
{return this->real;}

double complejo::getcomp()
{return this->comp;}

void main()
{clrscr();
 double x,y,x1,y1;
 cout<<"Dame los 2 valores del numero complejo a(x,y)"<<endl;
 cin>>x>>y;
 cout<<"Dame los 2 valores del numero complejo b(x1,y1)"<<endl;
 cin>>x1>>y1;
 complejo a(x,y);
 complejo b(x1,y1);
 cout<<"Estos son los numeros complejos a("<<a.getreal()<<","<<a.getcomp()
 <<") y b("<<b.getreal()<<","<<b.getcomp()<<")\n\n";
 complejo *s=a.suma (b);
 cout<<"La suma es:("<<s->getreal()<<","<<s->getcomp()<<")\n\n";
 complejo *r=a.resta (b);
 cout<<"La resta es:("<<r->getreal()<<","<<r->getcomp()<<")";
 delete s,r;
 getch();
}

domingo, 21 de abril de 2013

Este es el código de la práctica 12 Método de búsqueda Binaria

#include<iostream.h>
#include<conio.h>
#define max 50 //este valor depende del usuario

void ingresarArreglo(float A[max],int n)
{ int i;
  for(i=0;i<n;i++)
  { cout<<"A["<<i+1<<"]=";
    cin>>A[i];
  }
  cout<<endl;
}
void reportarVector(float V[max],int n)
{ int i;
  for(i=0;i<n;i++)//recorre el arreglo
  { cout<<V[i]<<" ";
  }
  cout<<endl;
}
//función de ordenación por el método de selección
void ordenarSeleccion(float V[max],int n)
{  int i,j,k;
   float temp;
    for(i=0;i<n-1;i++)
    {  k=i;
       temp=V[i];//el primer valor del arreglo lo asignamos a un temporal
//para luego compararlo con los demás valores del arreglo hasta encontrar el menor valor
       for(j=i+1;j<n;j++)
       { if(V[j]<temp)//si encontramos un valor que sea menor que el primer valor del arreglo (temp)
//entonces intercambiamos de posición,los mismos pasos se repetirán hasta que arreglo sea ordenado completamente
{ k=j;
  temp=V[j];
}
       }
       V[k]=V[i];
       V[i]=temp;
    }
}
//funcion de busqueda binaria,solo funciona para arreglos ordenados
int busquedaBinaria(float V[max],int n ,int dato)
{ int mitad,izq,der;
  izq=0;
  der=n-1;
  while(izq<=der)//el elemento que esta ala izquierda debe de ser menor que el de la derecha
  { mitad=(izq+der)/2;//calculamos el elemento central del arreglo hasta encontrar el valor buscado
    if(dato>V[mitad])//si el elemento buscado es mayor que el centro entonces buscamos en la segunda mitad del arreglo
     izq=mitad+1;//el primer valor del arreglo pasa hacer la mitad mas 1
    else if(dato<V[mitad])//si el elemento buscado buscado es menor que la mitad entonces buscamos en la primera mitad del arreglo
     der=mitad-1;
    else
     return mitad; //retornamos el elemento encontrado
  }
  return -1;//el elemento no existe en el arreglo
}

void main()
{  float A[max];
   int n,dato;
   int pos;
   clrscr();
   cout<<"Ingrese numero de elementos: ";
   cin>>n;
   ingresarArreglo(A,n);
   cout<<"Vector ingresado"<<endl;
   reportarVector(A,n);
   cout<<endl;
   ordenarSeleccion(A,n);
   cout<<"El vector ordenado: "<<endl;
   reportarVector(A,n);
   cout<<endl;
   cout<<"Ingrese numero a buscar: ";
   cin>>dato;
   pos=busquedaBinaria(A,n,dato);
   {  if(pos==-1)
cout<<"El dato no esta en el arreglo"<<endl;
      else
cout<<"El dato se encontro en la posicion: "<<pos+1<<endl; //Se imprime la posición del elemento
   }                                                                                                //encontrado
   getch();
}
Este es el código del programa de la práctica 11 Método de búsqueda secuencial 

#include<iostream.h>

#include<conio.h>
#define max 50 //este valor depende del usuario

void ingresarArreglo(int A[max],int n)
{ int i;
  for(i=0;i<n;i++)
  { cout<<"A["<<i+1<<"]=";
    cin>>A[i];
  }
  cout<<endl;
}
void reportarVector(int V[max],int n)
{ int i;
  for(i=0;i<n;i++)//recorre el arreglo
  { cout<<V[i]<<" ";
  }
  cout<<endl;
}
//funcion de ordenacion por el metodo de seleccion
void ordenarSeleccion(int V[max],int n)
{  int i,j,k;
   float temp;
    for(i=0;i<n-1;i++)
    {  k=i;
       temp=V[i];//el primer valor del arreglo lo asignamos a un temporal
//para luego compararlo con los demas valores del arreglo hasta encontrar el menor valor
       for(j=i+1;j<n;j++)
       { if(V[j]<temp)//si encontramos un valor que sea menor que el primer valor del arreglo (temp)
//entonces intercambiamos de posicion,los mismos pasos se repetira hasta que arreglo sea ordenado completamente
{ k=j;
  temp=V[j];
}
       }
       V[k]=V[i];
       V[i]=temp;
    }
}
//funcion de busqueda secuencial, solo funciona para arreglos ordenados y desordenados
int busquedaSecuencial(int A[max], int n, int dato)
{ int i;
  for(i=0;i<n;i++) //Buscar por todo el arreglo
  { if (A[i]==dato) //si el elemento del arreglo es igual al dato buscado
     return i; //regresa la posicion del elemento buscado
  }
  return -1; //Si no error
}

void main()
{  int A[max];
   int n,dato;
   int pos;
   clrscr();
   cout<<"Ingrese numero de elementos: ";
   cin>>n;
   ingresarArreglo(A,n);
   cout<<"Vector ingresado"<<endl;
   reportarVector(A,n);
   cout<<endl;
   ordenarSeleccion(A,n);
   cout<<"El vector ordenado: "<<endl;
   reportarVector(A,n);
   cout<<endl;
   cout<<"Ingrese numero a buscar: ";
   cin>>dato;
   pos=busquedaSecuencial(A,n,dato);
   {  if(pos==-1)
cout<<"El dato no esta en el arreglo"<<endl;
      else
cout<<"El dato se encontro en la posicion: "<<pos+1<<endl; //Se imprime la posición del elemento  
   }                                                                                                //encontrado
   getch();
}


miércoles, 10 de abril de 2013

Lista de programas y practicas de la UNIDAD 2

  1. pract5.cpp  Estos son los demás programas del obj. 1.2.1
  2. pract6.cpp
  3. barra.cpp
  4. ventana.cpp
  5. pract7.cpp
  6. pract8.cpp
  7. pract9.cpp   Estos son  los métodos de ordenamiento
  8. pract10.cpp -----------------------------------------
  9. pract11.cpp  Estos son los métodos de búsqueda 
  10. pract12.cpp  ----------------------------------------
  11. construc.cpp
  12. destruc.cpp
  13. pract13.cpp Suma y resta de números complejos
  14. conspara.cpp
  15. conspar2.cpp
  16. pract14.cpp  Calcula Área y Perímetro de un rectángulo 
  17. inline.cpp
  18. mult.cpp


Lista de programas de repaso y practicas de la UNIDAD 1

  1. dias.cpp   Estos son los programas que deben tener hasta ahora en el obj. 1.1.1
  2. trescal.cpp
  3. octal.cpp
  4. peligro.cpp
  5. if.cpp
  6. while.cpp
  7. contador.cpp
  8. conta10.cpp
  9. for1.cpp
  10. for10.cpp
  11. fact.cpp
  12. sumas.cpp
  13. ecuacion.cpp
  14. tabla.cpp
  15. dowhile.cpp
  16. mat.cpp
  17. pract1.cpp   Estos son los programas de las practicas realizadas obj. 1.2.1
  18. pract2.cpp
  19. pract3.cpp
  20. pract4.cpp


miércoles, 20 de marzo de 2013

Objetivo 1.1 Actividad a realizar: Leer los temas y contestar las preguntas relacionadas con sus propias palabras. "Uso de modelos para el diseño de programas orientados a objetos". Enviar sus preguntas y respuestas al siguiente correo: srdea@yahoo.com.mx
valor de la actividad 30%
  • ¿Qué es un caso de uso?
  • ¿Qué es una clase?
  • ¿Qué es un objeto?
TEMAS:
  • Casos de uso
Un caso de uso es una secuencia de interacciones que se desarrollarán entre un sistema y sus actores en respuesta a un evento que inicia un actor principal sobre el propio sistema. Los diagramas de casos de uso sirven para especificar la comunicación y el comportamiento de un sistema mediante su interacción con los usuarios y/u otros sistemas. O lo que es igual, un diagrama que muestra la relación entre los actores y los casos de uso en un sistema. Una relación es una conexión entre los elementos del modelo, por ejemplo la especialización y la generalización son relaciones. Los diagramas de casos de uso se utilizan para ilustrar los requerimientos del sistema al mostrar cómo reacciona a eventos que se producen en su ámbito o en él mismo.
  • Definición teórica de clase
La clase es un modelo o prototipo que define las variables y métodos comunes a todos los objetos de cierta clase. También se puede decir que una clase es una plantilla genérica para un conjunto de objetos de similares características.
Por otro lado, una instancia de una clase es otra forma de llamar a un objeto. En realidad no existe diferencia entre un objeto y una instancia. Sólo que el objeto es un término más general, pero los objetos y las instancias son ambas representación de una clase.
  • Objetos
Entender que es un objeto es la clave para entender cualquier lenguaje orientado a objetos.
    Existen muchas definiciones que se le ha dado al Objeto. Primero empecemos entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor. Digamos que para leer este artículo lo hacemos a través del monitor y una computadora, ambos son objetos, al igual que nuestro teléfono celular, un árbol o un automóvil.
      Analicemos un poco más a un objeto del mundo real, como la computadora. No necesitamos ser expertos en hardware para saber que una computadora está compuesta internamente por varios componentes: la tarjeta madre, el chip del procesador, un disco duro, una tarjeta de vídeo  y otras partes más. El trabajo en conjunto de todos estos componentes hace operar a una computadora.
        Internamente, cada uno de estos componentes puede ser sumamente complicado y puede ser fabricado por diversas compañías con diversos métodos de diseño. Pero nosotros no necesitamos saber cómo trabajan cada uno de estos componentes, como saber que hace cada uno de los chips de la tarjeta madre, o cómo funciona internamente.
          Definición teórica: Un objeto es una unidad de código compuesto de variables y métodos relacionados.