Está en la página 1de 10

Facultad de Ingenieras Conceptos de POO MsC.

Juniel Almeida

Programacin orientada a objetos.


La orientacin a objetos es una forma natural de pensar en relacin con el mundo y de escribir programas para los computadores que establece un nuevo paradigma de la programacin producto de la evolucin natural de la misma. Su idea bsica parte de que percibimos al mundo que nos rodea como una variedad de objetos y la necesidad de tratar de representarlo como tal. Naturalmente otros paradigmas de programacin lo antecedieron como fueron el imperativo, el funcional y el de programacin lgica. La visin orientada a objetos nos obliga a reconsiderar nuestras ideas acerca de la computacin, de lo que significa ponerla en prctica y de cmo debera 1 estructurarse la informacin... Timothy Budd Introduccin a la Programacin Orientada a Objetos La clave de la POO es encontrar caractersticas comunes entre entidades implicadas en el problema y crear estructuras de datos que capturen esas caractersticas comunes. Una vez creadas estas estructuras habr que definir sus caractersticas y modelar su comportamiento. Tratemos de ilustrar en este punto algunas de las principales ideas de la programacin orientada a objetos viendo cmo manejaramos una situacin del mundo real, y qu conceptos nos brinda esta tcnica para modelar esta situacin en un computador. Conceptos Bsicos: Clases, Objetos, Mensaje, Atributo, Mtodo Imaginemos una Terminal de trenes con un grupo de mquinas capaces de realizar un conjunto de acciones y lo que se quiere es presentar el algoritmo que deba seguir cualquier usuario para obtener un ticket a un destino especfico utilizando una mquina expendedora de tickets, ms especficamente la mquina que denominamos ticketLugania. Situacin En la Terminal de trenes de una ciudad X existe un conjunto de mquinas traga monedas que brindan un sinnmero de servicios (pesado, expendio de gaseosas, cigarrillos, etc) Dentro de este conjunto de mquinas estn las dedicadas a la venta de tickets para los distintos destinos que tienen los trenes de la Terminal. Las mismas funcionan insertndoles monedas hasta tanto se cubra el monto para el que fueron construidas, en dependencia del destino, dando la posibilidad, mediante un botn, de poder imprimir seguidamente el ticket deseado. La mquina tiene otras opciones de informacin a travs de botones para conocer el precio del ticket y el balance del dinero insertado por cada usuario; lleva tambin un control interno sobre el dinero total recaudado en el da. Para ganar un poco en simplicidad y poder explicar mejor los conceptos que trataremos posteriormente supongamos que la persona que compra el ticket en nuestra maquina siempre deposita el dinero exacto para pagarla. Por lo que nuestro diagrama de bloques quedara de la siguiente forma

Introduccin a la programacin orientada a objetos, Timoty Budd, pp.5

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

Acciones ticketLugania.Balance() ticketLugania.Precio() ticketLugania.Inserta(moneda) ticketLugania.Imprime()


Algoritmo

Respuestas Dinero Dinero Pagado -

Inicio

ticketLugania.Precio() telefonoBodega.Comunica()

ticketLugania.Inserta(5 c)

Pagado ticketLugania.Imprime() Fin


Razonemos cul fue el mecanismo que utiliz nuestro usuario para solucionar su problema. En primer lugar seleccion un objeto apropiado (Mquina de tickets) para a travs de un mensaje enviarle su solicitud de ejecucin de una accin determinada (consultar el precio del ticket). Una vez aceptada esta solicitud es responsabilidad de la mquina dar respuesta a la misma y para lograrlo seguro emple un mtodo, es decir, un algoritmo o conjunto de operaciones. Desde su posicin al usuario no le interesa conocer los detalles de los pasos seguidos por esta mquina para cumplir su pedido (encapsulamiento). No obstante si llevara un destornillador y decidiera husmear un poco en el interior de ella podra apreciar a lo mejor que para la ejecucin de la accin una de las operaciones fue enviar un mensaje algo diferente a otro objeto presente en la mquina (pantalla) solicitando que ejecutara la accin de imprimir un mensaje (precio del ticket) y as sucesivamente. Como ven todas las operaciones que se llevaron a cabo se desencadenaron debido al mensaje original enviado a la mquina, por lo que estudiemos ms de cerca qu papel juegan los mismos en la POO. Mensajes. En la programacin orientada a objeto, cualquier accin se inicia mediante la transmisin de un mensaje a un agente (un objeto) responsable de la accin. El mensaje tiene codificada la peticin de una accin y se acompaa de cualquier informacin adicional (argumentos) necesaria para llevar a cabo la peticin. El receptor es el agente al cual se enva el mensaje. Si el receptor acepta el mensaje, acepta la responsabilidad de llevar a

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

