![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/b4aaaff287ad67fc124887f06b7fd96e.jpeg)
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/b4aaaff287ad67fc124887f06b7fd96e.jpeg)
Concepto
Los métodos orientados a objetos son técnicas de abordar la complejidad del problema que utilizan como procedimiento de modularización la identificación de los objetosdeldominiodelproblema.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/dbb8a5072c71c607f4c855c593084947.jpeg)
Principiosbásicos
Los principios básicos que se deben entender parapoderserbuenosdesarrolladoresOO,son los siguientes: abstracción, encapsulación, identidad, modularidad, jerarquía, tipos, concurrencia y persistencia. Nótese que estos conceptosnosonexclusivosdelaorientacióna objetos, simplemente tienen ciertas particularidadesdesdeestaperspectiva.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/77eb6340e33ac9177930e4c2f7e48e57.jpeg)
Abstracción
El paradigma OO se basa en la noción de representar elementos del mundo real como objetos. Sin embargo, cualquier elemento del mundo real tiene una cantidad interminabledepropiedadesycomportamiento.Paralidiar con esta complejidad, utilizamos la abstracción. La abstraccióneselmecanismoatravésdelcualnosenfocamos en los aspectos esenciales o distintivos de algo, ignorando detallesirrelevantes.Obviamente,laabstracciónsiemprese hacedesdealgunaperspectivaparticular,porque,loqueen algunoscasosesirrelevante,enotrosnoesnecesariamente así.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/05be51a19066d5de06ab6a4e72481887.jpeg)
Identidad
Laidentidadeslapropiedaddeunobjeto,quelodistinguede todos los demás. Los seres humanos tenemos huellas digitales, números de identificación, perfiles DNA. Estos representan el hechodequecadaunodenosotrosesúnicoeidentificable.Dela misma manera, cada objeto en un sistema OO tiene una identidaddistinta.Laidentidadesnecesariaparaquepodemos hablar con un objeto sin confundirlo con otro, y para que puedanexistiralmismotiempovariosobjetosdelamismaclase.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/f90e30b367e5e8e8744dca2babfa7dc3.jpeg)
Encapsulación
Losdetallesdeunaclase estructurasdedatos,algoritmos,etc. sehacenprivados,oencapsulan,paraqueseaimposibleque otras clases dependan de ellos. El principal beneficio es que se unaclasepuedamodificarlaformaenquerealizaunaoperación, sinnecesidaddeafectarasusclientes.
La forma en que esto se logra, es separando cada clase en dos partes: su interfaz (qué es lo que hace), y su implementación (cómolohace).
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/58f45242763281ee7cdcdf75f7bf63a0.jpeg)
Modularidad
Lamodularidadconsisteenladescomposicióndealgograndey complejo,enpartesmássencillasymanejables.
Mientrasquelaabstracciónseenfocaenreducirlacomplejidad lógica, la modularidad se preocupa por aspectos físicos o de implementación.Porejemplo,lasclasesseagrupanenpaquetes parapoderadministrarlasmejor.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/85e157502b04394a2a31097eefa6bccb.jpeg)
Jerarquía
Unajerarquíaesunaorganizacióndeelementosdeacuerdoasu tipo, de acuerdo a una estructura de árbol. Así como en la botánicaseutilizanjerarquíasparadefinirfamiliasdeplantas,en OO, las jerarquías facilitan reconocer similitudes y diferencias entreobjetos.
LosdostiposdejerarquíasmáscomunesenOOsonlajerarquía porherenciaogeneralización,ylajerarquíaporagregación.Enla primera, se aplica la frase “ es un tipo de”, mientras que en la segundaseaplica“espartede”.Porejemplo,unamanzanaesun tipodefruta,yasuvezpuedeserpartedeunacosecha.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/83bae6f8cc5c78b26430ec4caa1d7c15.jpeg)
Persistencia
Los objetos tienen un periodo de existencia, desde los más volátiles,hastalosmásestables.Siunobjetorequieresobrevivir alprocesoenqueseejecuta,entoncessedicequeespersistente. En otras palabras, la persistencia es la capacidad de un objeto paraexistirmásalládelprocesoqueloejecuta.Paraimplementar lapersistencia,requerimosdealgúnmecanismoparaalmacenar datos. Existen diversos mecanismos, desde archivos en texto plano,hastabasesdedatosrelacionales(RDBMS)orientadasa objetos(OODBMS).
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/1b9bfd99f0fdada4e964ddbef304805c.jpeg)
Concurrencia
Laconcurrenciasepreocupaporadministrarelaccesoarecursos compartidosentreoperacionesquesesobreponeneneltiempo (incluyendolaejecuciónenparalelo).
Supongamos que tenemos un proceso con múltiples hilos de control. Es posible que un objeto reciba un mensaje al mismo tiempo(aproximadamente)dedosobjetosdiferentes.Esteesun escenario que debemos considerar y manejar apropiadamente.
Existen dos estrategias básicas de control de concurrencia: pesimista,optimistaymuyoptimista.
En el control pesimista, cuando un objeto inicia acceso a un recursocompartido,leponeuncandado,realizaeltrabajoque necesita,yunavezquetermina,liberaelrecurso.Estaestrategia noesmuyescalable,porloquesólosedebeaplicarensistemas pequeñosodondeelaccesoarecursoscompartidosseararo.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/8a74eb125ed71cdbf9e19298032ed059.jpeg)
Tipos
Laimportanciadelostiposvaríadependiendodesiunlenguaje esestrictoconlostipos(stronglytyped),ono.Enloslenguajes OO,lostiposnormalmenteserefierenalasclases.
Enloslenguajes“fuertementetipificados”,elcompiladorpuede detectar cuando se está tratando de enviar a un objeto, un mensajequenopuedeonosaberesponder.Estoevitaerroresen tiempo de ejecución, además de permitir una mejor optimizacióndelcódigoejecutable.Ladesventajaesunamenor flexibilidadduranteeldesarrollo.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/0d19172efa6f46fcdabf6a23cbb40d97.jpeg)
Ventajas
Loscomponentessepuedenreutilizar.
Facilidad de mantenimiento y modificación de los objetos existentes.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/f664580e096e02da4b49bed0f9013fba.jpeg)
Unaestructuramodularclarasepuedeobtener,lacualno revelaráelmecanismodetrásdeldiseño.
Se proporciona un buen marco que facilita la creación de ricainterfazgráficadeusuarioaplicaciones(GUI).
Seacoplabienalautilizacióndebasesdedatos,debidoala correspondenciaentrelasestructuras.
Desventajas
Limitaciones del programador: Es posible el programador desconozcaalgunascaracterísticasdelparadigmaydehecho sigautilizandoelparadigmaestructurado.
No hay una forma única de resolver los problemas. Esto puedellevaraquediferentesinterpretacionesdelasolución planteadaemerjan.
Se requiere una documentación amplia para determinar la soluciónplanteada.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/de282bee585f21f72a212d71e12c4c7e.jpeg)
Aplicaciones
El análisis y diseño orientado a objetos es el que se realiza dentro de la ingeniería de software,dichoanálisisseenfocaencómoun grupodeobjetosescapazdeinteractuarentre sí. Un buen análisis y diseño es esencial dentrodelaingenieríadesoftwareparapoder mejorareldesarrolloyestabilidaddelsistema.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/8fd2d64da958592a41743bfd17d4e9bf.jpeg)
Lenguajes
La programación orientada a objetos es unmodelodeprogramaciónenelqueel diseñodesoftwareseorganizaalrededor de datos u objetos, en vez de usar funciones y lógica. Se enfoca en los objetosquelosprogramadoresnecesitan manipular, en lugar de centrarse en la lógicanecesariaparaesamanipulación.
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/65f5d77953f9ae1edb22e91ad33c0f3f.jpeg)
![](https://assets.isu.pub/document-structure/231011052257-73b91a4796784e3d1ce38ab6f06a3e92/v1/4a0c1062938257afb2ffa33b2aa35e56.jpeg)