SlideShare una empresa de Scribd logo
1 de 13
Descargar para leer sin conexión
CLASES

       Introducción a la programación orientada a objetos
          1. Introducción a la programación orientada a objetos
          2. Las clases
          3. El tipo Struct
          4. Diferencias entre Class y Struct
          5. Pilares de la Programación Orientada a Objetos
          6. Características fundamentales de las clases en C++
          7. Representaciones Gráficas
          8. Construcción de una clase
          9. Atributos
          10. Métodos. Implementación de los métodos de una clase
          11. Creación de objetos
          12. Paso de mensajes
          13. Resumen

1




    CLASES

    Introducción
      Un programa se encarga de procesar información. El usuario se encarga
      de dos cosas fundamentales:
           - Los datos que se procesan                 (datos)
           - Las operaciones que procesan esos datos (funciones)

                        Podemos ligar datos con operaciones

      Las operaciones se aplican sobre unos datos, más exactamente, sobre
      unos tipos de datos. Por ejemplo, si tenemos la operación de multiplicar
      complejos, no tiene sentido multiplicar cadenas.
           Si tenemos un array de enteros, podemos recorrerlo, buscar un
      elemento, etc..
           Si tenemos una pantalla, podemos escribir en ella, borrar, etc..

2
CLASES

    Programación orientada a objetos

         Aparece otro paradigma de programación; reconocemos los datos sobre
         los que vamos a trabajar y definimos esos datos por las operaciones que
         se pueden realizar sobre ellos.

                En la programación orientada a objetos, lo importante son los
                objetos.

         Objeto : entidad compuesta de unos datos y las operaciones que
         realizamos sobre esos datos.

         Clase : Los datos y las operaciones comunes a un conjunto de objetos
         forman un conjunto que se conoce como clase.


3




    CLASES

    Las clases
          ♦ Las clases C++ permiten definir nuevos tipos de datos,
          ♦ Cada clase es un nuevo tipo,
          ♦ Cada elemento de la clase se caracteriza por ciertos valores y las
            operaciones disponibles para crear dichos elementos, modificarlos y
            destruirlos.

         Podemos establecer un paralelismo entre los tipos de datos vistos hasta el
         momento (int, char, arrays, estructuras,…) y las clases:

                               1. Ambos son tipos
                                                        Una clase CL no está definida por el
             El tipo int está definido por             lenguaje, por lo que debe ser definida
          el lenguaje y las operaciones que                     por el programador.
        pueden realizarse están completamente             Esta definición debe contener
                     determinadas.                        dos cosas: datos y operaciones.

Metodología y Técnicas de Programación I   2003/2004                                            4
CLASES

    Las clases
                        2. Pueden declararse elementos de ese tipo

         Podemos declararnos elementos                    Podemos declararnos elementos de la
         de tipo int, es lo que llamamos                  clase CL, en éste caso los llamaremos
                    variables.                             objetos o instancias de la clase CL.


      Esto implica que podemos tener muchos objetos de una misma clase,
      igual que podíamos definir muchas variables de un tipo.

                   Pero una clase no es tan simple como un tipo de datos

            Una clase es un conjunto
     de datos y un conjunto de operaciones,                                  Datos       Atributos
            que como hemos dicho,                         Miembros
                 deben ir unidas.                                        Operaciones      Métodos


5




    CLASES

    El tipo Struct
      Hemos visto anteriormente cómo implementar un tipo de dato Cliente
      por medio de una estructura, y unas operaciones para manejarla:

      struct cliente
          {                                               No existe una relación explícita entre
              char nombre[30];
                                         Miembros




              char calle[30];                               las funciones y los datos con los
              double importe_factura;                                 que se trabaja
              char tlf[20] ;
              int edad;
          } ;

      cliente c;                                               En C++ podemos asociar las
      void visualizar_datos_cliente ( cliente c );        operaciones con los datos simplemente
      void modificar_edad ( cliente & c );
      void hacer_descuento ( cliente & c, double 0,5 );
                                                            incluyendo las funciones dentro de
                                                               la definición de la estructura


6
CLASES

              El tipo Struct
                                                                  En C++ podemos asociar las
                struct cliente                               operaciones con los datos simplemente
                {
                  char nombre[30];
                                                               incluyendo las funciones dentro de
                  char calle[30];                                 la definición de la estructura
    PÚBLICO




                  double importe_factura;
                  char tlf[20] ;
                  int edad;                                  Las funciones declaradas de esta forma
                                                                se llaman métodos o funciones
                     void visualizar_datos_cliente ( );
                     void modificar_edad ( );                              miembro.
                     void hacer_descuento (double);
               } ;

               cliente c;

                  Para ejecutar éstos métodos, se ha de utilizar                   c.edad = 23 ;
                      una variable de esa estructura con el                        c.visualizar_datos( );
                                                                                   c.hacer_descuento(0.5);
                 operador punto . ( acceso habitual a miembros)


