SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
1.0 Presentación
 Metodologías y Técnicas de Programación II
    Programación Orientada a Objeto (POO)
                      C++
    Profesor:
                     José Luis Marina
                   jmarina@nebrija.es
    Laboratorios:
                     José Luis Marina
                   jmarina@nebrija.es
                   Borland Builder 6.0
    Puntuación:
           Prácticas Laboratorio:        20%
              Diarias                    20%
              Trabajo Laboratorio        80%

           Exámen Parcial                15%
           Exámen Final                  65%

           Exámen Final Extraordinario   70%   1
1.0 Presentación: Programa
Introducción a la POO
   Historia de la Programación   C++
   Conceptos de POO              Mi primera Clase

Repaso de Conceptos
   Estándares de Programación    Ficheros y E/S
   Punteros y Memoria            Control y Operadores

Clases y Objetos en C++
   Uso y aplicación              Funciones Amigas
   Constructores                 Constantes e “inline”

Sobrecarga
   De Operadores                 De Funciones

Herencia.
   Tipos de Visibilidad          Herencia Múltiple

Polimorfismo
   Funciones Virtuales           Polimorfismo y Sobrecarga.

Plantillas
   Contenedores                  Iteradores                   2
1.1 Historia de la Programación
¿Qué es programar?
Programar es tener en cuenta

           ●
                Un problema:
                    Quiero saber mi nota final en la asignatura.

           ●
                Un Conjunto de Datos
                    En las prácticas diarias tengo un   :      8
                    En la práctica final tengo un       :      9
                    En el exámen parcial un             :      6
                    En el exámen final un               :      7

           ●
                Unas funciones o algoritmos
                   Nota Prácticas = (20% Prac.D) + (80%* Prac.F)
                   Nota Final = 20% Nota.Prac. + 15% Parcial + 65% Final

Y entonces...
                    Aplicar las funciones para resolver el problema (7,21)
                                                                        3
1.1 Historia de la Programación
¿Qué es programar?
Queremos por supuesto que nuestro programa:
         ●
           Sea Correcto:
               Funciona bien y de acuerdo a los requisitos.
               El resultado se corresponde con unas especificaciones.

Pero que además:
          ●
            Sea Eficaz
                Lo hace en un tiempo admisible.
                Especificaciones No Funcionales o de Calidad.

           ●
               Sea Adaptable o Flexible
                  ¿Qué pasa si cambian las especificaciones?

           ●
               Sea Reutilizable
                  Sería ideal que ante problemas parecidos, no tenga que
                  volver a escribir todo el código y pueda aprovechar la
                  mayor parte de él.
                                                                 4
1.1 Historia de la Programación
Evolución
Código Binario
  Con “ceros” y “unos”. 0010101 --> SUMAR

Código Máquina. Ensamblador
  Tengo Nemotécnicos y puedo llamar a rutinas (funciones)

Lenguajes Procedimentales
   Puedo pasar argumentos a funciones, devolver valores.
   Separo interfaz de implementación.

Programación Orientada a Objeto
   Todo es un objeto.
   Ayuda a abstraer, imaginarme las cosas del mundo real simplificando.
   Puedo encapsular los datos para evitar operaciones no permitidas.

Patrones de Diseño                   Librerías de Clases, Frameworks
   Pares de solución/problema           Reutilización masiva

Programación Orientada a Aspectos, a Servicios, a Modelos,...
                                                                5
1.2 Reutilización

                   Informe de Standish Group de 2004:
 Sólo el 29% de los proyectos software satisfacen los requisitos de los clientes, se
 entregan a tiempo y se ajustan a los presupuestos.
 El 53% acaban incumpliendo algún requisito, se entregan fuera de plazo o cuestan más
 de lo presupuestado.
 El 18% se cancelan antes de su finalización o jamás llegan a utilizarse.


Reutilizar ayuda a sacar más con menos esfuerzo: Copio o reutilizo código,
estructuras o ideas.
   Menos Equivocaciones:
       Reutilizo algo que ya funciona. Se ha corregido sus errores.
       Escribo menos código nuevo.
   Menos Pruebas
       Pruebo sólo lo nuevo y su integración.
   Más Creativo
       No rehago siempre lo mismo. Codifico nuevas funcionalidades.
   Mejoran las Probabilidades de Éxito                                            6
1.2 Tipos de Reutilización
Reutilización Oportunista

En general se da porque un programador copia código y lo pega en el suyo.
Está bien pero tiene problemas a la larga: genero líneas diferentes para lo
mismo y si algo está mal en el origen hay que buscar todos los sitios en
donde se ha pegado para corregirlo.

Reutilización Sistemática - (POO)

Buscamos reutilizar y con un plan calculado. Queremos escribir sólo el
código necesario, equivocarnos menos, poner y quitar funcionalidad de
forma fácil. Queremos aprovechar los conocimientos y experiencia de otros
que han estado antes “por aquí”.




                                                                  7
1.3 Programación Orientada a Objeto

Conceptos                        int i;       ClaseEnteros mi_entero;
                                 i=33;        mi_entero.asignar(33);
                                 cout << i;   mi_entero.imprime_lo_que_vales();
Todo es un Objeto:
Un objeto es como una variable mejorada.
Cogemos un componente conceptual de nuestro problema y lo
representamos como un objeto en nuestro programa (perro, edificio,
tuerca, ventana,...)

