Universidad Nacional
Definiciones en
Orientación a Objetos
Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional
Universidad Nacional
Paradigma Funcional
Ø Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado en descomposición en funciones y sub-funciones.
Universidad Nacional
Paradigma Lógico
Ø Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado en el uso directo del Lenguaje de la Lógica de Primer Orden
p à q q à r .: p à r
Universidad Nacional
Paradigma Estructurado • Se basan en la idea de que el Dominio de
una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado en: Ø PE = Procedimientos + Estructuras de Datos +
Diccionario de Datos.
Universidad Nacional
Paradigma Basado en Objetos
§ Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado en: § BO = Objetos + Atributos + TDAs
Universidad Nacional
Paradigma Orientación a Objetos
v Se basan en la idea de que el Dominio de una Aplicación y los Requerimientos se pueden modelar, programar e implementar basado: Ø OO = Objetos + Métodos + Asociaciones +
Herencia + Polimorfismo
Universidad Nacional
Objeto [Booch]
ð Un objeto es una entidad tangible que exhibe algunas conductas bien definidas.
ð Un objeto tiene estado, conducta e identidad; la estructura y la conducta de objetos similares se definen en clases comunes; los términos instancia y objeto son intercambiables
Universidad Nacional
Objeto [Wegner]
• Un objeto enmarca el estado de la computación en forma encapsulada. Cada objeto tiene una interfaz de métodos que controlan el acceso al estado encapsulado. Los métodos determinan la conducta del objeto
Universidad Nacional
Objeto [Lécluse]
• Una clase C es un triplete C = (i,v,m) donde i es un identificador, v es un conjunto de atributos (que puede ser vacío) y m es un conjunto de métodos (que puede ser vacío).
Universidad Nacional
Clase vrs Objeto
Universidad Nacional
Clase [Booch]:
• Una clase es un conjunto de objetos que comparten una estructura común y una conducta común.
• Es decir, los objetos similares son agrupados en clases, las cuales reúnen los atributos y operaciones comunes a todas sus instancias.
Universidad Nacional
Clase
Universidad Nacional
Clase vrs Objeto (Instancia)
• Algunos autores usan instancia, instancia de clase o entidad, para referirse a un objeto. En todas las definiciones anteriores se menciona que un objeto tiene un estado, una conducta, tiene operaciones o servicios y que de alguna manera están ubicados dentro de clases.
Universidad Nacional
Estado de un objeto [Booch]:
• El estado de un objeto abarca todas las propiedades (usualmente estáticas) del objetos más los valores.
• Se puede decir entonces, en términos muy orientados a la programación, que el estado de un objeto lo determina el valor (en un tiempo dado) de las variables o datos del objeto
Universidad Nacional
Conducta de un objeto [Booch]:
• La conducta es: cómo un objeto actúa y reacciona, en términos de los cambios de su estado y el paso de mensajes
• Se puede decir que la conducta de un objeto está determinada por sus métodos (funciones miembro, operaciones o servicios).
Universidad Nacional
¿Qué es un método? [Snyder]:
• Un método es un procedimiento que ejecuta los servicios. Típicamente un objeto tiene un método para cada operación que soporta. Los métodos son frecuentemente definidos en la implementación del objeto permitiendo que las variables de estado sean leídas y escritas.
Universidad Nacional
En C++ la clase esfera se puede declarar como sigue:
class Esfera { float r; // dato o atributo para el radio de la esfera float x, y, z; // dato o atributo para el centro de la esfera
public: Esfera(float coorx. float coory, float coorz, float radio); // constructor ~Esfera(); // destructor float volumen(); // método para calcular el volumen float area_superficial(); // método para calcular el área superficial
};
Universidad Nacional
En Python
class Point: def move(self, x, y):
self.x = x self.y = y
def reset(self):
self.move(0, 0) def calculate_distance(self, other_point): return math.sqrt((self.x - other_point.x)**2 +(self.y - other_point.y)**2)
Universidad Nacional
Herencia:
• La herencia es uno de los mecanismos fundamentales en los lenguajes de programación orientados a objetos, además, es el principal mecanismo mediante el cual se permite la reutilización de código, algunos autores incluso dicen que un lenguaje que no soporte la herencia no es orientado a objetos, sino que es basado en objetos.
Universidad Nacional
Herencia [Wegner]:
• La herencia es un mecanismo para compartir el código o la conducta comunes de una colección de clases. Las propiedades compartidas se ubican en superclases y éstas se reutilizan en la definición de subclases. Los programadores pueden especificar cambios incrementales en la conducta de las subclases sin modificar la clase ya especificada. Las subclases heredan el código de la superclase y ellas pueden agregar nuevas operaciones y nuevas variables de instancia
Universidad Nacional
Herencia [Snyder]:
• La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación de un objeto se define en términos de la implementación de otro objeto. La nueva implementación puede ser extendida agregando datos a la nueva representación del objeto, agregando nuevas operaciones, y cambiando o extendiendo la definición de operaciones ya existentes.
Universidad Nacional
Herencia Múltiple
Universidad Nacional
Sinónimos de Herencia
• Para el término herencia otros autores utilizan jerarquía de clases, jerarquía de tipos, o jerarquía de interfaces; para el término superclase también se utilizan los términos clase base o super tipo y para el término subclase se utiliza comúnmente clase derivada o subtipo.
Universidad Nacional
Herencia simple y múltiple:
• La herencia se divide en herencia simple y herencia múltiple, se dice que la herencia es simple cuando una clase "hereda" de una clase única, y que es múltiple cuando una clase hereda de varias (más de una) clases.
Universidad Nacional
Encapsulación:
• La encapsulación es uno de los conceptos fundamentales de la Orientación a Objetos, en la que es un mecanismo que permite a los programadores utilizar clases sin conocer los detalles de implementación de éstas, permitiendo que futuras mejoras o cambios en la clase no impliquen cambios en los demás módulos que utilizan tal instancia de esta clase. Además, es el concepto que marca una diferencia sustancial entre un Tipo de Dato Abstracto (TDA) y un objeto.
Universidad Nacional
Encapsulación [Booch]:
• La encapsulación es un proceso mediante el cual se ocultan todos los detalles de un objeto que no contribuyen a sus características escenciales.
Universidad Nacional
Encapsulación:
Universidad Nacional
Abstracción [Booch]:
• La abstracción denota las características esenciales de un objeto que lo distinguen de todos los otros tipos de objetos y provee una clara definición de las fronteras conceptuales, relativas a las perspectivas del usuario.
Universidad Nacional
Abstracción:
Universidad Nacional
Modularidad:
• La modularidad es un concepto que tampoco es nuevo en la Orientación a Objetos y se utiliza ampliamente en lenguajes como Modula-2. Un módulo agrupa un conjunto de procedimientos relacionados, así como los datos que ellos manipulan. Este es un principio importante que permite en buena medida la reutilización del código, además, la modularidad pretende dividir un programa o sistema en subsistemas o subprogramas lo cual contribuye ampliamente a disminuir la complejidad del software.
Universidad Nacional
Modularidad:
Universidad Nacional
Ligamento Tardío y Temprano
• los lenguajes de programación estructurados parten del hecho incuestionable del ligamento (binding) temprano, es decir, que el tipo de los parámetros se determina a priori, en términos de lenguajes de programación, en tiempo de compilación. Este enfoque, aún cuando simplifica los lenguajes, limita mucho el poder de modelación de la realidad, es por esto que la Orientación a Objetos incluye la posibilidad del ligamento tardío, y lenguajes como SmallTalk y C++ ya lo han implementado.
Universidad Nacional
Polimorfismo:
• El concepto de polimorfismo está íntimamente ligado al concepto de ligamento tardío. En orientación a objetos tiene que ver con el hecho de que existen métodos (métodos virtuales) que pueden tener diferente implementación en clases distintas, lo que permite que en tiempo de ejecución el sistema determine cuál utilizar, de acuerdo con el tipo de parámetro con que es invocada.
Universidad Nacional
Polimorfismo [Snyder]:
• Una operación genérica tiene diferente implementación para diferentes objetos, con conductas observables diferentes".
Universidad Nacional
¿Qué es Orientado a Objetos y qué no lo es?
• Dave Thomas en su artículo "What is an Object?“ define cuatro conceptos fundamentales en la Orientación a Objetos; estos son: – Encapsulación. – Paso de mensajes (solicitud de operaciones genéricas). – Herencia de clases, y – Ligamento tardío y temprano.
Universidad Nacional
¿Qué es Orientado a Objetos y qué no lo es?
• Mientras que para Peter Wegner es suficiente tener: – Objetos. – Clases, y – Herencia de clases.
Universidad Nacional
¿Qué es Orientado a Objetos y qué no lo es?
• Pero para Booch, según lo expresa en existen cuatro conceptos fundamentales en la Orientación a Objetos, los cual son: – Abstracción. – Encapsulación. – Modularidad y – Herencia.
Universidad Nacional
Notación gráfica de la Herencia en UML
Clase Base
Clase Derivada 1 Clase Derivada 2
Universidad Nacional
Notación gráfica de Com-Com en UML
Clase Componente 1 Clase Componente 2
Clase Compuesta
1
1..*
1
1..*
1
1..*
1
1..*
Universidad Nacional
Universidad Nacional
UML
Ejemplo 1
Compra
Clasica
Dorada
ClienteTarjeta1..*1 1..*1
dueño
CompraColones Nacional
1 0..*1 0..*
poseeCompraDolaresInternacional
10..* 10..*
posee
Universidad Nacional
1° ETAPA
Encontrar las clases
Universidad Nacional
Notación Gráfica en UML Clase
Universidad Nacional
• Usted ha sido contratado en una empresa de tarjetas de crédito como analista de sistemas. Esta empresa desea crear un nuevo sistema de cómputo Orientado a Objetos utilizando UML y C++ para el control de estados de cuenta de sus clientes. Esta empresa tiene 4 tipos de tarjetas, esta son:
• La tarjeta nacional, esta tarjeta tiene los siguientes aspectos: nombre del cliente, número de cuenta (número de tarjeta), límite de crédito en colones, número de pin (para los cajeros), fecha de corte, dirección del cliente, fecha límite de pago, un pago de contado (todo el saldo), pago mínimo (que es el 25% del pago de contado), además tiene una lista de todas las compras efectuadas en el mes y los montos respectivos en colones.
• La tarjeta internacional, esta tiene los mismos datos que la tarjeta nacional, pero todos se maneja en dólares, es decir, todos los montos son en dólares, así por ejemplo la lista de compras efectuadas viene en dólares, aunque la compras se hagan en colones, córdobas o cualquier otro tipo de moneda.
• La tarjeta clásica, este tipo de tarjeta es a la vez una tarjeta nacional e internacional, esto quiere decir que tiene todos los datos de las anteriores, manejando un pago de contado en colones y otro en dólares, un pago mínimo en colones y otro en dólares, además tiene dos listas de compras, una en colones y la otra en dólares. En este tipo de tarjeta todo lo que el cliente compre en el país se incluye en la lista de compras en colones, mientras que todo lo que compre en el extranjero se incluye en la lista de compras en dólares.
• La tarjeta dorada, este tipo de tarjeta es la mejor que ofrece la empresa, pues es equivalente a una tarjeta clásica, pero además incluye un monto de extrafinanciamiento en colones y en dólares.
Ejemplo 1.
Universidad Nacional
Resultado de la ETAPA N° 1 en UML
TarjetaCompra Cliente
Nacional InternacionalCompraColones CompraDolares
Clasica
Dorada
Universidad Nacional
2° ETAPA Identificar las Estructuras (Asociación, Herencia y
Com-Com)
Universidad Nacional
Notación gráfica de Herencia en UML
Clase Base
Clase Derivada 1 Clase Derivada 2
Universidad Nacional
Notación gráfica de Com-Com en UML
Clase Componente 1 Clase Componente 2
Clase Compuesta
1
1..*
1
1..*
1
1..*
1
1..*
Universidad Nacional
Resultado de la ETAPA N° 2 en UML
Ejemplo 1
Compra
Clasica
Dorada
ClienteTarjeta1..*1 1..*1
dueño
CompraColones Nacional
1 0..*1 0..*
poseeCompraDolaresInternacional
10..* 10..*
posee
Universidad Nacional
3° ETAPA Identificando los Módulos
“Package en UML”
Universidad Nacional
Paquete 1
Paquete 2
Notación Gráfica en UML
Universidad Nacional
Resultado de la ETAPA N° 3 en UML
Ejemplo 1 Compra
(f rom Compras)
Clasica(f rom Tarjetas)
Dorada(f rom Tarjetas)
Cliente(f rom Tarjetas)
Tarjeta(f rom Tarjetas)
1..*1 1..*1
dueño
CompraColones(from Compras)
Nacional(f rom Tarjetas)
1 0..*1 0..*
poseeCompraDolares
(f rom Co mpra s)Internacional(f rom Tarjetas)
10..* 10..*
posee
Compras
Tarjetas
Universidad Nacional
4° ETAPA Definiendo los Atributos
Universidad Nacional
Notación Gráfica en UML
Universidad Nacional
Resultado de la ETAPA N° 4 en UML
Ejemplo 1
Universidad Nacional
F Notación Gráfica en UML
Clase 2Clase 1
10..* 10..*
nombre
Relaciones de Asociación
Universidad Nacional
F Ejemplo en UML
Curso Profesor
10..4 10..4
F Significa que: F Un objeto Curso está relacionado exactamente
con un profesor (que lo va a impartir). Ej. El curso MA125, grupo 01, será impartido por el profesor Araya.
F Un objeto Profesor está relacionado con de 0 a 4 cursos (los cursos que el profesor va a impartir).
Universidad Nacional
5° ETAPA Definiendo los Métodos
Universidad Nacional
Notación Gráfica en UML
Universidad Nacional
Resultado de la ETAPA N° 5 en UML
Ejemplo 1
Universidad Nacional
Gracias…
Top Related