Estoy tratando de entender la definición de 'abstracción' en OOP.
Me he encontrado con algunas definiciones principales. ¿Son todos válidos? ¿Uno de ellos está equivocado? Estoy confundido. (Reescribí la definición con mis propias palabras).
Definición 1:
La abstracción es el concepto de tomar algún objeto del mundo real y convertirlo en términos de programación. Como la creación de una Human
clase y dándole int health
, int age
, String name
, etc. propiedades y eat()
etc. métodos.
Definición 2:
Una definición más general. La abstracción es un concepto que tiene lugar en cualquier parte de un sistema de software donde está involucrado 'hacer que las cosas sean más generales / más simples / abstractas' . Algunos ejemplos:
Una jerarquía de herencia, donde las clases más altas son más simples o más generales, y definen una implementación más general y abstracta. Mientras que las clases más bajas en la jerarquía son más concretas y definen implementaciones más detalladas.
Usar la encapsulación para ocultar los detalles de implementación de una clase de otras clases, haciendo así que la clase sea más 'abstracta' (más simple) para el mundo del software externo.
Definición 3
Otra definición general: la abstracción es el concepto de mover el foco de los detalles y la implementación concreta de las cosas, a los tipos de cosas (es decir, clases), las operaciones disponibles (es decir, métodos), etc., haciendo así la programación más simple, más general, y más abstracto (Esto puede tener lugar en cualquier lugar y en cualquier contexto en el sistema de software). Se lleva a cabo, por ejemplo, al encapsular, porque encapsular significa ocultar los detalles de la implementación y solo mostrar los tipos de cosas y sus definiciones más generales y abstractas. El ejemplo de Anotehr sería usar un List
objeto en Java. este objeto en realidad usa los detalles de implementación de an ArrayList
o a LinkedList
, pero esta información se abstrae usando el nombre más general List
.
¿Alguna de estas definiciones es correcta? (Me refiero a la definición más convencional y aceptada ).