Los objetos se comunican mediante mensajes:
Haremos programas que serán grupos de objetos enviando mensajes a
otros para decirles qué hacer. Petición de invocación a una función que
pertenece a un objeto en particular.

Datos Propios:
Podemos crear un nuevo tipo de objeto haciendo un paquete con otros
objetos. Oculto la complejidad. Coche (ruedas, motor,etc)

Cada objeto es de un tipo:
Un clase define el tipo de un objeto. Clase Enteros -> un_entero.
Un objeto es una instancia de una clase determinada.                8
1.3 Programación Orientada a Objeto

Conceptos II
Todos los Objetos de un tipo en particular pueden recibir los mismos
mensajes:

Esto es muy potente. Nos abre un montón de posibilidades para
REUTILIZAR CÓDIGO.


Clase Figura                Clase Círculo
                            Clase Cuadrado
                            Clase Triángulo

Un objeto del tipo o clase Círculo también es del tipo Figura.
Está garantizado que un círculo recibirá los mensajes de Figura.

Si hacemos código que habla con objetos de tipo Figura, SIN TOCAR NADA,
ese código también funciona con objetos de la clase Círculo.

                 mi_figura.dibujar_en_pantalla();                  9
1.3 Programación Orientada a Objeto

Conceptos III
Clases:

Una clase describe un conjunto de objetos que tienen:
   Las mismas características.    > Datos
   Los mismos comportamientos. > Funciones

Una clase es un tipo de datos. Un entero también tiene unas características
y unas funciones específicas.

Crearemos nuevas clases y el lenguaje de programación las tratará como si
fueran tipos de datos propios.

Una vez definida una clase podremos crear tantos objetos como queramos.

                 Circulo   circulo1, circulo2;
                 Circulo   my_nuevo_circulo;


                                                                  10
1.3 Programación Orientada a Objeto

Ocultando la Implementación
Creadores de Clases:
Programadores que proporcionan un interfaz a otros programadores
clientes. No dejamos que los clientes accedan a la implementación. Así
podemos cambiarla sin preocuparnos. Mejoro la función “dibujar()”.

Programadores Clientes:
Utilizan clases creadas por otros para hacer programas u otros objetos sin
preocuparse de la implementación. Si mejoras el método “dibujar()” yo no
tengo que cambiar nada de mi código.


      Implementación 1



      Implementación 2                     Interfaz

                                                                 11
1.3 Programación Orientada a Objeto

Reutilizando la implementación
Si hemos hecho bien nuestra clase se convierte en una unidad de código
útil para los demás y para nosotros mismos. La utilizamos cuando nos
venga bien. La REUTILIZAMOS.

Podemos crear un objeto de esa clase directamente:

       ClaseMotor   mi_motor;
       mi_motor.poner_a_punto();

Utilizar el objeto dentro de una clase
                                             Composición o Agregación
                                1
         Coche                       Motor   Se lee “X tiene n Y”
                                             suelen ser privados
                                             dinámica o estática
                                             muy potente
  Abstracción
  de la
  complejidad
1.3 Programación Orientada a Objeto

Reutilizando el Interfaz
Hay veces en que queremos crear un nuevo tipo, cuyo interfaz se parece a
uno ya creado.
Es más sencillo clonar una clase y añadir y modificar cosas al clon.


                                              Herencia
Base o padre        Vehículo
                                              “es un” “es como un”

         Vehículo
                                              Pública. Permito que lo
Hija o                         Vehículo
          a Motor              sin motor      vean mis herederos.
derivada
                                              Privado. Sólo para mi.


   Coche        Autobús        Bicicleta
1.3 Programación Orientada a Objeto

Características
Abstraccción:
Nos permite representar una realidad compleja en términos de un modelo
simplificado.

Encapsulación:
Nos permite ocultar cómo está construido un objeto. Otros componentes de
nuestro sistema no necesitan conocer los datos y las funncionamiento
interno del objeto. Datos y Funciones se empaquetan juntos. Los diferentes
componentes, como no pueden acceder a sus partes internas, se
comunican mediante mensajes.

Herencia:
Permite que un objeto incorpore todo o parte de su definición de otro
objeto. Parte de la definición de Felino se corresponde con la definición de
Mamífero.

Polimorfismo:
Propiedad que poseen algunas operaciones de tener un comportamiento
diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican
                                                                   14
1.4 C++: El lenguaje de Programación

C++
Es un lenguaje de programación de
        ●
          Propósito general
        ●
          Orientado a Objeto.

Se basa en C. Un compilador de C++ compila también C.

Lo diseñó y lo implementó Bjarne Stroustrup y empezó a hacerlo en 1979.
La primera versión se llamó “C con clases”.

La primera versión comercial salió al mercado en 1985.

Se diseñó para que cumpliera con dos requisitos:
          ●
            Eficiente
          ●
            Elegante

C++ es un lenguaje estandarizado. Se reúnen representantes de países y
grandes empresas. El primer estándar sale en 1997 después de 8 años de
esfuerzo. El estándar facilita enseñarlo en universidades de todo el mundo.
                                                                  15
