vida programacion poo polimorfismo orientada objetos encapsulamiento ejemplos ejemplo cotidiana abstraccion oop programming-languages

oop - programacion - polimorfismo poo



ejemplo de encapsulación vs abstracción del mundo real (18)

Abstracción

Se utiliza para gestionar las complejidades de los OOP. Al usar esta propiedad, podemos proporcionar las características esenciales de un objeto al usuario sin incluir sus explicaciones de fondo. Por ejemplo, al enviar un mensaje a un amigo, simplemente escribimos el mensaje, decimos "hiiii" y presionamos "enviar" y el mensaje se entrega a su destino (ella, amigo). Aquí vemos la abstracción en acción, es decir, nos preocupa menos el funcionamiento interno del móvil que es responsable de enviar y recibir mensajes

Para un ejemplo de encapsulación, puedo pensar en la interacción entre un usuario y un teléfono móvil. El usuario no necesita conocer el funcionamiento interno del teléfono móvil para operar, por lo que esto se llama abstracción. Pero, ¿dónde encaja la encapsulación en este ejemplo? ¿Podría alguien por favor arrojar algo de luz sobre esto?


Abstración que oculta detalles internos al mundo exterior, por ejemplo, creas una clase (como la calculadora, una de la clase), pero para el uso final, proporcionas un objeto de clase. Con la ayuda del objeto, tocarán y realizarán operaciones. Él no sabe qué tipo de mecanismo de uso interno. Objeto de clase en forma de resumen.

La encapsulación es la técnica para hacer que los campos de una clase sean privados y proporcionar acceso a los campos a través de métodos públicos. Si un campo se declara privado, nadie podrá acceder a él fuera de la clase, ocultando así los campos dentro de la clase. Por este motivo, la encapsulación también se denomina ocultación de datos. Por ejemplo, calculadora de clases que contiene métodos privados getAdd, getMultiply.

Mybe por encima de la respuesta te ayudará a comprender el concepto.


En palabras generales, la abstracción es solo ocultar las cosas complejas detrás de un procedimiento en particular para que el procedimiento parezca simple.
Ejemplo: Monitorear ENCENDIDO / APAGADO :: - El usuario no necesita saber mucho sobre el funcionamiento de todos los chips que sucede cuando el monitor se enciende o se apaga. Todo lo que necesita saber es la función activada. El monitor está encendido y encendido. la función OFF-Monitor está desactivada ...

O mejor, busque un automóvil: todo el mundo sabe que hay una máquina de engranajes especial que cambia el engranaje, nadie se molesta en saber qué se somete a toda la funcionalidad para cambiar de marcha ... Así que, eso es abstracción (evitando implementaciones no deseadas para evitar la complejidad).

Entonces, si un desarrollador proporciona una buena abstracción, los usuarios no tendrán la tentación de echar un vistazo a los mecanismos internos del objeto.

La abstracción se logra haciendo que la clase abstracta tenga uno o más métodos abstractos. Lo cual no es más que una característica esencial que debería ser implementada por la clase que la extiende. eg cuando inventas / diseñas un automóvil, defines características como que el auto debe tener 4 puertas, rotura, volante, etc. ... por lo que cualquiera que use este diseño debe incluir estas características. La implementación no es la cabeza de cada uno de abstracción. Solo definirá las características que deberían incluirse.

La encapsulación está restringiendo a un usuario a seguir un procedimiento particular para acceder al control de un proceso en particular. Solo proporciona seguridad y garantiza la solidez del sistema.

Ejemplo: Podemos considerar The HR en una empresa como una persona que trabaja según el principio de Encapsulación. Si no podemos hablar con otros departamentos directamente, necesitamos comunicarnos a través de ellos a través de RR. HH. Esto garantiza la seguridad y un mejor mantenimiento de los registros de la compañía.

Juntos podemos tomar el ejemplo de UNDER CONSTRUCTION BUILDING.. donde podemos decir que cosas como ''no. de los gerentes necesarios, tipos de materiales, número de trabajadores, etc., como abstracción, ya que necesitan allí en cada construcción.