7




              CLASES

              Clases y miembros
                 La estructura anterior proporciona un conjunto de operaciones adecuadas
                 sobre el tipo Cliente, pero no se especifica que esas funciones deban ser
                 las únicas que accedan a los datos del tipo.

                 Un tipo struct no evita que se acceda                     class Cliente
                                                                           {
                 al dato edad y se actualice a 200.                          char nombre[30];
                                                                             char calle[30];
                                                                PRIVADO




                                                                             double importe_factura;
                                                                             char telefono[20] ;
                                                                             int edad;

                          Para que los MIEMBROS,                                void visualizar_datos_cliente ( );
                                                                                void modificar_edad ( );
                           sean privados, utilizamos
                                                                                void hacer_descuento (double);
                      la palabra class en lugar de struct.                } ;

                                                                          cliente c;


8
CLASES

     Clases y miembros
                                                  El identificador public separa la clase
       class Cliente                              en dos partes:
       {
          char nombre[30];
          char calle[30];                         • parte privada: donde hemos declarado
          double importe_factura;                 los datos de la clase.
          char telefono[20] ;
          int edad;
       public:                                    • parte pública: donde declaramos las
          void visualizar_datos_cliente ( );      funciones de la clase.
          void modificar_edad ( );
          void hacer_descuento (double );
      } ;

      cliente c;                                    Solo podemos acceder a los miembros
                                                      privados a través de las funciones
                                                                   públicas.
        public: Especificador de acceso