1.4 C++: El lenguaje de Programación
¿Alguien usa C++?
El número de programadores C++ en el mundo se estima que es de tres
millones – 3.000.000 (IDS 2004)
Hay más de 400 libros sobre C++ en las librerías o en versión electrónica.
Todos los proveedores grandes tienen compiladores para C++.
Linux está en gran parte hecho en C++.

¿Es mejor C++ que Java o C#?
¿Quién es mejor programador/a?
      a) Juan que sabe 3 lenguajes
      b) Ana que sabe uno.
      c) No sabe no contesta.

Algunos datos
Aprendiendo C++ aprendes también C.
Pasar de C++ a Java o a C# es relativamente sencillo.
Hay mucho código para reutilizar.
Hay librerías que nos dan facilidades como el “Recolector de Basura”.

C++ sigue evolucionando : C++0x (Estándar ISO en 2008)
                                                                  16
1.4 C++: El lenguaje de Programación
Portabilidad
Puedes compilar el mismo código C++ en diferentes plataformas.

Brevedad
El ćodigo escrito en C++ es muy corto comparado con el de otros
lenaguajes. Podemos utliizar caracteres especiales en lugar palabras
evitando algo de esfuerzo al programador.

Modularidad
Podemos hacer una aplicación software usando varios ficheros de código
fuente, que se compilan de manera separada y luego se enlanzan para
generar el ejecutable. No tenemos que recompilar todo; sólo el fichero que
hemos tocado se compila y se enlaza el código objeto con el resto
generado antes. Podemos enlazar código objeto de C++ con código que
proviene de ensamblador.

Velocidad
El código resultante de una compilación de C++ es muy eficiente. C++ es
un lenguaje que podemos tratar a muy alto nivel o a muy bajo nivel.
                                                                 17
1.4 C++: El lenguaje de Programación




                                  18
1.5 Ejemplo de Clase
Definición
Queremos poder calcular la nota de los alumnos de la asignatura de
Métodos II de programación sabiendo que la nota final se calcula:

   20 % Por las prácticas de laboratorio (20% diarias 80% trabajo final)
   15 % Por exámen parcial.
   65 % Por exámen final

y suponiendo que todos los alumnos aprobarán y no irán al exámen
extraordinario.

Los alumnos deberán ser identificados por nombre, apellido1, apellido2 y
DNI.
             Alumno        nombre, apellido1, apellido2, dni


               Alumno        nota_practica_diaria    nota_parcial
            de Métodos II    nota_practica_final     nota_final

                                                                    19
1.5 Ejemplo de Clase

                   Alumno            Nombre               Alumno_M2
                                     de la Clase
            ­ nombre_: string                      ­ nota_p_dia_: float
            ­ apellido1_: string                   ­ nota_p_fin_: float
            ­ apellido2_: string     Datos         ­ nota_parcial_: float
            ­ dni_: string           Atributos     ­ nota_final_: float
            ­ edad_: int
­ privado
+ público   + nombre(string nom)     Métodos
                                                   + inicializar(): void 
            + apellido1(string a1)   Funciones
                                                   + nota_p_dia(float n)
            + apellido2(string a2)
                                                   + nota_p_fin(float n)
            + dni(string dni)
                                                   + nota_parcial(float n)
            + edad(int anios)
                                                   + nota_final(float n)
            + nombre() : string
                                                   + nota_p_dia():float
            + apellido1() : string
                                                   + nota_p_fin():float
            + apellido2() : string
                                                   + nota_parcial():float
            + dni() : string
                                                   + nota_final():float
            + edad(): int
                                                   + calificacion(): float
                                                   + imprime_notas(): void
1.5 Ejemplo de Clase                  Definición de Interfaz


// Clase Alumno de Métodos II
class AlumnoM2: public Alumno
{                                             AlumnoM2
private:
                                       ­ nota_p_dia_: float
    float nota_p_dia_;
                                       ­ nota_p_fin_: float
    float nota_p_fin_;
                                       ­ nota_parcial_: float
    float nota_parcial_;
                                       ­ nota_final_: float
    float nota_final_;

public:
    void inicializar  (void);         + inicializar(): void 
    void nota_p_dia   (float nota);   + nota_p_dia(float n)
    void nota_p_fin   (float nota);   + nota_p_fin(float n)
    void nota_parcial (float nota);   + nota_parcial(float n)
    void nota_final   (float nota);   + nota_final(float n)

    float nota_p_dia   (void);        + nota_p_dia():float
    float nota_p_fin   (void);        + nota_p_fin():float
    float nota_parcial (void);        + nota_parcial():float
    float nota_final   (void);        + nota_final():float

    float calificacion(void);         + calificacion(): float
    void  imprime_notas();            + imprime_notas(): void
}
                                                       21
1.5 Ejemplo de Clase                              Implementación


void                                    //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
AlumnoM2::inicializar (void)            void
{                                       AlumnoM2::nota_final (float nota);
    nota_p_dia_    = ­1;                {
    nota_p_fin_    = ­1;                    nota_final_    = nota;
    nota_parcial_  = ­1;                }
    nota_final_    = ­1;                //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
}                                       float
//­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­   AlumnoM2::nota_final (void);
void                                    {
AlumnoM2::nota_p_dia (float nota);          return nota_final_;
{                                       }
    nota_p_dia_    = nota;                              ...
}                                       //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
//­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­   float
void                                    AlumnoM2::calificacion (void);
AlumnoM2::nota_p_fin (float nota);      {
{                                           flota cal=0.0;
    nota_p_fin_    = nota;                  cal = 0.2* (0.2 * nota_p_dia_ + 
}                                                       0.8 * nota_p_fin_) +
//­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­             0.15*nota_parcial_       +
void                                              0.65*nota_final_;
AlumnoM2::nota_parcial (float nota);        return cal;
{                                       }
    nota_parcial_  = nota;
}                                                                     22
1.5 Ejemplo de Clase                    Ejercicios


