lunes, 27 de agosto de 2012

UNIDAD I: CONCEPTOS BASICOS

TAREA I


3  DEFINICIONES DE PROGRAMACIÓN ORIENTADA A OBJETOS

1. La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación.

2. La orientación a objetos es un paradigma de programación que facilita la creación de software de calidad por sus factores que potencian el mantenimiento, la extensión y la reutilización del software generado bajo este paradigma.La programación orientada a objetos trata de amoldarse al modo de pensar del hombre y no al de la máquina. Esto es posible gracias a la forma racional con la que se manejan las abstracciones que representan las entidades del dominio del problema, y a propiedades como la jerarquía o el encapsulamiento.El elemento básico de este paradigma no es la función (elemento básico de la programación estructurada), sino un ente denominado objeto. Un objeto es la representación de un concepto para un programa, y contiene toda la información necesaria para abstraer dicho concepto: los datos que describen su estado y las operaciones que pueden modificar dicho estado, y determinan las capacidades del objeto.Java incorpora el uso de la orientación a objetos como uno de los pilares básicos de su lenguaje.

3. Se puede hablar de Programación Orientada a Objetos cuando se reúnen las características de: abstracción, encapsulación, herencia y polimorfismo; y los conceptos básicos que las forman: objetos, mensajes, clases, instancias y métodos.

  • Un objeto es una encapsulación abstracta de información, junto con los métodos o procedimientos para manipularla. Un objeto contiene operaciones que definen su comportamiento y variables que definen su estado entre las llamadas a las operaciones.
  • Una clase equivale a la generalización o abstracción de un tipo específico de objetos.
  • Un mensaje representa una acción a tomar por un determinado objeto.
  • Una instancia es la concreccion de una clase.
  • Un método consiste en la implementación en una clase de un protocolo de respuesta a los mensajes dirigidos a los objetos de la misma. La respuesta a tales mensajes puede incluir el envío por el método de mensajes al propio objeto y aun a otros, también como el cambio del estado interno del objeto.


DEFINICIÓN PROPIA DE PROGRAMACIÓN ORIENTADA A OBJETOS

En lo personal la programación orientada a objetos es un paradigma de programacion o  es una tecnia para poder llevar a cabo la tarea de diseñar aplicaciones y programas en un lenguaje de programamcion en especifico como se conoce el mas comun es el JAVA.


TAREA 2

MAPA MENTAL ELABORADO EN  XMIND




TAREA 3


PRESENTACIÓN PREZI

http://prezi.com/2jen0lpkdcsn/edit/#15_26465720



UNIDAD II: EL PARADIGMA DE ORIENTACIÓN A OBJETOS

TAREA 1

PRESENTACIÓN PREZI EN EQUIPO


TAREA 2


1.    ¿QUÉ ES PROGRAMACIÓN ORIENTADA A OBJETOS?
Es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, cohesión, abstracción, polimorfismo, acoplamiento y encapsulamiento.
2.    ¿MENCIONE ALGUNAS DE LAS VENTAJAS DE LA PROGRAMACION ORIENTADA A OBJETOS?
ü  Fomenta la reutilización y extensión del código.
ü  Permite crear sistemas más complejos.
ü  Relacionar el sistema al mundo real.
ü  Facilita la creación de programas visuales.
ü  Construcción de prototipos
ü  Agiliza el desarrollo de software
ü  Facilita el trabajo en equipo
ü  Facilita el mantenimiento del software
ü  Lo interesante de la POO es que proporciona conceptos y herramientas con las cuales se modela y representa el mundo


3.    ¿Qué SON LOS COMPONENTES EN PROGRAMACION ORIENTADA A OBJETOS?
Un componente es una clase de uso específico, lista para usar, que puede ser configurada o utilizada de forma visual, desde el entorno de desarrollo.
La principal diferencia, respecto a una clase normal, es que la mayor parte del trabajo lo podemos hacer de forma visual, con el ratón y ajustando las opciones que se nos ofrece en nuestro entorno.
4.    ¿Cuáles SON LOS TIPOS DE COMPONENTES QUE EXISTEN?
ü  Componentes visuales
ü  Componentes no visuales

