Diferencias entre clase abstracta e interfaz

La pregunta por antonomasia en los lenguajes de programación orientados a objetos. Motivo de confusión y dudas a la hora de programar una jerarquía de clases. Tal vez, lo primero que debemos saber es que es una clase abstracta y que es una interfaz y a partir de ahí saber encontrar las diferencias entre ambas. Habrá problemas en los que será difícil conocer cuál es el uso correcto de cada una y podamos dudar cuál es la aplicación adecuada para cada uno, pero eso lo dará la experiencia.

Clase abstracta

Como indica su nombre, se trata de una clase, hasta ahí todo claro, pero que posee, he aquí su nombre y principal característica, al menos un método abstracto, por lo que ya tiene que ser declarada como abstracta. Una clase abstracta no puede ser implementada, sino que sólo puede heredar a otra clase abstracta o a una clase que defina el método o los métodos abstractos de la superclase abstracta.

Interfaz

Una interfaz tiene la característica principal de que todos sus métodos son abstracto, es decir, todos los métodos son declarados pero ninguno tiene implementación. Al no ser una clase como tal, el resto de clases pueden implementar tantas interfaces como se estime oportuno.

Implementación

Por decirlo de manera más natural, la interfaz marca unas pautas de funcionamiento pero no nos da pistas de como lo hace, en cambio la clase abstracta nos define futuros objetos que tienen pequeñas diferencias a la hora de implementar un pequeño método. Por ejemplo, una clase abstracta puede declarar el funcionamiento de una figura geométrica, los métodos que la superclase puede implementar serían el cálculo del perímetro, simplemente hallar la suma de todos sus lados, algo común a todas las figuras. En cambio, el cálculo del área de cada figura sería el método abstracto, de obligada implementación en las clases heredadas pero del que desconocemos su funcionamiento interno en dichas clases, ya que cada figura tiene su propio cálculo.


Práctica POO 2013 (RType)

Aquí dejo la práctica que tuve que hacer para la asignatura de Programación Orientada a Objetos, en la que los alumnos tuvimos que crear un juego, concretamente el RType, el típico juego de marcianitos en los que el protagonista, la nave que manejas, debe destruir todas las naves enemigas que van apareciendo en la pantalla.

El juego está creado de manera simple, una nave que el usuario maneja y naves enemigas, el número de estas depende del nivel elegido, que realizan movimientos aleatorios, a las que tienes que disparar para eliminar.

Es una buena introducción para programar en un lenguaje orientado a objetos como puede ser Java.

https://www.dropbox.com/s/ov75uvfpbusm089/JuegoRType.zip

Publicado el

Dos libros imprescindibles para el programador

El programador se hace programando y echando horas picando código pero también necesita mejorar su código, asentar bases y optimizar las líneas que tira, por eso nunca viene mal que tengamos unos consejos o doctrinas que cumplir a la hora de desarrollar para crear un software óptimo y sujeto a continuas mejoras o ampliaciones.

Para poder conseguir un código que cumpla con las bases de la programación no basta con tener los conocimientos obtenidos en la universidad o en cualquier curso, sino que además debemos avanzar y conocer todos los paradigmas de la estructura de los lenguajes. Para ello, os dejo dos libros, algunos seguro que los conocéis, para seguir aumentando vuestro nivel:

Code Complete. Se podría considerar el abc de la programación, la base que todo programador debe conocer, el libro obligatorio. En él encontraremos buenas prácticas, malas praxis y estilos de programación adecuados. Perfecto para combinar con bases de algoritmos. Creo que no está en español, pero merece la pena intentar leérselo en inglés.

Clean code. Perfecto para los que conocen lo principal de la programación pero aún quiere mejorar más. Especial hincapié sobre el desarrollo sencillo, claro y conciso de software. Algorítmica, consejos y mucha, mucha base práctica con la que poder comprender como programar de manera limpia. A diferencia del anterior, este sí está en español bajo el nombre de Código Limpio.

Aunque esto no es nada sino lo combinamos con altas dosis de algorítmica, matemáticas, lógica y experiencia.


Programar para Android

Android
Con las miras puestas en probar que tal es la experiencia de sacar una aplicación para móvil, conociendo la dificultad del lenguaje Objetive C y las restrictivas normas y controles por los que pasan las aplicaciones en la App Store, estoy decidido a probar con Android, es decir Java.

Lo primero de todo es conocer las posibilidades y restricciones del entorno, para ello y con San Google de base, toca buscar información sobre la programación para Android, por eso, he dado con información de todo tipo, vídeos, documentación, etc., que paso a compartir con vosotros.

Videotutoriales:

Código Facilito: Serie de videotutoriales que nos propone un curso mediante vídeos y con apoyo desde cero.

FPEnTuMovil: curso de Android más extenso, me gusta porque hace hincapié en la parte gráfica, donde la aplicación tiene que tener especial cuidado.

Documentación:

Curso programación Android v2: buen libro y en español donde podemos aprender de un desarrollador que ha estado desde el principio con Android.

Tecnología UCM: Manual de algunos componentes de la Universidad Complutense de Madrid para empezar a programar aplicaciones para móviles, en español.

Webs/Blogs:

SGOliver: el autor de Curso de programación Android v2 también tiene blog donde comparte todo tipo de trucos, recursos y conocimientos sobre Android.

Nomedhel: otro blog dedicado a la programación de aplicaciones para Android. Lo mismo recursos, trucos y conocimientos para el correcto desarrollo.

Todo estos son apoyos en español, pero como bien sabemos, la principal y mayor cantidad de documentación y todo tipo de ayuda están en inglés, poco a poco se irán adaptando cada vez mayor número de documentos, pero por el momento estos son los que más me han ayudado hasta la fecha.

Si conoces algún otro sitio, canal de vídeos, documentación para empezar de cero o más detalladas, puedes compartirlo y así ayudaremos a todos.


Diferencias entre == y ===

Continuamos con las pequeñas píldoras de PHP, esta vez nos toca hablar de las diferencias entre dos operadores de comparación como son == y ===, que como es habitual, tienen sus diferencias aunque sean pocas, y debemos saber cuál elegir en cada momento en función a lo que queramos.

Podríamos decir que cada uno cumple con una función específica de comparación, más en concreto, el comparador ==, cumple con la funcionalidad de comparar valores de las variables, mientras que el comparador ===, no sólo comprueba la igualdad de los valores de las variables, sino que además compara la estructura de las variables que se están comparando, es decir, si son del mismo tipo.

Comparador de igualdad ==

Como hemos comentado, el comparador == tiene en cuenta que los valores de las variables sean iguales, únicamente, es decir, podríamos comparar una variable definida como String con otro String o con una cadena entre comillas.

Comparador de identidad ===

Respecto al anterior ejemplo, con este comparador podrías comparar los campos de las variables pero también el tipo de variables que son. Con esta comparación estamos buscando una mayor equiparación que puede ser muy útil a la hora de programar con objetos, por poner un pequeño ejemplo.

Anteriores píldoras de PHP: Diferencias entre get() y post()

Publicado el