1.­ Método para imprimir
Codificar el método para imprimir por pantalla:
      Nombre      : 
      Apellido1   : 
      Apellido2   :
      DNI         :
      Edad        :

     Calificación   :

2.­ Método que devuelve la calificación en un argumento.
Codificar el método que podamos llamar así.

        float cal;
        calificacion(cal);
        cout << “Calificacion: “ << cal << “n”;

(*) Suponemos que un “Creador de Clases” ha codificado la clase 
Alumno de la que deriva la nuestra.

                                                       23
1.6 Para Recordar

1.- Los proyectos Software son complejos y difíciles de desarrollar
Sólo el 29% de los proyectos software satisfacen los requisitos de los clientes,
se entregan a tiempo y se ajustan a los presupuestos.


2.- La POO nos ayuda a reutilizar y equivocarnos menos.
Sus características son: Abstracción, encapsulación, herencia y polimorfismo.


3.- C++ es un lenguaje Orientado a Objeto.
Se utiliza extensamente. Podemos aprender otros lenguajes. Eficiente.


4.- Los diagramas UML son una buena ayuda para diseñar.


5.- Aprendemos con la Práctica.
                                                                         24
Programa
Introducción a la POO
   Historia de la Programación   C++
   Conceptos de POO              Mi primera Clase

Repaso de Conceptos
   Estándares de Programación    Ficheros y E/S
   Punteros y Memoria            Control y Operadores

Clases y Objetos en C++
   Uso y aplicación              Funciones Amigas
   Constructores                 Constantes e “inline”

Sobrecarga
   De Operadores                 De Funciones

Herencia.
   Tipos de Visibilidad          Herencia Múltiple

Polimorfismo
   Funciones Virtuales           Polimorfismo y Sobrecarga.

Plantillas
   Contenedores                  Iteradores                   25

Más contenido relacionado

La actualidad más candente

Introducción a java
Introducción a javaIntroducción a java
Introducción a javawaldinelly
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetosliberaunlibroupeg
 
10. programación orientada a objetos (java)
10. programación orientada a objetos (java)10. programación orientada a objetos (java)
10. programación orientada a objetos (java)Eric Martinez Aguilar
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ijjegonzalezf
 
Apuntes de introduccion a la programación
Apuntes de introduccion a la programaciónApuntes de introduccion a la programación
Apuntes de introduccion a la programaciónvictdiazm
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POOLibertad25
 
CUESTIONARIO JAVA
CUESTIONARIO JAVACUESTIONARIO JAVA
CUESTIONARIO JAVAjesanchez5
 
10. programacion orientada a objetos en visual basic .net
10.  programacion orientada a objetos en visual basic .net10.  programacion orientada a objetos en visual basic .net
10. programacion orientada a objetos en visual basic .netjohnny herrera
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoaleja0940
 
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad  10: Reporte de polimorfismo, herencia & encapsulamientoActividad  10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad 10: Reporte de polimorfismo, herencia & encapsulamientograchika
 
Test Programación Orientada a Objetos
Test Programación Orientada a  ObjetosTest Programación Orientada a  Objetos
Test Programación Orientada a ObjetosLuis Arturo Vargas
 
Cuestionario
CuestionarioCuestionario
Cuestionariojpauly4
 

La actualidad más candente (20)

Unidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a ObjetosUnidad 1_Programacion Orientada a Objetos
Unidad 1_Programacion Orientada a Objetos
 
Introducción a java
Introducción a javaIntroducción a java
Introducción a java
 
PRESENTACION
PRESENTACIONPRESENTACION
PRESENTACION
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetos
 
10. programación orientada a objetos (java)
10. programación orientada a objetos (java)10. programación orientada a objetos (java)
10. programación orientada a objetos (java)
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 
Apuntes de introduccion a la programación
Apuntes de introduccion a la programaciónApuntes de introduccion a la programación
Apuntes de introduccion a la programación
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Introduccion a la POO
Introduccion a la POOIntroduccion a la POO
Introduccion a la POO
 
CUESTIONARIO JAVA
CUESTIONARIO JAVACUESTIONARIO JAVA
CUESTIONARIO JAVA
 
Intro
IntroIntro
Intro
 
10. programacion orientada a objetos en visual basic .net
10.  programacion orientada a objetos en visual basic .net10.  programacion orientada a objetos en visual basic .net
10. programacion orientada a objetos en visual basic .net
 
Trabajo poo
Trabajo poo Trabajo poo
Trabajo poo
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓNNIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
NIVEL DE PROGRAMACIÓN WEB INTRODUCCIÓN
 
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad  10: Reporte de polimorfismo, herencia & encapsulamientoActividad  10: Reporte de polimorfismo, herencia & encapsulamiento
Actividad 10: Reporte de polimorfismo, herencia & encapsulamiento
 
