Sunteți pe pagina 1din 25

1.

0 Pr es ent ac i n
Metodologas y Tcnicas de Programacin II
Programacin Orientada a Objeto (POO)
C++
Profesor:
.odri*o ?aranjo S.
ssco2000@*mail.com
aboratorios:
.odri*o ?aranjo S.
ssco2000@*mail.com
+odeBlock %0.0D
P!nt!acin:
Prcticas Laboratorio: H#$
rabajo Laboratorio !0%
"#men Parcial K#$
"#men $inal ?#$
()*men :!-letorio @#$
%
1. 0 Pr es ent ac i n: Pr ogr ama
&ntroducci'n a la P((
)istoria de la Pro*ramaci'n +,,
+once-tos de P(( Mi -rimera +lase
.e-aso de +once-tos
"stndares de Pro*ramaci'n $ic/eros 0 "12
Punteros 0 Memoria +ontrol 0 (-eradores
+lases 0 (bjetos en +,,
3so 0 a-licaci'n $unciones 4mi*as
+onstructores +onstantes e 5inline6
2obrecar*a
De (-eradores De $unciones
)erencia.
i-os de 7isibilidad )erencia M8lti-le
Polimor9ismo
$unciones 7irtuales Polimor9ismo 0 2obrecar*a.
Plantillas
+ontenedores &teradores
2
1. 1 Hi s t or i a de l a Pr ogr amac i n
:;u es -ro*ramar<
Pro*ramar es tener en cuenta

3n -roblema:
;uiero saber mi nota 9inal en la asi*natura.

3n +onjunto de .atos
"n las -rcticas diarias ten*o un : !
"n la -rctica 9inal ten*o un : =
"n el e#men -arcial un : 6
"n el e#men 9inal un : >

3nas f!nciones o al*oritmos


?ota Prcticas @ A20% Prac.DB , A!0%C Prac.$B
?ota $inal @ 20% ?ota.Prac. , %D% Parcial , 6D% $inal
E entonces...
4-licar las 9unciones -ara resolFer el -roblema A>G2%B
H
1. 1 Hi s t or i a de l a Pr ogr amac i n
:;u es -ro*ramar<
/!eremos -or s!-!esto 0!e n!estro -rograma:

2ea Correcto:
$unciona bien 0 de acuerdo a los reIuisitos.
"l resultado se corres-onde con unas es-eci9icaciones.
Pero 0!e adem*s:

2ea (fica1
Lo /ace en un tiem-o admisible.
"s-eci9icaciones ?o $uncionales o de +alidad.

2ea 2da-table o +le)ible


:;u -asa si cambian las es-eci9icaciones<

2ea 3e!tili1able
2erJa ideal Iue ante -roblemas -arecidosG no ten*a Iue
FolFer a escribir todo el c'di*o 0 -ueda a-roFec/ar la
ma0or -arte de l.
K
1. 1 Hi s t or i a de l a Pr ogr amac i n
"Foluci'n
Cdigo 4inario
+on 5ceros6 0 5unos6. 00%0%0% LLM 23M4.
Cdigo M*0!ina5 (nsamblador
en*o ?emotcnicos 0 -uedo llamar a rutinas A9uncionesB
eng!ajes Procedimentales
Puedo -asar ar*umentos a 9uncionesG deFolFer Falores.
2e-aro inter9aN de im-lementaci'n.
Programacin Orientada a Objeto
odo es un objeto.
40uda a abstraerG ima*inarme las cosas del mundo real sim-li9icando.
Puedo enca-sular los datos -ara eFitar o-eraciones no -ermitidas.
Patrones de .ise6o ibreras de Clases7 +rame8or9s
Pares de soluci'n1-roblema .eutiliNaci'n masiFa
Programacin Orientada a 2s-ectos7 a :er;icios7 a Modelos7555
D
1. 2 Reut i l i z ac i n
.eutiliNar a0uda a sacar ms con menos es9uerNo: +o-io o reutiliNo c'di*oG
estructuras o ideas.
Menos (0!i;ocaciones:
.eutiliNo al*o Iue 0a 9unciona. 2e /a corre*ido sus errores.
"scribo menos c'di*o nueFo.
Menos Pr!ebas
Pruebo s'lo lo nueFo 0 su inte*raci'n.
M*s Creati;o
?o re/a*o siem-re lo mismo. +odi9ico nueFas 9uncionalidades.
Mejoran las Probabilidades de <)ito 6
Informe de :tandis= >ro!- de "##?:
2'lo el 2=% de los -ro0ectos so9tOare satis9acen los reIuisitos de los clientesG se
entre*an a tiem-o 0 se ajustan a los -resu-uestos.
"l DH% acaban incum-liendo al*8n reIuisitoG se entre*an 9uera de -laNo o cuestan ms
de lo -resu-uestado.
"l %@$ se cancelan antes de su 9inaliNaci'n o jams lle*an a utiliNarse.
1. 2 Ti pos de Reut i l i z ac i n
3e!tili1acin O-ort!nista
"n *eneral se da -orIue un -ro*ramador co-ia c'di*o 0 lo -e*a en el su0o.
"st bien -ero tiene -roblemas a la lar*a: *enero lJneas di9erentes -ara lo
mismo 0 si al*o est mal en el ori*en /a0 Iue buscar todos los sitios en
donde se /a -e*ado -ara corre*irlo.
3e!tili1acin :istem*tica A (POO)
Buscamos reutiliNar 0 con un -lan calculado. ;ueremos escribir s'lo el
c'di*o necesarioG eIuiFocarnos menosG -oner 0 Iuitar 9uncionalidad de
9orma 9cil. ;ueremos a-roFec/ar los conocimientos 0 e#-eriencia de otros
Iue /an estado antes 5-or aIuJ6.
>
1. 3 Pr ogr amac i n Or i ent ada a Obj et o
+once-tos
odo es un (bjeto:
3n objeto es como una Fariable mejorada.
+o*emos un com-onente conce-tual de nuestro -roblema 0 lo
re-resentamos como un objeto en nuestro -ro*rama A-erroG edi9icioG
tuercaG FentanaG...B
Los objetos se comunican mediante mensajes:
)aremos -ro*ramas Iue sern *ru-os de objetos enFiando mensajes a
otros -ara decirles Iu /acer. Petici'n de inFocaci'n a una 9unci'n Iue
-ertenece a un objeto en -articular.
Datos Pro-ios:
Podemos crear un nueFo ti-o de objeto /aciendo un -aIuete con otros
objetos. (culto la com-lejidad. +oc/e AruedasG motorGetcB
+ada objeto es de un ti-o:
3n clase de9ine el ti-o de un objeto. +lase "nteros LM unPentero.
3n objeto es una instancia de una clase determinada.
!
int i;
i=33;
cout << i;
ClaseEnteros mi_entero;
mi_entero.asignar(33);
mi_entero.imprime_lo_que_vales();
1. 3 Pr ogr amac i n Or i ent ada a Obj et o
+once-tos &&
odos los (bjetos de un ti-o en -articular -ueden recibir los mismos
mensajes:
"sto es mu0 -otente. ?os abre un mont'n de -osibilidades -ara
."3&L&Q4. +RD&S(.
+lase $i*ura +lase +Jrculo
+lase +uadrado
+lase rin*ulo
3n objeto del ti-o o clase +Jrculo tambin es del ti-o $i*ura.
"st *arantiNado Iue un cJrculo recibir los mensajes de $i*ura.
2i /acemos c'di*o Iue /abla con objetos de ti-o $i*uraG 2&? (+4. ?4D4G
ese c'di*o tambin 9unciona con objetos de la clase +Jrculo.
mi_figura.dibujar_en_pantalla();
=
1. 3 Pr ogr amac i n Or i ent ada a Obj et o
+once-tos &&&
+lases:
3na clase describe un conjunto de objetos Iue tienen:
Las mismas caracterJsticas. M Datos
Los mismos com-ortamientos. M $unciones
3na clase es un ti-o de datos. 3n entero tambin tiene unas caracterJsticas
0 unas 9unciones es-ecJ9icas.
+rearemos nueFas clases 0 el len*uaje de -ro*ramaci'n las tratar como si
9ueran ti-os de datos -ro-ios.
3na FeN de9inida una clase -odremos crear tantos objetos como Iueramos.
Circulo circulo1, circulo2;
Circulo my_nuevo_circulo;
%0
1. 3 Pr ogr amac i n Or i ent ada a Obj et o
(cultando la &m-lementaci'n
+readores de +lases:
Pro*ramadores Iue -ro-orcionan un inter9aN a otros -ro*ramadores
clientes. ?o dejamos Iue los clientes accedan a la im-lementaci'n. 4sJ
-odemos cambiarla sin -reocu-arnos. Mejoro la 9unci'n 5dibujarAB6.
Pro*ramadores +lientes:
3tiliNan clases creadas -or otros -ara /acer -ro*ramas u otros objetos sin
-reocu-arse de la im-lementaci'n. 2i mejoras el mtodo 5dibujarAB6 0o no
ten*o Iue cambiar nada de mi c'di*o.
%%
&nter9aN
&m-lementaci'n %
&m-lementaci'n 2
1. 3 Pr ogr amac i n Or i ent ada a Obj et o
.eutiliNando la im-lementaci'n
2i /emos /ec/o bien nuestra clase se conFierte en una unidad de c'di*o
8til -ara los dems 0 -ara nosotros mismos. La utiliNamos cuando nos
Fen*a bien. La ."3&L&Q4M(2.
Podemos crear !n objeto de esa clase directamente:
ClaseMotor mi_motor;
mi_motor.poner_a_punto();
3tiliNar el objeto dentro de una clase
Coc=e Motor
%
+om-osici'n o 4*re*aci'n
2e lee 5T tiene n E6
suelen ser -riFados
dinmica o esttica
mu0 -otente
4bstracci'n
de la
com-lejidad
1. 3 Pr ogr amac i n Or i ent ada a Obj et o
.eutiliNando el &nter9aN
)a0 Feces en Iue Iueremos crear un nueFo ti-oG cu0o inter9aN se -arece a
uno 0a creado.
"s ms sencillo clonar una clase 0 aUadir 0 modi9icar cosas al clon.
Be=c!lo
Coc=e
)erencia
5es un6 5es como un6
P8blica. Permito Iue lo
Fean mis /erederos.
PriFado. 2'lo -ara mi.
2!tobCs
Be=c!lo
sin motor
Be=c!lo
a Motor
4icicleta
Base o -adre
)ija o
deriFada
1. 3 Pr ogr amac i n Or i ent ada a Obj et o
+aracterJsticas
4bstraccci'n:
?os -ermite re-resentar una realidad com-leja en trminos de un modelo
sim-li9icado.
"nca-sulaci'n:
?os -ermite ocultar c'mo est construido un objeto. (tros com-onentes de
nuestro sistema no necesitan conocer los datos 0 las 9unncionamiento
interno del objeto. Datos 0 $unciones se em-aIuetan juntos. Los di9erentes
com-onentesG como no -ueden acceder a sus -artes internasG se
com!nican mediante mensajes.
)erencia:
Permite Iue un objeto incor-ore todo o -arte de su de9inici'n de otro
objeto. Parte de la de9inici'n de $elino se corres-onde con la de9inici'n de
MamJ9ero.
Polimor9ismo:
Pro-iedad Iue -oseen al*unas o-eraciones de tener un com-ortamiento
di9erente de-endiendo del objeto Ao ti-o de datoB sobre el Iue se a-lican
%K
1. 4 C++: El l enguaj e de Pr ogr amac i n
+,,
"s un len*uaje de -ro*ramaci'n de

Pro-'sito *eneral

(rientado a (bjeto.
2e basa en +. 3n com-ilador de +,, com-ila tambin +.
Lo diseU' 0 lo im-lement' Bjarne 2troustru- 0 em-eN' a /acerlo en %=>=.
La -rimera Fersi'n se llam' 5+ con clases6.
La -rimera Fersi'n comercial sali' al mercado en %=!D.
2e diseU' -ara Iue cum-liera con dos reIuisitos:

"9iciente

"le*ante
+,, es un len*uaje estandariNado. 2e re8nen re-resentantes de -aJses 0
*randes em-resas. "l -rimer estndar sale en %==> des-us de ! aUos de
es9uerNo. "l estndar 9acilita enseUarlo en uniFersidades de todo el mundo.
%D
1. 4 C++: El l enguaj e de Pr ogr amac i n
:4l*uien usa +,,<
"l n8mero de -ro*ramadores +,, en el mundo se estima Iue es de tres
millones V H.000.000 A&D2 200KB
)a0 ms de K00 libros sobre +,, en las librerJas o en Fersi'n electr'nica.
odos los -roFeedores *randes tienen com-iladores -ara +,,.
Linu# est en *ran -arte /ec/o en +,,.
:"s mejor +,, Iue JaFa o +W<
:;uin es mejor -ro*ramador1a<
aB Juan Iue sabe H len*uajes
bB 4na Iue sabe uno.
cB ?o sabe no contesta.
4l*unos datos
4-rendiendo +,, a-rendes tambin +.
Pasar de +,, a JaFa o a +W es relatiFamente sencillo.
)a0 muc/o c'di*o -ara reutiliNar.
)a0 librerJas Iue nos dan 9acilidades como el 5.ecolector de Basura6.
+,, si*ue eFolucionando : +,,0# A"stndar &2( en 200!B
%6
1. 4 C++: El l enguaj e de Pr ogr amac i n
Portabilidad
Puedes com-ilar el mismo c'di*o +,, en di9erentes -lata9ormas.
BreFedad
"l Xodi*o escrito en +,, es mu0 corto com-arado con el de otros
lena*uajes. Podemos utliiNar caracteres es-eciales en lu*ar -alabras
eFitando al*o de es9uerNo al -ro*ramador.
Modularidad
Podemos /acer una a-licaci'n so9tOare usando Farios 9ic/eros de c'di*o
9uenteG Iue se com-ilan de manera se-arada 0 lue*o se enlanNan -ara
*enerar el ejecutable. ?o tenemos Iue recom-ilar todoY s'lo el 9ic/ero Iue
/emos tocado se com-ila 0 se enlaNa el c'di*o objeto con el resto
*enerado antes. Podemos enlaNar c'di*o objeto de +,, con c'di*o Iue
-roFiene de ensamblador.
7elocidad
"l c'di*o resultante de una com-ilaci'n de +,, es mu0 e9iciente. +,, es
un len*uaje Iue -odemos tratar a mu0 alto niFel o a mu0 bajo niFel.
%>
1. 4 C++: El l enguaj e de Pr ogr amac i n
%!
1. 5 Ej empl o de Cl as e
De9inici'n
;ueremos -oder calcular la nota de los alumnos de la asi*natura de
Mtodos && de -ro*ramaci'n sabiendo Iue la nota 9inal se calcula:
20 % Por las -rcticas de laboratorio A20% diarias !0% trabajo 9inalB
%D % Por e#men -arcial.
6D % Por e#men 9inal
0 su-oniendo Iue todos los alumnos a-robarn 0 no irn al e#men
e#traordinario.
Los alumnos debern ser identi9icados -or nombreG a-ellido%G a-ellido2 0
D?&.
%=
4lumno
4lumno
de Mtodos &&
nombreG a-ellido%G a-ellido2G dni
notaP-racticaPdiaria notaP-arcial
notaP-racticaP9inal notaP9inal
1. 5 Ej empl o de Cl as e
- privado
+ pblico
4lumno
- nombre_: string
- apellido1_: string
- apellido2_: string
- dni_: string
- edad_: int
+ nombre(string nom)
+ apellido1(string a1)
+ apellido2(string a2)
+ dni(string dni)
+ edad(int anios)
+ nombre() : string
+ apellido1() : string
+ apellido2() : string
+ dni() : string
+ edad(): int
Nombre
de la Clase
Datos
Atributos
Mtodos
Funciones
4lumnoPM2
- nota_p_dia_: float
- nota_p_fin_: float
- nota_parcial_: float
- nota_final_: float
+ inicializar(): void
+ nota_p_dia(float n)
+ nota_p_fin(float n)
+ nota_parcial(float n)
+ nota_final(float n)
+ nota_p_dia():float
+ nota_p_fin():float
+ nota_parcial():float
+ nota_final():float
+ calificacion(): float
+ imprime_notas(): void
1. 5 Ej empl o de Cl as e
2%
4lumnoM2
- nota_p_dia_: float
- nota_p_fin_: float
- nota_parcial_: float
- nota_final_: float
+ inicializar(): void
+ nota_p_dia(float n)
+ nota_p_fin(float n)
+ nota_parcial(float n)
+ nota_final(float n)
+ nota_p_dia():float
+ nota_p_fin():float
+ nota_parcial():float
+ nota_final():float
+ calificacion(): float
+ imprime_notas(): void
// Clase Alumno de Mtodos II
class AlumnoM2: public Alumno
{
private:
float nota_p_dia_;
float nota_p_fin_;
float nota_parcial_;
float nota_final_;
public:
void inicializar (void);
void nota_p_dia (float nota);
void nota_p_fin (float nota);
void nota_parcial (float nota);
void nota_final (float nota);
float nota_p_dia (void);
float nota_p_fin (void);
float nota_parcial (void);
float nota_final (void);
float calificacion(void);
void imprime_notas();
}
De9inici'n de &nter9aN
1. 5 Ej empl o de Cl as e
22
void
AlumnoM2::inicializar (void)
{
nota_p_dia_ = -1;
nota_p_fin_ = -1;
nota_parcial_ = -1;
nota_final_ = -1;
}
//-----------------------------------
void
AlumnoM2::nota_p_dia (float nota);
{
nota_p_dia_ = nota;
}
//-----------------------------------
void
AlumnoM2::nota_p_fin (float nota);
{
nota_p_fin_ = nota;
}
//-----------------------------------
void
AlumnoM2::nota_parcial (float nota);
{
nota_parcial_ = nota;
}
&m-lementaci'n
//-----------------------------------
void
AlumnoM2::nota_final (float nota);
{
nota_final_ = nota;
}
//-----------------------------------
float
AlumnoM2::nota_final (void);
{
return nota_final_;
}
...
//-----------------------------------
float
AlumnoM2::calificacion (void);
{
flota cal=0.0;
cal = 0.2* (0.2 * nota_p_dia_ +
0.8 * nota_p_fin_) +
0.15*nota_parcial_ +
0.65*nota_final_;
return cal;
}
1. 5 Ej empl o de Cl as e
2H
"jercicios
1.- Mtodo para imprimir
Codificar el mtodo para imprimir por pantalla:
Nombre :
Apellido1 :
Apellido2 :
DNI :
Edad :
Calificacin :
2.- Mtodo que devuelve la calificacin en un argumento.
Codificar el mtodo 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.
1. 6 Par a Rec or dar
2K
%.L Los -ro0ectos 2o9tOare son com-lejos 0 di9Jciles de desarrollar
2'lo el 2=% de los -ro0ectos so9tOare satis9acen los reIuisitos de los clientesG
se entre*an a tiem-o 0 se ajustan a los -resu-uestos.
2.L La P(( nos a0uda a reutiliNar 0 eIuiFocarnos menos.
2us caracterJsticas son: 4bstracci'nG enca-sulaci'nG /erencia 0 -olimor9ismo.
H.L +,, es un len*uaje (rientado a (bjeto.
2e utiliNa e#tensamente. Podemos a-render otros len*uajes. "9iciente.
K.L Los dia*ramas 3ML son una buena a0uda -ara diseUar.
D.L 4-rendemos con la Prctica.
Pr ogr ama
&ntroducci'n a la P((
)istoria de la Pro*ramaci'n +,,
+once-tos de P(( Mi -rimera +lase
.e-aso de +once-tos
"stndares de Pro*ramaci'n $ic/eros 0 "12
Punteros 0 Memoria +ontrol 0 (-eradores
+lases 0 (bjetos en +,,
3so 0 a-licaci'n $unciones 4mi*as
+onstructores +onstantes e 5inline6
2obrecar*a
De (-eradores De $unciones
)erencia.
i-os de 7isibilidad )erencia M8lti-le
Polimor9ismo
$unciones 7irtuales Polimor9ismo 0 2obrecar*a.
Plantillas
+ontenedores &teradores
2D

S-ar putea să vă placă și