5.    ¿QUÉ SON LOS COMPONENTES VISUALES?
Los componentes visuales son aquellos que, al utilizarlos, muestran algún elemento (o dibujo) en la pantalla y es el usuario de nuestros programas el que interactúa con él. El componente es el principal responsable de dibujar en la pantalla lo que sea oportuno, dependiendo de su estado, del valor de sus atributos, etc. Hay muchos componentes de este tipo, como pueden ser los botones (TButton), etiquetas de texto (TLabel), formas (TShape), etc.
6.    ¿QUÉ SON LOS COMPONENTES NO VISUALES?
Los componentes no visuales son aquellos que no aparecen en la ventana, y se insertan en un formulario para que el programador los utilice. Son más fáciles de programar que los componentes visuales, ya que no tienen ningún tipo de interfaz gráfico. Ejemplos de componentes no visuales podrían ser un temporizador (TTimer), una tabla (TTable) o una conexión a base de datos (TConnection, TSQLConnection, etc.).
7.    ¿CUÁLES SON LOS CONCEPTOS FUNDAMENTALES DE LA PROGRAMACIÓN ORIENTADA A OBJETOS?
ü  Clase
ü  Herencia
ü  Objeto
ü  Método
ü  Evento
ü  Mensaje
ü  Propiedad o atributo
ü  Estado interno

8.    ¿QUÉ ES UNA CLASE?
Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
9.    ¿QUÉ ES LA RELACIONES ENTRE CLASES?
Las relaciones entre clases juegan un papel muy importante en el modelo de objetos. Las clases, al igual que los objetos, no existen de modo aislado. Por esta razón existirán relaciones entre clases y entre objetos.
Las relaciones entre clases, se deben a dos razones: 1) una relación de clases puede indicar algún tipo de compartición 2) una relación entre clases puede indicar algún tipo de conexión semántica.

10. ¿MENCIONE CÓMO SE CREA UNA CLASE?
Para crear una clase se utiliza la palabra reservada class y a continuación el nombre de la clase. La definición de la clase se pone entre las llaves de apertura y cierre. El nombre de la clase empieza por letra mayúscula.
class Rectangulo{
//miembros dato
//funciones miembro
}
 
11. ¿QUÉ ES UNA HERENCIA?
La herencia es la capacidad que tiene una clase de derivar las propiedades y métodos de otra
12. ¿QUÉ ES UN OBJETO?
Es una entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos) los mismos que consecuentemente reaccionan a eventos. Se corresponde con los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa). Es una instancia a una clase.
13. ¿MENCIONE SON LOS COMPONENTES DE UN OBJETO?
ü  Atributos,
ü  Identidad,
ü  Relaciones
ü  Métodos

14. ¿QUÉ ES LA IDENTIFICACIÓN DE UN OBJETO?
Un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.
15. ¿QUÉ ES LA COMUNICACIÓN ENTRE OBJETOS?
Los objetos realizan acciones cuando ellos reciben mensajes. El mensaje es esencialmente una orden que se envía a un objeto para indicarle que realice alguna acción. Esta técnica de enviar mensajes a objetos se denomina paso de mensajes. Mensajes y métodos son dos caras de la misma moneda. Los métodos son los procedimientos que se invocan cuando un objeto recibe un mensaje. En terminología de programación tradicional, un mensaje es una llamada a una función.
16. ¿QUÉ ES UN MÉTODO?
Es un Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto.
17. ¿QUÉ ES UN EVENTO?
Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.
18. ¿QUÉ ES UN MENSAJE?
Es una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
19. ¿QUÉ ES PROPIEDAD O ATRIBUTO?
Es un contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y cuyo valor puede ser alterado por la ejecución de algún método.
20. ¿QUÉ ES EL ESTADO INTERNO?
Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase.
21. ¿QUÉ SON  LAS VARIABLE DE INSTANCIA?
indica las variables de instancia, también conocidas como atributos de instancia. En Smalltalk, estas variables tienen visibilidad protegida aunque en general se las trata como si fueran privadas. En este caso tenemos las variables de instancia numero y saldo. Un detalle interesante es que las variables son protegidas de las instancia, Las variables pueden ser tipos primitivos como int, char, etc

22. ¿MENCIONE CUÁLES SON LAS CARACTERÍSTICAS DE LA PROGRAMACIÓN ORIENTADA A OBJETOS?
ü  Abstracción
ü  Encapsulamiento
ü  Modularidad
ü  Principio de ocultación
ü  Polimorfismo
ü  Herencia
ü  Recolección de basura

