REPUBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD BICENTENARIA DE ARAGUA

EXTENSION SAN CRISTOBAL
REPUBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD BICENTENARIA DE ARAGUA
EXTENSION SAN CRISTOBAL
autota: Liz Pérez
cambio del modo de pensar
Metodología orientada a objetos para el desarrollo de sistemas de información
Tipos
Medidas de complejidad y reutilizacion
Importancia, característicasy beneficios
Liz Pérez Márquez/ San Cristóbal., Universidad bicentenaria de Aragua.2023
©2023, UNIVERSIDAD BICENTENARIA DE ARAGUA.
©2023, PROGRAMA INGENIERIA EN SISTEMAS.
©2023, LIZ PÉREZ MÁRQUEZ
Edición.
Fondo editorial bicentenaria de Aragua. Universidad bicentenaria de Aragua
San Cristobal, estado Tachira., Venezuela Tel.:(02-77)738.11.51
E.mail: ubatachira@gmail.com
https://campusvirtualuba.net.ve/convenios/# Primera edición: abril 2023
Todos los derechos reservados . Queda prohibido la reproducción total o parcial de esta obra y su tratamiento o transmisión por cualquier medio o método sin autorización escrita de la Universidad Bicentenaria de Aragua y su autora.
El diseño orientado al objeto, al igual que otras metodologías de diseño orientadas a la información, crea una representación del campo del problema del mundo real y lo hace corresponder con el ámbito de la solución, que es el software.
El diseño orientado al objeto produce un diseño que interconecta objetos de datos (elementos dato) y operaciones de una forma que modularía la información y el procesamiento; por el contrario, otros métodos dejan aparte el procesamiento. La naturaleza única del diseño orientado al objeto queda reflejada en su capacidad de construir sobre tres pilares conceptuales importantes del diseño de software:
" Abstracción
" Ocultamiento de información
" Modularidad
Estos conceptos se explicarán en los siguientes puntos. El análisis orientado al objeto (AOO), el diseño orientado al objeto (DOO) y la producción orientada al obieto comprenden un conjunto de actividades de Ingeniería del Software para la construcción del sistema orientado a obietos.
Utilizando el diseño orientado al objeto el diseñador puede crear sus propios tipos abstractos de datos y abstracciones funcionales y hacer corresponder el campo del mundo real con esas abstracciones creadas por el propio programador. Esta correspondencia será la mayoría de las veces mucho más natural, ya que el rango de tipos abstractos de datos que puede inventar el diseñador es virtualmente ilimitado. Más aún, el diseño del software se desliga de los detalles de representación, sin que ello afecte al sistema de software global.
Se trata de un ente abstracto usado en programación que permite separar los diferentes componentes de un programa, simplificando así su elaboración, depuración y posteriores mejoras. Los objetos integran, a diferencia de los métodos procedurales, tanto los procedimientos como las variables y datos referentes al objeto. A los objetos se les otorga ciertas características en la vida real. Cada parte del programa que se desea realizar es tratado como objeto, siendo así estas partes independientes las unas de las otras. Los objetos se componen de 3 partes fundamentales: métodos, eventos y atributos.
Métodos: Son aquellas funciones que permite efectuar el objeto y que nos rinden algún tipo de servicio durante el transcurso del programa.
Determinan a su vez como va a responder el objeto cuando recibe un mensaje.
Eventos: Son aquellas acciones mediante las cuales el objeto reconoce que se está interactuando con él.
De esta forma el objeto se activa y responde al evento según lo programado en su código.
Atributos: Características que aplican al objeto solo en el caso en que el sea visible en pantalla por el usuario; entonces sus atributos son el aspecto que refleja, tanto en color, tamaño, posición, si está o no habilitado.
Ejemplo de objeto: un auto. Se considera un auto es un objeto, totalmente diferenciado del lugar donde está parqueado. Sus atributos son su color, marca, modelo, número de matrícula, número de puertas; Sus eventos todos aquellas acciones por las cuales si el auto tuviera vida propia reconocería que le estamos dando un uso, como abrir la puerta, girar el volante, embragar, abrir el capot; por otro lado, Los métodos son todo aquello que nos ofrece el auto como hacer sonar
una bocina cuando tocamos el claxon (evento), llevarnos por la carretera, reducir la velocidad al pisar el freno (evento).
Aunquelosobjetossehandediferenciarclaramenteenuna aplicación,estossehandepodercomunicarparapoder trabajarenconjuntoyconstruirasíaplicaciones. Estosehaceposibleatravésdeloquesedenominapasode mensajes.Cuandounobjetoquierecomunicarseconotrolo quehaceesenviarleunmensajeconlosdatosquedesea transmitir.
Elcoche,alapretarelclaxon,elobjetoclaxonenvíaunmensaje alabocinaindicándolequehagasonarciertosonido.
Lapotenciadeestesistemaradicaenqueelobjetoemisorno necesitasaberlaformaenqueelobjetoreceptorvaarealizarla acción.Simplementeestelaejecutayelemisorsedesentiende delcomo;dehechonileimporta,solotieneconocimientode queseestárealizando.Paraquetodoestoseaposiblees necesariounabuenaprogramacióndeloseventosydelos métodosdecadaobjeto.
Elconjuntodemensajesalosqueunobjetopuederesponder sedenominaprotocolodelobjeto
Consta de una serie de métodos y datos que resumen las características de este objeto.es decir, describe el objeto. Definir clases permite trabajar con código reutilizable. Puesto que desde una clase se puede crear una instancia y así reutilizar el código escrito para esta si tener que volver a escribir el código para la instancia.
La instancia toma el patrón de la clase padre. Sin embargo, las variables son independientes.
La programación orientada a objetos permite que el código sea restaurable, organizado y fácil de mantener, sigue el principio de desarrollo de software utilizado por muchos programadores DRY (Don ́t repeat yourself) para evitar duplicar el código y crear de esta manera programas eficientes. Por lo tanto, es mas sencillo hacer cambios en un sistema de metodología orientada a objetos, porque facilita la reutilización de códigos, además como las metodología agiles de SCRUM.
POO (programación orientada a objetos) es un estándar en la industria, esta metodología se remonta a 1967 donde los noruegos Ole-Johan Dahl (1931-2002), y Kristen Nygaard (1926-2002) desarrollaron los conceptos básicos de la programación a objetos, en un lenguaje llamado simula 67.
“Losprogramastienenerrores.Desdelospequeñosprogramascomercialespara ordenadorespersonales,quesevendenenlosgrandesalmacenes,hastalos megaprogramasquecorrenenredes
degrandesordenadores,prácticamenteningunoestáasalvodequedevezen cuando,alcumplirse
ciertascondiciones,sufuncionamientoseamuydistintodelprevisto. Siconsiguiéramosdesarrollarcódigodetalformaquequienloleyera(olo escribiera)fueracapaz
decomprenderexactamenteyentodosloscasosposibleselcomportamientodeese código,probablementeloserroresdesaparecerían.
Hoyporhoynoscontentamosconmedirlacomplejidaddelosprogramas,para intentarhacerlos
mássencillos,convistasaqueelmantenimientoycorreccióndeerroresseamás fácilderealizar.”
Características de la Programación
Orientada a Objetos Permite agrupar cada elemento que se considere formar parte de un mismo nivel de abstracción y una misma entidad, esto permite elevar la cohesión de los elementos del sistema.
Las clases no se aíslan, sino que tienen relación entre ellas, creando una jerarquía de clasificación. Los objetos heredan el comportamiento y las propiedades de cada clase a la que forman parte. La herencia facilita y organista el encapsulamiento y el polimorfismo, haciendo que los objetos sean creados y definidos como tipos especializados de objetos que ya existen. Estos comparten y extienden su comportamiento sin tener que implementarlo de nuevo.
Normalmente se hace al agrupar objetos en clases y estos a su vez presentan un comportamiento en común.
Denota las características principales de un objeto en el cual los comportamientos se capturan. Todo objeto de un sistema se utiliza como ejemplo de un agente abstracto que puede hacer un trabajo, cambiar o informar su estado y tener comunicación con otros objetos en el mismo sistema sin dar a conocer la forma en la cual las características son implementadas. Las funciones, los procesos y los métodos pueden abstraerse, necesitando diversas técnicas para ampliar esa abstracción. Con este proceso es posible escoger las características importantes en un conjunto y saber cuales son los comportamientos comunes que definirán tipos de entidades nuevos en el mundo real. La abstracción es importante en el proceso de diseño y análisis orientado a objetos porque permite crear un conjunto de clases que enseñan el problema o la realidad a tratar.
Comportamientos distintos que se asocian a diferentes objetos pueden compartir un mismo nombre. Cuando son llamados por el mismo, se usa el comportamiento que corresponde al objeto utilizado. Las colecciones y referencias de objetos pueden tener objetos de diversos tipos. Invocar un comportamiento en una referencia generará el correcto comportamiento para el tipo real del objeto al que se hace la referencia.
modularidad es la propiedad con la que se puede subdividir a una aplicación en secciones de menor tamaño. Cada una de estas debe ser independiente de la aplicación general y de las demás partes. Estos módulos pueden compilarse por separado, pero se conectan a otros.
Todo objeto se encuentra lejos del exterior como un módulo natural y cada clase de objeto denota una interfaz con otros que informan la manera en la que se interactúa con los objetos de la clase. El aislamiento cuida las propiedades de un objeto frente a su modificación por alguien que no pueda acceder a las mismas, únicamente los mismos métodos internos que tiene el objeto pueden hacerlo. Esto impide que otros objetos modifiquen el estado interno de uno de forma inesperada, sustrayendo interacciones inesperadas y efectos secundarios.
Recolectar basura es la técnica con la que el entorno de objetos destruye de forma automática y desvincula la memoria que se asocia a los objetos que no tienen referencia a ellos. El entorno asigna la memoria cuando se crea un objeto nuevo y se libera cuando no está en uso.
● Reutilización del código.
● Convierte cosas complejas en estructuras simples reproducibles.
● Evita la duplicación de código.
● Permite trabajar en equipo gracias al encapsulamiento, puesto que minimiza la posibilidad de duplicar funciones cuando distintas personas trabajan sobre un mismo objeto al mismo tiempo.
● Al estar la clase bien estructurada permite la corrección de errores en diversos lugares del código.
● Protege la información mediante la encapsulación, pues solo se puede acceder a los datos del objeto mediante propiedades y métodos privados.
● La abstracción nos permite construir sistemas más complejos y de un modo más sencillo y organizado.
Hoy en día, la metodología orientada a objetos es el paradigma que más se usa para diseñar aplicaciones y programas informáticos. Sus ventajas son evidentes, especialmente cuando se necesita resolver retos de programación complejos. Además, permite una mejor estructura de datos y reutilización del código, lo que facilita el ahorro de tiempo a largo plazo.
Ahora bien, para ello se necesita pensar bien en la estructura del programa, planificar al inicio de la codificación, además de analizar los requisitos en clases simples y reutilizables que pueden usarse para diseñar instancias de objetos.
La complejidad de un programa depende de: La máquina y el compilador utilizados
El tamaño de los datos de entrada que depende del tipo de datos y del algoritmo
El valor de los datos de entrada.
Complejidad temporal: Se define como el tiempo que tarda un algoritmo en una entrada de tamaño n.
La complejidad en el caso peor proporciona una medida pesimista, pero fiable.
Dado que se realiza un estudio teórico de la complejidad, ignorando aspectos como las características de la máquina y el compilador, se tiene en cuenta que las diferencias en eficiencia se hacen más significativos para tamaños grandes de los datos de entrada se analiza la complejidad en términos de su comportamiento asintótico, dejando de lado la forma exacta de la función de complejidad
En muchos casos, la complejidad de tiempo de un algoritmo es igual para todas las instancias de tamaño n del problema. En otros casos, la complejidad de un algoritmo de tamaño n es distinta dependiendo de las instancias de tamaño n del problema que resuelve. Esto nos lleva a estudiar la complejidad del peor caso, mejor caso, y caso promedio.
Para un tamaño dado (n), la complejidad del algoritmo en el peor caso resulta de tomar el máximo tiempo (complejidad máxima) en que se ejecuta el algoritmo, entre todas las instancias del problema (que resuelve el algoritmo) de tamaño n; la complejidad en el caso promedio es la esperanza matemática del tiempo de ejecución del algoritmo para entradas de tamaño n, y la complejidad mejor caso es el menor tiempo en que se ejecuta el algoritmo para entradas de tamaño n. Por defecto se toma la complejidad del peor caso como medida de complejidad T(n) del algoritmo.
Aún cuando son los programas que los llegan realmente a consumir recursos computacionales (memoria, tiempo, entre otros) sobre una máquina concreta, se realiza el análisis sobre el algoritmo de base, considerando que se ejecuta en una máquina hipotética.
Lareutilizacióndecódigoserefierealcomportamientoyalastécnicasque garantizanqueunaparteolatotalidaddeunprogramainformáticoexistentese
puedaemplearenlaconstruccióndeotroprograma.Deestaformase aprovechaeltrabajoanterior,seeconomizatiempo,ysereducelaredundancia.
Lamaneramásfácildereutilizarcódigoescopiarlototaloparcialmentedesdeel programaantiguoalprogramaendesarrollo.Peroestrabajosomantener múltiplescopiasdelmismocódigo,porloqueengeneralseeliminala redundanciadejandoelcódigoreusableenunúnicolugar,yllamándolodesde losdiferentesprogramas.Esteprocesoseconocecomoabstracción.La abstracciónpuedeverseclaramenteenlasbibliotecasdesoftware,enlasquese agrupanvariasoperacionescomunesaciertodominioparafacilitareldesarrollo deprogramasnuevos.Haybibliotecasparaconvertirinformaciónentre diferentesformatosconocidos,accederadispositivosdealmacenamiento externos,proporcionarunainterfazconotrosprogramas,manipularinformación demaneraconocida(comonúmeros,fechas,ocadenasdetexto).
Paraqueelcódigoexistentesepuedareutilizar,debedefiniralgunaformade comunicaciónointerfaz.Estosepuededarporllamadasaunasubrutina,aun objeto,oaunaclase.
Reusabilidad.Cuandohemosdiseñado adecuadamentelasclases,sepuedenusar endistintaspartesdelprogramayen numerososproyectos.
Mantenibilidad.Debidoalassencillezpara abstraerelproblema,losprogramas orientadosaobjetossonmássencillosde leerycomprender,puesnospermiten ocultardetallesdeimplementacióndejando visiblessóloaquellosdetallesmás relevantes.
Modificabilidad.Lafacilidaddeañadir, suprimiromodificarnuevosobjetosnos permitehacermodificacionesdeunaforma muysencilla.
Fiabilidad.Aldividirelproblemaenpartes máspequeñaspodemosprobarlasde maneraindependienteyaislarmuchomás fácilmentelosposibleserroresquepuedan surgir.
La programación orientada a objetos permite la optimización del código generado gracias a que mediante técnicas de herencia, atributos estáticos entre otros permiten, que el código sea genérico de manera que sea reutilizable.
Mediante las técnicas aprendidas en el presente curso podemos establecer una solución primitiva de un problema real, tan solo con relacionarlo con objetos lógicos que serán usados para el desarrollo del software.
Podemos dar a conocer de una forma sencilla los mecanismos que se usan en este nivel de programación, a personas que deseen una explicación rápida y sencilla de lo que es la programación orientada a obietos.
Tenemos los conocimientos necesarios como para enfrentar un problema real y desarrollo en otro lenguaje de programación, pues concebimos la idea de que el lenguaje C es la base de la programación.
Al trabajar con la programación orientada a obietos sea esta desarrollada en otras plataformas de programación o en lenguaje C, sabemos las formas de lograr un mejor rendimiento del equipo a controlar y aplicar soluciones sencillas, de manera que sea fácilmente digeribles para el usuario y/o destinatario del trabajo final.
[1] Piattini, M., Calvo Manzano, J. A., Cervera, J. y Fernández, L. "Análisis y Diseño Detallado de Aplicaciones Informáticas de Gestión. Ra-ma. 1996. Pressman, Roger S. "Ingenieria del Software: Un Enfoque Práctico". 4ª Ed. McGraw-Hill, 1997.
[3] Rumbaugh, James, Blaha, Michael, Premerlani, William, Eddy, Frederick and Lorensen, William. "Object-Oriented Modeling and Design". Prentice-Hall. 1991.
Rational Software Corporation et al. "UML I.1 Documentation Set".
http://www.rational.com/uml. 1 September 1997.
[5]
García Peñalvo, Francisco José y Pardo Aguilar, Carlos. "UML 1.1. Un lenguaje de modelado estándar para los métodos de ADOO*. RPP, N°36. Enero, 1998.
[6] Jacobson, Ivar, Christerson, M., Jonsson, P., Overgaard, G. "Object-Oriented Software Engineering: A Use Case Driven Approach*. Addison-Wesley. 1992. [71
García Peñalvo, Francisco José, Marqués Corral, José Manuel y Maudes Raedo, Jesús Manuel. "Análisis y Diseño Orientado al Objeto para Reutilización".
Technical Report (TR-GIRO-01-97V2.1), Universidad de Valladolid. Octubre 1997.