Documente Academic
Documente Profesional
Documente Cultură
3.1. Introduccin
Sin embargo no es hasta la dcada de los 80 con la aparicin del lenguaje C++
cuando el concepto de programacin orientada a objetos empieza a extenderse
llegando a convertirse en una alternativa real a la hora de afrontar un desarrollo
de software
Abstraccin
Encapsulacin
Herencia
Polimorfismo
Clase
Por otro lado hemos dicho que hay que definir el comportamiento
de este tipo de datos, para el coche podramos definir acciones tales
como arrancar, acelerar, frenar o parar.
Y no solo tendr los atributos que hemos definido para la clase coche
sino que adems podrs hacer uso de los mtodos de los que goza
la clase.
Clase Nombre_clase
Declaracin Propiedades
Declaracin Mtodos
Fin Clase
Clase Automovil
Declara matricula de tipo Cadena
Declara potencia de tipo Entero
Declara color de tipo Cadena
Declara ruedas de tipo Entero
Declara velocidad de tipo Real
Procedimiento Encender ()
Inicio
velocidad = 0
Fin
Privado
Protegido
Pblico
Privado
Clase Nombre_clase
Declaracin Privado Propiedades
. . .
Declaracin Privado Mtodos
Fin Clase
Clase Persona
Declara Privado Nombre de tipo Cadena
Protegido
Clase Nombre_clase
Declaracin Protegido Propiedades
. . .
Declaracin Protegido Mtodos
Fin Clase
Ejemplo:
Clase Automovil
Declara Protegido velocidad de tipo Real
Clase Nombre_clase
Declaracin Pblico Propiedades
. . .
Declaracin Pblico Mtodos
Fin Clase
Ejemplo:
Clase Fruta
Declara Pblico piel de tipo booleno
La manera de acceder a la parte publica de una clase (es decir a aquello que
nos permita su interfaz) es mediante lo que se denominan mensajes, que no
es mas que una invocacin a sus mtodos pblicos siguiendo esta sintaxis:
Nombre_objeto.nombre_metodo_publico()
Ejemplo:
Clase Persona
Declara Privado Nombre de tipo Cadena
Declara Publico Edad de tipo Entero
MiAmigo.Nombre = Jos
MiAmigo.Nombrar(Jos)
MiAmigo.Edad = 25
Parece claro que tanto los proveedores como los clientes debern ser
modelados con una clase, sin embargo no tienen ambas clases atributos
comunes como pueden ser el nombre, el NIF, el telfono de contacto, la
direccin, etc.? Podran tener ambas clases mtodos comunes como las altas,
bajas y modificaciones de datos en el sistema?
Parece claro que entre la clase CLIENTE y la clase PROVEEDOR va a existir cierta
relacin, realmente podemos sacar elementos comunes de ambas clases e
incluirlos en una clase superior que podramos llamar USUARIO
Objeto Cliente:
MiCliente.Alta()
Micliente.Felicitar()
Tambin suele ser habitual que en estas clases abstractas los mtodos se
declaren pero la funcionalidad de los mismos no sea implementada dejando
esta tarea para el momento en que se definan las clases heredadas. Esta
redefinicin de los mtodos de una clase forma parte de otra caracterstica de
la POO: el polimorfismo.
Ejemplo:
Clase Figura_Geomtrica
Declara Privado Area de tipo Real
Fin Clase
Los datos de cualquier cliente son: Nombre, Apellidos, NIF, nmero de telfono
contratado. Por un lado para los clientes de prepago debemos conocer en todo
momento cual es su saldo disponible actual, mientras que para los de contrato
hay que llevar un control del consumo acumulado para facturrselo a final de
mes a una cuenta de la que debemos conservar el nmero.
Otro requisito es que se tenga en cuenta que las tarifas aplicables no son las
mismas si se llama a un nmero de nuestro mismo operador.
Una vez que tengamos el funcionamiento del programa bien definido solo
queda programar la clase TARIFA, la clase CLIENTE, la clase
CLIENTE_CONTRATO y la clase CLIENTE_PREPAGO junto con el programa
principal donde instanciaremos los objetos de dichas clases y los pondremos a
funcionar.
En este ejemplo se han pasado por alto algunas cuestiones, como la forma en
la que se deberan acceder a los datos privados de los clientes (Nombre,
apellidos, etc) por lo tanto te nimo a que completes por tu cuenta este ejemplo
aadiendo los procedimientos y funciones que creas necesarias para cambiar
los datos de los clientes en caso de altas, bajas o modificaciones.
Clase Tarifa
Declara Privado Importe_mismo_operador de tipo Real = 0.3
Declara Privado Importe_operador_A de tipo Real = 0.6
Declara Privado Importe_operador_B de tipo Real = 0.5
Fin Clase
Clase Cliente
Declara Privado Nombre de tipo Cadena
Declara Privado Apellidos de tipo Cadena
Declara Privado NIF de tipo Cadena
Declara Privado Telefono de tipo Cadena
Declara Privado Tarifa_aplicable de tipo Tarifa
Fin Clase
Clase Cliente_Contrato
Declara Privado Consumo_actual de tipo Real
Declara Privado Numero_cuenta de tipo Cadena
Fin Clase
CLASE CLIENTE_PREPAGO
Clase Cliente_Prepago
Declara Privado Credito de tipo Real
Fin Clase
PROGRAMA PRINCIPAL
Inicio Programa
Funcin Principal()
Inicio
MiClienteContrato.Facturar(69845112)
MiClientePrepago.Facturar(67705110)
Fin
Fin Programa