Académique Documents
Professionnel Documents
Culture Documents
aboratorios:
Jos Luis Marina jmarina@nebrija.es Borland Builder 6.0 "#$ 20% !0% %&$ '&$ ,#$
%
P!nt!acin:
Prcticas Laboratorio: Diarias rabajo Laboratorio "#men Parcial "#men $inal ()*men +inal ()traordinario
.e-aso de +once-tos
0obrecar*a
De (-eradores De $unciones
)erencia.
i-os de 6isibilidad
)erencia M7lti-le
Polimor8ismo
$unciones 6irtuales Polimor8ismo 1 0obrecar*a.
Plantillas
+ontenedores
&teradores
odo es un (bjeto: 2n objeto es como una 9ariable mejorada. +o*emos un com-onente conce-tual de nuestro -roblema 1 lo re-resentamos como un objeto en nuestro -ro*rama :-erro; edi8icio; tuerca; 9entana;...< Los objetos se comunican mediante mensajes: )aremos -ro*ramas =ue sern *ru-os de objetos en9iando mensajes a otros -ara decirles =u >acer. Petici'n de in9ocaci'n a una 8unci'n =ue -ertenece a un objeto en -articular. Datos Pro-ios: Podemos crear un nue9o ti-o de objeto >aciendo un -a=uete con otros objetos. (culto la com-lejidad. +oc>e :ruedas; motor;etc< +ada objeto es de un ti-o: 2n clase de8ine el ti-o de un objeto. +lase "nteros ?@ unAentero. 2n objeto es una instancia de una clase determinada.
2n objeto del ti-o o clase +Grculo tambin es del ti-o $i*ura. "st *arantiHado =ue un cGrculo recibir los mensajes de $i*ura. 0i >acemos c'di*o =ue >abla con objetos de ti-o $i*ura; 0&C (+3. C3D3; ese c'di*o tambin 8unciona con objetos de la clase +Grculo.
mi_figura.dibujar_en_pantalla(); I
.ectan*ulo
Rectangulo.cpp
test_Rectangulo.h
4.2 Clases
(str!ct!ras
i-o de datos a*re*ados usando otros ti-os de datos. struct Time { int hour; int minute; int second; };
Combres de los miembros de la "structura "n el mismo str!ct: Combres 7nicos 1 di8erentes. "n di8erentes str!cts: Pueden tener el mismo nombre
4.2 Clases
(str!ct!ras
3cceso a los miembros de una estructura: (-erador -unto :.< -ara acceso a los miembros. (-erador 8ecla :?@< -ara acceso a tra9s de -unteros. cout << timeObject.hour; ' timePtr = &timeObject; cout << timePtr->hour;
4.2 Clases
(str!ct!ras
// Definicin struct Time { int hour; int minute; int second; }; void printUniversal( const Time & ); void printStandard( const Time & ); // 0-23 // 0-59 // 0-59 // Uso Time dinnerTime; dinnerTime.hour = 18; dinnerTime.minute = 30; dinnerTime.second = 0; cout << "La cena sera a las:"; printUniversal( dinnerTime ); cout << " formato universal, y "; printStandard( dinnerTime ); cout << " en formato estandar.\n"; dinnerTime.hour = 29; // Invalido dinnerTime.minute = 73; // Invalido cout << "\nHora invalida: "; printUniversal( dinnerTime ); cout << endl;
4.2 Clases
(str!ct!ras
// Definicin struct Time { int hour; int minute; int second; }; void printUniversal( const Time & ); void printStandard( const Time & ); // 0-23 // 0-59 // 0-59 // Uso Time dinnerTime; dinnerTime.hour = 18; dinnerTime.minute = 30; dinnerTime.second = 0; cout << "La cena sera a las:"; printUniversal( dinnerTime ); cout << " formato universal, y "; printStandard( dinnerTime ); cout << " en formato estandar.\n"; dinnerTime.hour = 29; // Invalido dinnerTime.minute = 73; // Invalido cout << "\nHora invalida: "; printUniversal( dinnerTime ); cout << endl;
4.2 Clases
Clases
Modelan (bjetos con 3tributos :Datos< +om-ortamientos :Mtodos o 8unciones< 2tiliHamos la -alabra class $unciones Miembro Mtodos 0e les in9oca -ara res-onder a mensajes. "s-eci8icadores de acceso a los miembros. -!blic: 0e -uede acceder en cual=uier lu*ar del mbito del objeto. -ri.ate: 0'lo accesible -or las 8unciones miembro -rotected: 0'lo accesible -or las 8unciones miembro o clases deri9adas.
%2
4.2 Clases
Clases
+onstructores $unciones miembro es-eciales 0e utiliHa -ara inicialiHar los datos internos. iene el mismo nombre =ue la clase. 0e llama al crear o instanciar un objeto de la clase. Puede >aber 9arios constructores :N+on el mismo nombreO< 0e utiliHa la sobrecar*a de 8unciones. Co de9uel9en nada
%B
4.2 Clases
/so de Clases
class Time { public: Time(); void print24H(); void print12H(); private: int hour; int minute; int second; }; // 0 - 23 // 0 - 59 // 0 - 59 // constructor // Imprime la hora en formato 24H // Imprime la hora en formato 12 horas (pm) void setTime( int, int, int ); // Pone hora, minutos, segundos.
Des-us de la de8inici'n: en*o un nue9o ti-o de datos :e#tendemos el len*uaje +,,< 1 -uedo declarar objetos; arra1s; -unteros 1 re8erencias. %I
4.2 Clases
/so de Clases
Time Time Time Time sunset; arrayOfTimes[ 5 ]; *pointerToTime; &dinnerTime = sunset; // // // // Objeto de tipo Time Array Puntero Referencia
+!nciones Miembro
De8inidas 8uera de la declaraci'n de la clase: 0e utiliHa el o-erador de 4resoluci'n de mbito5 (::) &denti8ica de 8orma 7nica a una 8unci'n de una clase determinada. Di8erentes clases -ueden tener 8unciones idnticas. $ormato:
Tipo_Devuelto Nombre_de_la_Clase::nombre_de_la_funcion(...arg...) { }
"s inde-endiente del ti-o de acceso :-7blico ; -ri9ado;...< Puedo -oner la im-lementaci'n dentro de la declaraci'n :inline< %J
4.2 Clases
/so de Clases
// ---------------------------------Time::Time() { hour = minute = second = 0; } // ---------------------------------{ hour = (h>=0 && h<24) ? h : 0; minute = (m>=0 && m<60) ? m : 0; second = (s>=0 && s<60) ? s : 0; } } // ----------------------------------void Time::print12H() { cout << ( (hour==0||hour==12 )?12 : hour % 12) << ":" << setfill( '0' ) << setw(2) < minute << ":" << setw( 2 ) << second <<(hour<12 ? " AM" : " PM" ); } // ----------------------------------void Time::print24H() { cout << setfill( '0' ) << setw( 2 ) << hour << ":" << setw( 2 ) << minute << ":" << setw( 2 ) << second;
%6
4.2 Clases
// Mostramos valores iniciales. cout << " El tiempo Inicial es"; t.print24H(); // 00:00:00
cout << "\nTiempo en formato 12H "; t.print12H(); // 12:00:00 AM // Cambiamos t.setTime( 13, 27, 6 );
// Mostramos nuevos valores cout << "\n\nTiempo 24H es "; t.print24H(); t.print12H(); // 13:27:06 // 1:27:06 PM // Valores invalidos cout << "\nTiempo 12H es ";
// Salida despues de valores invalidos cout << "\n\nHora despues de valores invalidos:" << "\nFormato 24H: "; t.print24H(); // 00:00:00
%K
4.2 Clases
3cceso a los Datos 3 los miembros de una +lase Por de8ecto el acceso es -ri.ado :-ri9ate< De 8orma e#-lGcita los -odemos -oner como: private, public o protected. 3 los miembros de una "structura Por de8ecto el acceso es -0blico :-ublic< De 8orma e#-lGcita los -odemos -oner como: private, public o protected. 3cceso a los miembros -ri9ados de una clase $unciones ti-o 4*et5 1 ti-o 4set5 $unciones o mtodos de acceso..
%!
4.2 Clases
3cceso a mtodos o 8unciones $unciones de 3cceso P7blicas Leen; asi*nan 1 muestran datos. +>e=ueos de condiciones. $unciones de utilidad. N iene sentido un mtodo -ri9ateO NPor =uO
%M
4.2 Clases
1estr!ctores
&*ual =ue es 7til tener una 8unci'n =ue se llame antes de utiliHar un objeto -ara inicialiHaciones 1 -re-araci'n de uso; tambin es 7til =ue cuando deje de utiliHarse >a1a una 8unci'n -ara liberar recursos usados o dejar las cosas como estaban. ienen el mismo nombre la clase -recedido -or tilde (2) 0in ar*umentos. Co -uede sobrecar*arse Labores de lim-ieHa 1 8in de uso.
20
int comprueba_valor(int valor); public: void inicializar(void); Rectangulo(); int altura(void) { return altura_; // Como esta en la declaracin } int area(void); void area(int& a); void altura(int alto); void anchura(int ancho); }; // es como si fuera "inline" int anchura(void);
2%
4.2 Clases
3entajas 4asta a4ora 3cceso a datos controlado :$unciones -7blicas< $unciones de inicialiHaci'n 8inaliHaci'n incor-oradas :+onstructores 1 Destrcutores< Co ten*o =ue -asar un -untero a la estructura en cada 8unci'n
22