Pero, al mismo tiempo, la inclusión de cada uno de estos campos en un CONTRATISTA que actúa como mediador entre los trabajadores y el Inversor de Edificios se puede considerar como Encapsulación. Como, Oculta todas las propiedades anteriores en una Entidad.

Por lo tanto, si hubiera comprendido hasta ahora, puede decir que la abstracción es solo un subconjunto de ENCAPSULATION.ieEvery entidad que realiza abstracción está encapsulada internamente pero todo lo que muestra encapsulación no tiene que ser necesariamente abstracción.

ej. .ToString() método definido en casi todas las clases es la implementación de Abstraction porque no tenemos la funcionalidad dentro, todo lo que nos importa es que cambia casi todo a una cadena. Y como se ensambla como una unidad, también se encapsula ... Pero , Los miembros privados que ocultamos y accedemos a través de Properties son un ejemplo de encapsulación solo porque básicamente se trata de mantener la seguridad de los datos en mente.

Espero que esto responda a su pregunta..!!


La encapsulación ayuda a adherirse al principio de Responsabilidad única y Abstraction ayuda a adherirse a Code to Interface y no a implementar.

Supongamos que tengo una clase para automóvil: Clase de proveedor de servicio y Clase de conductor: Clase de consumidor de servicio.

Para Abstracción: definimos Clase abstracta para CAR y definimos todos los métodos abstractos en ella, que son funciones disponibles en el automóvil como: changeGear (), applyBrake ().