Test Programación Orientada a Objetos
Test Programación Orientada a  ObjetosTest Programación Orientada a  Objetos
Test Programación Orientada a Objetos
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 

Destacado (20)

Poss0502 slides
Poss0502 slidesPoss0502 slides
Poss0502 slides
 
Lp13
Lp13Lp13
Lp13
 
Poo 03
Poo 03Poo 03
Poo 03
 
Diablada Bellavista Revista Pdf
Diablada Bellavista Revista PdfDiablada Bellavista Revista Pdf
Diablada Bellavista Revista Pdf
 
Poo transpa
Poo transpaPoo transpa
Poo transpa
 
Poo 01
Poo 01Poo 01
Poo 01
 
Poo4
Poo4Poo4
Poo4
 
prenatal unapuno
prenatal unapunoprenatal unapuno
prenatal unapuno
 
Lto tema1
Lto tema1Lto tema1
Lto tema1
 
Tema2 programacion i_ib
Tema2 programacion i_ibTema2 programacion i_ib
Tema2 programacion i_ib
 
Transp objetos
Transp objetosTransp objetos
Transp objetos
 
Oracle
OracleOracle
Oracle
 
Web 3.0 educacion aldo zanabria
Web 3.0 educacion aldo zanabriaWeb 3.0 educacion aldo zanabria
Web 3.0 educacion aldo zanabria
 
Tema3
Tema3Tema3
Tema3
 
Desarrollo De Sistemas De Informaci N
Desarrollo De  Sistemas De  Informaci NDesarrollo De  Sistemas De  Informaci N
Desarrollo De Sistemas De Informaci N
 
obstruccion intestinal
obstruccion intestinalobstruccion intestinal
obstruccion intestinal
 
marketing digital
marketing digitalmarketing digital
marketing digital
 
AdministracióN De Proceso De ImplantacióN Del Sistema
AdministracióN De Proceso De ImplantacióN Del SistemaAdministracióN De Proceso De ImplantacióN Del Sistema
AdministracióN De Proceso De ImplantacióN Del Sistema
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Sistemas de información distribuidos
Sistemas de información distribuidosSistemas de información distribuidos
Sistemas de información distribuidos
 

Similar a Met2 07 01-introduccion_poo

Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...Jordi Cabot
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modularguestb97266b9
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Alfredo Chavez
 
Tecnología Orientada A Objetos
Tecnología Orientada A ObjetosTecnología Orientada A Objetos
Tecnología Orientada A ObjetosAndrés
 
Conceptos basicos de poo
Conceptos basicos de pooConceptos basicos de poo
Conceptos basicos de poojesus abello
 
metodologia-de-programación orientada a Objetos
metodologia-de-programación orientada a Objetosmetodologia-de-programación orientada a Objetos
metodologia-de-programación orientada a ObjetosEverCGonzalesRodrigo1
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la pooXavii Torres
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaglfloresgilberto
 

Similar a Met2 07 01-introduccion_poo (20)