cabo la accin indicada. En respuesta a un mensaje, el receptor ejecutar algn mtodo 2 para satisfacer la peticin . Es bueno recordar la importancia de seleccionar un receptor adecuado para que pueda interpretar correctamente nuestro mensaje. En el ejemplo anterior si hubiese seleccionado a una mquina expendedora de refrescos para que me imprimiera un ticket estara cometiendo un error pues puede ser que la misma no tenga un mtodo para resolver el problema. Por lo que otra pieza elemental dentro de la POO son los receptores, a los cuales llamaremos Objetos. TRMINO Objeto. Entidad que tiene una estructura de datos interna bien definida, el cual tendr la capacidad de realizar un conjunto de acciones que describen su comportamiento, como respuesta a un mensaje determinado.

Objeto

= Datos + Acciones

Para el caso que estamos estudiando, el objeto con el cual interactuamos -mquina ticketLugania- cuenta con un conjunto de acciones que es capaz de realizar, pero Cules seran los datos que segn el concepto tiene nuestro objeto? Si volvemos a la situacin nos daremos cuenta de que hay informacin que la mquina debe memorizar para lograr un correcto funcionamiento. En primer lugar tenemos el precio del ticket sin el cual no se podra poner en funcionamiento nuestra mquina. Y en segundo lugar, no por ello menos importante, el balance y la cantidad total recaudada por la mquina que aunque no impiden su funcionamiento son opciones de informacin con que cuenta.

Precio 0.20 Balance 0.00 Total 30.00 Lugania

Introduccin a la programacin orientada a objetos, Timoty Budd, pp.4

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

Pero no solo la mquina de ticket con destino Lugania tiene la capacidad de realizar estas acciones y memorizar esta informacin. Cualquier otra mquina de ticket de nuestra Terminal tiene esa capacidad sin importar su destino, por lo que no parece descabellado decir que todas ellas pertenecen a una misma clase de objetos, la clase Mquina de tickets.

precio 0.20 balance 0.00 total 30.00 Lugania

precio 1.00 balance 0.50 total 100.00 Baltica

precio 0.10 balance 0.00 total 50.00 Atlanti

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

Precisamente este es uno de los principios ms importantes dentro de la Programacin Orientada a Objetos:

Todos los objetos pertenecen a una clase en especfico, pero Qu son las clases?
Lo ms importante es la consideracin de que los objetos pueden ser agrupados segn sus caractersticas. Esta idea viene de la vida cotidiana. En la prctica los seres humanos pensamos de esta manera: el mundo que nos rodea est formado por objetos relacionados entre s segn determinados criterios. A estas agrupaciones de objetos se les denomina clases.

TRMINO

Clase. Descripcin de objetos con caractersticas comunes, tienen un conjunto de atributos para definir los datos que sern guardados por el objeto y un conjunto de mtodos que precisan las acciones que este puede realizar.

Clase =

Atributos + Mtodos

Pero no veamos las clases como una mera forma de agrupar aquellos objetos que tienen caractersticas comunes, sino como el recurso que brinda la POO para crear objetos o instancias con caractersticas comunes. Es decir que para nuestro caso de estudio necesariamente debe existir una clase mquina de ticket -que describa los atributos de cada objeto y sus mtodos- a partir de la cual se puedan crear todas las instancias necesarias para ser utilizadas en la Terminal. Esto garantiza que tanto la mquina ticketLugania como ticketBaltica al ser instancias de la clase mquina de ticket tengan como atributos su precio, balance y total recaudado. Adems garantiza que ambas respondan de manera adecuada ante un mismo mensaje. Instancia ticketLugania ticketBaltica Mensaje ticketLugania.Precio() ticketBaltica.Precio() Respuesta 0.20 1.00

Todos los objetos de una clase tienen la misma funcionalidad, o sea, responden de la misma manera ante los mismos mensajes.

TRMINO

Atributo. Pequea porcin de memoria dentro del objeto que es utilizada para almacenar valores cuyo rango y caractersticas estn perfectamente definidas en la clase.

TRMINO

Mtodo. Bloque de operaciones presentes en las clases para darle funcionalidad. Su ejecucin ocurre como respuesta de un objeto ante un mensaje determinado.

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