23. ¿QUÉ ES LA ABSTRACCIÓN?
Esta denota las características esenciales de un objeto, donde se capturan sus comportamientos. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.
24. ¿MENCIONE LOS TIPOS DE DATOS ABSTRACTOS? 
ü  Tipo definido por el programador.
ü  Conjunto de valores (podría ser infinito) y número deoperaciones primitivas.
ü  Los usuarios pueden crear variables para el tipodefinido.

25. ¿QUÉ ES 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 cohesión de los componentes del sistema.
26. ¿QUÉ LA MODULARIDAD?
Se denomina Modularidad a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la Modularidad de diversas formas.
27. ¿QUÉ ES EL 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.
28. ¿QUÉ ES EL POLIMORFISMO?
Son 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.
29. ¿QUÉ ES LA RECOLECCIÓN DE BASURA?
La recolección de basura es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, 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.
30. ¿MENCIONE ALGUNOS EJEMPLOS DE LOS LENGUAJES DE PROGRAMACIÓN?
ü  C++
ü  Genie
ü  Java
ü  JavaScript
ü  Ruby
ü  Visual FoxPro (en su versión 6)
ü  Visual Basic 6.0


UNIDAD III: CLASES Y OBJETOS

TAREA I

1.    ¿CÓMO REPRESENTA UNA CLASE EN LA UML?
En el UML un rectángulo es el símbolo que representa una clase. El nombre de la clase es por convención, una palabra con la primera letra en mayúscula y normalmente se coloca en la parte superior del rectángulo. Si el nombre de su clase corresponde de dos palabras, únalas e inicie cada una con mayúscula  (como en la LavadoraIndustrial)
2.    ¿QUÉ INFORMACIÓN PUEDE MOSTRAR EN UN SÍMBOLO DE CLASE?
El nombre de la clase es, por convención, una palabra con la primera letra en mayúscula y normalmente se coloca en la parte superior del rectángulo.

3.    ¿QUÉ ES RESTRICCIÓN?
Una condición u obligación semántica. Algunas restricciones están predefinidas en el UML, otras pueden ser definidas por el usuario. Las restricciones son uno de los tres mecanismos de extensión del UML. Es un texto libre bordeado por llaves; este texto especifica una o varias reglas que sigue una cierta clase.

4.    ¿PARA QUÉ ADJUNTARÍA UNA NOTA A UN SÍMBOLO DE CLASE?
Para proporcionar mayor información a una clase



UNIDAD IV: CONSTRUCCION DE CLASES
http://prezi.com/-o7pwme_gvbr3/-constructores-y-destr-uctores/

PROGRAMAS
// PROGRAMA 4.1
#include<conio.h>
//#include<stdio.h>
#include <iostream>
using namespace std;
inline float mul (float x, float y)
{
       return (x*y);
       }
       inline double div(double p, double q)
       {
              return (p/q);
              }
              int main ()
              {
                  float a=12.345;
                  float b=9.82;
                 
                  cout << mul(a,b)<< "\n";
                  cout << div(a,b)<< "\n";
                 
                  //return (0);
                  getch();
                  }
//PROGRAMA 4.2
#include <iostream>
#include<conio.h>
using namespace std;
int main()
{
    float cantidad;
   
    float valor(float p, int n, float r = 0.15);  //prototipo
    float imprimeLinea(char ch='*', int len = 40);  //prototipo
   
    imprimeLinea();      //utiliza los valores predeterminados
   
    cantidad = valor(5750.00, 4);            //utiliza el valor
                            //predeterminado para el tercer argumento
                           
    cout << "\n Valor Final = " << cantidad << "\n\n";
   
    imprimeLinea();      // utiliza el valor predeterminado
                             // para el 2° argumento
    getch ();
    return 0;
}
/***********************************************************************/
float valor(float p, int n, float r)
{
      int annio = 1;
      float suma = p;
      while (annio <= n)
      {
            suma = suma * (1 + r);
            annio = annio + 1;
      }
      return suma;
}
void imprimeLinea(char ch, int len)
{
     for (int i=1; i<=len; i++) printf("%c", ch);
     printf("\n");
}           
//PROGRAMA 4.3
// la funcion volumen() se sobrecarga tres veces
#include <iostream>
#include<conio.h>
using namespace std;
// declaraciones (prototipos)
int volumen(int);
double volumen(double, int);
long volumen(long, int, int);
int main()
{
    cout << volumen(10) << "\n";
    cout << volumen(2.5, 8) << "\n";
    cout << volumen(100L, 75, 15) <<"\n";
    getch ();
    return 0;
}
//definicion de las funciones
int volumen(int s)  //cubo
{
    return (s*s*s);
}
double volumen(double r, int h)  // cilindro
{
       return (3.14519*r*r*h);
}
long volumen(long l, int b, int h)  // caja rectangular
{
     return (l*b*h);
}

UNIDAD V: REUTILIZACION DE CODIGOS


UNIDAD  5.-OBJETOS  Y CLASES:  PROGRAMAS
//PROGRAMA 5.1
#include <iostream>
#include <conio.h>

using namespace std;
class articulo
{
   int numero; //privado por defecto
   float coste; //privado por defecto
   public:
      void putdata(int a, float b); //declaracion de prototipo,
                                   // a defenir posteriormente
   //funcion definida dentro de la clase

   void getdata(void);
        {
        cout << "numero :" << numero << "\n";
        cout << "coste  :" << coste <<  "\n";
        }
    };

        //.......................definicion de funcion miembro...................
        void articulo :: putdata (int a, float b) //usa etiqueta de pertenencia
        {
             numero = a; //variables privadas
             coste = b; //usadas directamente
             }
             //..............programa principal.................................
            
             int main ()
             {
                 articulo x; //crea objeto x
                
                 cout << "\nobjeto x " << "\n";
                
                 x.putdata(100,299.95);   //llama a funcion miembro
                 x.getdata();            //llama a funcion miembro
                 
                  articulo y;             // crea otro objeto
                 
                  cout << "\nobjeto y" << "\n";
                 
                  y.putdata(200, 175.50);
                  y.getdata();
                  
                  getch ();
                  return 0;
                  }

//PROGRAMA 5.2
#include <iostream>
#include <conio.h>

using namespace std;
class set
{
      int m, n;
      public:
             void leer(void);
             void mostrar(void);
             int mayor(void);
             };
            
             int set :: mayor(void)
             {
                 if(m >= n)
                 return (m);
                 else
                 return (n);
                 }
                 void set :: leer(void)
                 {
                      cout << "introduzca valores de m y n" << "\n";
                      cin >> m >> n;
                      }
                     
                      void set :: mostrar (void)
                      {
                           cout << "mayor valor = "
                           << mayor () << "\n"; // llamada a funcion miembro
                           }
                           int main ()
                           {
                               set A;
                               A.leer();
                               A.mostrar();
                              
                               getch ();
                               return 0;
                               }

//PROGRAMA 5.3
#include <iostream>
#include <conio.h>
#include <match.h>

using namespace std;

const m=50;

class ARTICULOS
{
      int codigoArticulo[m];
      float precioArticulo[m];
      int cuenta;
      public:
             void CNT(void)(cuenta = 0;)             //funcion inizializada a 0
             void obtenerArticulo(void);
             void mostrarSuma(void);
             void eliminar (void);
             void mostrarArticulos(void);
             };
            
//===================================================================================
 void ARTICULOS :: obtenerArticulo(void)           //asigna valores a
                                                   //miembros de datos de articulo
   {
     cout << " Introduzca codigo de articulo :";
     cin >> codigoArticulo[cuenta];
     cout << " Introduzca precio de articulo :";
     cin >> precioArticulo[cuenta];
     count++;
     }
     void ARTICULOS :: mostrarSuma(void)    //muestra el valor total
                                            // de todos los articulos
     {
     float sum = 0;
     for (int i=0; i<cuenta; i++)
     sum = sum + precioArticulo[i];
     cout << "\nValor total :" << sum << "\n";
     }
     void ARTICULOS :: eliminar(void)      //elimina un articulo
     {
          int a;
          cout << " Introduzca codigo de articulo :";
          cin >> a;
          for (int i=0; i<cuenta; i++)
          if (codigoArticulo[i]== a)
          precioArticulo[i]=0;
          }
         
          void ARTICULOS :: mostrarArticulos(void)  //muestra articulos
          {
               cout << "\nCodigo Precio\n";
              
               for (int i=0; i<count; i++)
               {
                   cout <<"\n" << codigoArticulo[i];
                   cout <<"  " << precioArticulo[i];
                   }
                   cout << "\n";
                   }
