1.1 Conceptos de Orientación a Objetos
¿Qué es la tecnología orientada a objetos?
Un conjunto de principios (abstracción, encapsulación polimorfismo) que
guían la construcción de software, junto con lenguajes, bases de datos y otras
herramientas que soportan estos principios.
Las fortalezas de la tecnología de objetos
 Reflejar un paradigma de modelaje sencillo
 Facilitar la reutilización de elementos arquitectónicos y código
 Crear modelos más apegados a la realidad
 Mantener estabilidad
 Adaptarse a cambios en el dominio del problema
¿ Dónde se utiliza la tecnología O.O. ?
Sistemas cliente-servidor y desarrollos WEB.
 La tecnología de objetos permite a las empresas encapsular información
de negocio en objetos reutilizables que pueden distribuirse a través de
un ambiente de red-Internet para mejorar el procesamiento de
transacciones.
Sistemas de tiempo real
 La tecnología de objetos permite desarrollar sistemas de tiempo real
con alta calidad y flexibilidad.
Objetivos
 Describir abstracción, encapsulación, modularidad y herencia.
 Describir la estructura física de una clase.
 Describir la relación entre una clase y un objeto.
 Definir polimorfismo y generalización.
¿ Qué es un objeto ?
De manera informal, un objeto representa una entidad, que puede ser física,
conceptual o de software.
 Entidad física
 Entidad conceptual
 Entidad de software
Definición formal
Un objeto es una entidad con identidad bien definida que encapsula estado y
conducta
 El estado es representado por sus atributos y relaciones
 La conducta es representada por sus operaciones.
Un objeto tiene estado
 El estado de un objeto son las condiciones en las que se encuentra en
un momento en el tiempo.
 Este estado normalmente cambia a través del tiempo.
 Es representado por los valores de los atributos del objeto en un
momento determinado.
Un objetivo tiene conducta
 La conducta determina como un objeto actúa y reacciona.
 La conducta visible de un objeto es modelada por un conjunto de
mensajes que corresponden a las operaciones que el objeto realiza.
Un objetivo tiene identidad
 Cada objeto tiene una identidad única, aún cuando su estado sea
idéntico al de otro.
1.1.1 Clases y objetos
Objeto
Un objeto es una entidad con identidad bien definida que encapsula
estado y conducta. El estado es representado por sus atributos y
relaciones, la conducta es representada por sus operaciones.
Un objeto es una entidad con fronteras bien definidas, es decir, el
propósito de un objeto debe ser claro. Un objeto tiene dos tipos de
componentes: atributos y operaciones.
 Los atributos y las relaciones de un objeto representan su estado.
 Las operaciones representan la conducta del objeto.
Un objeto tiene estado
El estado de un objeto son las condiciones en las que se encuentra en
un momento en el tiempo. Este estado normalmente cambia a través
del tiempo.
El estado de un objeto es implantado por un conjunto de propiedades
denominado atributos, junto con los valores de estas propiedades y
las ligas que posee el objetos hacia otros.
El estado no es definido por un atributo “estado” o un subconjunto de
atributos, sino por todos los atributos del objeto y las ligas hacia otros
objetos.
Un objeto tiene conducta
La segunda característica de un objeto es su conducta. Los objetos
deben reflejar los conceptos que modelan incluyendo su
comportamiento. La conducta determina cómo un objeto actúa y
reacciona a las solicitudes de otros. La conducta de un objeto es
representada por las operaciones que un objeto realiza.
Un objeto tiene identidad
En el mundo real, dos personas pueden compartir las mismas
características: nombre, fecha de nacimiento, ocupación, sin
embargo, no hay duda de que son individuos distintos, con su propia
identidad.
El mismo concepto es válido para los objetos. Aunque dos objetos
compartan el mismo estado (atributos y relaciones), siguen siendo
objetos independientes con su propia identidad.
Hay cuatro principios básicos de la tecnología orientada a objetos:
 Abstracción
 Encapsulación
 Modularidad
 Herencia
Clase
Una clase puede definirse como:
Una descripción de un conjunto de objetos que comparten los mismos
atributos, operaciones, relaciones y significado.
 En un dominio de problema se pueden identificar una gran
variedad de objetos.
 Identificando similitudes entre ellos y agrupándolos en clases
nos ayuda a disminuir la complejidad de un problema.
La notación que utiliza UML para representar una clase nos permite
visualizarla sin necesidad de que esté ligada a algún lenguaje de
programación, lo que permite enfatizar sus partes estructurales:
nombre, atributos y operaciones.
Gráficamente una clase es representada por un rectángulo con
compartimentos.
Comportamientos de una clase
Una clase tiene tres secciones:
 El nombre de la clase
 La estructura (atributos)
 La conducta (operaciones)
La relación entre clases y objetos
Una clase es una definición abstracta de un objeto.
 Define la estructura y conducta de cada objeto de la clase.
 Sirve como una plantilla para crear objetos.
Los objetos son agrupados en clases.
1.1.2 Atributos
Un atributo es una propiedad de una clase y una clase puede tener
cualquier número de atributos incluyendo cero.
Un atributo se puede definir como: una propiedad de una clase que
describe una característica del objeto.
 Una clase puede tener cero o más atributos. En cualquier
tiempo un objeto de una clase puede especificar valores para
cada uno de sus atributos.
 Un atributo definido por una clase representa una de sus
características.
 Un atributo debe tener un tipo de dato que puede ser primitivo
o una referencia a otro objeto, un nombre y de manera
opcional, un valor inicial.
1.1.3 Operaciones y mensajes
¿Qué es una Operación?
Es un servicio que puede ser solicitado a un objeto. Una operación
tiene una firma que restringe la lista de parámetros que pueden
recibirse.
Una clase puede tener cualquier número de operaciones
incluyendo cero.
En su conjunto, a estos elementos se les conoce como la firma de la
operación.
¿Qué es un mensaje?
Un mensaje es la especificación de una comunicación entre objetos
que contiene la información suficiente para activar una operación
del objeto receptor. Un mensaje dice cómo un objeto le solicita a
otro la ejecución de una operación.
Los mensajes son los mecanismos que permiten a los objetos
interactuar entre sí. Un mensaje invoca la operación de un objeto
receptor. Cuando esta operación concluye, el flujo de control es
devuelto al objeto invocante.
1.1.4. Mensajes y encapsulamiento
¿Qué es encapsulación?
La encapsulación puede ser definida como:
La capacidad de un objeto de ocultar los detalles de implantación de
sus operaciones proporcionando una interfase bien definida de
acceso.
 La encapsulación en ocasiones es conocida como ocultamiento
de información, permitiendo a los clientes hacer uso de una
interfase sin necesidad de que conozcan los detalles de
implantación.
 La encapsulación elimina las dependencias directas hacia
detalles de implantación (el cliente solo depende de la
interfase). En consecuencia, es posible cambiar la
implantación, mientras la interfase no sea modificada los
clientes no son afectados.
 Los clientes no son afectados por cambios en la implantación,
con lo que se reduce el acoplamiento, evitando que cualquier
corrección o cambio en alguna operación obligue a realizar
cambios a los clientes que dependen de ella. Como resultado,
el mantenimiento del sistema se simplifica.
 La encapsulación ofrece dos tipos de protección, protege el
estado interno de un objeto de la manipulación directa por parte
de los clientes y protege a los clientes de los cambios en los
detalles de implantación de las operaciones del objeto.
La clave de la encapsulación es la interfase de los mensajes que puede
recibir un objeto. La interfase garantiza que toda comunicación hacia
el objeto se lleve a cabo a través de un conjunto de operaciones
predefinidos. Los datos internos del objeto son solamente accesibles
a través de sus operaciones.
En consecuencia, es necesario declarar los atributos de un objeto
como privados y declarar como públicas, aquellas operaciones que
sean de interés a los clientes.
1.1.5 Herencia y polimorfismo
¿Qué es Herencia?
La herencia puede definirse como:
La especialización de entidades, partiendo de conceptos generales
hasta llegar a conceptos más particulares formando una jerarquía.
 La herencia organiza entidades en un orden particular. Esta
organización depende de la perspectiva tomada, es decir, si
vamos de lo general a lo particular o viceversa. A través del
uso de este mecanismo podemos factorizar estructura y
comportamiento compartido entre entidades.
 En cualquier tipo de sistema es factible identificar diferentes
tipos de jerarquías de herencia.
 La herencia es una organización taxonómica que permite
reconocer similitudes y diferencias entre objetos.
Hay una frase para validar que la herencia se encuentre bien aplicada,
que consiste en que el hijo siempre sea una especialización del padre
(es un).
¿Qué es Polimorfismo?
La habilidad de ocultar múltiples implantaciones detrás de una
misma interfase.
La palabra griega polimorfos significa “múltiples formas”. Cada
operación de una interfaz debe poseer, al menos, una implantación.
Sin embargo, en algunos casos es posible que una misma operación
posea múltiples implantaciones. A esto se le conoce como
polimorfismo.
Como ejemplo, podríamos tener una clase que haga la suma de los
elementos que recibe y que, dependiendo de los parámetros que en
ese momento obtenga, será la implantación que seleccione.
Si recibe enteros, entonces realizaría una suma; pero en el caso de
recibir cadenas, en lugar de hacer una suma, realizaría una
concatenación.
En este ejemplo, se desea obtener el valor actual de un instrumento
financiero. Sin embargo, cada instrumento tiene su propio algoritmo,
mediante el cual se obtiene ese valor. Si no tuviéramos un ambiente
orientado a objetos, deberíamos describir código que explícitamente
mande a ejecutar la operación del objeto financiero en el que estamos
interesados.
Sin embargo, en un ambiente orientado a objetos, haciendo uso del
mecanismo de polimorfismo, dinámicamente el ambiente
seleccionará la implantación correcta de la operación, dependiendo
del objeto que estemos manipulando, sin necesidad de seleccionarlo
explícitamente. Este es el beneficio del mecanismo de polimorfismo.
1.2 Identificación de los elementos de un modelo de objetos
2.1.1 La importancia de modelar
¿Qué es un modelo?
Un modelo es una simplificación de la realidad.
De acuerdo a Grady Booch, un modelo proporciona los planos de un
sistema. Pueden existir modelos muy detallados, así como modelos
que den un vistazo de alto nivel del sistema que se construirá. Un buen
modelo incluye aquellos elementos que son relevantes al nivel de
abstracción seleccionado. Cada sistema puede ser descrito desde
diferentes perspectivas utilizando diferentes modelos. Un modelo
puede ser estructural enfatizando la organización del sistema, o puede
ser de conducta, enfatizando los aspectos dinámicos.
¿Por qué modelamos?
De acuerdo a Booch en “The Unified Modeling Language Use
Guide”, el modelaje nos apoya en cuatro cosas:
1. Nos ayuda a visualizar un sistema como deseamos que sea
diseñado. Un modelo ayuda al equipo de trabajo a comunicar
la visión del sistema que se está construyendo. Es muy difícil
compartir una misma visión si solo se cuenta con
especificaciones textuales.
2. Nos permite especificar la estructura y conducta del sistema.
Un modelo permite documentar la estructura y conducta de un
sistema antes de que sea codificado.
3. Nos da una plantilla que guía el proceso de construcción. Un
modelo es una herramienta invaluable durante la construcción,
sirve como guía para el programador. ¿Alguna vez ha tenido la
experiencia de que un programador codifique la funcionalidad
incorrecta debido a que confundió la descripción textual de un
requerimiento? El modelado ayuda a aliviar esta situación.
4. Documenta las decisiones que hemos tomado. Los modelos
son herramientas que apoyan al proyecto a largo plazo, ya que
documentan las decisiones de diseño tomadas y ya no solo se
depende de la memoria.
Concepto de modelamiento
Modelado del software
El modelado de sistemas software es una técnica para tratar con la complejidad
inherente a estos sistemas. El uso de modelos ayuda al ingeniero de software a
"visualizar" el sistema a construir. Además, los modelos de un nivel de
abstracción mayor pueden utilizarse para la comunicación con el cliente. Por
último, las herramientas de modelado y las de Ingeniería de Software
Automatizada. pueden ayudar a verificar la corrección del modelo.
Importancia de modelamiento
Puedes intentar mencionar que el modelado de
software: Mejora la productividad del equipo de
desarrollo (por ej. los modelos se pueden usar para
generar código de forma semi-automática) Reduce el
número de defectos en el código (los modelos permiten
una validación temprana del sistema)
Beneficios del modelado de software (o
cómo convencer a tu project manager!)
Quieres convencer a tu project manager de lo beneficioso que es el uso de técnicas de
modelado? Puedes intentar mencionar que el modelado de software:
 Mejora la productividad del equipo de desarrollo (por ej. los modelos se pueden
usar para generar código de forma semi-automática)
 Reduce el número de defectos en el código (los modelos permiten una validación
temprana del sistema)
 Facilita la comprensión (con lo que además se facilita la integración de nuevos
miembros en el equipo) y, ya de paso, documentan el sistema para el futuro.
 Mejora la decomoposición y modularización del software
 Facilita la evolución y mantenimiento del software
 Mejora la reusabilidad
7 RAZONES PARA MODELAR EL
SOFTWARE ANTES DE PROGRAMAR
Posted by Jordi Cabot | Nov 7, 2018 | Diseño, Metodos | 0 |
Sé lo que muchos de vosotros estáis pensando. ¿Quién quiere perder el tiempo dibujando
cajitas y flechas cuando podría estar escribiendo JavaScript?. Si eres de los que piensan esto, te
voy a dar cinco razones (más dos de “bonus” que seguro te acaban de convencer) para que
recuperes tus libros de UML y vayas refrescando tus conocimientos de modelado y diseño de
software.
1. Las técnicas de modelado mejoran la productividad del equipo de desarrollo. Una
vez tienes el modelo de datos, de comportamiento, … los puedes usar para
generar código automáticamente. Para aplicaciones “típicas” (tipo “data-entry” con
muchos formularios tipo CRUD) puedes llegar a generar todo el código para otras
una parte considerable.
2. Reduce los defectos en el código. Hay un buen número de herramientas para
verificar, testear y validar tus modelos que permiten detectar errores analizando
sólo los modelos. Y ya sabes, cuánto antes detectes un defecto más barato es
repararlo.
3. Los modelos te permiten explorar diferentes alternativas de diseño y
arquitectónicas antes de empezar a desarrollar usando técnicas de simulación.
4. Los modelos simplifican el mantenimiento y la evolución del proyecto (por ejemplo,
ayudando a localizar rápidamente las partes del código a tocar después de un
cambio en los requisitos). También facilitan la reutilización del software en
proyectos futuros (el modelado mejora el ROI especialmente cuando la empresa
desarrolla proyectos similares).
5. Los modelos capturan eficientemente el conocimiento del sistema. Los modelos
son la mejor documentación. Lo que simplifica la integración de nuevos miembros
al equipo.
¿Todavía vas diciendo que no con la cabeza? Pues dos otras razones, más “pragmáticas”:
1. Muchos de tus clientes te van a pedir los modelos del software que desarrolles
para ellos. En muchas administraciones públicas, seguir un proceso de ingeniería
de software bien formalizado (y por tanto con sus fases de análisis y diseño y los
modelos correspondientes) es obligatorio para participar en los concursos públicos.
Recuerda que el modelado no está reñido con el desarrollo ágil.
2. Los que hacen dibujitos cobran más que los que programan. A lo mejor dibujar es
menos “sexy” pero ser bueno analizando sistemas software (y expresando estos
análisis mediante el uso de modelos software) está mejor pagado que dominar los
últimos frameworks JavaScript. Hay excepciones pero ésta es la regla habitual.

Más contenido relacionado

PPTX
Conceptos poo
PPTX
Programación orientada a objetos
PPTX
PPTX
PPTX
Programación orientada a objetos
DOCX
Programacion orientada a objetos
PPT
Unidad 1 Mad IntroduccióN
Conceptos poo
Programación orientada a objetos
Programación orientada a objetos
Programacion orientada a objetos
Unidad 1 Mad IntroduccióN

Similar a MODELADO.docx (20)

PPTX
Programación orientada a objetos
DOCX
Termino de programacion
PPTX
Programacion orientada a_objetos
PPT
Primeraclaseobjetos clases
PPTX
PROGRAMACION ORIENTADA A OBJETOS
PPTX
Programación orientada a objetos
PPTX
Programación orientada a objetos
DOCX
Analisis orientado a objetos
PPT
Introduccion Orientada a Objetos
PPT
Dce0 Introduccion Orientacion A Objetos
PPT
D5E-E0: Introduccion a la programacion orientada a objetos
PPT
Dce0 Introduccion Orientacion A Objetos2
PPTX
Programacion orientada a objetos
PPTX
Programación orientada a objetos
PPT
Análisis y Diseño Orientado Al Objeto.ppt
PPTX
Programacion orientada
PPTX
Programacion Orientada a Objetos
DOCX
Caracteristicas de un lenguaje de p.o.o
PPT
Trabajo sistemas digitales
PPT
Introduccion orientación a objetos
Programación orientada a objetos
Termino de programacion
Programacion orientada a_objetos
Primeraclaseobjetos clases
PROGRAMACION ORIENTADA A OBJETOS
Programación orientada a objetos
Programación orientada a objetos
Analisis orientado a objetos
Introduccion Orientada a Objetos
Dce0 Introduccion Orientacion A Objetos
D5E-E0: Introduccion a la programacion orientada a objetos
Dce0 Introduccion Orientacion A Objetos2
Programacion orientada a objetos
Programación orientada a objetos
Análisis y Diseño Orientado Al Objeto.ppt
Programacion orientada
Programacion Orientada a Objetos
Caracteristicas de un lenguaje de p.o.o
Trabajo sistemas digitales
Introduccion orientación a objetos
Publicidad

Último (20)

PDF
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
PDF
Módulo V. Tema 2. Disruptive & Transformation 2024 v.0.4.pdf
PDF
Seguridad vial en carreteras mexico 2003.pdf
PDF
Diseño y Utiliación del HVAC Aire Acondicionado
PDF
METODOLOGÍA DE INVESTIGACION ACCIDENTES DEL TRABAJO.pdf
PPT
flujo de caja 2 para la evaluacion de proyectos
PPTX
TECNOLOGIA EN CONSTRUCCION PUBLICO Y PRIVADA
PPTX
Investigacioncientificaytecnologica.pptx
PPTX
TRABAJOS DE ALTO RIESGO ELEC - LOTO.pptx
PDF
PPT ProChile 2019 beneficios de la construccion con madera
PPT
Historia de la Estadística en ingeniería civil
PDF
manual-sostenibilidad-vivienda-yo-construyo (1).pdf
PDF
SESION 9 seguridad IZAJE DE CARGAS.pdf ingenieria
DOCX
Manual de Capacitación suelos trabajo edwin varon.docx
PDF
Precomisionado de equipos introduccion.pdf
PPTX
TRABAJOS DE ALTO RIESGO IZAJE Y CALIENTE.pptx
PDF
experto-gestion-calidad-seguridad-procesos-quimicos-industriales-gu.pdf
PDF
Infraestructuras en la seguridad vial.pdf
PDF
silabos de colegio privado para clases tema2
PPTX
PPT SESIÓN 6 Los Injertos.- Micropropagación e Injertos Clonales.pptx
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
Módulo V. Tema 2. Disruptive & Transformation 2024 v.0.4.pdf
Seguridad vial en carreteras mexico 2003.pdf
Diseño y Utiliación del HVAC Aire Acondicionado
METODOLOGÍA DE INVESTIGACION ACCIDENTES DEL TRABAJO.pdf
flujo de caja 2 para la evaluacion de proyectos
TECNOLOGIA EN CONSTRUCCION PUBLICO Y PRIVADA
Investigacioncientificaytecnologica.pptx
TRABAJOS DE ALTO RIESGO ELEC - LOTO.pptx
PPT ProChile 2019 beneficios de la construccion con madera
Historia de la Estadística en ingeniería civil
manual-sostenibilidad-vivienda-yo-construyo (1).pdf
SESION 9 seguridad IZAJE DE CARGAS.pdf ingenieria
Manual de Capacitación suelos trabajo edwin varon.docx
Precomisionado de equipos introduccion.pdf
TRABAJOS DE ALTO RIESGO IZAJE Y CALIENTE.pptx
experto-gestion-calidad-seguridad-procesos-quimicos-industriales-gu.pdf
Infraestructuras en la seguridad vial.pdf
silabos de colegio privado para clases tema2
PPT SESIÓN 6 Los Injertos.- Micropropagación e Injertos Clonales.pptx
Publicidad

