Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo afrontar la programación de interfaces tipo Java

Cómo afrontar la programación de interfaces tipo Java

El núcleo de Java es la programación orientada a objetos. Prácticamente todos los programas Java están orientados a objetos; no tienes otra opción. Esto es diferente a C, donde puedes elegir si programar orientado a objetos o no. La programación orientada a objetos es inseparable de Java, por lo que es importante comprender sus fundamentos antes de escribir el programa Java más simple. Por lo tanto, este capítulo comenzará con los conceptos de programación orientada a objetos.

1 Dos paradigmas

Sabemos que todos los programas informáticos están compuestos por dos tipos de elementos: código y datos. Además, conceptualmente, los programas se pueden organizar en torno a código o datos. Es decir, algunos programas están escritos en torno a "lo que está sucediendo" y otros programas están escritos en torno a "quién se verá afectado". Estos dos paradigmas determinan cómo se construyen los programas. El primer enfoque se denomina modelo orientado a procesos y los programas escritos con él tienen características de ejecución lineal. El modelo orientado a procesos puede considerarse como un código que actúa sobre datos, y los lenguajes de procedimiento como C han logrado un éxito considerable en este modelo. Sin embargo, como se mencionó en el Capítulo 1, los problemas surgen cuando los programas se vuelven más grandes y complejos.

Para gestionar la creciente complejidad, se propuso un segundo enfoque, concretamente la programación orientada a objetos. La programación orientada a objetos organiza programas en torno a datos (es decir, objetos) e interfaces estrictamente definidas para los datos. Los programas orientados a objetos en realidad utilizan datos para controlar el acceso al código. Como verá a continuación, convertir entidades controladas en datos puede beneficiar a los programas de varias maneras organizativas.

2 Abstracción

Un elemento importante de la programación orientada a objetos es la abstracción. Nos ocupamos de la complejidad a través de la abstracción. Por ejemplo, en lugar de pensar en un automóvil como una colección de decenas de miles de piezas individuales, podemos pensar en un automóvil como un objeto con su propio comportamiento único. Esta abstracción permite a las personas conducir fácilmente un automóvil hasta el supermercado sin sentirse abrumadas por la complejidad de las piezas individuales que componen el automóvil. Pueden ignorar los detalles del funcionamiento del motor, la transmisión y los frenos y utilizar el coche como un todo.

Utilizar la clasificación jerárquica es una forma eficaz de gestionar la abstracción. Le permite dividir sistemas complejos en partes más manejables según el significado físico. Desde fuera, el coche es un objeto independiente. Al entrar al coche, encontrará que el coche está compuesto por muchos subsistemas: sistema de conducción, sistema de frenos, sistema de audio, cinturones de seguridad, calefacción, teléfonos portátiles, etc. Desglosados ​​aún más, estos subsistemas se componen de componentes más profesionales. Por ejemplo, un sistema de sonido consta de una radio, un reproductor de CD y un reproductor de casetes. La conclusión importante de esto es que puedes gestionar un coche complejo (o cualquier sistema complejo adicional) a través de capas de abstracción.

La abstracción jerárquica de sistemas complejos también se puede utilizar en programación informática. Los datos de los programas tradicionales orientados a procesos se abstraen y representan mediante varios objetos componentes, y los pasos del proceso en el programa pueden considerarse como una colección de mensajes entre estos objetos. De esta manera, cada objeto tiene sus propias características de comportamiento únicas. Puedes tratar estos objetos como entidades concretas y hacer que reaccionen a la información que les diga qué hacer. Ésta es la esencia de la programación orientada a objetos.

Los conceptos orientados a objetos son el núcleo de Java y es importante que los programadores comprendan cómo traducir estos conceptos en programas. Verá, en cualquier proyecto de ingeniería de software a gran escala, el software inevitablemente pasará por un ciclo de vida de conceptualización, crecimiento y envejecimiento, y la programación orientada a objetos permite que el software sea resistente y adaptable en cada etapa del ciclo de vida. Por ejemplo, una vez que haya definido objetos e interfaces limpias y confiables para esos objetos, puede desinstalar o reemplazar con confianza ciertos componentes de su sistema heredado.

3 3 principios de la programación orientada a objetos

Todos los lenguajes de programación orientados a objetos proporcionan mecanismos para ayudarlo a implementar el modelo orientado a objetos, a saber, encapsulación, herencia y polimorfismo. Ahora entendamos sus conceptos.

Encapsulación

La encapsulación es un mecanismo de programación que une el código y los datos que procesa para garantizar que los programas y los datos estén protegidos contra interferencias externas y uso indebido. Una forma de entender la encapsulación es pensar en ella como una caja negra que impide que el código definido externamente acceda al código y los datos internos. El acceso al código y a los datos dentro de la caja negra se controla estrictamente a través de interfaces adecuadamente definidas. Si desea compararlo con algo de la vida real, considere la transmisión automática de un automóvil. Una transmisión automática contiene cientos de bits de información sobre el motor, como su aceleración, la pendiente de la carretera y su marcha actual. Como usuario, sólo tiene una manera de influir en este complejo paquete: mover la palanca del actuador de cambio. Por ejemplo, no se puede influir en la transmisión con intermitentes o limpiaparabrisas. Por tanto, la palanca de cambios es la única interfaz entre el usuario y la transmisión. Además, cualquier operación dentro del objeto de transmisión no afectará a los objetos externos, por ejemplo, ¡la palanca de cambios no encenderá los faros! Dado que la transmisión automática está empaquetada, cualquier fabricante de automóviles puede implementarla de la forma que más le convenga. Sin embargo, desde la perspectiva del conductor, todos tienen el mismo propósito. Lo mismo se puede decir acerca de la programación. La belleza del código encapsulado es que todos saben cómo acceder a él, pero no tienen que pensar en los detalles de su implementación interna ni preocuparse por las consecuencias negativas de un uso inadecuado.

La unidad básica de la encapsulación de Java es la clase. Aunque las clases se cubrirán en detalle en capítulos posteriores. Pero ahora es necesario comentarlo brevemente. Una clase define la estructura y el comportamiento (datos y código) de un conjunto de objetos. Cada objeto de una clase determinada contiene el comportamiento y la estructura definidos por la clase, como si fueran moldeados a partir del mismo molde de clase. Por lo tanto, los objetos a veces se consideran instancias de clases. Por tanto, una clase es una estructura lógica, mientras que un objeto es una entidad física real.

Cuando creas una clase, especificas el código y los datos que componen la clase. Estos elementos se denominan colectivamente miembros de la clase. Específicamente, los datos definidos por una clase se denominan variables miembro o variables de instancia. El código que manipula datos se llama métodos miembro o simplemente métodos. Si está familiarizado con C/C, sabrá que lo que los programadores de Java llaman métodos es lo que los programadores de C/C llaman funciones. En un programa escrito enteramente en Java, los métodos definen cómo se utilizan las variables miembro. Esto significa que el comportamiento y la interfaz de una clase están definidos por métodos que operan con los datos de sus instancias.

Dado que el propósito de una clase es encapsular la complejidad, debe haber mecanismos ocultos en la clase para lograr la complejidad. Cada método o variable de una clase se puede marcar como privado o público. La interfaz pública de una clase representa todo lo que los usuarios fuera de la clase necesitan o pueden saber; solo se puede acceder a los métodos y datos privados mediante un código que es miembro de la clase, y el código que no es miembro de la clase no puede acceder. métodos privados o variables. Debido a que otras partes del programa solo pueden acceder a los miembros privados de una clase a través de los métodos públicos de la clase, puede estar seguro de que algo que no desea que suceda nunca sucederá. Por supuesto, el diseño de la interfaz del dios público debe tener cuidado de no exponer demasiada información interna de la clase.