//============================================================================
    
     int main()
     {
         ARTICULOS pedido;
         pedido.CNT();
         int x;
         do                 //bucle do.........while
         {
               cout << "\n Puede hacer lo siguiente;"
               << "Introduzca el numero adecuado \n";
               cout << "\n1 : Añadir un articulo";
               cout << "\n2 : Mostrar el valor total";
               cout << "\n3 : Eliminar un articulo";
               cout << "\n4 : Mostrar todos los articulos";
               cout << "\n5 : Salir";
               cout << "\n\n : ¿Cual es su opcion?";
              
               cin < x;
              
               switch (x)
               {
                      case 1 : pedido.obtenerArticulo(); break;
                      case 2 : pedido.mostrarSuma(); break;
                      case 3 : pedido.eliminar(); break;
                      case 4 : pedido.mostrarArticulos(); break;
                      case 5 :  break;
                      default : cout << " Opcion incorrecta\n";
                      }
                     
                      } while (x != 5);        //fin de bucle do......while
                     
                      getch ();
                      return 0;
                      }
                     
      //PROGRAMA 5.4
#include <iostream>
#include <conio.h>

using namespace std;
class articulo
{
      static int cuenta;
      int numero;
      public:
             void introducirdatos(int a)
             {
                  numero = a;
                  cuenta++;
                  }
                  void vercuenta(void)
                  {
                       cout << "cuenta: ";
                       cout << cuenta << "\n";
                       }
                       };
                       int articulo :: cuenta;
                       int main ()
                       {
                           articulo a, b, c;  //cuenta esta inicializado a cero
                           a.vercuenta();         // mostrar cuenta
                           b.vercuenta();
                           c.vercuenta();
                          
                           a.introducirdatos(100); //introduce datos en a
                           b.introducirdatos(200); //introduce datos en b
                           c.introducirdatos(300); //introduce datos en c
                          
                           cout << "despues de cargar los datos " << "\n";
                          
                           a.vercuenta();   //mostrar cuenta
                           b.vercuenta();
                           c.vercuenta();
                          
                           getch ();
                           return 0;
                           }
//PROGRAMACION  5.5
#include <iostream>
#include<conio.h>
using namespace std;
class prueba
{
      int codigo;
      static int cuenta; // variable mienbro estatica
      public:
             void asignarcodigo(void)
             {
                  codigo=++cuenta;
                  }
                  void mostrarcodigo(void)
                  {
                       cout <<" numero de objeto: "  <<codigo<<  "\n";
                       }
                       static void mostrarcuenta(void)//funcion mienbro estatica
                       {
                              cout << "cuenta: " << cuenta<< "\n";
                              }
                              };
                              int prueba :: cuenta;
                              int main()
                              {
                                  prueba t1, t2;
                                 
                                  t1.asignarcodigo();
                                  t2.asignarcodigo();
                                 
                                  prueba :: mostrarcuenta(); // acceso a la funcion
                                 
                                  prueba t3;
                                  t3.asignarcodigo();
                                 
                                  prueba :: mostrarcuenta();
                                 
                                  t1.mostrarcodigo();
                                  t2.mostrarcodigo();
                                  t3.mostrarcodigo();
                                 
                                 
                                  getch ();
                                  return 0;
                                  }
//programa 5.6

#include <iostream>
#include <conio.h>
using namespace std;

class empleado
{
      char nombre[30];  // cadena miembro de la clase
      float edad;
      public:
             void putdata(void);
             void getdata(void);
             };
             void empleado :: putdata(void)
             {
                  cout << "introduzca el nombre: ";
                  cin >> nombre;
                  cout << "introduzca la edad: ";
                  cin >> edad;
                 
                  }
                  void empleado :: getdata(void)
                  {
                       cout << "Nombre: " << nombre << "\n";
                       cout << "Edad: " << edad << "\n";
                       
                       }
                       const int tamanyo=3;
                       int main()
                       {
                           empleado directivo[tamanyo];
                           for(int i=0; i<tamanyo; i++)
                           {
                                   cout << "\nDetalles del directivo" << i+1 << "\n";
                                   directivo[i].putdata();
                                   }
                                   cout << "\n";
                                   for(int i=0; i<tamanyo; i++)
                                   {
                                            cout << "\ndirectivo" << i+1 << "\n";
                                            directivo[i].getdata();
                                            }
                                          getch ();
                                            return 0;
                                            }

//programa 5.7

#include <iostream>
#include <conio.h>
using namespace std;

