definiciones en orientación a objetos - … · • la implementación de la herencia es un...

61
Universidad Nacional Definiciones en Orientación a Objetos Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional

Upload: dangthien

Post on 04-Oct-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Definiciones en

Orientación a Objetos

Dr. Oldemar Rodríguez Rojas Escuela de Informática Universidad Nacional

Page 2: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 3: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 4: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 5: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 6: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 7: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 8: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 9: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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).

Page 10: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Clase vrs Objeto

Page 11: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 12: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Clase

Page 13: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 14: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 15: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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).

Page 16: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 17: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

};

Page 18: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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)

Page 19: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 20: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 21: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 22: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Herencia Múltiple

Page 23: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 24: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 25: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 26: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 27: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Encapsulación:

Page 28: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementació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.

Page 29: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Abstracción:

Page 30: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementació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.

Page 31: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Modularidad:

Page 32: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 33: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 34: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Polimorfismo [Snyder]:

•  Una operación genérica tiene diferente implementación para diferentes objetos, con conductas observables diferentes".

Page 35: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 36: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 37: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 38: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Notación gráfica de la Herencia en UML

Clase Base

Clase Derivada 1 Clase Derivada 2

Page 39: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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..*

Page 40: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Page 41: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

UML

Ejemplo 1

Compra

Clasica

Dorada

ClienteTarjeta1..*1 1..*1

dueño

CompraColones Nacional

1 0..*1 0..*

poseeCompraDolaresInternacional

10..* 10..*

posee

Page 42: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

1° ETAPA

Encontrar las clases

Page 43: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Notación Gráfica en UML Clase

Page 44: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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.

Page 45: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Resultado de la ETAPA N° 1 en UML

TarjetaCompra Cliente

Nacional InternacionalCompraColones CompraDolares

Clasica

Dorada

Page 46: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

2° ETAPA Identificar las Estructuras (Asociación, Herencia y

Com-Com)

Page 47: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Notación gráfica de Herencia en UML

Clase Base

Clase Derivada 1 Clase Derivada 2

Page 48: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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..*

Page 49: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 50: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

3° ETAPA Identificando los Módulos

“Package en UML”

Page 51: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Paquete 1

Paquete 2

Notación Gráfica en UML

Page 52: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

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

Page 53: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

4° ETAPA Definiendo los Atributos

Page 54: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Notación Gráfica en UML

Page 55: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Resultado de la ETAPA N° 4 en UML

Ejemplo 1

Page 56: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

F  Notación Gráfica en UML

Clase 2Clase 1

10..* 10..*

nombre

Relaciones de Asociación

Page 57: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementació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).

Page 58: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

5° ETAPA Definiendo los Métodos

Page 59: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Notación Gráfica en UML

Page 60: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Resultado de la ETAPA N° 5 en UML

Ejemplo 1

Page 61: Definiciones en Orientación a Objetos - … · • La implementación de la herencia es un mecanismo para crear la implementación de objetos en forma incremental; la implementación

Universidad Nacional

Gracias…