Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MET2 07 01-IntroduccionPOO PDF
MET2 07 01-IntroduccionPOO PDF
0Presentacin
Metodologas y Tcnicas de Programacin II
Programacin Orientada a Objeto (POO)
C++
Profesor:
Jos Luis Marina
jmarina@nebrija.es
Laboratorios:
Jos Luis Marina
jmarina@nebrija.es
Borland Builder 6.0
Puntuacin:
Prcticas Laboratorio: 20%
Diarias 20%
Trabajo Laboratorio 80%
Repaso de Conceptos
Estndares de Programacin Ficheros y E/S
Punteros y Memoria Control y Operadores
Sobrecarga
De Operadores De Funciones
Herencia.
Tipos de Visibilidad Herencia Mltiple
Polimorfismo
Funciones Virtuales Polimorfismo y Sobrecarga.
Plantillas
Contenedores Iteradores 2
1.1HistoriadelaProgramacin
Qu es programar?
Programar es tener en cuenta
Un problema:
Quiero saber mi nota final en la asignatura.
Un Conjunto de Datos
En las prcticas diarias tengo un : 8
En la prctica final tengo un : 9
En el exmen parcial un : 6
En el exmen final un : 7
Unas funciones o algoritmos
Nota Prcticas = (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.1HistoriadelaProgramacin
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.
Sea Adaptable o Flexible
Qu pasa si cambian las especificaciones?
Sea Reutilizable
Sera ideal que ante problemas parecidos, no tenga que
volver a escribir todo el cdigo y pueda aprovechar la
mayor parte de l.
4
1.1HistoriadelaProgramacin
Evolucin
Cdigo Binario
Con ceros y unos. 0010101 --> SUMAR
Lenguajes Procedimentales
Puedo pasar argumentos a funciones, devolver valores.
Separo interfaz de implementacin.
7
1.3ProgramacinOrientadaaObjeto
Datos Propios:
Podemos crear un nuevo tipo de objeto haciendo un paquete con otros
objetos. Oculto la complejidad. Coche (ruedas, motor,etc)
Conceptos II
Todos los Objetos de un tipo en particular pueden recibir los mismos
mensajes:
Si hacemos cdigo que habla con objetos de tipo Figura, SIN TOCAR NADA,
ese cdigo tambin funciona con objetos de la clase Crculo.
mi_figura.dibujar_en_pantalla(); 9
1.3ProgramacinOrientadaaObjeto
Conceptos III
Clases:
Una vez definida una clase podremos crear tantos objetos como queramos.
Circulo circulo1,circulo2;
Circulo my_nuevo_circulo;
10
1.3ProgramacinOrientadaaObjeto
Ocultando la Implementacin
Creadores de Clases:
Programadores que proporcionan un interfaz a otros programadores
clientes. No dejamos que los clientes accedan a la implementacin. As
podemos cambiarla sin preocuparnos. Mejoro la funcin dibujar().
Programadores Clientes:
Utilizan clases creadas por otros para hacer programas u otros objetos sin
preocuparse de la implementacin. Si mejoras el mtodo dibujar() yo no
tengo que cambiar nada de mi cdigo.
Implementacin 1
Implementacin 2 Interfaz
11
1.3ProgramacinOrientadaaObjeto
Reutilizando la implementacin
Si hemos hecho bien nuestra clase se convierte en una unidad de cdigo
til para los dems y para nosotros mismos. La utilizamos cuando nos
venga bien. La REUTILIZAMOS.
ClaseMotor mi_motor;
mi_motor.poner_a_punto();
Reutilizando el Interfaz
Hay veces en que queremos crear un nuevo tipo, cuyo interfaz se parece a
uno ya creado.
Es ms sencillo clonar una clase y aadir y modificar cosas al clon.
Herencia
Base o padre Vehculo
es un es como un
Vehculo
Pblica. Permito que lo
Hija o Vehculo
a Motor sin motor vean mis herederos.
derivada
Privado. Slo para mi.
Caractersticas
Abstracccin:
Nos permite representar una realidad compleja en trminos de un modelo
simplificado.
Encapsulacin:
Nos permite ocultar cmo 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 definicin de otro
objeto. Parte de la definicin de Felino se corresponde con la definicin de
Mamfero.
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.4C++:EllenguajedeProgramacin
C++
Es un lenguaje de programacin de
Propsito general
Orientado a Objeto.
Algunos datos
Aprendiendo C++ aprendes tambin C.
Pasar de C++ a Java o a C# es relativamente sencillo.
Hay mucho cdigo para reutilizar.
Hay libreras que nos dan facilidades como el Recolector de Basura.
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 aplicacin software usando varios ficheros de cdigo
fuente, que se compilan de manera separada y luego se enlanzan para
generar el ejecutable. No tenemos que recompilar todo; slo el fichero que
hemos tocado se compila y se enlaza el cdigo objeto con el resto
generado antes. Podemos enlazar cdigo objeto de C++ con cdigo que
proviene de ensamblador.
Velocidad
El cdigo resultante de una compilacin de C++ es muy eficiente. C++ es
un lenguaje que podemos tratar a muy alto nivel o a muy bajo nivel.
17
1.4C++:EllenguajedeProgramacin
18
1.5EjemplodeClase
Definicin
Queremos poder calcular la nota de los alumnos de la asignatura de
Mtodos II de programacin sabiendo que la nota final se calcula:
19
1.5EjemplodeClase
//ClaseAlumnodeMtodosII
classAlumnoM2:publicAlumno
{ 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:
voidinicializar(void); +inicializar():void
voidnota_p_dia(floatnota); +nota_p_dia(floatn)
voidnota_p_fin(floatnota); +nota_p_fin(floatn)
voidnota_parcial(floatnota); +nota_parcial(floatn)
voidnota_final(floatnota); +nota_final(floatn)
floatnota_p_dia(void); +nota_p_dia():float
floatnota_p_fin(void); +nota_p_fin():float
floatnota_parcial(void); +nota_parcial():float
floatnota_final(void); +nota_final():float
floatcalificacion(void); +calificacion():float
voidimprime_notas(); +imprime_notas():void
}
21
1.5EjemplodeClase Implementacin
void //
AlumnoM2::inicializar(void) void
{ AlumnoM2::nota_final(floatnota);
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(floatnota); returnnota_final_;
{ }
nota_p_dia_ =nota; ...
} //
// float
void AlumnoM2::calificacion(void);
AlumnoM2::nota_p_fin(floatnota); {
{ flotacal=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(floatnota); returncal;
{ }
nota_parcial_ =nota;
} 22
1.5EjemplodeClase Ejercicios
1.Mtodoparaimprimir
Codificarelmtodoparaimprimirporpantalla:
Nombre :
Apellido1 :
Apellido2 :
DNI :
Edad :
Calificacin :
2.Mtodoquedevuelvelacalificacinenunargumento.
Codificarelmtodoquepodamosllamaras.
floatcal;
calificacion(cal);
cout<<Calificacion:<<cal<<\n;
(*)SuponemosqueunCreadordeClaseshacodificadolaclase
Alumnodelaquederivalanuestra.
23
1.6ParaRecordar
4.- Los diagramas UML son una buena ayuda para disear.
Repaso de Conceptos
Estndares de Programacin Ficheros y E/S
Punteros y Memoria Control y Operadores
Sobrecarga
De Operadores De Funciones
Herencia.
Tipos de Visibilidad Herencia Mltiple
Polimorfismo
Funciones Virtuales Polimorfismo y Sobrecarga.
Plantillas
Contenedores Iteradores 25