POO con C++

Share Embed Donate


Short Description

Descripción: Introduccion a programacion orientada a objetos con c++....

Description

!"#$"%&%'()*+#"(,*-%.%+%+#/0,-#1

!"#$"%&%'()*+,"(-*.%/%+%+,01-.#2+3#"+4#0-".#+4#/"5$6-7+8'9-:-""5%;+color = color; } }; Hemos introducido una nueva función miembro a la clase Cuadrado: la función modifica. En el cuerpo de esta función estamos usando el operador this para distinguir, en este caso, los atributos de los parámetros de la función modifica; ya que tienen el mismo nombre. Este ejemplo sencillo sólo quiere poner de manifiesto la posibilidad de acceder al objeto actual a través del puntero this. En el caso de no utilizarse en este ejemplo el puntero this, la modificación no se habría producido en los atributos lado y color.

2.2.

Encapsulación

Una de los pilares básicos de la POO es la encapsulación de los datos. Según los principios de este paradigma de programación, el acceso a los datos de una clase debe realizarse de forma controlada, protegiéndolos de accesos no deseados. Cuando se desarrolla una aplicación, a veces es necesario ocultar los 17 ✐











“libropoo” — 2011/2/19 — 19:02 — page 18 — #18



CAPÍTULO 2. CLASES Y OBJETOS



tipos de datos usados para que el usuario permanezca independiente de los detalles de los mismos. De esta manera, el usuario no es sensible a los cambios que se puedan producir en los tipos de datos elegidos dentro de una clase. La encapsulación en los lenguajes orientados a objeto suele lograrse al declarar algunos datos como privados. El acceso a estos datos sería siempre controlado; ya que, se haría siempre a través de funciones miembro que realizarían las modificaciones oportunas de una forma transparente al usuario. La encapsulación es el mecanismo que enlaza el código y los datos, a la vez que los asegura frente a accesos no deseados. La principal razón del uso de la encapsulación es evitar el acceso directo a atributos de una clase desde fuera de la propia clase. Se busca, principalmente, que el acceso a estos atributos se realice siempre mediante funciones miembro de la propia clase. El acceso a ciertos elementos de datos se puede controlar de forma estricta considerándolos privados. Una vez presentado el concepto encapsulación, se puede definir de nuevo un objeto como una entidad lógica que encapsula los datos y el código que manipula dichos datos. Dentro de un objeto, parte del código y/o los datos puede ser privada al objeto y, por tanto, inaccesible desde fuera del mismo. Se podrá asegurar un acceso correcto al objeto utilizando las funciones miembro del objeto para acceder a los datos privados. El acceso a los datos de una clase se establece por lo tanto a través de los métodos que implementa la propia clase y que pone a disposición del usuario. Este mecanismo recibe el nombre de paso de mensajes o interfaz y es la forma de comunicación que se establece entre objetos.

2.2.1.

Encapsulación en C++. Modificadores de acceso

Una clase puede contener tanto partes privadas como partes públicas. Por defecto, todos los elementos de la clase son privados, lo que significa que no son accesibles desde ninguna función que no sea miembro de la clase. El mecanismo aportado por C++ para conseguir la encapsulación es la utilización de los modificadores de acceso private y public. Los miembros privados ocultan las estructuras de datos y los procedimientos internos de un objeto. Si se incluye el modificador de acceso private en la lista de atributos y funciones miembro, todos los miembros que aparezcan a continuación serán miembros privados. Los atributos serán atributos miembro privados y las funciones serán funciones miembro privadas. Por su parte, para hacer públicas ciertas partes de una clase, se deben declarar a continuación del modificador de acceso public. Aunque el lenguaje C++ permite tener atributos public, debe restringirse su utilización. En su lugar, por norma general, para lograr la encapsulación de los datos, es aconsejable crear todos los datos privados y proporcionar acceso a los mismos mediante funciones públicas. Introduciendo los modificadores de acceso, el formato de declaración de una clase quedaría así: 18 ✐











“libropoo” — 2011/2/19 — 19:02 — page 19 — #19



CAPÍTULO 2. CLASES Y OBJETOS



class nombre de clase { private: //miembros privados public: //miembros públicos }; Una clase podrá tener el número que desee de secciones de cada tipo, aunque lo normal será una sección de cada tipo. La cláusula private mostrada en el formato de declaración de una clase es opcional, ya que los miembros que aparecen después de la llave de apertura hasta la aparición de una cláusula distinta se consideran siempre miembros privados. Por un lado, las funciones que son públicas o accesibles para otras clases forman el interfaz de una clase y son declaradas como public. Por otro lado, las funciones que no permiten el acceso desde otras clases, es decir, aquellas cuyo uso es de tipo interno a la clase en la que están definidas son declaradas como private. Se puede decir que estas funciones están ocultas para el resto de clases. A continuación, se introduce un nuevo ejemplo para mostrar el funcionamiento de los modificadores de acceso. La declaración de la clase Telefono es la que se muestra a continuación. class Telefono { string numero; string tipo_tarifa; string usuario; float importe; void inicializarImporte( ); public: void actualizarImporte(float _importe); float obtenerImporte( ); void visualizarUsuario( ); }; //definición void Telefono::inicializarImporte() { importe=0; } void Telefono::actualizarImporte(float _importe) { if (_importe
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF