Los datos y los subprogramas estn separados y sin relacin Mantenimiento dificil y costoso .
PROGRAMACION TRADICIONAL FRENTE A LA POO Programa Principal Funcion1 Funcin 2 Funcin 3 Funcin 4 PROGRAMACIN ORIENTADO A OBJETOS En el paradigma de la orientacin a objeto, un sistema se concibe como un conjunto de objetos que se comunican entre si mediante mensajes.
Objetos + Mensajes = Programa.
Mediante este modelo se construyen ms fcilmente sistemas complejos a partir de componentes individuales. QU ES LA PROGRAMACIN ORIENTADA A OBJETOS Organizacin de los programas de manera que representan la interaccin de las cosas en el mundo real. Un programa consta de un conjunto de objetos. Los objetos son abstracciones de cosas del mundo real. Nos interesa qu se puede hacer con los objetos ms que cmo se hace. Cada objeto es responsable de unas tareas. Los objetos interactan entre s por medio de mensajes. Cada objeto es un ejemplar de una clase. Las clases se pueden organizar en una jerarqua de herencia. La programacin OO es una simulacin de un modelo del universo. La tcnica orientada a objetos sigue con frecuencia el mismo mtodo que aplicamos en la resolucin de problemas de la vida diaria.
El anlisis y diseo orientado a objetos modela el mundo en trminos de objetos
Los objetos interactan de manera formal con otros objetos mediante mensajes.
PROGRAMACION ORIENTADA A OBJETOS Qu es un objeto?
Cosas Tangibles:Avin, libro, televisor, auto, etc Roles y Papeles : gerente, cliente, empleado, alumno, profesor Organizaciones: empresas, equipo, etc Iteracciones; una transaccin o contrato y relacionan dos o mas sucesos del modelo : compra, venta ,alquiler, etc
QU ES UN OBJETO? Los objetos, son modelados a partir de los objetos reales, basndose en sus propiedades (atributos) y comportamientos.(mtodos)
OBJETOS Atributos: Los atributos son las caractersticas individuales que diferencian un objeto de otro y determinan su apariencia, estado u otras cualidades.
Los atributos se guardan en variables y cada objeto particular puede tener valores distintos para estas variables.
Metodos: es una funcin o procedimiento asociado a un objeto. Son las operaciones que pueden realizarse sobre el objeto.
EJEMPLO DE CLASES Y OBJETOS Clase: Coche Objeto: Ferrari Ejemplo de objeto con sus mtodos y propiedades Propiedades o atributos Tipo de pantalla Espacio de memoria Cantidad de tonos Tipo de antena Cantidad de idiomas, etc. Mtodos o comportamientos Iniciar alarma Asignar tonos Registrar llamadas Iniciar Juego Utilizar Calculadora Enviar mensajes, etc CLASES Y OBJETOS Una clase es una descripcin generalizada de un conjunto de objetos similares.
Es la descripcin de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semntica.
Todos los objetos son ejemplares de una clase.
Un objeto es una instancia o variable de una clase. Un objeto se distingue de otros miembros de la clase por sus atributos. Entonces: ALGUNOS BENEFICIOS DE LA ORIENTACIN A OBJETOS Integridad. Los mecanismos de encapsulamiento protegen sus propios componentes contra los procesos que no tengan derecho a acceder a ellos. La forma de pensar en objetos es ms natural. El diseador piensa en trminos de objetos y no en detalles de bajo nivel. Programacin ms sencilla. Los programas se crean a partir de piezas pequeas. Reutilizacin. Permite la reusabilidad de cdigo mediante la herencia ahorrando dinero y empleando menos tiempo de desarrollo. CARACTERSTICA FUNDAMENTAL DE LA POO: ENCAPSULAMIENTO La programacin orientada a objetos (POO) encapsula datos (atributos o propiedades) y mtodos (comportamientos o acciones) en objetos; de esta manera los datos y mtodos de un objeto estn intimamente relacionados entre s. METODO Un mtodo determina como tiene que actuar el objeto cuando recibe un mensaje .
Puede modificar los atributos del objeto
Puede enviar mensajes a otros objetos
Por ejemplo en el ejemplo anterior el mtodo FRENAR producira un cambio en el atributo velocidad el cual disminuira Los objetos interaccionan envindose mensajes unos a otros.
Un mensaje es una solicitud a un objeto para invocar uno de sus mtodos.
Un objeto enva un mensaje a su propia clase o a otra El otro puede contestar, cambiar su estado, o reaccionar de la manera apropiada
Un mensaje contiene el nombre del mtodo y los argumentos del mtodo. Ejemplo: Ferrari.frenar() MENSAJE Clases Objetos Atributos Mtodos Mensajes PROGRAMACION ORIENTADA A OBJETOS CONCEPTOS BSICOS
Abstraccin Encapsulamiento Herencia Polimorfismo
CARACTERSTICAS DE LA PROGRAMACIN ORIENTADA A OBJETOS
Esta propiedad permite asegurar que el contenido de la informacin de un objeto est oculta al mundo exterior
La encapsulacin se conoce como ocultamiento de la informacin que es el proceso de ocultar todos los secretos de un objeto que no contribuyen a sus caractersticas esenciales
Permite definir qu partes del objeto son visibles (el interfaz pblico) que partes son ocultas (privadas)ventajas
Normalemente: Los mtodos son pblicos Las variables son privadas Puede haber mtodos privados Es peligroso tener variables pblicas ENCAPSULAMIENTO ABSTRACCION La abstraccin es la descripcin o especificacin simplificada de un sistema que hace nfasis en algunos detalles o propiedades y suprime otros. Una buena abstraccin es aquella que hace nfasis en los detalles significativos y suprime los irrelevantes
Definir una abstraccin significa describir una entidad del mundo real y poder usar esta descripcin en un programa
Se puede decir que la clase es una descripcin abstracta de un grupo de objetos La herencia es la contribucin ms importante de la POO, pues mediante este mecanismo es posible lograr la principal meta de la POO que es la reutilizacin de cdigo ya que es el mecanismo para compartir automticamente mtodos y atributos entre clases y subclases La herencia es un mecanismo que permite la definicin de una clase a partir de la definicin de otra ya existente.
La herencia permite proporcionar una jerarqua de clases. En tal jerarqua, algunas clases son subordinadas a otras llamadas subclases, o como en C++ clases derivadas. Si la clase A hereda de la clase B, entonces B es la superclase de A. A es subclase de B.
HERENCIA Una de las caractersticas fundamentales de la OOP es el polimorfsmo, que no es otra cosa que la posibilidad de construir varios mtodos con el mismo nombre, pero con relacin a la clase a la que pertenece cada uno, con comportamientos diferentes
Los mtodos son polimrficos si se aplican a objetos de distintas clases para conseguir el mismo significado semntico. Por ejemplo, lanzar puede ser implementado tanto para un objeto Tenis como para el objeto Bisbol o Ftbol.
POLIMORFISMO Unified Modeling Language (UML)
Es una notacin para representar modelos orientados a objetos A finales de la dcada de los 80 aparecieron varios mtodos de modelado: Booch, Rumbaugh y Jacobson UML es la unificacin de estos mtodos Est en proceso de estandarizacin por ISO/ANSI DISEO ORIENTADO O OBJETOS Representacin de la clase coche utilizando UML
COCHE Color Velocidad Patente Arrancar() Frenar() Avanzar()
EJEMPLO Rojo 120 km EFG 125 Arrancar() Frenar() Avanzar() Coche OBJETO DE LA CLASE COCHE
Representacin mediante objetos de 3 personas
Caracterizadas por su nombre, edad, y profesin Capaces de responder a mensajes que pregunten por su nombre, por su edad o por su profesin
Jos, 23 aos, carpintero Laura, 37 aos, mdica EJEMPLO CLASE PERSONA Persona
Nombre Edad Profesin
Ingresar_datos RetornarNombre RetornarEdad RetornarProfesion Persona Jos 23 carpintero
Ingresar_datos RetornarNombre RetornarEdad RetornarProfesion Persona Laura 37 Mdico
Ingresar_datos RetornarNombre RetornarEdad RetornarProfesion REPRESENTACIN DE CLASES Y OBJETOS CLASES OBJETOS RELACIONES ENTRE CLASES Las relaciones entre clases son precisamente los enlaces que permiten a un objeto relacionarse con aquellos que forman parte del mismo sistema Las relaciones mas importantes entre clases son:
Herencia Asociacin Agregacin HERENCIA Es una relacin que permite a objetos de una clase utilizar como propios los datos y mtodos definidos en otra clase La clase padre suele llamarse SUPERCLASE La clase hija suele denominarse SUBCLASE o CLASE DERIVADA
La clase derivada consta de dos tipos de caracterstica: Estructura o comportamientos heredados de la superclase Estructura o comportamiento propio La relacin puede interpretarse como : es un
ESTUDIANTE DE POSGRADO PERSONA ESTUDIANTE EMPLEADO ESTUDIANTE DE GRADO EMPLEADO ACADEMICO EMPLEADO ADMINISTRATIVO Otro ejemplo de herencia Clase principal Subclases Las subclases Ftbol, Rugby, PingPong son especializaciones de la clase Pelota ASOCIACIN Una asociacin es una conexin entre clases. Significa que los objetos de dos clases Tendrn un vnculo bidireccional en comn, el cual puede interpretarse como para cada X existe un Y Por ejemplo:
PROGRAMADOR COMPUTADORA utiliza Este ejemplo significa que cada programador utiliza una computadora , y que cada Computadora es utilizada por un solo programador Se utiliza multiplicidad cuando no necesariamente los vnculos entre objetos son uno a uno Se debe especificar en cada extremo del vnculo, a travs de un rango, cuantos objetos pueden estar vinculados PROGRAMADOR COMPUTADORA utiliza 1..* 0..* Cada programador tendr varias computadoras (posiblemente ninguna) y cada Computadora ser usada por al menos un programador T T T T Cero o ms (muchos) Uno o ms Entre uno y 40 Exactamente 5 * 1..* 1..40 5 Ejemplos de multiplicidad
AGREGACIONES Es un caso especial de asociacin. Indica que una o mas clases (clases componentes) forman parte de otra clase (clase agregada). Se denota con un rombo en uno de los extremos del vnculo, aquel que corresponde a la clase agregada. Puede interpretarse Como posee un
AUTO MOTOR Este diagrama indica que todo auto posee un motor, la multiplicidad de la clase Agregada debe ser 0 o 1, pero en las clases que conforman las partes puede ser Un rango cualquiera Universidad Facultad Tiene
Avin TrenAterrizaje Fuselaje Motor 1 1 2 Otro ejemplo de Agregaciones Disear un diagrama de objetos para representar el funcionamiento las cajas de ahorro de un banco , de las que se puede extraer, depositar dinero y consultar saldo Cada caja de ahorro posee un titular del que se almacenan datos como el dni, el nombre y la direccin Cuenta Saldo Nro de cuenta
Inicializar_saldo Retornar_saldo Extraer_dinero Depositar Titular Nro_dni Nombre Direccin
Ingresar_datos Mostrar_datos
1 1 EJEMPLO Las clase pueden garantizar la inicializacin de cada objeto proporcionando un mtodo especial llamada constructor. Si una clase tiene un constructor, automticamente el compilador llama al constructor en el punto donde el objeto es creado.
Un constructor es un mtodo con el mismo nombre que la clase. Este mtodo es invocado automticamente cada vez que un objeto asociado a la clase es creado.
Caractersticas de los constructores:
Tiene el mismo nombre que la clase que inicializa. Son pblicos No devuelven valores Puede admitir parmetros como cualquier otra funcin. Pueden existir cero, uno o ms constructores para una misma clase. . De no existir, el compilador automticamente crea uno para esta clase.
CONSTRUCTOR Ejemplo La clase coche ya mencionada podra tener ms de un constructor
Class coche { private: char patente[10]; Int numruedas; char color[30]; int velocidad; char marca[30];; public: coche(); coche(char p[]); coche (char p[],char col[]); void poner_en_marcha(); int acelerar(); int frenar(); };
C O N S T R U C T O R E S Por ejemplo, podemos inicializar la clase coche utilizando tres constructores diferentes como se muestra en el ejemplo. La funcin constructor que podr seleccionarse depende de los argumentos dados por el usuario como parte de la creacin del proceso. El siguiente ejemplo ilustra el uso de constructores
Se llama al consrtructor que tiene como parmetro una cadena
coche *c; .... .... c = new coche(abc 234);
Las formas alternativas tambin pueden ser usadas en sentencias de declaracin. El siguiente ejemplo muestra la creacin de 3 objetos,cada una usando un diferente constructor:
Coche Fiat, Ford (FHJ 235), Peugeot(EXV 457, rojo);
Los destructores entran en la misma categora que los constructores. Se utilizan para realizar ciertas operaciones que son necesarias cuando ya no se utiliza un objeto como es la liberacin de memoria. Existen algunas diferencias importantes entre los constructores y los destructores: Deben ser pblicos Los destructores tienen el mismo nombre que la clase, pero con el smbolo ~ delante, No retornan ningn valor Si no se declara el destructor, el compilador crea uno por omisin
Cuando se define un destructor para una clase, ste es llamado automticamente cuando se abandona el mbito en el que fue definido. Esto es as salvo cuando el objeto fue creado dinmicamente con el operador new, ya que en ese caso, si es necesario eliminarlo, hay que usar el operador delete.
DESTRUCTOR
Por ejemplo para la clase coche el destructor sin atributos que sean punteros no tendra cuerpo coche::~coche ( ) {
} Ejemplo de clase con datos atributos de tipo puntero Class coche { private: char color[30];
int velocidad; persona *conductor; public: coche; void acelerar () ; void frenar (); } coche::coche (char p[],char col[]) {