Ahora el coche real (clase concreta, como Mercedes, BMW implementará estos métodos a su manera y abstraerá la ejecución y el usuario final seguirá aplicando el cambio y el cambio para una determinada instancia de concreto y polimórficamente la ejecución ocurrirá como se define en la clase concreta .

Para encapsulación: Ahora diga que Mercedes presenta una nueva característica / tecnología: Anti Skid Braking, mientras implementa applyBrake (), encapsulará esta característica en el método applyBrake () y así proporcionará cohesión, y el consumidor del servicio seguirá teniendo acceso mediante el mismo método applyBrake () del objeto del automóvil. Por lo tanto, la encapsulación permite avanzar en la misma implementación de clase concreta.


La encapsulación está ocultando información.

La abstracción está ocultando los detalles de la funcionalidad.

La encapsulación se realiza mediante la construcción de la clase. La abstracción se logra mediante la creación de clases abstractas o interfaces en la parte superior de su clase.

En el ejemplo dado en la pregunta, estamos usando la clase para su funcionalidad y no nos importa cómo lo logra el dispositivo. Entonces podemos decir que los detalles del teléfono son "abstraídos" de nosotros.

La encapsulación oculta lo que el teléfono usa para lograr lo que sea que haga; La abstracción se esconde CÓMO LO HACE.-


La encapsulación se define como el proceso de adjuntar uno o más detalles del mundo exterior a través del derecho de acceso. Dice cuánto acceso se debe dar a los detalles particulares. Ambos, Abstracción y Encapsulación, funcionan mano a mano porque Abstraction dice qué detalles deben hacerse visibles y la Encapsulación proporciona el nivel de acceso directamente a esos detalles visibles. es decir, implementa el nivel deseado de abstracción.

p.ej

Hablando de Bluetooth, que generalmente lo tenemos en nuestro móvil. Cuando conectamos el Bluetooth, puedo conectar otro móvil pero no puedo acceder a las otras funciones móviles, como marcar un número, acceder a la bandeja de entrada, etc. Esto se debe a que la función Bluetooth tiene cierto nivel de abstracción.

Otro punto es cuando el móvil A está conectado con el móvil B a través de Bluetooth, mientras que el móvil B ya está conectado al móvil C, entonces A no puede conectarse con C a través de B. Esto se debe a la restricción de accesibilidad.


La redacción de su pregunta es impar - Abstracción vs Encapsulación? Debería ser - alguien explica la abstracción y la encapsulación ...

La abstracción es comprender la esencia de la cosa.

Un ejemplo del mundo real es el arte abstracto. Los artistas de este estilo intentan capturar / pintar la esencia de lo que todavía le permite ser la cosa. Esta mancha marrón de 4 líneas captura la esencia de lo que es un toro.

La encapsulación es boxeo negro.

Un teléfono celular es un gran ejemplo. No tengo idea de cómo se conecta el teléfono celular a un satélite, una torre u otro teléfono. No tengo idea de cómo entiende la maldita cosa que presionan mis teclas o cómo se tarda y envía fotos a una dirección de correo electrónico u otro número de teléfono. No tengo idea de los detalles intrincados de la mayoría de cómo funciona un teléfono inteligente moderno. Pero, puedo usarlo! Los teléfonos tienen interfaces estándar (sí, tanto literales como de software) que permiten que alguien que entienda los conceptos básicos de uno pueda usar casi todos.

¿Cómo están relacionados los dos?

Tanto la abstracción como la encapsulación son los fundamentos subyacentes del pensamiento y el diseño orientados a objetos. Entonces, en nuestro ejemplo de teléfono celular. La noción de un teléfono inteligente es una abstracción, dentro de la cual se encapsulan ciertas características y servicios. El iPhone y Galaxy son abstracciones adicionales de la abstracción de mayor nivel. Su iPhone o Galaxy físico son ejemplos concretos de capas múltiples de abstracciones que contienen características y servicios encapsulados.


Medios de abstracción Nos enfocamos en las cualidades esenciales de algo en lugar de un ejemplo específico y descartamos automáticamente lo que no es importante o irrelevante.

Ejemplo Estamos escribiendo una clase de cuenta bancaria, las cualidades esenciales de la cuenta bancaria son: Fecha de apertura, Título de la cuenta, Número de cuenta, Saldo, etc.

Encapsulación Significa la idea de encapsular o rodear algo, no solo para mantener el contenido en conjunto, sino también para proteger y restringir el acceso a la forma externa. Además del secreto, se trata de reducir las dependencias entre las diferentes partes de la aplicación.

Ejemplo En nuestra clase de cuenta bancaria Alguien que accede al atributo Balance y trata de cambiarlo, Attempt puede ser exitoso si no hay encapsulación.


Permítanme dar mis 2 centavos de una analogía de ejemplo del mundo real cerca de TI.

Supongamos que tiene un sitio de suscripción, por ejemplo, un sitio de wordpress

Cada usuario tiene un rol, por ejemplo, administrador, suscriptor, etc. Muchos usuarios pueden ser administradores, suscriptores, etc.

Entonces la abstracción aquí se refleja en el hecho de que cualquier usuario con rol de administrador puede hacer un conjunto de cosas, no importa qué usuario específico sea este (este es un ejemplo de abstracción ).

Por otro lado, los usuarios suscriptores no tienen acceso a ciertas configuraciones del sitio, por lo tanto, algunas partes internas de la aplicación están encapsuladas para suscriptores simples (este es un ejemplo de encapsulación )

Como se puede ver que la abstracción y la encapsulación son conceptos relativos, se aplican con respecto a algo específico.

Uno puede seguir esta línea de razonamiento y explicar el polimoprismo y la herencia .

Por ejemplo, los usuarios súper-administradores podrían hacer todo lo que los usuarios de administrador podrían hacer, y algunos más. Además, si los roles de administrador obtienen una actualización en la funcionalidad, los super-administradores obtendrían la misma actualización. Por lo tanto, se puede ver aquí un ejemplo de herencia , en el que las funciones de super-administrador heredan todas las propiedades de las funciones de administrador y las amplían. Tenga en cuenta que para la mayor parte del sitio, los administradores son intercambiables con super-administradores (lo que significa que un usuario super-administrador puede ser utilizado fácilmente en lugar de un usuario administrador, pero no viceversa en general).


Si ha visto una máquina de TV importante, las conexiones de TV y el tubo de color están ocultos dentro de la carcasa del televisor que no está expuesta a espectadores como nosotros y muestra solo las cosas necesarias de un televisor como las teclas del canal de TV, las teclas de volumen del televisor y el interruptor de ENCENDIDO / APAGADO , Interruptor de cable y control remoto de TV para que los espectadores lo usen. Esto significa que la máquina de TV, las conexiones de TV y el tubo de color de TV son datos no deseados y no es necesario que los espectadores vean ocultos fuera del mundo.

Así que la encapsulación significa ocultar las características importantes de una clase que no se ha necesitado para exponerse fuera de una clase y exponer solo las cosas necesarias de una clase. Aquí parte oculta de una clase actúa como Encapsulación y parte expuesta de una clase actúa como Abstracción.


Siento que la encapsulación puede tener más sentido para discutir cuando vea CÓMO NO HACER en la programación. Por ejemplo, considere una clase de automóvil como a continuación.

class Car{ public float speed =0; public boolean isReverse = false; public boolean isStarted = false; }

El código del cliente puede usar la clase de automóvil anterior como se muestra a continuación.

class Main{ public static void main(args String[]){ Car car = new Car(); // No need to start?? car.speed = 100; // Turbo mode directly to 100 car.speed = 0; // Turbo break } }

Ver más en: http://brevitaz.com/encapsulation-example-benefits-java/

Este es el acceso incontrolado a la velocidad del automóvil y otras variables. Mediante la encapsulación, la clase Auto puede tener un control total sobre cómo se pueden modificar las variables de datos dentro de la clase de automóvil.

Cualquier entidad concreta que tenga algún comportamiento es un ejemplo de encapsulación. El comportamiento se proporciona envolviendo algo y ocultando algo al cliente. En el caso del móvil, se trata de señales, chips, circuitos, batería, etc.

Para la abstracción del mismo ejemplo, el usuario normal puede decir que estoy de acuerdo con cualquier cosa con la que pueda hacer llamadas y recibir llamadas. Esta abstracción puede ser sustituida por cualquier móvil concreto. Mira ejemplos de abstracción .


Solo piense en Abstraction como si se ocultara el teclado y se mostraran los detalles de la pantalla, mientras que la Encapsulación esconde el circuito interno que los une.


Supongo que una cáscara de huevo puede considerarse la encapsulación y el contenido la abstracción. El caparazón protege la información. No puedes tener el contenido de un huevo sin el caparazón. "LOL


Todo tiene muchas propiedades y comportamientos, así que toma el objeto que quieras TV, Móvil, Automóvil, Humano o cualquier cosa.

Abstracción:

  1. Proceso de escoger la esencia de un objeto que realmente necesitas
  2. En otras palabras, elija las propiedades que necesita del objeto Ejemplo:
    a. TV - Sonido, visuales, entrada de energía, entrada de canales.
    segundo. Móvil: botón / pantalla táctil, botón de encendido, botón de volumen, puerto SIM.
    do. Automóvil: dirección, ruptura, embrague, acelerador, llave de orificio.
    re. Humano: voz, cuerpo, vista, audición, emociones.

Encapsulación:

  1. Proceso de ocultar los detalles de un objeto que no necesita
  2. En otras palabras, oculte las propiedades y operaciones que no necesita del objeto pero que son necesarias para que el objeto funcione correctamente. Ejemplo:
    a. TV - Interno y conexiones de Altavoz, Pantalla, Componentes b / n de distribución de potencia, Mecanismo de canal.
    segundo. Móvil: cómo se analiza y procesa la entrada, cómo se activa y desactiva un botón o se cambian los volúmenes, cómo se conectará sim a los proveedores de servicios.
    do. Automóvil: cómo gira la dirección para girar el automóvil, cómo se ralentiza o detiene el automóvil, cómo funciona el embrague, cómo aumenta la velocidad del acelerador, cómo se activa el orificio del automóvil.
    re. Humano: cómo se produce la voz, qué hay dentro del cuerpo, cómo funciona la vista, cómo funciona la audición, cómo las emociones nos generan y nos afectan.

RESUMA todo lo que necesita y ENCAPSULA todo lo que no necesita;)


Abstracción : nunca comprará un "dispositivo", pero siempre compre algo más específico: iPhone, GSII, Nokia 3310 ... Aquí, iPhone, GSII y N3310 son cosas concretas, el dispositivo es abstracto.

Encapsulación : tienes varios dispositivos, todos ellos tienen un puerto USB. No sabe qué tipo de circuito impreso hay, solo tiene que saber que podrá enchufar un cable USB.

La abstracción es un concepto, que está permitido por la encapsulación. Mi ejemplo no fue el mejor (no existe un vínculo real entre los dos bloques).

Puedes encapsular sin usar abstracción, pero si quieres usar algo de abstracción en tus proyectos, necesitarás encapsulación.


Abstracción

Usamos muchas abstracciones en nuestra vida cotidiana. Considere un automóvil. La mayoría de nosotros tenemos una visión abstracta de cómo funciona un automóvil. Sabemos cómo interactuar con él para lograr que haga lo que queremos que haga: ponga gasolina, gire una llave, presione algunos pedales, y así sucesivamente. Pero no necesariamente comprendemos lo que sucede dentro del automóvil para que se mueva y no es necesario. Millones de nosotros usamos autos todos los días sin entender los detalles de cómo funcionan. ¡La abstracción nos ayuda a llegar a la escuela o al trabajo!

Un programa puede diseñarse como un conjunto de abstracciones que interactúan. En Java, estas abstracciones se capturan en clases. El creador de una clase obviamente tiene que conocer su interfaz, al igual que el conductor de un automóvil puede usar el vehículo sin saber cómo funciona el motor.

Encapsulación

Considere un sistema de banca. El sistema de banca tiene propiedades como la cuenta no, el tipo de cuenta, el saldo, etc. Si alguien está tratando de cambiar el saldo de la cuenta, el intento puede ser exitoso si no hay encapsulación. Por lo tanto, la encapsulación permite que la clase tenga control completo sobre sus propiedades.


La encapsulación es para ocultar las variables o algo dentro de una clase, lo que impide el uso de partes no autorizadas. Entonces los métodos públicos como getter y setter acceden a él y las otras clases llaman a estos métodos para acceder

La abstracción implica la facilidad para definir objetos que representan "actores" abstractos que pueden realizar un trabajo, informar y cambiar su estado y "comunicarse" con otros objetos en el sistema.

Considere el siguiente ejemplo en tiempo real:

Encapsulación : como conductor, usted sabe cómo arrancar el automóvil presionando el botón de inicio y los detalles internos de las operaciones de arranque están ocultos para usted. Por lo tanto, todo el proceso de inicio está oculto, de lo contrario podemos decir que la operación de inicio está encapsulada por usted.

O

La rueda motriz está encapsulada en el proceso de rotación de la rueda .

Abstracción

Antes de mencionar algo acerca de la abstracción, podemos tomar tres usuarios diferentes aquí (los estoy llamando como entidad)

1) Usted 2) Mecánico local 3) Experto

Su Entidad: como usted sabe solo para iniciar el automóvil presionando un botón y todas las demás operaciones detrás de la escena se abstraen de usted.

Entidad Mecánica Local: Nuestro mecánico local conoce parte de la implementación del arranque del automóvil, es decir, puede abrir el capó del automóvil y verificar el cable de la batería, etc. En resumen, la Entidad Mecánica Local conoce algunas de las implementaciones del automóvil.

Entidad experta: dado que nuestro mecánico experto (diseñador del automóvil) conoce todas las operaciones de nuestro automóvil, puede repararlo muy rápidamente. En resumen, la Entidad experta conoce todas las implementaciones del automóvil.

La operación del automóvil está completamente abstraída de usted y se implementa parcialmente en la Entidad Mecánica Local y se implementa completamente en la Entidad experta. Entonces, usted es una clase abstracta que solo tiene métodos abstractos, la Entidad Mecánica Local lo ha extendido (dado que también es un usuario ordinario) y ha implementado algunos de los métodos y la última Entidad experta extendiendo el Mecánico Local e implementando todos los métodos .

Creo que este es un buen example.


La encapsulación es una forma de lograr el "ocultamiento de la información" , por lo que, siguiendo su ejemplo, no "necesita conocer el funcionamiento interno del teléfono móvil para operar" con él. Tiene una interfaz para usar el comportamiento del dispositivo sin conocer los detalles de implementación.

La abstracción en el otro lado, se puede explicar como la capacidad de usar la misma interfaz para diferentes objetos. Pueden existir diferentes implementaciones de la misma interfaz. Los detalles están ocultos por la encapsulación .