Tc2 301403 21
Tc2 301403 21Tc2 301403 21
Tc2 301403 21
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring -  Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
¿Quién va a desarrollar las Apps del futuro? (aviso: no serán los programador...
 
Iphone
IphoneIphone
Iphone
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Programacion Modular
Programacion ModularProgramacion Modular
Programacion Modular
 
Tema nº 1
Tema nº 1Tema nº 1
Tema nº 1
 
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
Retos en la Adopción del Refactoring - Junta General del MexALN 28/06/2012
 
Buenasprcticas
BuenasprcticasBuenasprcticas
Buenasprcticas
 
Programacion visual
Programacion visualProgramacion visual
Programacion visual
 
Prog oo con_java
Prog oo con_javaProg oo con_java
Prog oo con_java
 
Manual de-java
Manual de-javaManual de-java
Manual de-java
 
Tecnología Orientada A Objetos
Tecnología Orientada A ObjetosTecnología Orientada A Objetos
Tecnología Orientada A Objetos
 
Conceptos basicos de poo
Conceptos basicos de pooConceptos basicos de poo
Conceptos basicos de poo
 
metodologia-de-programación orientada a Objetos
metodologia-de-programación orientada a Objetosmetodologia-de-programación orientada a Objetos
metodologia-de-programación orientada a Objetos
 
Introduccion a la poo
Introduccion a la pooIntroduccion a la poo
Introduccion a la poo
 
Aprenda c++ avanzado
Aprenda c++ avanzadoAprenda c++ avanzado
Aprenda c++ avanzado
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Clase numero 6
Clase numero 6Clase numero 6
Clase numero 6
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 

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
 
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 TurismoAldo Hernán Zanabria Gálvez
 
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 ComunicacionesAldo 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
 

Met2 07 01-introduccion_poo

  • 1. 1.0 Presentación Metodologías y Técnicas de Programación II Programación Orientada a Objeto (POO) C++ Profesor: José Luis Marina jmarina@nebrija.es Laboratorios: José Luis Marina jmarina@nebrija.es Borland Builder 6.0 Puntuación: Prácticas Laboratorio: 20% Diarias 20% Trabajo Laboratorio 80% Exámen Parcial 15% Exámen Final 65% Exámen Final Extraordinario 70% 1
  • 2. 1.0 Presentación: Programa Introducción a la POO Historia de la Programación C++ Conceptos de POO Mi primera Clase Repaso de Conceptos Estándares de Programación Ficheros y E/S Punteros y Memoria Control y Operadores Clases y Objetos en C++ Uso y aplicación Funciones Amigas Constructores Constantes e “inline” Sobrecarga De Operadores De Funciones Herencia. Tipos de Visibilidad Herencia Múltiple Polimorfismo Funciones Virtuales Polimorfismo y Sobrecarga. Plantillas Contenedores Iteradores 2
  • 3. 1.1 Historia de la Programación ¿Qué es programar? Programar es tener en cuenta ● Un problema: Quiero saber mi nota final en la asignatura. ● Un Conjunto de Datos En las prácticas diarias tengo un : 8 En la práctica final tengo un : 9 En el exámen parcial un : 6 En el exámen final un : 7 ● Unas funciones o algoritmos Nota Prácticas = (20% Prac.D) + (80%* Prac.F) Nota Final = 20% Nota.Prac. + 15% Parcial + 65% Final Y entonces... Aplicar las funciones para resolver el problema (7,21) 3
  • 4. 1.1 Historia de la Programación ¿Qué es programar? Queremos por supuesto que nuestro programa: ● Sea Correcto: Funciona bien y de acuerdo a los requisitos. El resultado se corresponde con unas especificaciones. Pero que además: ● Sea Eficaz Lo hace en un tiempo admisible. Especificaciones No Funcionales o de Calidad. ● Sea Adaptable o Flexible ¿Qué pasa si cambian las especificaciones? ● Sea Reutilizable Sería ideal que ante problemas parecidos, no tenga que volver a escribir todo el código y pueda aprovechar la mayor parte de él. 4
  • 5. 1.1 Historia de la Programación Evolución Código Binario Con “ceros” y “unos”. 0010101 --> SUMAR Código Máquina. Ensamblador Tengo Nemotécnicos y puedo llamar a rutinas (funciones) Lenguajes Procedimentales Puedo pasar argumentos a funciones, devolver valores. Separo interfaz de implementación. Programación Orientada a Objeto Todo es un objeto. Ayuda a abstraer, imaginarme las cosas del mundo real simplificando. Puedo encapsular los datos para evitar operaciones no permitidas. Patrones de Diseño Librerías de Clases, Frameworks Pares de solución/problema Reutilización masiva Programación Orientada a Aspectos, a Servicios, a Modelos,... 5
  • 6. 1.2 Reutilización Informe de Standish Group de 2004: Sólo el 29% de los proyectos software satisfacen los requisitos de los clientes, se entregan a tiempo y se ajustan a los presupuestos. El 53% acaban incumpliendo algún requisito, se entregan fuera de plazo o cuestan más de lo presupuestado. El 18% se cancelan antes de su finalización o jamás llegan a utilizarse. Reutilizar ayuda a sacar más con menos esfuerzo: Copio o reutilizo código, estructuras o ideas. Menos Equivocaciones: Reutilizo algo que ya funciona. Se ha corregido sus errores. Escribo menos código nuevo. Menos Pruebas Pruebo sólo lo nuevo y su integración. Más Creativo No rehago siempre lo mismo. Codifico nuevas funcionalidades. Mejoran las Probabilidades de Éxito 6
  • 7. 1.2 Tipos de Reutilización Reutilización Oportunista En general se da porque un programador copia código y lo pega en el suyo. Está bien pero tiene problemas a la larga: genero líneas diferentes para lo mismo y si algo está mal en el origen hay que buscar todos los sitios en donde se ha pegado para corregirlo. Reutilización Sistemática - (POO) Buscamos reutilizar y con un plan calculado. Queremos escribir sólo el código necesario, equivocarnos menos, poner y quitar funcionalidad de forma fácil. Queremos aprovechar los conocimientos y experiencia de otros que han estado antes “por aquí”. 7
  • 8. 1.3 Programación Orientada a Objeto Conceptos int i; ClaseEnteros mi_entero; i=33; mi_entero.asignar(33); cout << i; mi_entero.imprime_lo_que_vales(); Todo es un Objeto: Un objeto es como una variable mejorada. Cogemos un componente conceptual de nuestro problema y lo representamos como un objeto en nuestro programa (perro, edificio, tuerca, ventana,...) Los objetos se comunican mediante mensajes: Haremos programas que serán grupos de objetos enviando mensajes a otros para decirles qué hacer. Petición de invocación a una función que pertenece a un objeto en particular. Datos Propios: Podemos crear un nuevo tipo de objeto haciendo un paquete con otros objetos. Oculto la complejidad. Coche (ruedas, motor,etc) Cada objeto es de un tipo: Un clase define el tipo de un objeto. Clase Enteros -> un_entero. Un objeto es una instancia de una clase determinada. 8
  • 9. 1.3 Programación Orientada a Objeto Conceptos II Todos los Objetos de un tipo en particular pueden recibir los mismos mensajes: Esto es muy potente. Nos abre un montón de posibilidades para REUTILIZAR CÓDIGO. Clase Figura Clase Círculo Clase Cuadrado Clase Triángulo Un objeto del tipo o clase Círculo también es del tipo Figura. Está garantizado que un círculo recibirá los mensajes de Figura. Si hacemos código que habla con objetos de tipo Figura, SIN TOCAR NADA, ese código también funciona con objetos de la clase Círculo. mi_figura.dibujar_en_pantalla(); 9
  • 10. 1.3 Programación Orientada a Objeto Conceptos III Clases: Una clase describe un conjunto de objetos que tienen: Las mismas características. > Datos Los mismos comportamientos. > Funciones Una clase es un tipo de datos. Un entero también tiene unas características y unas funciones específicas. Crearemos nuevas clases y el lenguaje de programación las tratará como si fueran tipos de datos propios. Una vez definida una clase podremos crear tantos objetos como queramos. Circulo circulo1, circulo2; Circulo my_nuevo_circulo; 10
  • 11. 1.3 Programación Orientada a Objeto Ocultando la Implementación Creadores de Clases: Programadores que proporcionan un interfaz a otros programadores clientes. No dejamos que los clientes accedan a la implementación. Así podemos cambiarla sin preocuparnos. Mejoro la función “dibujar()”. Programadores Clientes: Utilizan clases creadas por otros para hacer programas u otros objetos sin preocuparse de la implementación. Si mejoras el método “dibujar()” yo no tengo que cambiar nada de mi código. Implementación 1 Implementación 2 Interfaz 11
  • 12. 1.3 Programación Orientada a Objeto Reutilizando la implementación Si hemos hecho bien nuestra clase se convierte en una unidad de código útil para los demás y para nosotros mismos. La utilizamos cuando nos venga bien. La REUTILIZAMOS. Podemos crear un objeto de esa clase directamente: ClaseMotor mi_motor; mi_motor.poner_a_punto(); Utilizar el objeto dentro de una clase Composición o Agregación 1 Coche Motor Se lee “X tiene n Y” suelen ser privados dinámica o estática muy potente Abstracción de la complejidad
  • 13. 1.3 Programación Orientada a Objeto Reutilizando el Interfaz Hay veces en que queremos crear un nuevo tipo, cuyo interfaz se parece a uno ya creado. Es más sencillo clonar una clase y añadir y modificar cosas al clon. Herencia Base o padre Vehículo “es un” “es como un” Vehículo Pública. Permito que lo Hija o Vehículo a Motor sin motor vean mis herederos. derivada Privado. Sólo para mi. Coche Autobús Bicicleta
  • 14. 1.3 Programación Orientada a Objeto Características Abstraccción: Nos permite representar una realidad compleja en términos de un modelo simplificado. Encapsulación: Nos permite ocultar cómo está construido un objeto. Otros componentes de nuestro sistema no necesitan conocer los datos y las funncionamiento interno del objeto. Datos y Funciones se empaquetan juntos. Los diferentes componentes, como no pueden acceder a sus partes internas, se comunican mediante mensajes. Herencia: Permite que un objeto incorpore todo o parte de su definición de otro objeto. Parte de la definición de Felino se corresponde con la definición de Mamífero. Polimorfismo: Propiedad que poseen algunas operaciones de tener un comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican 14
  • 15. 1.4 C++: El lenguaje de Programación C++ Es un lenguaje de programación de ● Propósito general ● Orientado a Objeto. Se basa en C. Un compilador de C++ compila también C. Lo diseñó y lo implementó Bjarne Stroustrup y empezó a hacerlo en 1979. La primera versión se llamó “C con clases”. La primera versión comercial salió al mercado en 1985. Se diseñó para que cumpliera con dos requisitos: ● Eficiente ● Elegante C++ es un lenguaje estandarizado. Se reúnen representantes de países y grandes empresas. El primer estándar sale en 1997 después de 8 años de esfuerzo. El estándar facilita enseñarlo en universidades de todo el mundo. 15
  • 16. 1.4 C++: El lenguaje de Programación ¿Alguien usa C++? El número de programadores C++ en el mundo se estima que es de tres millones – 3.000.000 (IDS 2004) Hay más de 400 libros sobre C++ en las librerías o en versión electrónica. Todos los proveedores grandes tienen compiladores para C++. Linux está en gran parte hecho en C++. ¿Es mejor C++ que Java o C#? ¿Quién es mejor programador/a? a) Juan que sabe 3 lenguajes b) Ana que sabe uno. c) No sabe no contesta. Algunos datos Aprendiendo C++ aprendes también C. Pasar de C++ a Java o a C# es relativamente sencillo. Hay mucho código para reutilizar. Hay librerías que nos dan facilidades como el “Recolector de Basura”. C++ sigue evolucionando : C++0x (Estándar ISO en 2008) 16
  • 17. 1.4 C++: El lenguaje de Programación Portabilidad Puedes compilar el mismo código C++ en diferentes plataformas. Brevedad El ćodigo escrito en C++ es muy corto comparado con el de otros lenaguajes. Podemos utliizar caracteres especiales en lugar palabras evitando algo de esfuerzo al programador. Modularidad Podemos hacer una aplicación software usando varios ficheros de código fuente, que se compilan de manera separada y luego se enlanzan para generar el ejecutable. No tenemos que recompilar todo; sólo el fichero que hemos tocado se compila y se enlaza el código objeto con el resto generado antes. Podemos enlazar código objeto de C++ con código que proviene de ensamblador. Velocidad El código resultante de una compilación de C++ es muy eficiente. C++ es un lenguaje que podemos tratar a muy alto nivel o a muy bajo nivel. 17
  • 19. 1.5 Ejemplo de Clase Definición Queremos poder calcular la nota de los alumnos de la asignatura de Métodos II de programación sabiendo que la nota final se calcula: 20 % Por las prácticas de laboratorio (20% diarias 80% trabajo final) 15 % Por exámen parcial. 65 % Por exámen final y suponiendo que todos los alumnos aprobarán y no irán al exámen extraordinario. Los alumnos deberán ser identificados por nombre, apellido1, apellido2 y DNI. Alumno nombre, apellido1, apellido2, dni Alumno nota_practica_diaria nota_parcial de Métodos II nota_practica_final nota_final 19
  • 20. 1.5 Ejemplo de Clase Alumno Nombre  Alumno_M2 de la Clase ­ nombre_: string ­ nota_p_dia_: float ­ apellido1_: string ­ nota_p_fin_: float ­ apellido2_: string Datos ­ nota_parcial_: float ­ dni_: string Atributos ­ nota_final_: float ­ edad_: int ­ privado + público + nombre(string nom) Métodos + inicializar(): void  + apellido1(string a1) Funciones + nota_p_dia(float n) + apellido2(string a2) + nota_p_fin(float n) + dni(string dni) + nota_parcial(float n) + edad(int anios) + nota_final(float n) + nombre() : string + nota_p_dia():float + apellido1() : string + nota_p_fin():float + apellido2() : string + nota_parcial():float + dni() : string + nota_final():float + edad(): int + calificacion(): float + imprime_notas(): void
  • 21. 1.5 Ejemplo de Clase Definición de Interfaz // Clase Alumno de Métodos II class AlumnoM2: public Alumno { AlumnoM2 private: ­ nota_p_dia_: float float nota_p_dia_; ­ nota_p_fin_: float float nota_p_fin_; ­ nota_parcial_: float float nota_parcial_; ­ nota_final_: float float nota_final_; public: void inicializar  (void); + inicializar(): void  void nota_p_dia   (float nota); + nota_p_dia(float n) void nota_p_fin   (float nota); + nota_p_fin(float n) void nota_parcial (float nota); + nota_parcial(float n) void nota_final   (float nota); + nota_final(float n) float nota_p_dia   (void); + nota_p_dia():float float nota_p_fin   (void); + nota_p_fin():float float nota_parcial (void); + nota_parcial():float float nota_final   (void); + nota_final():float float calificacion(void); + calificacion(): float void  imprime_notas(); + imprime_notas(): void } 21
  • 22. 1.5 Ejemplo de Clase Implementación void //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ AlumnoM2::inicializar (void) void { AlumnoM2::nota_final (float nota); nota_p_dia_  = ­1; { nota_p_fin_  = ­1; nota_final_  = nota; nota_parcial_  = ­1; } nota_final_  = ­1; //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ } float //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ AlumnoM2::nota_final (void); void { AlumnoM2::nota_p_dia (float nota); return nota_final_; { } nota_p_dia_  = nota;                 ... } //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­ float void AlumnoM2::calificacion (void); AlumnoM2::nota_p_fin (float nota); { { flota cal=0.0; nota_p_fin_  = nota; cal = 0.2* (0.2 * nota_p_dia_ +  }                 0.8 * nota_p_fin_) + //­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­           0.15*nota_parcial_       + void           0.65*nota_final_; AlumnoM2::nota_parcial (float nota); return cal; { } nota_parcial_  = nota; } 22
  • 23. 1.5 Ejemplo de Clase Ejercicios 1.­ Método para imprimir Codificar el método para imprimir por pantalla: Nombre  :  Apellido1 :  Apellido2 : DNI : Edad : Calificación : 2.­ Método que devuelve la calificación en un argumento. Codificar el método que podamos llamar así. float cal; calificacion(cal); cout << “Calificacion: “ << cal << “n”; (*) Suponemos que un “Creador de Clases” ha codificado la clase  Alumno de la que deriva la nuestra. 23
  • 24. 1.6 Para Recordar 1.- Los proyectos Software son complejos y difíciles de desarrollar Sólo el 29% de los proyectos software satisfacen los requisitos de los clientes, se entregan a tiempo y se ajustan a los presupuestos. 2.- La POO nos ayuda a reutilizar y equivocarnos menos. Sus características son: Abstracción, encapsulación, herencia y polimorfismo. 3.- C++ es un lenguaje Orientado a Objeto. Se utiliza extensamente. Podemos aprender otros lenguajes. Eficiente. 4.- Los diagramas UML son una buena ayuda para diseñar. 5.- Aprendemos con la Práctica. 24
  • 25. Programa Introducción a la POO Historia de la Programación C++ Conceptos de POO Mi primera Clase Repaso de Conceptos Estándares de Programación Ficheros y E/S Punteros y Memoria Control y Operadores Clases y Objetos en C++ Uso y aplicación Funciones Amigas Constructores Constantes e “inline” Sobrecarga De Operadores De Funciones Herencia. Tipos de Visibilidad Herencia Múltiple Polimorfismo Funciones Virtuales Polimorfismo y Sobrecarga. Plantillas Contenedores Iteradores 25