MODELADO.docx

  • 1. 1.1 Conceptos de Orientación a Objetos ¿Qué es la tecnología orientada a objetos? Un conjunto de principios (abstracción, encapsulación polimorfismo) que guían la construcción de software, junto con lenguajes, bases de datos y otras herramientas que soportan estos principios. Las fortalezas de la tecnología de objetos  Reflejar un paradigma de modelaje sencillo
  • 2.  Facilitar la reutilización de elementos arquitectónicos y código  Crear modelos más apegados a la realidad  Mantener estabilidad  Adaptarse a cambios en el dominio del problema ¿ Dónde se utiliza la tecnología O.O. ? Sistemas cliente-servidor y desarrollos WEB.  La tecnología de objetos permite a las empresas encapsular información de negocio en objetos reutilizables que pueden distribuirse a través de un ambiente de red-Internet para mejorar el procesamiento de transacciones. Sistemas de tiempo real  La tecnología de objetos permite desarrollar sistemas de tiempo real con alta calidad y flexibilidad. Objetivos  Describir abstracción, encapsulación, modularidad y herencia.  Describir la estructura física de una clase.  Describir la relación entre una clase y un objeto.  Definir polimorfismo y generalización. ¿ Qué es un objeto ? De manera informal, un objeto representa una entidad, que puede ser física, conceptual o de software.  Entidad física  Entidad conceptual  Entidad de software Definición formal Un objeto es una entidad con identidad bien definida que encapsula estado y conducta  El estado es representado por sus atributos y relaciones  La conducta es representada por sus operaciones.
  • 3. Un objeto tiene estado  El estado de un objeto son las condiciones en las que se encuentra en un momento en el tiempo.  Este estado normalmente cambia a través del tiempo.  Es representado por los valores de los atributos del objeto en un momento determinado. Un objetivo tiene conducta  La conducta determina como un objeto actúa y reacciona.
  • 4.  La conducta visible de un objeto es modelada por un conjunto de mensajes que corresponden a las operaciones que el objeto realiza. Un objetivo tiene identidad  Cada objeto tiene una identidad única, aún cuando su estado sea idéntico al de otro. 1.1.1 Clases y objetos Objeto Un objeto es una entidad con identidad bien definida que encapsula estado y conducta. El estado es representado por sus atributos y relaciones, la conducta es representada por sus operaciones.
  • 5. Un objeto es una entidad con fronteras bien definidas, es decir, el propósito de un objeto debe ser claro. Un objeto tiene dos tipos de componentes: atributos y operaciones.  Los atributos y las relaciones de un objeto representan su estado.  Las operaciones representan la conducta del objeto. Un objeto tiene estado El estado de un objeto son las condiciones en las que se encuentra en un momento en el tiempo. Este estado normalmente cambia a través del tiempo. El estado de un objeto es implantado por un conjunto de propiedades denominado atributos, junto con los valores de estas propiedades y las ligas que posee el objetos hacia otros. El estado no es definido por un atributo “estado” o un subconjunto de atributos, sino por todos los atributos del objeto y las ligas hacia otros objetos. Un objeto tiene conducta La segunda característica de un objeto es su conducta. Los objetos deben reflejar los conceptos que modelan incluyendo su comportamiento. La conducta determina cómo un objeto actúa y reacciona a las solicitudes de otros. La conducta de un objeto es representada por las operaciones que un objeto realiza. Un objeto tiene identidad En el mundo real, dos personas pueden compartir las mismas características: nombre, fecha de nacimiento, ocupación, sin embargo, no hay duda de que son individuos distintos, con su propia identidad. El mismo concepto es válido para los objetos. Aunque dos objetos compartan el mismo estado (atributos y relaciones), siguen siendo objetos independientes con su propia identidad.
  • 6. Hay cuatro principios básicos de la tecnología orientada a objetos:  Abstracción  Encapsulación  Modularidad  Herencia Clase Una clase puede definirse como: Una descripción de un conjunto de objetos que comparten los mismos atributos, operaciones, relaciones y significado.  En un dominio de problema se pueden identificar una gran variedad de objetos.  Identificando similitudes entre ellos y agrupándolos en clases nos ayuda a disminuir la complejidad de un problema. La notación que utiliza UML para representar una clase nos permite visualizarla sin necesidad de que esté ligada a algún lenguaje de programación, lo que permite enfatizar sus partes estructurales: nombre, atributos y operaciones. Gráficamente una clase es representada por un rectángulo con compartimentos. Comportamientos de una clase Una clase tiene tres secciones:  El nombre de la clase  La estructura (atributos)  La conducta (operaciones) La relación entre clases y objetos Una clase es una definición abstracta de un objeto.  Define la estructura y conducta de cada objeto de la clase.
  • 7.  Sirve como una plantilla para crear objetos. Los objetos son agrupados en clases. 1.1.2 Atributos Un atributo es una propiedad de una clase y una clase puede tener cualquier número de atributos incluyendo cero. Un atributo se puede definir como: una propiedad de una clase que describe una característica del objeto.  Una clase puede tener cero o más atributos. En cualquier tiempo un objeto de una clase puede especificar valores para cada uno de sus atributos.  Un atributo definido por una clase representa una de sus características.  Un atributo debe tener un tipo de dato que puede ser primitivo o una referencia a otro objeto, un nombre y de manera opcional, un valor inicial. 1.1.3 Operaciones y mensajes ¿Qué es una Operación? Es un servicio que puede ser solicitado a un objeto. Una operación tiene una firma que restringe la lista de parámetros que pueden recibirse. Una clase puede tener cualquier número de operaciones incluyendo cero.
  • 8. En su conjunto, a estos elementos se les conoce como la firma de la operación. ¿Qué es un mensaje? Un mensaje es la especificación de una comunicación entre objetos que contiene la información suficiente para activar una operación del objeto receptor. Un mensaje dice cómo un objeto le solicita a otro la ejecución de una operación. Los mensajes son los mecanismos que permiten a los objetos interactuar entre sí. Un mensaje invoca la operación de un objeto receptor. Cuando esta operación concluye, el flujo de control es devuelto al objeto invocante. 1.1.4. Mensajes y encapsulamiento ¿Qué es encapsulación? La encapsulación puede ser definida como: La capacidad de un objeto de ocultar los detalles de implantación de sus operaciones proporcionando una interfase bien definida de acceso.  La encapsulación en ocasiones es conocida como ocultamiento de información, permitiendo a los clientes hacer uso de una interfase sin necesidad de que conozcan los detalles de implantación.  La encapsulación elimina las dependencias directas hacia detalles de implantación (el cliente solo depende de la
  • 9. interfase). En consecuencia, es posible cambiar la implantación, mientras la interfase no sea modificada los clientes no son afectados.  Los clientes no son afectados por cambios en la implantación, con lo que se reduce el acoplamiento, evitando que cualquier corrección o cambio en alguna operación obligue a realizar cambios a los clientes que dependen de ella. Como resultado, el mantenimiento del sistema se simplifica.  La encapsulación ofrece dos tipos de protección, protege el estado interno de un objeto de la manipulación directa por parte de los clientes y protege a los clientes de los cambios en los detalles de implantación de las operaciones del objeto. La clave de la encapsulación es la interfase de los mensajes que puede recibir un objeto. La interfase garantiza que toda comunicación hacia el objeto se lleve a cabo a través de un conjunto de operaciones predefinidos. Los datos internos del objeto son solamente accesibles a través de sus operaciones. En consecuencia, es necesario declarar los atributos de un objeto como privados y declarar como públicas, aquellas operaciones que sean de interés a los clientes. 1.1.5 Herencia y polimorfismo ¿Qué es Herencia? La herencia puede definirse como: La especialización de entidades, partiendo de conceptos generales hasta llegar a conceptos más particulares formando una jerarquía.  La herencia organiza entidades en un orden particular. Esta organización depende de la perspectiva tomada, es decir, si vamos de lo general a lo particular o viceversa. A través del uso de este mecanismo podemos factorizar estructura y comportamiento compartido entre entidades.  En cualquier tipo de sistema es factible identificar diferentes tipos de jerarquías de herencia.  La herencia es una organización taxonómica que permite reconocer similitudes y diferencias entre objetos.
  • 10. Hay una frase para validar que la herencia se encuentre bien aplicada, que consiste en que el hijo siempre sea una especialización del padre (es un). ¿Qué es Polimorfismo? La habilidad de ocultar múltiples implantaciones detrás de una misma interfase. La palabra griega polimorfos significa “múltiples formas”. Cada operación de una interfaz debe poseer, al menos, una implantación. Sin embargo, en algunos casos es posible que una misma operación
  • 11. posea múltiples implantaciones. A esto se le conoce como polimorfismo. Como ejemplo, podríamos tener una clase que haga la suma de los elementos que recibe y que, dependiendo de los parámetros que en ese momento obtenga, será la implantación que seleccione. Si recibe enteros, entonces realizaría una suma; pero en el caso de recibir cadenas, en lugar de hacer una suma, realizaría una concatenación. En este ejemplo, se desea obtener el valor actual de un instrumento financiero. Sin embargo, cada instrumento tiene su propio algoritmo, mediante el cual se obtiene ese valor. Si no tuviéramos un ambiente orientado a objetos, deberíamos describir código que explícitamente mande a ejecutar la operación del objeto financiero en el que estamos interesados. Sin embargo, en un ambiente orientado a objetos, haciendo uso del mecanismo de polimorfismo, dinámicamente el ambiente seleccionará la implantación correcta de la operación, dependiendo del objeto que estemos manipulando, sin necesidad de seleccionarlo explícitamente. Este es el beneficio del mecanismo de polimorfismo. 1.2 Identificación de los elementos de un modelo de objetos
  • 12. 2.1.1 La importancia de modelar ¿Qué es un modelo? Un modelo es una simplificación de la realidad. De acuerdo a Grady Booch, un modelo proporciona los planos de un sistema. Pueden existir modelos muy detallados, así como modelos que den un vistazo de alto nivel del sistema que se construirá. Un buen modelo incluye aquellos elementos que son relevantes al nivel de abstracción seleccionado. Cada sistema puede ser descrito desde diferentes perspectivas utilizando diferentes modelos. Un modelo puede ser estructural enfatizando la organización del sistema, o puede ser de conducta, enfatizando los aspectos dinámicos. ¿Por qué modelamos? De acuerdo a Booch en “The Unified Modeling Language Use Guide”, el modelaje nos apoya en cuatro cosas: 1. Nos ayuda a visualizar un sistema como deseamos que sea diseñado. Un modelo ayuda al equipo de trabajo a comunicar la visión del sistema que se está construyendo. Es muy difícil compartir una misma visión si solo se cuenta con especificaciones textuales.
  • 13. 2. Nos permite especificar la estructura y conducta del sistema. Un modelo permite documentar la estructura y conducta de un sistema antes de que sea codificado. 3. Nos da una plantilla que guía el proceso de construcción. Un modelo es una herramienta invaluable durante la construcción, sirve como guía para el programador. ¿Alguna vez ha tenido la experiencia de que un programador codifique la funcionalidad incorrecta debido a que confundió la descripción textual de un requerimiento? El modelado ayuda a aliviar esta situación. 4. Documenta las decisiones que hemos tomado. Los modelos son herramientas que apoyan al proyecto a largo plazo, ya que documentan las decisiones de diseño tomadas y ya no solo se depende de la memoria. Concepto de modelamiento Modelado del software El modelado de sistemas software es una técnica para tratar con la complejidad inherente a estos sistemas. El uso de modelos ayuda al ingeniero de software a "visualizar" el sistema a construir. Además, los modelos de un nivel de abstracción mayor pueden utilizarse para la comunicación con el cliente. Por último, las herramientas de modelado y las de Ingeniería de Software Automatizada. pueden ayudar a verificar la corrección del modelo. Importancia de modelamiento Puedes intentar mencionar que el modelado de software: Mejora la productividad del equipo de desarrollo (por ej. los modelos se pueden usar para generar código de forma semi-automática) Reduce el número de defectos en el código (los modelos permiten una validación temprana del sistema) Beneficios del modelado de software (o cómo convencer a tu project manager!) Quieres convencer a tu project manager de lo beneficioso que es el uso de técnicas de modelado? Puedes intentar mencionar que el modelado de software:  Mejora la productividad del equipo de desarrollo (por ej. los modelos se pueden usar para generar código de forma semi-automática)
  • 14.  Reduce el número de defectos en el código (los modelos permiten una validación temprana del sistema)  Facilita la comprensión (con lo que además se facilita la integración de nuevos miembros en el equipo) y, ya de paso, documentan el sistema para el futuro.  Mejora la decomoposición y modularización del software  Facilita la evolución y mantenimiento del software  Mejora la reusabilidad 7 RAZONES PARA MODELAR EL SOFTWARE ANTES DE PROGRAMAR Posted by Jordi Cabot | Nov 7, 2018 | Diseño, Metodos | 0 | Sé lo que muchos de vosotros estáis pensando. ¿Quién quiere perder el tiempo dibujando cajitas y flechas cuando podría estar escribiendo JavaScript?. Si eres de los que piensan esto, te voy a dar cinco razones (más dos de “bonus” que seguro te acaban de convencer) para que recuperes tus libros de UML y vayas refrescando tus conocimientos de modelado y diseño de software.
  • 15. 1. Las técnicas de modelado mejoran la productividad del equipo de desarrollo. Una vez tienes el modelo de datos, de comportamiento, … los puedes usar para generar código automáticamente. Para aplicaciones “típicas” (tipo “data-entry” con muchos formularios tipo CRUD) puedes llegar a generar todo el código para otras una parte considerable. 2. Reduce los defectos en el código. Hay un buen número de herramientas para verificar, testear y validar tus modelos que permiten detectar errores analizando sólo los modelos. Y ya sabes, cuánto antes detectes un defecto más barato es repararlo. 3. Los modelos te permiten explorar diferentes alternativas de diseño y arquitectónicas antes de empezar a desarrollar usando técnicas de simulación. 4. Los modelos simplifican el mantenimiento y la evolución del proyecto (por ejemplo, ayudando a localizar rápidamente las partes del código a tocar después de un cambio en los requisitos). También facilitan la reutilización del software en proyectos futuros (el modelado mejora el ROI especialmente cuando la empresa desarrolla proyectos similares). 5. Los modelos capturan eficientemente el conocimiento del sistema. Los modelos son la mejor documentación. Lo que simplifica la integración de nuevos miembros al equipo. ¿Todavía vas diciendo que no con la cabeza? Pues dos otras razones, más “pragmáticas”: 1. Muchos de tus clientes te van a pedir los modelos del software que desarrolles para ellos. En muchas administraciones públicas, seguir un proceso de ingeniería de software bien formalizado (y por tanto con sus fases de análisis y diseño y los modelos correspondientes) es obligatorio para participar en los concursos públicos. Recuerda que el modelado no está reñido con el desarrollo ágil. 2. Los que hacen dibujitos cobran más que los que programan. A lo mejor dibujar es menos “sexy” pero ser bueno analizando sistemas software (y expresando estos análisis mediante el uso de modelos software) está mejor pagado que dominar los últimos frameworks JavaScript. Hay excepciones pero ésta es la regla habitual.