9




     CLASES

     Diferencias entre class y struct

        En una clase class, los miembros son privados por defecto, mientras que
        en una estructura struct, los miembros son públicos por defecto.

          class Cliente                              Con ésta definición del tipo Cliente,
          {                                          se puede acceder a la parte pública,
             char nombre[30];
             char calle[30];                                pero no a la privada.
             double importe_factura;
             char telefono[20] ;
             int edad;                              void main()
          public:                                   {
             void visualizar_datos_cliente ( );       cliente c;
             void modificar_edad ( );
                                                      c.visualizar_datos_cliente( ) ;
             void hacer_descuento ( double );
         } ;                                          c.edad = 8 ;
                                                      ...
                                                                           Error de compilación.

10
CLASES

     Pilares de la programación orientada a objetos


                                   Ocultación de la información

        Solo se puede acceder a los datos por medio de las funciones públicas.
        Los datos están ocultos y eso asegura que no se puedan modificar por
        funciones externas al objeto.



                              Encapsulamiento de la información

        Encapsulación de código y datos.


11




     CLASES

     Ejemplo:                                                 y

        class Circulo
        {
         private :
           float coor_x;
           float coor_y;
                                                                                   x
           float radio;
        public :                                           La clase círculo tiene 6 miembros:
           void inicializar ( float a, float b, float r)    - 3 atributos privados
              { coor_x = a;
                 coor_y = b;                                - 3 métodos o funciones miembro
                 radio = r;
              }
          float visualizar_radio ( )
                                                           Los métodos pueden implementarse
              {
                return radio;                                      dentro de la clase:
              }                                             se llaman funciones insertadas
           float calcular_area ( ) ;
       } ;                                                   También se puede implementar los
                                                                métodos fuera de la clase

12
CLASES

     Características fundamentales de las clases en C++

          ♦ Nombre de la clase. Sirve para identificar a todos los objetos que
            tengan unas determinadas características.

          ♦ Conjunto de atributos. Datos miembro. El valor de los atributos
            representan el estado de cada objeto.

          ♦ Conjunto de métodos. Funciones miembro. Permite que los objetos
            cambien de estado, dependiendo del estado anterior que tuviera el
            objeto.

          ♦ Niveles de acceso para proteger ciertos miembros de la clase.
            Normalmente, se definirán como ocultos (privados) los atributos y
            visibles (públicos) los métodos.


13




     CLASES

     Representaciones gráficas
         Para representar gráficamente las clases y objetos, vamos a utilizar
         diagramas similares a los de UML (Lenguaje de Modelado Unificado).

                 Nombre              Nombre de la clase
                                                           Ejemplo:
                Atributos            Atributos definidos
                                          en la clase
                                                                        Circulo
                Métodos
                                     Métodos definidos
                                                                        coor_x
                                        en la clase
     Público (interfaz)                                                 coor_y
                                                                         radio

                                 Métodos:                   inicializar( float, float, float)
                    Si la función devuelve un valor, el     visualizar_radio( ) : float
                    tipo se pone al final precedido de :    calcular_area( ) : float


Metodología y Técnicas de Programación I     2003/2004                                          14
CLASES

     Construcción de una clase

       La definición de una clase es sintácticamente similar a una estructura
       (struct).
                                                      class <nombre_de_la clase>
                                                      {
                                                        <cuerpo de la clase>
        class <nombre_de_la clase>                     };
        {
          private:
              <lista miembros privados (atributos y métodos)>        Especificadores
                                                                        de acceso
          public:
             <lista miembros públicos (atributos y métodos)>
         };



15




     CLASES

     Ejemplo

       Vamos a modelar una clase cuyos objetos sean las cuentas de un banco.

                  Cuenta
                                         La clase se llama Cuenta.
               numero_cuenta
               saldo                     ¿Qué información ha de contener los
               interes_anual             objetos de la clase? Es decir, cada una de
                                         las cuentas.
             inicializar(long)
            dar_saldo () : float         ¿Qué operaciones se van a necesitar para
             ingresar ( float)           gestionar las cuentas?
            visualizar_datos()




16
CLASES

     Ejemplo
                                                  class Cuenta
                       Cuenta                     {
                                                    private:
                  numero_cuenta
                                                       long int numero_cuenta;
                  saldo                                float saldo;
                  interes_anual                        float interes_anual;
                                                    public:
                                                       …
                inicializar(long)
                                                       ...
               dar_saldo () : float
                ingresar ( float)                      };



            Interfaz         Los métodos o funciones miembro, se declaran dentro de la clase.
                             La implementación de dichos métodos,
                             puede hacerse dentro (funciones insertadas) o fuera.


17




     CLASES

     Atributos (datos miembro)

         Los atributos describen el estado de un objeto.
         Un atributo consta de dos partes: nombre del atributo y valor
         Los atributos de una clase pueden ser:
              - de cualquier tipo básico (int, float, bool,…)
              - de tipo compuesto (estructura )
              - un puntero                              class Cuenta
                                                       {
              - un array
                                                         private:
              - objetos de otra clase                       long int numero_cuenta;
                                                                  float saldo;
                                                                  float interes_anual;
                                                                public:
                                                                        …..
                                                            }


Metodología y Técnicas de Programación I   2003/2004                                        18
CLASES

     Ejemplo
                                              class Cuenta
              Cuenta                          {
                                                private:                              Función
          numero_cuenta                            long int numero_cuenta;
          saldo                                                                    insertada, no
                                                   float saldo;
          interes_anual                            float interes_anual;
                                                                                     acaba en ;
                                                public:
         inicializar(long)                         void inicializar(long int num)
        dar_saldo () : float                          {
         ingresar ( float)                              numero_cuenta = num;
                                                        saldo = 0;
                                                        interes_anual = 0;
                                                      }
                                                   float dar_saldo ();
                                                   void ingresar( float);         Prototipos
        Implementación de los                };
        métodos fuera de la clase



19




     CLASES

     Métodos definidos interna y externamente
       Los métodos se definen de la misma forma que las funciones normales.
       Lo normal es que dentro del cuerpo de la clase, solo aparezcan los
       prototipos, y la implementación de las funciones fuera. Así los detalles
       de la implementación permanecen ocultos y la interfaz queda mucho
       más clara.

                 class Cuenta
                 {                                            ...
                   private:                                  void Cuenta :: ingresar (float s)
                      long int numero_cuenta;                {
                      float saldo;                             saldo = saldo + s ;
                      float interes_anual;                   }
                   public:
                      void inicializar(long int num);        float Cuenta :: dar_saldo ()
                      float dar_saldo ();                    {
                      void ingresar(float);                      return saldo ;
                };                                           }


20
CLASES

     Implementación de los métodos fuera de la clase
       Esta es la opción más correcta. La implementación del método ingresar
       sería el siguiente:

           Nombre de la clase a la            Operador de resolución de
           que pertenece la función                 ámbito ( :: )

                        void Cuenta :: ingresar (float s)
                        {
                          saldo = saldo + s ;
                        }
                                                       Nombre del método

        Se pone el nombre de la clase delante del nombre del método, porque
        podemos tener varias clases con el mismo método.

21




     CLASES

     Implementación de los métodos fuera de la clase
       La implementación del método dar_saldo sería el siguiente:


                    Nombre de la              Operador de resolución de
                       clase                        ámbito ( :: )

                        float Cuenta :: dar_saldo ()
                        {
                            return saldo ;
                        }                              Acceso al atributo
                                                         Dato privado

      En el código de los métodos se puede usar todo lo que está declarado en la
      clase: lo público y lo privado.


22
CLASES

     Creación de elementos de una clase: creación de objetos
       La clase ya está terminada (declarada e implementada). Ya podemos
       crear objetos y trabajar con ellos.

       La sintaxis es igual que para declarar variables de un cierto tipo.

                                                  <tipo_de_dato> <nombre_de_variable> ;
        class Circulo
        {                                       <Nombre de la clase> <nombre_del_objeto> ;
         private :
           float coor_x;
           float coor_y;
           float radio;
                                                  Circulo c1, c2, c3;
        public :
          void inicializar ( );
          float visualizar_radio ( );
          float calcular_area ( ) ;
       } ;                                                         Objetos de la clase Círculo


23




     CLASES

     Uso y manipulación de objetos: paso de mensajes
       Una vez creados los objetos, podemos trabajar con ellos. Si queremos
       que un determinado objeto ejecute un método, utilizamos el operador
       punto (•) . A esto se le conoce como paso de mensajes.
       Los objetos se manipulan mediante el paso de mensajes .
        – Cada paso de mensaje provoca la ejecución del correspondiente método
          definido en la clase del objeto receptor.
        – Cada objeto entiende tantos mensajes como métodos estén definidos en
          su clase.
                                                                                  Se pasa el mensaje
         void Circulo:: inicializar ( float a, float b, float r)                inicializar al objeto c1
             { coor_x = a;
               coor_y = b;
               radio = r;                                                  Circulo c1, c2, c3;
             }                                                             c1.inicializar (1, 2, 4);
              Los objetos c1, c2 tienen valores diferentes,                c2.inicializar (0,0,5);
                         tienen distinto estado.

24
CLASES

     Público y privado
          Los atributos deben ser privados.
          Los métodos o funciones miembro deben ser públicas.
          A través del objeto de una clase sólo se puede acceder a lo que está
           declarado como público en la clase (con el operador • ).
          Lo privado solo puede ser accedido desde el código de los métodos.

               class Circulo
               {
                private :
                 float coor_x;                Circulo c1, c2, c3;
                 float coor_y;                c1.coor_x = 4;
                 float radio;                 c1.radio = 7 ;
               public :
                 ….
               } ;
                                                                    Error
                                        Los atributos coor_x y radio son privados

25




     CLASES

     Resumen:
     • Las instancias de un tipo cualquiera se denominan variables, mientras
       que las instancias de una clase se denominan objetos.
     • Los atributos describen el estado de un objeto. Un atributo consta de dos
       partes: nombre del atributo y valor.
     • Los métodos describen el comportamiento de los objetos de una clase.
       Representan las operaciones que se pueden realizar con los objetos de la
       clase. La ejecución de un método puede conducir a cambiar el estado del
       objeto.
     • Los objetos se manipulan mediante el paso de mensajes.
     • Para ejecutar un método asociado a un objeto, se realiza una acción que
       se conoce como “envío de mensajes”.
     • Las operaciones y valores visibles desde el exterior de la clase, es lo que
       se denomina “Interfaz” de la clase.


26

Más contenido relacionado

Destacado (10)

Colegio de ingenieros 2016
Colegio de ingenieros 2016Colegio de ingenieros 2016
Colegio de ingenieros 2016
 
charla deodontogia cip puno
charla deodontogia cip punocharla deodontogia cip puno
charla deodontogia cip puno
 
Metodo putnam - estimacion de costos y tiempo
Metodo putnam - estimacion de costos y tiempoMetodo putnam - estimacion de costos y tiempo
Metodo putnam - estimacion de costos y tiempo
 
Delphi
DelphiDelphi
Delphi
 
Exposicion de marketing UNA Puno
Exposicion de marketing UNA PunoExposicion de marketing UNA Puno
Exposicion de marketing UNA Puno
 
marketing digital
marketing digitalmarketing digital
marketing digital
 
matemática basica
matemática basicamatemática basica
matemática basica
 
Megatendencias sociales
Megatendencias sociales Megatendencias sociales
Megatendencias sociales
 
Cocomo II
Cocomo IICocomo II
Cocomo II
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
 

Similar a Introduccion

ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++
die_dex
 
5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont
UVM
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
Karime Hernández
 

Similar a Introduccion (20)

Introduccion
IntroduccionIntroduccion
Introduccion
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Tema-estructuras-c++.pdf
Tema-estructuras-c++.pdfTema-estructuras-c++.pdf
Tema-estructuras-c++.pdf
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Pooc 1
Pooc 1Pooc 1
Pooc 1
 
ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++ESTRUCTURAS Y UNIONES EN C++
ESTRUCTURAS Y UNIONES EN C++
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Persistencia de datos
Persistencia de datosPersistencia de datos
Persistencia de datos
 
Bd capitulo ii
Bd capitulo iiBd capitulo ii
Bd capitulo ii
 
Curso iOS
Curso iOSCurso iOS
Curso iOS
 
5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont5 Mecanismos Reuntilizacion Abstraccion Cont
5 Mecanismos Reuntilizacion Abstraccion Cont
 
Tutorial jared
Tutorial jaredTutorial jared
Tutorial jared
 
Modelo E-R.pdf
Modelo E-R.pdfModelo E-R.pdf
Modelo E-R.pdf
 
Estructura de registros
Estructura de registrosEstructura de registros
Estructura de registros
 
Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...
Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...
Machine Learning Para Definir Clusters De Usuarios Y Acciones Concretas. Medi...
 
Programación orientada a objetos con c++
Programación orientada a objetos con c++Programación orientada a objetos con c++
Programación orientada a objetos con c++
 
Base de datos
Base de datosBase de datos
Base de datos
 
Bdo r en oracle
Bdo r en oracleBdo r en oracle
Bdo r en oracle
 
Diapositivas de n capas en visual net 2017
Diapositivas de n capas en visual net 2017Diapositivas de n capas en visual net 2017
Diapositivas de n capas en visual net 2017
 
Clases
ClasesClases
Clases
 

Más de Aldo Hernán Zanabria Gálvez

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
Aldo Hernán Zanabria Gálvez
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Aldo Hernán Zanabria Gálvez
 

Más de Aldo Hernán Zanabria Gálvez (20)

“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
“PERSPECTIVAS DEL DESARROLLO ECONÓMICO REGIONAL EN EL CONTEXTO DEL CAMBIO CLI...
 
mejorando la web guia de html 5
mejorando la web guia de html 5mejorando la web guia de html 5
mejorando la web guia de html 5
 
Guía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdfGuía de Prácticas word beta.pdf
Guía de Prácticas word beta.pdf
 
emprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptxemprendimiento en la era del conocimiento.pptx
emprendimiento en la era del conocimiento.pptx
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...Organizadores visuales sobre las corrientes contemporaneas   aldo zanabria ga...
Organizadores visuales sobre las corrientes contemporaneas aldo zanabria ga...
 
didactica
didacticadidactica
didactica
 
Tarea1 aldo zanabria
Tarea1 aldo zanabriaTarea1 aldo zanabria
Tarea1 aldo zanabria
 
Tarea 2 aldo zanabria
Tarea 2 aldo zanabriaTarea 2 aldo zanabria
Tarea 2 aldo zanabria
 
Carolinos del milenio pasado - Puno
Carolinos del milenio pasado - PunoCarolinos del milenio pasado - Puno
Carolinos del milenio pasado - Puno
 
ingenieria de sistemas
ingenieria de sistemasingenieria de sistemas
ingenieria de sistemas
 
Electricidad con recursos renovables
Electricidad con recursos renovablesElectricidad con recursos renovables
Electricidad con recursos renovables
 
Variables
VariablesVariables
Variables
 
Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal Estructura y modelo organizacional estatal
Estructura y modelo organizacional estatal
 
Calidad de Agua
Calidad de AguaCalidad de Agua
Calidad de Agua
 
Resumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede TurismoResumen final - Seminario Taller TIC Emprede Turismo
Resumen final - Seminario Taller TIC Emprede Turismo
 
Clase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y ComunicacionesClase de Tecnologías de la Información y Comunicaciones
Clase de Tecnologías de la Información y Comunicaciones
 
Plan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la MujerPlan de Trabajo Integración de la Mujer
Plan de Trabajo Integración de la Mujer
 
peritaciones y tasación puno
peritaciones y tasación punoperitaciones y tasación puno
peritaciones y tasación puno
 
producción en la empresa turística
producción en la empresa turísticaproducción en la empresa turística
producción en la empresa turística
 

Introduccion

  • 1. CLASES Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación Orientada a Objetos 6. Características fundamentales de las clases en C++ 7. Representaciones Gráficas 8. Construcción de una clase 9. Atributos 10. Métodos. Implementación de los métodos de una clase 11. Creación de objetos 12. Paso de mensajes 13. Resumen 1 CLASES Introducción Un programa se encarga de procesar información. El usuario se encarga de dos cosas fundamentales: - Los datos que se procesan (datos) - Las operaciones que procesan esos datos (funciones) Podemos ligar datos con operaciones Las operaciones se aplican sobre unos datos, más exactamente, sobre unos tipos de datos. Por ejemplo, si tenemos la operación de multiplicar complejos, no tiene sentido multiplicar cadenas. Si tenemos un array de enteros, podemos recorrerlo, buscar un elemento, etc.. Si tenemos una pantalla, podemos escribir en ella, borrar, etc.. 2
  • 2. CLASES Programación orientada a objetos Aparece otro paradigma de programación; reconocemos los datos sobre los que vamos a trabajar y definimos esos datos por las operaciones que se pueden realizar sobre ellos. En la programación orientada a objetos, lo importante son los objetos. Objeto : entidad compuesta de unos datos y las operaciones que realizamos sobre esos datos. Clase : Los datos y las operaciones comunes a un conjunto de objetos forman un conjunto que se conoce como clase. 3 CLASES Las clases ♦ Las clases C++ permiten definir nuevos tipos de datos, ♦ Cada clase es un nuevo tipo, ♦ Cada elemento de la clase se caracteriza por ciertos valores y las operaciones disponibles para crear dichos elementos, modificarlos y destruirlos. Podemos establecer un paralelismo entre los tipos de datos vistos hasta el momento (int, char, arrays, estructuras,…) y las clases: 1. Ambos son tipos Una clase CL no está definida por el El tipo int está definido por lenguaje, por lo que debe ser definida el lenguaje y las operaciones que por el programador. pueden realizarse están completamente Esta definición debe contener determinadas. dos cosas: datos y operaciones. Metodología y Técnicas de Programación I 2003/2004 4
  • 3. CLASES Las clases 2. Pueden declararse elementos de ese tipo Podemos declararnos elementos Podemos declararnos elementos de la de tipo int, es lo que llamamos clase CL, en éste caso los llamaremos variables. objetos o instancias de la clase CL. Esto implica que podemos tener muchos objetos de una misma clase, igual que podíamos definir muchas variables de un tipo. Pero una clase no es tan simple como un tipo de datos Una clase es un conjunto de datos y un conjunto de operaciones, Datos Atributos que como hemos dicho, Miembros deben ir unidas. Operaciones Métodos 5 CLASES El tipo Struct Hemos visto anteriormente cómo implementar un tipo de dato Cliente por medio de una estructura, y unas operaciones para manejarla: struct cliente { No existe una relación explícita entre char nombre[30]; Miembros char calle[30]; las funciones y los datos con los double importe_factura; que se trabaja char tlf[20] ; int edad; } ; cliente c; En C++ podemos asociar las void visualizar_datos_cliente ( cliente c ); operaciones con los datos simplemente void modificar_edad ( cliente & c ); void hacer_descuento ( cliente & c, double 0,5 ); incluyendo las funciones dentro de la definición de la estructura 6
  • 4. CLASES El tipo Struct En C++ podemos asociar las struct cliente operaciones con los datos simplemente { char nombre[30]; incluyendo las funciones dentro de char calle[30]; la definición de la estructura PÚBLICO double importe_factura; char tlf[20] ; int edad; Las funciones declaradas de esta forma se llaman métodos o funciones void visualizar_datos_cliente ( ); void modificar_edad ( ); miembro. void hacer_descuento (double); } ; cliente c; Para ejecutar éstos métodos, se ha de utilizar c.edad = 23 ; una variable de esa estructura con el c.visualizar_datos( ); c.hacer_descuento(0.5); operador punto . ( acceso habitual a miembros) 7 CLASES Clases y miembros La estructura anterior proporciona un conjunto de operaciones adecuadas sobre el tipo Cliente, pero no se especifica que esas funciones deban ser las únicas que accedan a los datos del tipo. Un tipo struct no evita que se acceda class Cliente { al dato edad y se actualice a 200. char nombre[30]; char calle[30]; PRIVADO double importe_factura; char telefono[20] ; int edad; Para que los MIEMBROS, void visualizar_datos_cliente ( ); void modificar_edad ( ); sean privados, utilizamos void hacer_descuento (double); la palabra class en lugar de struct. } ; cliente c; 8
  • 5. CLASES Clases y miembros El identificador public separa la clase class Cliente en dos partes: { char nombre[30]; char calle[30]; • parte privada: donde hemos declarado double importe_factura; los datos de la clase. char telefono[20] ; int edad; public: • parte pública: donde declaramos las void visualizar_datos_cliente ( ); funciones de la clase. void modificar_edad ( ); void hacer_descuento (double ); } ; cliente c; Solo podemos acceder a los miembros privados a través de las funciones públicas. public: Especificador de acceso 9 CLASES Diferencias entre class y struct En una clase class, los miembros son privados por defecto, mientras que en una estructura struct, los miembros son públicos por defecto. class Cliente Con ésta definición del tipo Cliente, { se puede acceder a la parte pública, char nombre[30]; char calle[30]; pero no a la privada. double importe_factura; char telefono[20] ; int edad; void main() public: { void visualizar_datos_cliente ( ); cliente c; void modificar_edad ( ); c.visualizar_datos_cliente( ) ; void hacer_descuento ( double ); } ; c.edad = 8 ; ... Error de compilación. 10
  • 6. CLASES Pilares de la programación orientada a objetos Ocultación de la información Solo se puede acceder a los datos por medio de las funciones públicas. Los datos están ocultos y eso asegura que no se puedan modificar por funciones externas al objeto. Encapsulamiento de la información Encapsulación de código y datos. 11 CLASES Ejemplo: y class Circulo { private : float coor_x; float coor_y; x float radio; public : La clase círculo tiene 6 miembros: void inicializar ( float a, float b, float r) - 3 atributos privados { coor_x = a; coor_y = b; - 3 métodos o funciones miembro radio = r; } float visualizar_radio ( ) Los métodos pueden implementarse { return radio; dentro de la clase: } se llaman funciones insertadas float calcular_area ( ) ; } ; También se puede implementar los métodos fuera de la clase 12
  • 7. CLASES Características fundamentales de las clases en C++ ♦ Nombre de la clase. Sirve para identificar a todos los objetos que tengan unas determinadas características. ♦ Conjunto de atributos. Datos miembro. El valor de los atributos representan el estado de cada objeto. ♦ Conjunto de métodos. Funciones miembro. Permite que los objetos cambien de estado, dependiendo del estado anterior que tuviera el objeto. ♦ Niveles de acceso para proteger ciertos miembros de la clase. Normalmente, se definirán como ocultos (privados) los atributos y visibles (públicos) los métodos. 13 CLASES Representaciones gráficas Para representar gráficamente las clases y objetos, vamos a utilizar diagramas similares a los de UML (Lenguaje de Modelado Unificado). Nombre Nombre de la clase Ejemplo: Atributos Atributos definidos en la clase Circulo Métodos Métodos definidos coor_x en la clase Público (interfaz) coor_y radio Métodos: inicializar( float, float, float) Si la función devuelve un valor, el visualizar_radio( ) : float tipo se pone al final precedido de : calcular_area( ) : float Metodología y Técnicas de Programación I 2003/2004 14
  • 8. CLASES Construcción de una clase La definición de una clase es sintácticamente similar a una estructura (struct). class <nombre_de_la clase> { <cuerpo de la clase> class <nombre_de_la clase> }; { private: <lista miembros privados (atributos y métodos)> Especificadores de acceso public: <lista miembros públicos (atributos y métodos)> }; 15 CLASES Ejemplo Vamos a modelar una clase cuyos objetos sean las cuentas de un banco. Cuenta La clase se llama Cuenta. numero_cuenta saldo ¿Qué información ha de contener los interes_anual objetos de la clase? Es decir, cada una de las cuentas. inicializar(long) dar_saldo () : float ¿Qué operaciones se van a necesitar para ingresar ( float) gestionar las cuentas? visualizar_datos() 16
  • 9. CLASES Ejemplo class Cuenta Cuenta { private: numero_cuenta long int numero_cuenta; saldo float saldo; interes_anual float interes_anual; public: … inicializar(long) ... dar_saldo () : float ingresar ( float) }; Interfaz Los métodos o funciones miembro, se declaran dentro de la clase. La implementación de dichos métodos, puede hacerse dentro (funciones insertadas) o fuera. 17 CLASES Atributos (datos miembro) Los atributos describen el estado de un objeto. Un atributo consta de dos partes: nombre del atributo y valor Los atributos de una clase pueden ser: - de cualquier tipo básico (int, float, bool,…) - de tipo compuesto (estructura ) - un puntero class Cuenta { - un array private: - objetos de otra clase long int numero_cuenta; float saldo; float interes_anual; public: ….. } Metodología y Técnicas de Programación I 2003/2004 18
  • 10. CLASES Ejemplo class Cuenta Cuenta { private: Función numero_cuenta long int numero_cuenta; saldo insertada, no float saldo; interes_anual float interes_anual; acaba en ; public: inicializar(long) void inicializar(long int num) dar_saldo () : float { ingresar ( float) numero_cuenta = num; saldo = 0; interes_anual = 0; } float dar_saldo (); void ingresar( float); Prototipos Implementación de los }; métodos fuera de la clase 19 CLASES Métodos definidos interna y externamente Los métodos se definen de la misma forma que las funciones normales. Lo normal es que dentro del cuerpo de la clase, solo aparezcan los prototipos, y la implementación de las funciones fuera. Así los detalles de la implementación permanecen ocultos y la interfaz queda mucho más clara. class Cuenta { ... private: void Cuenta :: ingresar (float s) long int numero_cuenta; { float saldo; saldo = saldo + s ; float interes_anual; } public: void inicializar(long int num); float Cuenta :: dar_saldo () float dar_saldo (); { void ingresar(float); return saldo ; }; } 20
  • 11. CLASES Implementación de los métodos fuera de la clase Esta es la opción más correcta. La implementación del método ingresar sería el siguiente: Nombre de la clase a la Operador de resolución de que pertenece la función ámbito ( :: ) void Cuenta :: ingresar (float s) { saldo = saldo + s ; } Nombre del método Se pone el nombre de la clase delante del nombre del método, porque podemos tener varias clases con el mismo método. 21 CLASES Implementación de los métodos fuera de la clase La implementación del método dar_saldo sería el siguiente: Nombre de la Operador de resolución de clase ámbito ( :: ) float Cuenta :: dar_saldo () { return saldo ; } Acceso al atributo Dato privado En el código de los métodos se puede usar todo lo que está declarado en la clase: lo público y lo privado. 22
  • 12. CLASES Creación de elementos de una clase: creación de objetos La clase ya está terminada (declarada e implementada). Ya podemos crear objetos y trabajar con ellos. La sintaxis es igual que para declarar variables de un cierto tipo. <tipo_de_dato> <nombre_de_variable> ; class Circulo { <Nombre de la clase> <nombre_del_objeto> ; private : float coor_x; float coor_y; float radio; Circulo c1, c2, c3; public : void inicializar ( ); float visualizar_radio ( ); float calcular_area ( ) ; } ; Objetos de la clase Círculo 23 CLASES Uso y manipulación de objetos: paso de mensajes Una vez creados los objetos, podemos trabajar con ellos. Si queremos que un determinado objeto ejecute un método, utilizamos el operador punto (•) . A esto se le conoce como paso de mensajes. Los objetos se manipulan mediante el paso de mensajes . – Cada paso de mensaje provoca la ejecución del correspondiente método definido en la clase del objeto receptor. – Cada objeto entiende tantos mensajes como métodos estén definidos en su clase. Se pasa el mensaje void Circulo:: inicializar ( float a, float b, float r) inicializar al objeto c1 { coor_x = a; coor_y = b; radio = r; Circulo c1, c2, c3; } c1.inicializar (1, 2, 4); Los objetos c1, c2 tienen valores diferentes, c2.inicializar (0,0,5); tienen distinto estado. 24
  • 13. CLASES Público y privado Los atributos deben ser privados. Los métodos o funciones miembro deben ser públicas. A través del objeto de una clase sólo se puede acceder a lo que está declarado como público en la clase (con el operador • ). Lo privado solo puede ser accedido desde el código de los métodos. class Circulo { private : float coor_x; Circulo c1, c2, c3; float coor_y; c1.coor_x = 4; float radio; c1.radio = 7 ; public : …. } ; Error Los atributos coor_x y radio son privados 25 CLASES Resumen: • Las instancias de un tipo cualquiera se denominan variables, mientras que las instancias de una clase se denominan objetos. • Los atributos describen el estado de un objeto. Un atributo consta de dos partes: nombre del atributo y valor. • Los métodos describen el comportamiento de los objetos de una clase. Representan las operaciones que se pueden realizar con los objetos de la clase. La ejecución de un método puede conducir a cambiar el estado del objeto. • Los objetos se manipulan mediante el paso de mensajes. • Para ejecutar un método asociado a un objeto, se realiza una acción que se conoce como “envío de mensajes”. • Las operaciones y valores visibles desde el exterior de la clase, es lo que se denomina “Interfaz” de la clase. 26