class hora
{
      int horas;
      int minutos;
      public:
             void introducirhora(int h, int m)
             { horas = h; minutos = m; }
             void verhora(void)
             {
                  cout << horas << " horas y ";
                  cout << minutos << "minutos " << "\n";
                  }
                  void suma(hora, hora);    //declaracion con objetos
                                          //como argumentos
                                          
};
void hora :: suma(hora t1, hora t2)  //t1, t2 son objetos
{
     minutos = t1.minutos + t2.minutos;
     horas = minutos/60;
     minutos= minutos%60;
     horas = horas + t1.horas + t2.horas;
     }
     int main()
     {
         hora T1, T2, T3;
         T1.introducirhora(2,45); //introducir T1
         T2.introducirhora(3,30); //introducir T2
        
         T3.suma(T1,T2); // T3=T1+T2
        
         cout << " T1= "; T1.verhora();  //mostrar T1
           cout << " T2= "; T2.verhora();  //mostrar T2
             cout << " T3= "; T3.verhora();  //mostrar T3
             getch ();
             return 0;
             }

//programa 5.8

#include <iostream>
#include <conio.h>

using namespace std;

class muestra
{
      int a;
      int b;
      public:
             void setvalue() {a=25; b=40; }
             friend float media(muestra s);
             };
             float media(muestra s)
             {
                   return float(s.a+ s.b)/2.0;
                   }
                   int main()
                   {
                       muestra X;  //objeto X
                       X.setvalue();
                       cout << "Valor medio " << media(X) << "\n";
                       getch ();
                       return 0;
                       }

//programa 5.9

#include <iostream>
#include <conio.h>

using namespace std;
class ABC; // declaracion adelantada
//-----------------------------------------------------------//
class XYZ
{
      int x;
      public:
             void setvalue(int i) {x = i;}
             friend void max(XYZ, ABC);
             };
//----------------------------------------------------------//
class ABC
{

      int a;
      public:
             void setvalue(int i) {a = i;}
             friend void max(XYZ, ABC);
             };
        
//---------------------------------------------------------//
void max(XYZ m, ABC n) //definicion de amiga
{
     if(m.x >= n.a)
     cout << m.x;
     else
     cout << n.a;
     };
    
     //-------------------------------------------------//
     int main()
     {
         ABC abc;
         abc.setvalue(10);
         XYZ xyz;
         xyz.setvalue(20);
         max(xyz, abc);
       
         getch ();
        
         return 0;
         }
        
        //programa 5.10

#include <iostream>
#include <conio.h>
using namespace std;
class clase_2
class clase_1
{
      int valor1;
     
      public:
            
              void indata(int a) {valor1 = a;}
             void display(void) {cout << valor1 << "\n";}
             friend void exchange(clase_1 &, clase_2 &);
             }
             class clase_2
             {
                   int valor2;
                   public:
                          void indata(int a) {valor2 = a;}
                          void display(void) {cout << valor2 << "\n";}
                          friend void exchange(clase_1 &, clase_2 &);
                          }
                         
                  
                               void exchange(clase_1 & x, clase_2 & y)
                          {
                               int temp = x.valor1;
                               x.valor1 = y.valor2;
                               y.valor2 = temp
                               }
                              int main()
                               {
                                   clase_1 C1;
                                   clase_2 C2;
                                  
                                   C1.indata(100);
                                   C2indata(200);
                                  
                                   cout << "Valores antes de intercambiar" << "\n";
                                   C1.display();
                                   C2.display();
                                   exchange(C1, C2); // intercambio de valores
                                   cout << "Valores despues del intercambio " << "\n";
                                   C1.display();
                                   C2.display();
                                  
                                   getch ();
                                  
                                   return 0;
                                   }
                         
//programa 5.11

#include <iostream>
#include <conio.h>

using namespace std;
class complejo      //forma x + iy
{
      float x;      //parte real
      float y;      //parte imaginaria
      public:
              void input(float real, float imag)
              {x = real; y = imag;}
              friend complejo sum(complejo, complejo);
              void show(complejo);
              };
              complejo sum(complejo c1, complejo c2)
              {
                       complejo c3;     // crea el objeto c3
                       c3.x = c1.x + c2.x;
                       c3.y = c1.y + c2.y;
                       return(c3);       //devuelve el objeto c3
                       }
                       void complejo :: show(complejo c)
                       {
                            cout << c.x << " + j" << c.y << "\n";
                            }
                            int main()
                            {
                                complejo A, B, C;
                                A.input(3.1, 5.65);
                                B.input(2.75, 1.2);
                                C = sum(A,B);  //C = A + B
                                cout << "A = "; A.show(A);
                                cout << "B = "; B.show(B);
                                cout << "C = "; C.show(C);
                                getch ();
                                return 0;
                                }
