Paradigma Orientado a Objetos
-
Upload
ismael-perea -
Category
Software
-
view
259 -
download
3
Transcript of Paradigma Orientado a Objetos
Paradigma Orientado a Objetos
Paradigma
Paradigma
Un paradigma es un determinado marco desde el cual miramos el mundo, lo comprendemos, lo interpretamos e intervenimos sobre él. Abarca desde el conjunto de conocimientos científicos que imperan en una época determinada hasta las formas de pensar y de sentir de la gente en un determinado lugar y momento histórico.
Paradigma
Adam Smith define paradigma, en su libro “Los poderes de la mente”, como “un conjunto compartido de suposiciones. Es la manera como percibimos el mundo: agua para el pez. El paradigma nos explica el mundo y nos ayuda a predecir su comportamiento”.
Paradigma
En nuestro contexto, el paradigma debe ser concebido como una forma aceptada de resolver un problema en la ciencia, que más tarde es utilizada como modelo para la investigación y la formación de una teoría. También, el paradigma debe ser concebido como un conjunto de métodos, reglas y generalizaciones utilizadas conjuntamente por aquellos entrenados para realizar el trabajo científico de investigación.
Paradigmas
Paradigmas de programación
Los paradigmas de programación nos indican las diversas formas que, a lo largo de la evolución de los lenguajes, han sido aceptadas como estilos para programar y para resolver los problemas por medio de una computadora.
Paradigmas de programación
ImperativoFuncionalLógicoOrientado a Objetos
Paradigma POO
La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo, y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos.
Lenguajes de programación OO
Simula 67: Johan Dahl y Kristen NygaardSmalltalk: Alan KayC++: Bjarne StroustrupEiffel: Bertrand MeyerJava: James GoslingC#: Anders HejlsbergRuby: Yukihiro Matsumoto
Personajes
Características de la POO
Características de la POO
Abstraction Encapsulation Information Hiding Modularity Functional Independence: Coupling and
Cohesion Polymorphism Inheritance
Single inheritance Multiple inheritance
Abstracción
Es aislar un elemento de su contexto o del resto de los elementos que lo acompañan.
Expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás.
Provee límites conceptuales.Quitar las propiedades y acciones de un
objeto para dejar solo aquellas que sean necesarias.
Encapsulación
Es reunir todos los elementos que puedan considerarse pertenecientes a una misma entidad al mismo nivel de abstracción.
Aumenta la cohesión de los componentes de un sistema.
Ocultamiento de la información
Cada objeto está aislado y establece una interfaz que especifica cómo pueden interactuar con éste, protegiendo sus propiedades de la modificación por quien no tenga derecho a acceder a ellos.
Modularidad
Permite subdividir un sistema en partes más pequeñas llamadas módulos, cada una tan independiente como sea posible.
Independencia funcional
Evalúa dos criterios cualitativos: Cohesión: Medida que indica qué tan especializado es
un módulo u objeto, lo que hace que tenga poca interacción con las otras partes del sistema. Algo cohesivo deberá idealmente hacer una sola cosa.
Acoplamiento: Medida de interconexión entre módulos dentro de una estructura de software. Esta medida depende de la complejidad de interconexión entre los módulos. Grado de interdependencia entre módulos de un programa.
Independencia funcional
Alta cohesión Bajo acoplamiento
Polimorfismo
Comportamientos diferentes asociados a objetos distintos pueden compartir el mismo nombre.
Herencia
Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenece.
Hay dos tipos de herencia: Herencia simple Herencia múltiple
DDD: Deadly Diamond of Death
Ventajas de la POO
Reusability (reutilizabilidad): Cuando hemos diseñado adecuadamente las clases, se pueden usar en distintas partes del programa y en numerosos proyectos.
Maintainability (sostenibilidad): Debido a las sencillez para abstraer el problema, los programas orientados a objetos son más sencillos de leer y comprender, pues nos permiten ocultar detalles de implementación dejando visibles sólo aquellos detalles más relevantes.
Modifiability (modificabilidad) La facilidad de añadir, suprimir o modificar nuevos objetos nos permite hacer modificaciones de una forma muy sencilla.
Reliability (fiabilidad): Al dividir el problema en partes más pequeñas podemos probarlas de manera independiente y aislar mucho más fácilmente los posibles errores que puedan surgir.
Conceptos básicos
Object Class
Concrete Abstract
Interface Attribute Operation Responsibility Message Package
Objeto
Entidad prevista de un conjunto de propiedades (datos) y de comportamiento (funcionalidad).
Instancia de una clase.
Clase
Descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y semántica.
Clase y objetos
Clase y objetos
Clase: Persona
Objetos
Clase y objetos
Clase: Galleta
Objetos
?
Clase abstracta
Es una clase que tiene incompleto su comportamiento.
No implementa todas sus operaciones: al menos una de ellas no contiene código (operación abstracta).
No se puede instanciar.Está obligada a heredar.
Interface
Es una colección de operaciones que se usa para especificar un servicio de una clase o de un componente.
Solo declara comportamiento, no lo implementa. Todas las operaciones son abstractas (sin
código). Obliga a otras clases derivadas a la
implementación de todas sus operaciones. Obliga a la herencia siempre y cuando sea con
interfaces derivadas. No se puede instanciar.
Componentes de las clases
Classes are composed from structural and behavioral constituents.
ESTRUCTURA
COMPORTAMIENTO
Componentes de las clases
Classes are composed from structural and behavioral constituents.
ESTRUCTURA
COMPORTAMIENTO
ATRIBUTOS
OPERACIONES
Atributo
Es una propiedad de una clase que describe un rango de valores que pueden tomar las instancias de la propiedad.
Atributo derivado: son aquellos que se pueden calcular a partir de otros atributos.
Operación
Es la implementación de un servicio que puede ser requerido a cualquier objeto de la clase para que muestre un comportamiento.
Es la abstracción de algo que se puede hacer a un objeto.
Reglas de Visibilidad
Matriz de Visibilidad
Alcance de atributos y operaciones
Es una característica específica si cada instancia del clasificador tiene su propio valor de la característica, o si sólo hay un valor de la característica para todas las instancias del clasificador. Hay dos tipos de alcances: Instance Static
Alcance de instancia
Cada instancia del clasificador tiene su propio valor para la característica. Éste es el valor por defecto y no requiere una notación adicional de UML.
Alcance estático
Sólo hay un valor de la característica para todas las instancias del clasificador. También se llama alcance de clase. Esto se denota con UML subrayando el nombre de la característica.
Responsabilidad
Es un contrato o una obligación de una clase. Al crear una clase, hay una promesa de que
todos los objetos de esa clase tendrán el mismo tipo de estado y el mismo comportamiento.
Los atributos y operaciones de una clase son simplemente las características por medio de las cuales se llevan a cabo las responsabilidades de dicha clase.
Gráficamente, las responsabilidades se pueden expresar como texto libre en un compartimento separado al final del icono de la clase.
Interacciones: Mensajes
En cualquier sistema, los objetos interactúan entre sí pasándose mensajes.
Una interacción es un comportamiento que incluye un conjunto de mensajes que se intercambian un conjunto de objetos.
Un mensaje es la especificación de una comunicación entre objetos que transmite información, con la expectativa de que se desencadenará una actividad.
Paquete
Es un mecanismo de propósito general para organizar elementos de modelado en grupos.
Is a container for the definitions of UML elements such as classes, use cases and components. A package can also contain other packages.
Packages are useful for separating work into different areas.
Each package defines a namespace so that names that are defined in different packages do not conflict with each other.
Paquete
The qualified name property of each element is the qualified name of the package to which it belongs, followed by the element's own name.
For example, if your package is called mypackage, a class within the package will have a qualified name like mypackage::MyClass.
Packages are containers. If you move or delete a package, the classes, packages, and other things defined inside it are also moved or deleted.
Namespace
Un espacio de nombres es un conjunto de nombres en el cual todos los nombres son únicos.
Es un contenedor abstracto en el que un grupo de uno o más identificadores únicos pueden existir.
Modelado en UML
Objeto
objeto : Clase
: Alumno
Clase
Clase
+atributo1#atributo2-atributo3~atributo4
+operacion1()-operacion2()#operacion3()~operacion4()
Clase
+atributo1#atributo2-atributo3~atributo4
+operacion1()-operacion2()#operacion3()~operacion4()
paquete1::Clase
+atributo1#atributo2-atributo3~atributo4
+operacion1()-operacion2()#operacion3()~operacion4()
Clase
Profesor
+noTrabajador+nombre+apellidoPaterno+apellidoMaterno+fechaNacimiento+nacionalidad+/edad+/rfc
Clase
ClaseA
+atributo1: String#atributo2: Integer-atributo3: Boolean~atributo4: ClaseB
+operacion1(p1)-operacion2(p1, p2)#operacion3(p1: String)~operacion4(): Integer
Alumno
+nombre: String+apellidoPaterno: String+apellidoMaterno: String+carrera: Integer = 308
+estudiar()+presentarExamen()
Alumno
+nombre: String+apellidoPaterno: String+apellidoMaterno: String+carrera: int = 308
+estudiar()+presentarExamen()
Clase
Clase
+atributo1#atributo2-atributo3~atributo4
+operacion1()-operacion2()#operacion3()~operacion4()
Clase
+atributo1#atributo2-atributo3~atributo4
+operacion1()-operacion2()#operacion3()~operacion4()
Clase
+atributo1#atributo2-atributo3~atributo4
+operacion1()-operacion2()#operacion3()~operacion4()
Clase y objeto
Alumno
+nombre+apellidoPaterno+apellidoMaterno
+estudiar()+presentarExamen()
alumno1 : Alumno
nombre = IsmaelapellidoPaterno = PereaapellidoMaterno = Camarillo
Clase abstracta
TarjetaBancaria
TarjetaCrédito TarjetaDébito
Figura
+calcularArea()+mover()
Cuadrado
+calcularArea()
Círculo
+calcularArea()
Interface
Actor<<interface>>
+actuar()
Persona
+actuar()
Perro
+actuar()
Animal
Alcance
Persona
+nombre: String+especie: String
+main(args[]: String)+Persona()
Persona
+nombre: String+ESPECIE: String
+main(args[]: String)+Persona()
Persona
+nombre: String+ESPECIE: String
+main(args[]: String)+Persona()
Responsabilidades
AgenteDeFraudes
Responsabilidades
- Determinar el riesgodel pedido de un cliente.
- Gestionar los criteriosde fraude específicospara cada cliente.
Paquete
paquete1
paqueteA
paqueteA::paquete1
Codificación del modelo UML
Ejercicio:
Modelar y programar las siguientes clases, paquetes y objetos.
¿Qué objetos le corresponden?
ClaseUno ClaseDos ClaseTres
ClasePadre
ClaseHijoUno ClaseHijoDos
ClaseHijoTres
paqueteuno paquetedos paquetetres
ClaseCuatro ClaseCinco
RockStar PopStar
música
BoyBand
paqueteuno
ClaseUno
ClaseDos
paquetetres
paquetedos
ClaseTres
ClasePadre
ClaseHijoUno
ClaseHijoDos
ClaseHijoTres
música
RockStar
PopStar
BoyBand
ClaseCuatro ClaseCinco
paqueteuno::ClaseUno paqueteuno::ClaseDos paquetedos::ClaseTres
paquetedos::ClasePadre
paquetetres::ClaseHijoUno
paquetetres::ClaseHijoDos
ClaseHijoTres
paqueteuno paquetedos paquetetres
ClaseCuatro ClaseCinco
música::RockStar música::PopStar
música
música::BoyBand