De la definicin anterior podemos deducir que un objeto solamente puede responder adecuadamente a un mensaje si en la clase a la que pertenece est presente el mtodo adecuado para darle respuesta, y a su vez este solamente se ejecuta si una instancia de la clase lo solicita a travs de un mensaje. Ejemplo: ticketLugania.Precio() Antes de pasar al siguiente punto podemos resumir que un programa OO es una secuencia de mensajes entre objetos para la solucin de un problema donde uno de ellos puede ser un cliente (que solicita una accin) y otro un servidor (que brinda el resultado), en dependencia de cmo estn definidos sus comportamientos en las clases a las que pertenecen.

Mensaje

Objetos

Notacin UML para describir clases y objetos. De forma general representaremos las clases de la siguiente forma: Nombre de la clase Atributos ... Mtodos ... y a los objetos como: Nombre del objeto : Clase Atributo = valor ...

Vale aclarar algunas reglas de notacin iniciales: Para tener una adecuada organizacin, los nombres de las clases siempre deben comenzar con maysculas y antecedidos con la letra C, si el nombre de una clase contiene ms de una palabra debern ir unidas y cada una debe comenzar con maysculas. Ejemplos de nombres de clases: CPersona, CFiguraGeometrica, CVehiculoAutomotor, etc.. Los nombres de los objetos sern siempre en minsculas y estarn subrayados. Los nombres de los atributos comenzarn con minsculas, si tienen ms de una palabra las restantes deben comenzar con maysculas, todas las palabras irn unidas.

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

Los nombres de los mtodos seguirn la misma regla que los nombres de clases sin anteponerles la C al principio. Utilicemos entonces la notacin UML para representar la clase y los objetos del caso de estudio. CLASE CMaquinaTicket OBJETO ticketLugania: CMaquinaTicket OBJETO ticketBaltica: CMaquinaTicket

precio balance total

precio = 0.20 balance = 0.00 total = 30.00

precio = 1.00 balance = 0.50 total = 100.00

Precio() Balance() Imprime() Inserta(moneda)

Como pueden apreciar la principal diferencia entre dos objetos de una misma clase est en la informacin que almacenan sus atributos, puesto que ambos tienen la capacidad de responder al mismo conjunto de mensajes al estar esta determinada por los mtodos de la clase a la que pertenecen. No obstante el hecho de que dos objetos de una misma clase en un momento dado tengan los mismos valores en sus atributos, no quiere decir que estos dos objetos sean el mismo, puesto que independientemente de ello cada uno tiene su identidad nica. Este fenmeno es muy comn en la vida real por ejemplo: Puede darse el caso que existan dos mquinas de tickets de un mismo destino que en un momento determinado tengan igual balance y total recaudado, lo cual no quiere decir que sean la misma mquina. La orientacin a objetos no es solo clases, objetos y mensajes, tambin considera otros aspectos como la abstraccin, la herencia, el polimorfismo y el encapsulamiento,

TRMINO

Abstraccin. Descripcin de las especificaciones de un sistema haciendo nfasis en los detalles que son significantes para el programador o para el usuario y obviando aquellas que no lo son.

TRMINO

Encapsulamiento. Se refiere a ocultar qu hay dentro del objeto, de no mostrar cmo se llevan a cabo las acciones.

La forma de graficar las clases que vimos anteriormente no es la manera precisa de representarlas en el dominio de cualquier lenguaje de programacin.

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

Presentemos a continuacin la manera correcta de definir las clases en C++. Para ello utilizaremos la sintaxis siguiente:

class <nombre de la clase> { // Cuerpo de la clase };

Atributos Mtodos

Aclaremos algunos detalles en la siguiente declaracin que sern vlidos para las posteriores sintaxis de instrucciones que veremos ms adelante y que seguiremos ampliando segn haga falta. 1. < > Encerraremos entre ellas aquella parte de la sintaxis cuya escritura es obligatoria. 2. // Son las llamadas lneas de comentario. Son utilizadas para ayudar al lector a la comprensin de un cdigo. 3. [ ] Lo utilizamos para precisar la parte de la instruccin que es opcional

Ejemplo:

class CMaquinaTicket { // Cuerpo de la clase };


Como se indic, en el cuerpo de la clase se definen los atributos y los mtodos encargados de proporcionar las caractersticas particulares y el comportamiento de los objetos. Estudimoslo por partes para una mejor comprensin. Atributos.

class CMaquinaTicket { float precio; float balance; float total; // Mtodos };


Noten que cada atributo est precedido por un trmino, el cual va a describir el tipo de dato con el que estn asociados, en los lenguajes de programacin a esta asociacin se le da el nombre de declaracin. Pero antes de explicar mejor sus partes, estudiemos un concepto que est muy relacionado con la misma. Este concepto est dado por la caracterstica que tienen los atributos de guardar valores que pueden variar con el tiempo. Es por eso que tambin son conocidos como variables.

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

TRMINO

Variables. Son zonas de memoria que pueden cambiar de valor durante la ejecucin del programa por medio de una asignacin y que se acceden mediante identificadores. En nuestro caso los atributos son igualmente variables lo que las nombramos de esta manera por encontrarse estas dentro de una clase.

Analicemos por partes la sintaxis general de una declaracin de variables o Tipos de Datos

<tipo> Los tipos de datos determinan la naturaleza del conjunto de valores que puede tomar una variable y las operaciones que se pueden realizar con ellas. Las variables en C++ pueden declararse prcticamente en cualquier parte del programa, aunque se aconseja hacerla al inicio de cada bloque de instrucciones. C++ ofrece un conjunto de tipos de datos bsicos que pueden cambiar su rango utilizando los modificadores: unsigned (sin signo), signed (con signo), long, short. Tipo de dato int, long float double char short int long double 3 string Valores que almacena enteros reales reales caracteres enteros reales cadena Rango -2,147,483,648 <= X <= 2,147,483,647 1.18 10^-38 < |X| < 3.40 10^38 2.23 10^-308 < |X| < 1.79 10^308 -128 <= X <= 127 -32,768 <= X <= 32,767 3.37 10^-4932 < |X| < 1.18 10^4932 --

El modificador signed y unsigned se utilizan en los tipos de datos numricos para especificar si tienen signo o no. Un dato de tipo numrico unsigned duplica su rango ejemplo: Tipo short int unsigned 0 <= X <= 65,534 signed -32,768 <= X <= 32,767

Por defecto un tipo de dato entero es signed o Identificador

<identificador> Secuencia de caracteres que sirve para identificar una posicin en la memoria de la computadora, que nos permite acceder a su contenido. Los identificadores representan los datos de un programa (constantes, variables, tipos de datos, nombres de funciones o mtodos, nombres de archivos). Reglas para formar un identificador - Un identificador se forma con una secuencia de caracteres (minsculas de la a a la z; maysculas de la A a la Z; dgitos del 0 al 9 y el carcter subrayado o underscore (_)). - Un identificador no puede contener espacios en blanco, ni otros caracteres distintos de los citados, como por ejemplo (#, $, %, *, &, etc.).
3

Aunque no es un tipo de los bsicos de C++ lo utilizaremos como tal

Facultad de Ingenieras Conceptos de POO MsC. Juniel Almeida

- El primer caracter de un identificador debe ser siempre una letra o un (_), es decir, no puede ser un dgito. - Se hace distincin entre letras maysculas y minsculas. As, Masa es considerado como un identificador distinto de masa y de MASA. - La longitud puede ser hasta de 31 caracteres. Existen palabras que tienen un significado predefinido en el lenguaje, son las llamadas palabras reservadas y no pueden ser utilizadas como identificadores. Ejemplo: class, private, public, void, int, float, char, bool, long, short, unsigned, signed, break, continues, if, else, for, while, do, const, return. Los identificadores deben no solo ser vlidos sino que deben autodocumentar su programa, es decir, tener nombres que permitan conocer a simple vista qu representan, utilizando para ello tantos caracteres como sean necesarios. Esto simplifica enormemente la tarea de programacin y sobre todo de correccin y mantenimiento de los programas. Es cierto que los nombres largos son ms laboriosos de teclear, pero en general resulta rentable tomarse esa pequea molestia. Ejemplos de identificadores vlidos: SumaTotal Max max valor1 valor_1 Esta_es_una_variable _identificador [, identificador, ] Esta parte de la declaracin indica que se pueden declarar otras variables del mismo tipo separando los identificadores de ellas por comas. Ejemplo de declaraciones correctas de variables Declaracin Objetivo de la Declaracin Guardar en la variable sexo la letra F o M Guardar un valor entero probablemente no superior a 150 para el caso de la edad Guardar un valor decimal con una precisin baja Identificadores no vlidos: Suma Total 1_variable VariableNoVlida x+y cantidad_en_$ %total int

char sexo int edad, noCI float precio

Ejemplo de declaraciones incorrectas de variables Declaracin Objetivo de la Declaracin Guardar en la variable el nombre char nombre de una persona Guardar una letra float edad Guardar un valor decimal con una precisin baja

Motivo del Error El tipo char slo admite una letra Este tipo es utilizado para valores reales y el identificador no guarda relacin con la informacin que guarda Slo almacena valores enteros y mal uso del identificador

int promedio General

10

También podría gustarte