// programa 5.12

#include <iostream>
#include <conio.h>

using namespace std;
class M
{
      int x;
      int y;
      public:
             void set_xy(int a, int b)
             {
                  x = a;
                  y = b;
                  }
                  friend int sum(M m);
                  };
                  int sum(M m)
                  {
                      int M ::* px = &M :: x;
                      int M ::* py = &M :: y;
                      M *pm = &m;
                      int S = m.*px + pm->*py;
                      return S;
                      }
                      int main()
                      {
                          M n;
                          void (M :: *pf)(int,int) = &M :: set_xy;
                          (n.*pf)(10,20);
                          cout << "SUMA = " << sum(n) << "\n";
                          M *op = &n;
                          (op->*pf)(30,40);
                          cout << "SUMA = " << sum(n) << "\n";
                          getch ();
                          return 0;
                          }

UNIDAD VI:APLICACIONES

//PROGRAMA 6.5

 #include <iostream>
 #include <string>
 using namespace std;
 class Cadena
 {
 char *nombre;
 int longitud;
     public:
 Cadena()  //constructor-1
 {
  longitud=0;
  nombre=new char[longitud +1];
 }
 Cadena (char *s) //constructor-2
 {
  longitud=strlen(s);
  nombre=new char[longitud+1];  // Un carácter adicional
           // para \0
  strcpy(nombre, s);
 }
 void mostrar(void)
 { cout <<nombre<<"\n";}
 void unir(Cadena &a, Cadena &b);
 };
 void Cadena::unir(Cadena &a, Cadena &b)
 {
 longitud=a.longitud+b.longitud;
 delete nombre;
 nombre=new char[longitud+1];
 }
 int main()
 {
  char *primera= "Joseph";
 Cadena nombre(primera), nombre2("Louis"), nombre3("Lagrange"),
  s1,s2;
 s1.unir(nombre1, nombre2);
 s2.unir(s1,nombre3);
 nombre1.mostrar();
 nombre2.mostrar();
 nombre3.mostrar();
 s1.mostrar();
 s2.mostrar();
 return 0;
 }



//PROGRAMA 6.6
 #include <iostream>
 using namespace std;
 class matriz
 {
 int **p;   //Puntero a una matriz
 int d1,d2; //Dimensiones
     public:
 matriz(int x, int y);
 void get_elemento(int i, int j, int valor)
 { p[i][j]=valor;}
 int &put_elemento(int i, in j)
 { return p[i][j];}
 };
 matriz:.matriz(int x, int y)
 {
 d1=x;
 d2=y;
 p=new int*[d1];   //crea un array de punteros
 for (int i=0; i<d1; i++)
       p[i]=new int[d2];
 }
 int main()
 {
 int m,n;
 int valor;
 cout<<"Introduzca las dimensiones de la matriz: ";
 cin>>m>> n;
      matriz A(m,n);   //Objeto matriz A construido
      cout<<"Introduzca los elementos de la matriz fila por fila \n";
      for(int i=0; i<m; i++)
 for (int j=0; j<n; j++)
 {
  cin>>valor;
  A.get_elemento(i,j,valor);
  }
  cout <<"\n";
 cout <<A.put_elemento(1,2),
 return 0
 }

//PROGRAMA 6.7

 #include <iostream>
 using namespace std;
 int cuenta=0;
 class alfa
 {
    public:
     alfa()
 {
      cuenta++;
      cout <<"\n Nº de objeto creado"<<cuenta;
 }
 -alfa()
 {
      cout <<"\n Nº de objeto destruido" <<cuenta;
      cuenta--;
 }
 };

 int main()
 {
 cout<<"\n\n EJECUTANDO PROGRAMA PRINCIPAL \n";
 alfa A1,A2,A3,A4;
 }
        cout <<"\n\n EJECUTANDO DE NUEVO PROGRAMA PRINCIPAL \n";
 return 0;
 }
                     



UNIDAD VIII:HERENCIA, EXTENSION DE CLASES

http://prezi.com/-jbmizk-f9vx/herencia-extension-de-clases/